How cheng695/engineer_arm works
This is a ROS 2 robot-arm stack: users issue enable, mode, joint, Cartesian, pause, or named-target commands; the control manager changes controller state and, for named targets, submits a joint trajectory. Controllers turn motion requests and joint feedback into ros2_control interface commands, while hardware packages provide real, simulated, and mock backends. MoveIt configuration and robot descriptions support planning and visualization. README content was not supplied, and most hardware, launch, and MoveIt implementation was not sampled, so those connections are shown only where supported by the tree or excerpts.
Main entry points: control_mode_manager.cpp Control mode manager · arm_hardware_base.cpp Hardware interface base · dls_cartesian_controller.cpp Cartesian controller · joint_command_controller.cpp Joint command controller
Components 19
Command and orchestration
- Control mode manager
src/my_robot_control_manager/src/control_mode_manager.cpp - Control state FSM
src/my_robot_control_manager/src/control_fsm.cpp - C++ commander example
src/my_robot_commander_cpp/src/commander_template.cpp
Arm control
- Cartesian controller
src/my_robot_controllers/src/dls/dls_cartesian_controller.cpp - Joint command controller
src/my_robot_controllers/src/joint/joint_command_controller.cpp - Gravity compensation
src/my_robot_controllers/src/gravity/gravity_compensation_controller.cpp - Hold controller
src/my_robot_controllers/src/hold/hold_controller.cpp
Hardware backends
- Hardware interface base
src/arm_hardware_interface/src/arm_hardware_base.cpp - Real arm backend
src/arm_hardware_interface/src/real_arm_hardware_interface.cpp - MuJoCo backend
src/arm_hardware_interface/src/mujoco_arm_hardware_interface.cpp - Mock backend
src/arm_hardware_interface/src/mock_arm_hardware_interface.cpp - CAN motor transport
Robot configuration
- Robot descriptions
src/my_robot_description - MoveIt planning config
src/my_robot_moveit_config/launch/move_group.launch.py - Robot bringup
src/my_robot_bringup/launch/robot.launch.py
Other components
- Robot user
- ros2_control manager
- Trajectory action server
- Joint state stream
Connections 22
- Robot user → Control mode manager: sends commands
- Control mode manager → Control state FSM: dispatches events
- Control mode manager → ros2_control manager: queries and switches
- Control mode manager → Trajectory action server: submits trajectories
- Joint state stream → Control mode manager: updates positions
- Control mode manager → Cartesian controller: publishes Cartesian commands
- Control mode manager → Joint command controller: publishes joint commands
- ros2_control manager → Cartesian controller: activates controller
- ros2_control manager → Joint command controller: activates controller
- ros2_control manager → Gravity compensation: activates controller
- ros2_control manager → Hold controller: activates controller
- Cartesian controller → Hardware interface base: writes position commands
- Joint command controller → Hardware interface base: writes position commands
- Gravity compensation → Hardware interface base: writes effort commands
- Hold controller → Hardware interface base: writes hold positions
- Real arm backend → Hardware interface base: implements backend
- MuJoCo backend → Hardware interface base: implements backend
- Mock backend → Hardware interface base: implements backend
- Real arm backend → CAN motor transport: uses CAN transport
- Robot bringup → Robot descriptions: loads robot model
- MoveIt planning config → Robot descriptions: configures planning model
- C++ commander example → Control mode manager: issues ROS commands