news 2026/3/27 23:45:49

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

作者头像

张小明

前端开发工程师

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

ROS笔记:

前言

在机器人户外导航开发中,拥有一个直观的卫星地图背景是刚需。虽然 ROS 社区有rviz_satellitemapviz等工具,但在国内网络环境下,直接使用 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: 设置为1819

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

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

避坑提示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挂载本地地图。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/15 5:55:47

OpenAI开源“Circuit‑Sparsity”模型,0.4 B 参数实现 99.9% 权重归零!

12 月 15 日&#xff0c;OpenAI 在官方博客上公布了最新的开源项目——Circuit‑Sparsity 模型。该模型仅拥有 0.4 B 参数&#xff0c;但高达 99.9% 的权重被强制置零&#xff0c;形成极度稀疏的 Transformer 结构。OpenAI 表示&#xff0c;此举旨在破解大语言模型&#xff08…

作者头像 李华
网站建设 2026/3/28 5:13:55

18、软件开发中的交叉引用与测试驱动开发实践

软件开发中的交叉引用与测试驱动开发实践 在软件开发过程中,文档编写和测试是确保软件质量和可维护性的重要环节。下面将介绍 Sphinx 的交叉引用功能,以及测试驱动开发(TDD)的相关内容。 1. Sphinx 交叉引用 Sphinx 提供了内联标记来设置交叉引用。例如,要创建一个指向…

作者头像 李华
网站建设 2026/3/26 9:12:10

AI眼镜热销卖爆:产能紧张与供应链竟然都快跟不上了!

近期&#xff0c;AI眼镜成为消费电子市场的热点。自今年上半年多家厂商相继发布新品后&#xff0c;AI眼镜在天猫、京东、抖音等平台的成交额出现爆发式增长&#xff0c;双十一期间更是实现全网销量第一的成绩。然而&#xff0c;热销的背后却暴露出产能不足、供应链紧张的结构性…

作者头像 李华
网站建设 2026/3/27 15:22:16

COMSOL手性超表面的琼斯矩阵与透射系数计算

COMSOL手性超表面 琼斯矩阵&#xff0c;透射系数计算手性超表面作为一种新兴的电磁调控手段&#xff0c;近年来受到了广泛的关注。它通过在亚波长尺度上设计结构&#xff0c;可以实现对电磁波偏振态的灵活操控&#xff0c;从而在光通信、成像以及隐身技术等领域展现出巨大的应用…

作者头像 李华
网站建设 2026/3/23 10:11:23

AI伦理治理:在创新与规范之间寻找平衡

随着人工智能技术深度融入生产生活&#xff0c;生成式AI创作内容、AI辅助诊疗、智能决策系统等应用层出不穷&#xff0c;为社会带来效率提升的同时&#xff0c;也衍生出数据滥用、算法偏见、责任模糊等伦理风险。如何在鼓励技术创新与守住伦理底线之间实现动态平衡&#xff0c;…

作者头像 李华