@@ -337,11 +337,11 @@ ros2 launch my_robot robot.launch.py use_sim:=true
337337This works, but the logic lives in Python launch files that are completely separate from
338338your node code. Errors (wrong topic names, missing remappings) only show up at runtime.
339339
340- In Copper, everything is in one ` copperconfig.ron ` :
340+ In Copper, all missions live in ` copperconfig.ron ` :
341341
342342``` text
343343Copper:
344- copperconfig.ron ← all missions, tasks, and connections in one place
344+ copperconfig.ron ← missions, tasks, connections
345345 cargo run ← default mission
346346 cargo run -- direct ← alternative mission
347347```
@@ -350,12 +350,10 @@ Key differences:
350350
351351| | ROS 2 | Copper |
352352| ---| ---| ---|
353- | ** Where** | Python launch files + YAML params | Single ` copperconfig.ron ` |
353+ | ** Where** | Python launch files + YAML params | ` copperconfig.ron ` |
354354| ** Validation** | Runtime (nodes may fail to connect) | Compile time (macro checks the graph) |
355355| ** Granularity** | Per-node conditionals | Per-task and per-connection tagging |
356356| ** Switching** | Launch arguments | Builder selection in ` main.rs ` |
357- | ** All variants visible** | Spread across files and conditionals | One file, all missions side by side |
357+ | ** All variants visible** | Spread across files and conditionals | One file, all missions visible |
358358
359- The biggest advantage is ** visibility** : you can look at one file and see every mission,
360- every task, and exactly which tasks are active in which missions. There's no need to
361- mentally simulate a launch file's conditional logic to figure out what will actually run.
359+ The main advantage: one file shows every mission and which tasks run in each.
0 commit comments