How memristor/mep3 works
MEP3 is a ROS 2 Eurobot robot platform with behavior-tree strategy execution, navigation, localization, controllers, hardware drivers, and a Webots simulation option. Its principal workflow is to launch a physical robot or simulation, execute behavior-tree tasks and navigation, then translate commands through controllers and hardware interfaces to the robot. Separate sensor, motion, and actuator firmware provide embedded board functions. The source excerpts support the behavior-tree registrations and selected controller and firmware calls; several subsystem links are documented only by the README or remain unverified.
Main entry points: simulation_launch.py Simulation bringup · hardware_launch.py Hardware launch · robot_launch.py Robot bringup · mep3_behavior_tree.cpp Behavior tree
Components 24
Robot orchestration
- Robot bringup
mep3_bringup/launch/robot_launch.py - Simulation bringup
mep3_bringup/launch/simulation_launch.py - Launch utilities
mep3_bringup/mep3_bringup/launch_utils.py
Behavior and navigation
- Behavior tree
mep3_behavior/src/mep3_behavior_tree.cpp - Behavior actions
mep3_behavior/include/mep3_behavior - ROS action adapter
mep3_behavior/include/mep3_behavior/bt_action_node.hpp - Navigation actions
mep3_navigation/src/move - Pursuit controller
mep3_navigation/src/regulated_pure_pursuit_controller/regulated_pure_pursuit_controller.cpp - Obstacle layers
mep3_navigation/src/temporal_obstacle_layer
Control and hardware
- Hardware launch
mep3_hardware/launch/hardware_launch.py - Motion interface
mep3_hardware/src/motion_hardware_interface/motion_hardware_interface.cpp - Dynamixel driver
mep3_hardware/src/dynamixel_hardware_interface/dynamixel_hardware.cpp - CAN GPIO interface
mep3_hardware/src/can_gpio_hardware_interface/can_gpio_hardware_interface.cpp - SocketCAN bridge
mep3_hardware/src/socketcan_bridge.cpp - Joint controller
mep3_controllers/src/joint_position_controller.cpp - Pump controller
mep3_controllers/src/pump_controller.cpp
Simulation and localization
- ArUco localization
mep3_localization/mep3_localization/aruco_detector.py - Webots interface
mep3_simulation/src/mep3_webots_hardware_interface.cpp
Embedded firmware
- Sensor board
firmware/sensor_board/src/main.c - Motion board
firmware/motion_board/firmware/src/main.c - Motor control
firmware/motion_board/firmware/src/control.c - Motor driver
firmware/motion_board/firmware/src/motor.h - Actuator board
firmware/actuator_board/ActuatorBoardV3.0/src/main.c
Other components
- Operator
Connections 20
- Operator → Robot bringup: launches robot
- Operator → Simulation bringup: launches simulation
- Robot bringup → Launch utilities: uses
mep3_bringup/mep3_bringup/launch_utils.py - Simulation bringup → Launch utilities: uses
- Behavior tree → Behavior actions: registers actions
mep3_behavior/src/mep3_behavior_tree.cpp - Behavior tree → ROS action adapter: uses adapter
mep3_behavior/src/mep3_behavior_tree.cpp - ROS action adapter → Navigation actions: sends actions
- Navigation actions → Pursuit controller: requests velocity
- Robot bringup → Hardware launch: starts hardware
- Hardware launch → Motion interface: configures
- Motion interface → SocketCAN bridge: uses bridge
- Hardware launch → Dynamixel driver: configures
- Hardware launch → CAN GPIO interface: configures
- Joint controller → Dynamixel driver: commands hardware
- Pump controller → CAN GPIO interface: commands hardware
- Simulation bringup → Webots interface: starts simulation
- Simulation bringup → ArUco localization: starts localization
- Motion board → Motor control: initializes
firmware/motion_board/firmware/src/main.c - Motion board → Motor driver: initializes
firmware/motion_board/firmware/src/main.c - Sensor board → Actuator board: sends CAN commands