How lyz1202dt/atnewroboticarm works
RoboticArm is a ROS 2/ros2_control system for controlling a six-joint arm in MuJoCo or on physical hardware, with an offline dynamics-identification workflow. The main loop sends joint state through ArmController and its FSM to motion/model calculations, then dispatches commands through either simulation PID or the USB CDC interface. Additional branches cover MuJoCo sensors and visualization, and measurement-to-identification-to-URDF output. Runtime links follow the README and sampled sources; unsampled subsystem details and ROS control-manager wiring are shown only where documented.
Main entry points: arm_fsm.cpp Arm FSM states · identify_arm.py Offline identification · controller.cpp ArmController · mujoco_system.cpp MuJoCo system
Components 27
Arm control
- ArmController
src/arm_controller/controller/src/controller.cpp - FSM factory
src/arm_controller/arm/arm_fsm_factory.hpp - Arm FSM states
src/arm_controller/arm/arm_fsm.cpp
Model and motion
- Task mapping
src/arm_controller/arm/default6dof_task.cpp - ArmSolve
src/arm_controller/lib/calculate/arm.cpp - Kinematics
src/arm_controller/lib/calculate/kinamic.cpp - Trajectory tools
src/arm_controller/lib/calculate/trajectory.cpp - URDF model
src/arm_controller/arm/model_from_urdf.cpp
Hardware and simulation
- Simulation PID
src/arm_controller/controller/src/sim_pid_controller.cpp - MuJoCo system
src/mujoco_ros2_control/src/mujoco_system.cpp - MuJoCo engine
- MuJoCo sensors
src/mujoco_ros2_control/src/mujoco_ros2_sensors.cpp - Depth camera
src/mujoco_ros2_control/src/mujoco_depth_camera.cpp - Simulation visualization
src/mujoco_ros2_control/src/mujoco_visualization.cpp - Simulation GUI
src/mujoco_ros2_control/src/simulate_gui.cpp - Real hardware interface
src/arm_controller/controller/src/arm_real_interfaces.cpp - USB CDC transport
src/arm_controller/lib/cdc_trans/cdc_trans.cpp
Parameter identification
- Measurement CSV
- Excitation trajectory
src/arm_controller/lib/paramter_identify/excitation_trajectory.cpp - Offline identification
src/parameter_identify/parameter_identify/identify_arm.py - CSV loader
src/parameter_identify/parameter_identify/csv_loader.py - FIGAROH integration
src/parameter_identify/parameter_identify/vendor.py - URDF writer
src/parameter_identify/parameter_identify/urdf_writer.py - Identified URDF
Other components
- ROS operator
- Arm description
src/arm_model - Arm MCU
Connections 29
- ROS operator → ArmController: sets state
- ArmController → FSM factory: drives FSM
- FSM factory → Arm FSM states: dispatches states
- Arm FSM states → Trajectory tools: generates motion
- Arm FSM states → ArmSolve: requests solve
- Arm FSM states → URDF model: requests dynamics
- ArmSolve → Kinematics: uses solver
- ArmSolve → Task mapping: maps tasks
- URDF model → Arm description: loads model
- ArmController → Simulation PID: reference commands
- Simulation PID → MuJoCo system: effort commands
- MuJoCo system → MuJoCo engine: reads and steps
- MuJoCo engine → MuJoCo system: simulation state
- MuJoCo system → MuJoCo sensors: supplies simulation
- MuJoCo engine → Depth camera: renders camera data
- MuJoCo engine → Simulation visualization: renders scene
- MuJoCo engine → Simulation GUI: provides simulation
- ArmController → Real hardware interface: reference commands
- Real hardware interface → USB CDC transport: sends and receives
- USB CDC transport → Arm MCU: USB CDC packets
- Arm MCU → USB CDC transport: state packets
- Arm FSM states → Excitation trajectory: optimizes excitation
- Arm FSM states → Measurement CSV: records measurements
- Measurement CSV → Offline identification: identification input
- Arm description → Offline identification: input model
- Offline identification → CSV loader: loads measurements
- Offline identification → FIGAROH integration: identifies parameters
- Offline identification → URDF writer: writes model
- URDF writer → Identified URDF: outputs URDF