Rviz plugin for displaying satellite maps at the position of a sensor_msgs/msg/NavSatFix
message.
Add an instance of AerialMap
to your Rviz config and point it to a sensor_msgs/msg/NavSatFix
topic.
Map tiles will be cached to $HOME/.cache/rviz_satellite
.
At present the cache does not expire automatically - you should delete the files in the folder if you want the images to be reloaded.
Currently, the OpenStreetMap convention for tile URLs is supported. This e.g. implies that only raster tiles (no vector tiles) are supported.
To try a demo, run the following commands to make Rviz circle around a geo point you define.
rviz2 -d $(ros2 pkg prefix --share rviz_satellite)/launch/demo.rviz
$(ros2 pkg prefix --share rviz_satellite)/launch/publish_demo_data.py LATITUDE LONGITUDE
You should see a view like the following. Here, the coordinates are 48.211486, 16.383982 (Vienna), using OpenStreetMap tiles.
You must provide a tile URL (Object URI) from which the satellite images are loaded.
The URL should have the form http://server.tld/{z}/{x}/{y}.jpg
.
Where the tokens {z}
, {x}
, {y}
represent the zoom level, x coordinate, and y coordinate respectively.
These will automatically be substituted by rviz_satellite when making HTTP requests.
rviz_satellite doesn't come with any preconfigured tile URL. For example, you could use one of the following tile servers:
- OpenStreetMap: https://tile.openstreetmap.org/{z}/{x}/{y}.png
- TomTom: https://api.tomtom.com/map/1/tile/basic/main/{z}/{x}/{y}.png?tileSize=512&key=[TOKEN]
- Mapbox: https://api.mapbox.com/styles/v1/mapbox/satellite-v9/tiles/256/{z}/{x}/{y}?access_token=[TOKEN]
For some of these, you have to request an access token first. Please refer to the respective terms of service and copyrights.
Topic
is the topic of the GPS measurements.Projection frame
is the frame id onto which to project the map is to be projected.Alpha
is simply the display transparency.Draw Under
will cause the map to be displayed below all other geometry.Zoom
is the zoom level of the map. Recommended values are 16-19, as anything smaller is very low resolution. 22 is the current max.Blocks
number of adjacent tiles in addition to the center tile to load, 8 maximum.Timeout
specifies a timeout since the last received message timestamp, after which the map will be faded out; disable by setting to 0.
In case of questions or problems, do not hesitate to open an issue.
Contributions are welcomed. Please add a summary of your changes to the changelog under the section Forthcoming.
The icon was downloaded and edited from svgrepo, originally licensed under CC0.