New: Nav2 Docking Server

Howdy! Its your Friendly Neighborhood Navigator here with an announcement in conjunction with NVIDIA’s Isaac 3.0 Release! We’ve been working closely with NVIDIA this year to bring new capabilities to the mobile robotics community and have a new capability in Nav2: OpenNav Docking!

This package is a complete and generalized autonomous docking solution! Auto-docking has been a long-missing low-hanging fruit in the ROS ecosystem for a long time. While other packages exist like those in fetch_open_auto_dock and open-rmf, they lack generalization for different types of robots, docks, situations, or detection methodologies to be directly appliable to non-Fetch robots or non-Apriltag based detection pipelines. So, opennav_docking includes:

  • ChargingDock plugins to specify dock specifics like detection, staging poses, and charging state
  • A SimpleChargingDock plugin is provided which handles many common situations using standard ROS APIs like BatteryState, JointStates which may work out of the box of a non-trivial number of potential users
  • An Action API to dock or undock a robot as a stand-alone feature and Behavior Tree nodes to compose this feature within your high level robot behaviors
  • A docking database allowing users to have many and different types of docks in an environment to use
  • Continuous vision-control loop to consider active detections to refine dock pose targeting
  • 90%+ Unit Test Coverage + a Tutorial about how to set it up with examples
  • Retry mechanisms to dock even in failure conditions

You can see this in action in the videos below!

These have >98% successful docking rates. The only failures are due to massive and intentionally caused delocalization error or putting the robots into particularly challenging or unusual situations to test its limits.

This is currently available in open-navigation/opennav_docking but will be migrated into the Nav2 stack directly in the coming days.

Thanks again to NVIDIA for sponsoring this project and allowing Open Navigation to open-source and support this for the entire community. The README for the project has a ton of great context, detail, and information (as you expect from a Nav2 package!) - in addition to the Configuration Guide and Tutorial that is live now at docs.nav2.org!

You can read more about NVIDIA’s release here in Gordon’s post! Isaac ROS May update, 3.0 release adds more AI + robot manipulation

Happy docking!

Steve Macenski
Open Navigation

25 Likes

Thank you for bringing us this much-anticipated server to the community!

We’ve been testing it throughout the last week, and it works flawlessly.

2 Likes

The migration into Nav2 has started! Adding Nav2 / Open Navigation Docking by SteveMacenski · Pull Request #4406 · ros-navigation/navigation2 · GitHub

1 Like

@smac are there any intentions of backporting to humble?

It has been released in humble already in the original open navigation repository! You should be able to use it today from binaries :sunglasses:

3 Likes

Hi yal!

A quick update - I’ve just completed adding in a non-charging dock plugin type (and associated logic) so that you can dock with conveyors, infrastructure, pallots, or whatever else your heart desires (and you can BYO-detector for) in addition to charging stations.

I’d love someone that needs to dock with non-chargers to give this a whirl and let me know how it works for you!

2 Likes

Check out a video of several companies that have adopted Nav2’s new docking server!

  • Neobotix!
  • Pal Robotics!
  • Robotnik!
  • NVIDIA / Segway!
  • Wasp Research Group, University of Malaga!

These companies are using the server’s flexibility to work with Apriltags, 3D Pose-Detection AI, 2D lidar ICP templates to dock with chargers and infrastructure like conveyer belts using several types of omnidirectional and differential drive robots!

5 Likes