diff --git a/Shield dimentions.sketch b/Shield dimentions.sketch new file mode 100644 index 0000000..fcd6a92 Binary files /dev/null and b/Shield dimentions.sketch differ diff --git a/embedded/goal_detector/goal_detector.ino b/embedded/goal_detector/goal_detector.ino new file mode 100644 index 0000000..7246034 --- /dev/null +++ b/embedded/goal_detector/goal_detector.ino @@ -0,0 +1,43 @@ +#define OUT_ROBOT 6 +#define IN_ROBOT 8 + +#define OUT_PLAYER 7 +#define IN_PLAYER 9 + +int input_value_player; +int input_value_robot; +const int score_threshold_robot = 750; +const int score_threshold_player = 950; +int cycles = 0; + +void setup() { +Serial.begin(115200); +pinMode(OUT_ROBOT, OUTPUT); +pinMode(OUT_PLAYER, OUTPUT); +pinMode(IN_ROBOT, INPUT); +pinMode(IN_PLAYER, INPUT); +digitalWrite(OUT_PLAYER, HIGH); +digitalWrite(OUT_ROBOT, HIGH); + +} + +void loop() { + cycles++; +// delay(5); + input_value_player = analogRead(IN_PLAYER); + input_value_robot = analogRead(IN_ROBOT); +// Serial.println(input_value_player); +// Serial.println(input_value_robot); + if (input_value_player < score_threshold_player) { + Serial.println("***ROBOT SCORED***"); + delay(500); + } else if (input_value_robot < score_threshold_robot) { + Serial.println("***PLAYER SCORED***"); + delay(500); + } else { + if (cycles > 2000) { + Serial.println("..."); + cycles = 0; + } + } +} diff --git a/pygame_control.py b/pygame_control.py index 94b96a5..88b327d 100644 --- a/pygame_control.py +++ b/pygame_control.py @@ -13,6 +13,28 @@ class Odrive: def set_zero(self): self.drive.axis0.encoder.set_linear_count(0) self.drive.axis1.encoder.set_linear_count(0) + self.drive.axis0.controller.config.input_mode = 3 + self.drive.axis1.controller.config.input_mode = 3 + # self.drive.axis0.trap_traj.config.vel_limit = 100 + # self.drive.axis1.trap_traj.config.vel_limit = 100 + # self.drive.axis0.trap_traj.config.accel_limit = 50 + # self.drive.axis1.trap_traj.config.accel_limit = 50 + # self.drive.axis0.trap_traj.config.decel_limit = 50 + # self.drive.axis1.trap_traj.config.decel_limit = 50 + # self.drive.axis0.controller.config.inertia = 0.02 + # self.drive.axis1.controller.config.inertia = 0.02 + self.drive.axis0.controller.config.input_filter_bandwidth = 30 + self.drive.axis1.controller.config.input_filter_bandwidth = 30 + self.drive.axis0.motor.config.current_lim = 70 + self.drive.axis1.motor.config.current_lim = 70 + self.drive.axis0.motor.config.current_lim_margin = 30 + self.drive.axis1.motor.config.current_lim_margin = 30 + +odrv0.axis0.motor.config.current_lim = 70 +odrv0.axis1.motor.config.current_lim = 70 +odrv0.axis0.motor.config.current_lim_margin = 30 +odrv0.axis1.motor.config.current_lim_margin = 30 + def set_idle(self): self.drive.axis0.requested_state = AXIS_STATE_IDLE