Maps
Manage and display maps including real-time robot locations.
Features
- Show live-maps from robots, including during mapping.
- Show fleet of robots on saved maps.
- Layers, e.g., for speed maps, exclusion zones, etc.
- Save and manage maps and layers for different buildings/locations/areas/sites/floors.
- Works with ROS 1 and ROS 2 and even both at the same time, e.g., a mixed fleet.
- As always: embed these maps in your own web dashboards or share via password-protected links with customers or other users.
Glossary
- A robot's "location" is an area where robots navigate, e.g., a building ("Warehouse 12"), a floor ("Floor 13"), or an outdoor region ("soccer field").
- A robot's "pose" is a position + orientation.
Planned features
- define named poses and regions
- edit maps right in the browser
- stitch maps
- (re-)localize robots
- show laser-scans
- show navigation plan
- click-to-nav: Click on the map to send navigation goal to robot
- click handlers for robot icons, e.g., to open a robot's detailed view or camera feed
Device UI
The device UI of this capability shows a live-feed of the robots' current map, incl. live updates during mapping, multiple layers, and the robot's pose.
Setup
Current robot location
- Robots can optionally publish a name for their current location (e.g., building, area, or floor).
- The default ROS topic where this location is read is
/currentLocation
, typestd_msgs/String
, with a JSON object in the shape of:{
"mapId" : "second_floor",
"mapName" : "Second Floor"
} - The topic name can be changed in the robot's
config.json
(see Device Configuration), e.g.:{
"@transitive-robotics/maps": {
"location": "/currentFloor"
}
} - The name of the robot's current location will be shown in the bottom-right corner of the map.
- Robots not publishing their current location will be considered to be in the "Default" location, whose map will not show a name.
Layers selector
- Allows subscribing to any
OccupancyGrid
topic published on the robot. - Maps from selected topics will render live in the web component.
- Layers can be reordered with the top layer acting as the base map. This is typically the navigation map.
- Additional selected topics will render as semi-transparent overlays
- Each selected layer can be colorized using the palette button.
- Layers can be uploaded to the cloud using the upload button.
- Layers will be uploaded to the cloud under the robot's current location (e.g., "Second Floor") and identified by a name (e.g., "navigation", "access map").
- Uploaded maps/layers are what is used in the Fleet UI.
Pose sources selector
- Allows you to select a pose source from the robot, to show its live location on the map.
- Supports
Pose
andPoseStamped
topics, as well as TF frames connected to the/map
frame. - Default pose source:
- Robots can define an optional default pose source in the Transitive
config.json
file, e.g.:
or:{
"@transitive-robotics/maps": {
"pose": {
"type": "rosTopic",
"topic": "/slam/pose",
"rosType": "geometry_msgs/PoseStamped",
"rosVersion": 1
}
}
}{
"@transitive-robotics/maps": {
"pose": {
"type": "tfLink",
"name": "base_link"
}
}
} - This provides you with a mechanism to configure the pose to use fleet-wide using your own configuration management solution.
- The default source will be selected by default in the Device UI.
- Robots can define an optional default pose source in the Transitive
Fleet UI
For a chosen location (e.g., floor), the Fleet UI shows the map and all robots currently in that location.
Setup:
Location selector
- Shows the locations for which saved layers exist (uploaded from device UI).
- Selecting one will show on the map all the robots currently located on the selected location including their live pose.
- If a map was saved for the "Default" location, all robots not publishing the name of their current location will show up on this map.
Layer selector
- Shows all maps/layers uploaded for the selected location.
- Like in the Device UI, these layers can be reordered and the top layer acts as the base map
- Subsequent selected maps show as semi-transparent layers, whose colors can be customized.
- Unlike in the Device UI, the displayed maps/layers are static and come from cloud storage, not live from any particular robot.
- Layers can be deleted using the trashcan icon.
Pose selector
- Allows choosing a specific ROS topic or TF frame for retrieving the current pose of all robots at the selected location for display on the map.
- By default the "default" pose source defined in
config.json
will be used. This is recommended since this file is under your control and can be different for each robot, making it easy to show mixed fleets, e.g., running different versions of software or ROS, on the same map.
Embedding maps in your own web application
The "Embed" button in either UI will provide a piece of React/HTML code you can use to embed these maps in your own web applications. It includes all the settings you selected for the above described controls. Embedded maps component will show just the map and the robot, without these controls, useful for white-labeling in externally facing dashboards, e.g., for your customers.