Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor obstacle framework in Open-RMF #22

Open
1 of 27 tasks
Yadunund opened this issue Mar 18, 2024 · 1 comment
Open
1 of 27 tasks

Refactor obstacle framework in Open-RMF #22

Yadunund opened this issue Mar 18, 2024 · 1 comment

Comments

@Yadunund
Copy link
Member

Yadunund commented Mar 18, 2024

Before proceeding, is there an existing issue or discussion for this?

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

image

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

  • rmf_obstacle_msgs

    • Replace our BoundingBox3D with an BoundingBox3D message from vision_msgs
    • Refactor Obstacle.msg to support obstacles represented in various forms. It currently has fields for BoundingBox3d bbox and serialized data. 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_server could publish with collated information on all the obstacles per level in the building. An OccupancyGrid field within the message may be helpful.
  • rmf_fleet_adapter

    • Add an API to RobotUpdateHandle to report the presence of obstacles. This information can be published to the rmf_obstacle_server which can then publish response commands to other fleet adapters.
  • rmf_obstacle_ros2

    • Add pure abstract base classes for
      • ObstacleBehavior with methods
        • init: To initialize the plugin with a ROS 2 node reference to create any pub/subs needed
        • obstacle_cb: To reach to obstacle infrormation
      • ObstacleReporter with methods
        • init: To initialize the plugin with a ROS 2 node reference to create any pub/subs needed
        • report: To report obstacle.
    • rmf_obstacle_reporter node that
      • initializes a publisher to publisher over /rmf_obstacles.
      • loads and initializes base classes of ObstacleReporter type using pluginlib.
    • Convert all existing rmf_X_detector packages in this repo into plugins for rmf_obstacle_reporter.
    • Generalize rmf_human_detector to detect other classes of objects.
    • rmf_obstacle_server
      • Create a new node that subscribes to /rmf_obstacles published by various "reporting" nodes, collate the information per level, and publish the unified data.
      • Have the node rely on pluginlib to load plugins of ObstacleBehavior base class.
      • Convert existing lane_blocker_node to a plugin that can be loaded by rmf_obstacle_server.
  • rmf_visualization

    • Switch to subscribing to collated obstacle information published by rmf_obstacle_server and visualize obstacles depending on which level is active in the view.
    • Visualize other types of obstacles (not just BoundingBox3D)
  • rmf_demos

    • Update lane_closure_request subscription callback to honor requests from approved requestors.
    • Showcase rmf_obstacle capabilities in a demo world.
  • 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.
@Yadunund Yadunund pinned this issue Mar 18, 2024
@open-rmf open-rmf locked and limited conversation to collaborators Mar 18, 2024
@Yadunund Yadunund changed the title Refactor RMF obstacle framework Refactor obstacle framework in Open-RMF Mar 18, 2024
@Yadunund
Copy link
Member Author

To discuss any of the implementations further, please use this Discussion ticket

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant