Hybrid indoor and outdoor map

Hi everyone,
I’m working on a project with OpenRMF and came across a situation I’d like to share to get some insights. I’m using RMF in an industrial warehouse, and now I’d like to do the same in another adjacent warehouse. The two warehouses are connected by a road. I want the robots to be able to move from one warehouse to the other, and I was wondering if anyone has already done something similar.

The road is very open, so it’s not possible to use SLAM for localization—only GPS is viable—but there is network connectivity throughout the path. In order to move a robot from one warehouse to the other, a navigation system needs to be implemented that uses SLAM indoors and GPS outdoors.

My idea was to implement a hybrid navigation system that uses both methods, and switch from one map to another when moving from one warehouse to the other—like transitioning between two levels using an elevator.
Has anyone ever done this? Do you have any advice on how to approach it?

Hi @Villy01! That’s an interesting use-case. Regarding the robot navigation outdoors, you can find quite a number of topics regarding switching modes or GPS navigation in this forum. If you’re using Nav2, with my limited knowledge, I’d say you’ll be able to fuse all the sensor data via ekf, and modify the covariances of each sensor input according to whether the robot is indoors or outdoors, so that bad GPS readings indoors will not interfere with the localization too much, while odometry can still be used outdoors together with GPS. There may be way more awesome ways to achieve this, this is just my past experience with Nav1 and Nav2.

One the Open-RMF side, it’s possible to use the docking waypoint trigger, to let the fleet adapters know when to command robots to make changes to their configuration (switch behavior trees or maps or trigger custom behaviors). The fleet_adapter_mir is doing something similar with MiR missions, fleet_adapter_mir/fleet_adapter_mir/fleet_adapter_mir/robot_adapter_mir.py at main · open-rmf/fleet_adapter_mir · GitHub