Core software layers
A practical stack usually contains messaging and lifecycle management at the middleware layer, motion planning and collision reasoning above it, then simulation and logging infrastructure for pre-deployment testing. ROS 2 provides the communication primitives; MoveIt provides planning and manipulation abstractions.
Evaluation is not optional
For any embodied system that operates under uncertainty, evaluation should cover distribution shift, partial observability, and long-horizon task execution. A simple metric decomposition is often useful:
This is not a universal formula, but it forces explicit trade-offs. A useful pipeline records failures by category: perception, planning, control, execution, and recovery.
Minimal workflow sketch
A small but practical workflow couples reproducible launch files with planning interfaces and synchronized logging:
# Example workflow sketch
ros2 launch robot_bringup sim.launch.py
ros2 launch moveit_config demo.launch.py
ros2 bag record /tf /joint_states /camera/image_raw /planner/metrics
The point is not the exact command list. It is the engineering principle: reproducible system traces, scenario-based evaluation, and evidence that a controller works outside the nominal path.