淘先锋技术网

首页 1 2 3 4 5 6 7

系列文章目录

北科天绘 16线3维激光雷达开发教程
基于Rplidar二维雷达使用Hector_SLAM算法在ROS中建图
Nvidia Jetson Nano学习笔记–串口通信
Nvidia Jetson Nano学习笔记–使用C语言实现GPIO 输入输出
Autolabor ROS机器人教程
从零搭建一台基于ROS的自动驾驶车-----1.整体介绍

从零搭建一台基于ROS的自动驾驶车-----2.运动控制


前言

本篇文章主要讲二维雷达+cartography算法建立一张二维地图。
分为两个部分,第一是介绍在ROS环境下使用雷达,第二是使用cartography算法来建图。
参考链接:
Rplidar二维雷达使用

一、二维雷达

我用的雷达型号是思岚的A2,ROS中有相应的功能包可以驱动雷达,详细的教程在:
Rplidar二维雷达使用

通过上面那个教程就可以获得雷达的数据,在rviz中也能看到激光点云图,话题为/scan。

二、Cartography

Cartography的安装可以在CSDN参考别人的教程也可以通过鱼香ROS来一键安装。
Cartography算法相比Gmapping算法建图效果会好很多,在单激光雷达建图的情况下。
Cartography算法也支持单2D激光雷达建图。
https://blog.csdn.net/qq_46274948/article/details/127009016?spm=1001.2014.3001.5501

三、保存和读取地图

ROS地图服务
map_server功能包中提供了两个节点: map_saver 和 map_server,前者用于将栅格地图保存到磁盘,后者读取磁盘的栅格地图并以服务的方式提供出去。
1.安装map_server

sudo apt install ros-<ROS版本>-map-server

2.map_server使用之地图保存节点(map_saver)
编写一个launch文件

<launch>
    <arg name="filename" value="$(find mycar_nav)/map/nav" />
    <node name="map_save" pkg="map_server" type="map_saver" args="-f $(arg filename)" />
</launch>

其中 mymap 是指地图的保存路径以及保存的文件名称。

SLAM建图完毕后,执行该launch文件即可。

3.map_server使用之地图服务(map_server)
读取地图,编写launch文件

<launch>
    <!-- 设置地图的配置文件 -->
    <arg name="map" default="nav.yaml" />
    <!-- 运行地图服务器,并且加载设置的地图-->
    <node name="map_server" pkg="map_server" type="map_server" args="$(find mycar_nav)/map/$(arg map)"/>
</launch>