Add CCTV risk-aware navigation planning package - #19
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 42966b6f4d
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| configured_params = RewrittenYaml( | ||
| source_file=params_file, | ||
| root_key='', | ||
| param_rewrites={'default_nav_to_pose_bt_xml': bt_xml}, |
There was a problem hiding this comment.
Add the full BT XML parameter path
When launching with the default nav2_params_cctv.yaml, default_nav_to_pose_bt_xml is not an actual parameter (it only appears in a comment), so this leaf rewrite has nothing to replace; on Humble it will not add missing params, and on newer Nav2 releases adding missing params requires a full path containing ros__parameters. As a result, Proposed mode still uses Nav2's default behavior tree and the new IsDynamicPathOccupied branch is never loaded.
Useful? React with 👍 / 👎.
| path_sub_ = create_subscription<nav_msgs::msg::Path>( | ||
| path_topic_, rclcpp::QoS(rclcpp::KeepLast(1)).transient_local(), |
There was a problem hiding this comment.
Subscribe to /plan with compatible QoS
Nav2's planner publishes plan with the standard volatile QoS, so requesting transient_local durability here is incompatible unless the publisher is also changed. In Proposed mode this leaves last_path_ unset, so /planning/path_risk_state keeps reporting that it is waiting for /plan and IsDynamicPathOccupied never succeeds even when perception reports an object on the path.
Useful? React with 👍 / 👎.
| <!-- 동적 객체 단기 점유: replan 억제, SpeedPlanner 감속 --> | ||
| <ReactiveSequence name="DynamicPathOccupied"> | ||
| <IsDynamicPathOccupied/> | ||
| <FollowPath path="{path}" controller_id="FollowPath" goal_checker_id="goal_checker"/> |
There was a problem hiding this comment.
Stop instead of following the occupied path
When dynamic_path_occupied is true for a CCTV-only obstacle that is not present in /scan, this branch suppresses replanning but immediately ticks FollowPath on the stale path. I checked nav2_params_cctv.yaml: the local costmap now only has voxel_layer and inflation_layer, and this tree contains no SpeedController/wait action, so there is no component that will slow or stop for that perception-only obstacle; the robot can keep driving along the blocked path during the intended wait window.
Useful? React with 👍 / 👎.
Summary
planning_pkgfor CCTV risk-aware navigation.Changed files
src/planning_pkg/**src/bringup_pkg/config/nav2_params_cctv.yamlsrc/bringup_pkg/launch/scout_cctv_nav2.launch.pysrc/bringup_pkg/README.mdTest
colcon buildNotes
lookahead_distis set to5.0mfor clearer comparison/demo behavior.