-
Notifications
You must be signed in to change notification settings - Fork 9
Open
Description
Before proceeding, is there an existing issue or discussion for this?
- I have done a search for similar issues and discussions.
Description
This is a meta ticket that broadly summarizes improvements for the obstacle detection pipeline in Open-RMF.
Goal: Report and react to obstacles that impede mobility within the Open-RMF framework.
Background
Sources for reporting obstacles
- 2D vision systems: CCTVs, RPi Cameras, thermal cameras, etc
- 3D vision systems: stereo cameras, depth sensors, etc
- 2D/3D lidars: stationary, on robots, etc
Types of reactions
- Replan robot routes
- Close down lanes
- Alert users
- Update speed limits for robots
Checklist
-
- Replace our BoundingBox3D with an
BoundingBox3Dmessage from vision_msgs - Refactor Obstacle.msg to support obstacles represented in various forms. It currently has fields for
BoundingBox3d bboxand serializeddata. We could ideate other data ways to communicate obstacle presence (OccupancyGrid,octomap,bonxai, etc.) It might be better to also add a field and enum constants for users to indicate the type of obstacle populated in the msg. - A new message that the
rmf_obstacle_servercould publish with collated information on all the obstacles per level in the building. AnOccupancyGridfield within the message may be helpful.
- Replace our BoundingBox3D with an
-
- Add an API to
RobotUpdateHandleto report the presence of obstacles. This information can be published to thermf_obstacle_serverwhich can then publish response commands to other fleet adapters.
- Add an API to
-
- Add pure abstract base classes for
-
ObstacleBehaviorwith methodsinit: To initialize the plugin with a ROS 2 node reference to create any pub/subs neededobstacle_cb: To reach to obstacle infrormation
-
ObstacleReporterwith methodsinit: To initialize the plugin with a ROS 2 node reference to create any pub/subs neededreport: To report obstacle.
-
-
rmf_obstacle_reporternode that- initializes a publisher to publisher over
/rmf_obstacles. - loads and initializes base classes of
ObstacleReportertype using pluginlib.
- initializes a publisher to publisher over
- Convert all existing
rmf_X_detectorpackages in this repo into plugins forrmf_obstacle_reporter. - Generalize
rmf_human_detectorto detect other classes of objects. - rmf_obstacle_server
- Create a new node that subscribes to
/rmf_obstaclespublished by various "reporting" nodes, collate the information per level, and publish the unified data. - Have the node rely on pluginlib to load plugins of
ObstacleBehaviorbase class. - Convert existing
lane_blocker_nodeto a plugin that can be loaded byrmf_obstacle_server.
- Create a new node that subscribes to
- Add pure abstract base classes for
-
- Switch to subscribing to collated obstacle information published by
rmf_obstacle_serverand visualize obstacles depending on which level is active in the view. - Visualize other types of obstacles (not just
BoundingBox3D)
- Switch to subscribing to collated obstacle information published by
-
- Update
lane_closure_requestsubscription callback to honor requests from approved requestors. - Showcase
rmf_obstaclecapabilities in a demo world.
- Update
-
Bonus:
- A navigation2 costmap plugin that subscribes to this msg and updates the global costmap of the robot.
- Have mapf receive occupancy information as well.
Metadata
Metadata
Assignees
Labels
No labels