尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

从零开始将高德地图(卫星图+路网)接入 RViz 与 Mapviz 的保姆级教程 (C++,python,ros,自动驾驶)

从零开始将高德地图(卫星图+路网)接入 RViz 与 Mapviz 的保姆级教程 (C++,python,ros,自动驾驶)
📅 发布时间:2026/6/21 6:13:02

ROS笔记:

前言

在机器人户外导航开发中,拥有一个直观的卫星地图背景是刚需。虽然 ROS 社区有rviz_satellite和mapviz等工具,但在国内网络环境下,直接使用 Google Maps 或 Stamen 地图源往往会遇到 "Bad Gateway" 或 "Forbidden" 的问题。

本文将总结一套在ROS Noetic环境下,稳定接入高德地图(高清卫星图+中文路网标注)的完整技术路线。涵盖了在线直连、离线瓦片制作(QGIS方案)以及RViz/Mapviz的详细配置避坑指南。


一、 最简单有效的方法:RViz 直连与配置

如果你只需要快速在 RViz 中看一眼地图,并且网络环境允许,使用rviz_satellite插件是最简单的方法。

1. 安装插件

首先安装适用于 ROS Noetic 的卫星图插件:

sudo apt install ros-noetic-rviz-satellite

2. 获取高德地图 URL

高德地图的 XYZ 瓦片服务非常稳定,且无需申请 Key。为了获得“卫星底图+路网标注”的效果,我们通常使用以下两个链接:

  • 卫星底图 (style=6):http://webst01.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}

  • 路网标注 (style=8):http://webst01.is.autonavi.com/appmaptile?style=8&x={x}&y={y}&z={z}

3. RViz 配置核心参数

启动 RViz 后,点击Add->AerialMapDisplay。重点配置以下参数,否则地图不会显示:

  • Topic (关键): 必须填入你的 GPS 话题(如/fix或/gps/fix)。插件需要根据 GPS 定位来决定加载哪里的地图。

  • Map URL: 填入上面的高德 URL。

  • Zoom: 设置为18或19。

    • 注意:高德卫星图的高清层级通常在 18-19 级,设置过小(如 0-10)可能导致加载为空白。

  • Blocks: 建议设为3或4,表示加载机器人周围多少块瓦片。

避坑提示:rviz_satellite对本地文件路径 (file://) 的支持极其挑剔,容易报Invalid Object URI。如果你想加载离线地图到 RViz,请看下文的“本地服务器”大法。


二、 进阶方案:制作高清离线瓦片地图 (QGIS + GDAL)

为了彻底摆脱对网络的依赖(例如在无网的户外调试),我们需要将地图“下载”到本地。

1. QGIS 配置地图源

在 Ubuntu 或 Windows 上安装 QGIS,在左侧XYZ Tiles右键新建连接:

  • 名称: Amap Satellite

  • URL:http://webst01.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}

  • 同理添加style=8的路网图层,并将两者叠加。

2. 导出高清 GeoTIFF (关键步骤)

不要直接保存工程,而是使用导出为图像 (Export Map to Image)功能:

  • 范围: 选择你需要下载的区域(如大学校区)。

  • 分辨率 (Resolution):这是最高清的关键!手动将水平/垂直分辨率改为0.000005(约 0.5m/px) 或0.000002(约 0.2m/px)。

    • 检查: 确保 Output Width 在 5000-8000 像素左右。

  • 格式: 选择.tif格式,并勾选“附加地理参考信息”。

3. 瓦片切割 (gdal2tiles)

在终端中使用 GDAL 工具将巨大的 TIF 图片切割为 Mapviz/RViz 可用的瓦片。

情况 A:你的 GDAL 版本较新 (支持 --xyz)

gdal2tiles.py --xyz -z 15-19 my_map.tif output_tiles/

情况 B:你的 GDAL 版本较旧 (Ubuntu 20.04 默认情况)

旧版生成的是 TMS 格式(Y轴翻转),会导致地图上下颠倒。需要先生成 TMS,再用 Python 脚本转为 XYZ:

# 1. 生成 TMS 瓦片 gdal2tiles.py -z 15-19 my_map.tif output_temp/ # 2. 运行脚本进行翻转 (脚本逻辑:y_new = 2^z - 1 - y_old) # (此处省略具体脚本代码,核心是重命名文件)

三、 Mapviz 的使用与参数细节

Mapviz 相比 RViz,天生更适合做 2D 平面导航仪表盘,它对离线瓦片的支持更加友好。

1. 配置坐标原点 (Initialize Origin)

Mapviz 必须知道 WGS84 (经纬度) 与 ROS/map坐标系的转换关系。需要在 launch 文件中配置swri_transform_util:

<node pkg="swri_transform_util" type="initialize_origin.py" name="initialize_origin"> <param name="local_xy_frame" value="/map"/> <param name="local_xy_origin" value="auto"/> </node>

2. 加载离线地图 (tile_map)

在 Mapviz 中添加tile_map插件:

  • Source: 选择Custom WMTS Source(不要选默认的 Stamen 或 Tianditu)。

  • Base URL (重点):

    Mapviz 的 URL 格式支持占位符。如果你使用的是本地路径:

    file:///home/user/map_data/{level}/{x}/{y}.png

    或者

    file:///home/user/map_data/{z}/{x}/{y}.png

    技术细节:虽然大部分工具通用{z}代表缩放等级,但在某些版本的 Mapviz 配置文件中,参数名明确写作level。如果发现加载不出图片,请尝试将 URL 中的{z}修改为{level},这往往是解决“路径正确但无图”的最后一把钥匙。

3. 在 RViz 中使用离线地图的“绝招”

前面提到 RViz 对file://支持不好。要在 RViz 中用这套离线瓦片,只需在瓦片目录下运行一行 Python 命令,开启一个微型 HTTP 服务器:

Bash

cd /path/to/output_tiles python3 -m http.server 8000

然后在 RViz 的 Map URL 中填入:

http://127.0.0.1:8000/{z}/{x}/{y}.png

这样,RViz 会以为自己在访问网络地图,从而完美加载你的离线数据!


总结

  1. 想省事:直接用rviz_satellite+ 高德在线 URL。

  2. 要素全:用 QGIS 叠加“卫星+路网”,导出高清 TIF。

  3. 兼容性:GDAL 切片时注意 XYZ 格式,旧版本需脚本翻转 Y 轴。

  4. 调试:Mapviz 中注意{z}和{level}的切换;RViz 中推荐用python http.server挂载本地地图。

相关新闻

  • Liquibase动态删除表外键依赖
  • 小鼠ELISA Kit:如何精准定量胰岛素并推动代谢研究?
  • C#+VisionMaster联合开发控件篇(三)_流程配置控件

最新新闻

  • 华为光猫配置解密终极指南:5分钟学会查看加密配置文件
  • 凸包简化算法:基于对偶表示的贪心优化与工程实践
  • 2026年值得信赖的环保科技厂家推荐,体验服务品质之选,价格透明不踩坑 - 工业品网
  • 泡沫异型异形缓冲客户口碑力荐,高认可度厂家盘点价格透明不踩雷 - myqiye
  • Hermes+Qwen3.6本地部署实战:WSL2+CUDA12.1打造私人AI助理
  • CodeWarrior开发环境搭建与调试实战:从零入门飞思卡尔MCU

日新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号