orte->robot_bumpers.bumper_left_across = (frame.data[0] & CAN_BUMPER_LEFT_ACROSS) ? 0 : 1;
orte->robot_bumpers.bumper_right = (frame.data[0] & CAN_BUMPER_RIGHT) ? 0 : 1;
orte->robot_bumpers.bumper_right_across = (frame.data[0] & CAN_BUMPER_RIGHT_ACROSS) ? 0 : 1;
- orte->robot_bumpers.bumper_rear = (frame.data[0] & CAN_BUMPER_REAR) ? 0 : 1;
+ orte->robot_bumpers.bumper_rear_left = (frame.data[0] & CAN_BUMPER_REAR_LEFT) ? 0 : 1;
+ orte->robot_bumpers.bumper_rear_right = (frame.data[0] & CAN_BUMPER_REAR_RIGHT) ? 0 : 1;
ORTEPublicationSend(orte->publication_robot_bumpers);
break;
#define CAN_SWITCH_STRATEGY 4
//flags sent in CAN_ROBOT_BUMPERS
-#define CAN_BUMPER_REAR 1
-#define CAN_BUMPER_LEFT 2
-#define CAN_BUMPER_RIGHT 4
-#define CAN_BUMPER_LEFT_ACROSS 8
-#define CAN_BUMPER_RIGHT_ACROSS 16
+#define CAN_BUMPER_REAR_LEFT 1
+#define CAN_BUMPER_REAR_RIGHT 2
+#define CAN_BUMPER_LEFT 4
+#define CAN_BUMPER_RIGHT 8
+#define CAN_BUMPER_LEFT_ACROSS 16
+#define CAN_BUMPER_RIGHT_ACROSS 32
if (robot.moves_backward && robot.use_back_bumpers &&
(robot.orte.robot_bumpers.bumper_left_across ||
robot.orte.robot_bumpers.bumper_right_across ||
- robot.orte.robot_bumpers.bumper_rear))
+ robot.orte.robot_bumpers.bumper_rear_left ||
+ robot.orte.robot_bumpers.bumper_rear_right))
FSM_TRANSITION(wait_and_try_again);
break;
case EV_OBSTACLE_SIDE:
if (robot.moves_backward && robot.use_back_bumpers &&
(robot.orte.robot_bumpers.bumper_left_across ||
robot.orte.robot_bumpers.bumper_right_across ||
- robot.orte.robot_bumpers.bumper_rear))
+ robot.orte.robot_bumpers.bumper_rear_left ||
+ robot.orte.robot_bumpers.bumper_rear_right))
FSM_TRANSITION(wait_and_try_again);
break;
case EV_OBSTACLE_SIDE:
static bool last_left, last_right;
switch (info->status) {
case NEW_DATA:
- if (instance->bumper_right_across || instance->bumper_left_across || instance->bumper_rear)
+ if (instance->bumper_right_across || instance->bumper_left_across || instance->bumper_rear_left || instance->bumper_rear_right)
FSM_SIGNAL(MOTION, EV_OBSTACLE_BEHIND, NULL);
if (instance->bumper_left || instance->bumper_right) {
boolean bumper_right;
boolean bumper_right_across;
boolean bumper_left_across;
- boolean bumper_rear;
+ boolean bumper_rear_left;
+ boolean bumper_rear_right;
};
struct can_msg {