SKILL.md
ROS 2 TDD Workflow
Core Principles
- Tests FIRST: Write
gtestorpytestbefore implementation. - Red-Green-Refactor: Test fail -> Code fix -> Optimize.
- Integration: Use
launch_testingfor node interaction tests.
Workflow
1. Define Requirements (User Story)
"As a robot, I need to stop when obstacle < 0.5m."
2. Write Test Case
C++ (GTest)
TEST_F(SafetyNodeTest, StopsOnObstacle) {
node_->publish_scan(0.4); // Simulate 0.4m
auto cmd = node_->get_cmd_vel();
EXPECT_EQ(cmd.linear.x, 0.0);
}
Python (Pytest)
def test_stop_on_obstacle(safety_node):
safety_node.publish_scan(0.4)
cmd = safety_node.get_cmd_vel()
assert cmd.linear.x == 0.0
3. Run Test (Fail)
colcon test --packages-select my_safety_pkg
4. Implement Logic
Write minimal code in safety_node to pass the test.
5. Verify & Coverage
colcon test --packages-select my_safety_pkg
colcon test-result --all
Tools
- Unit:
amentcmakegtest,amentcmakepytest - Integration:
launchtesting,osrfpycommon - Mocking:
gmock(C++),unittest.mock(Python)