【Cartographer】Turtlebot2+rplidarA2

本文档详细介绍了如何在Ubuntu18.04和ROSMelodic环境下,使用Turtlebot2和rplidarA2硬件,通过cartographer和cartographer_ros构建激光SLAM地图。步骤包括安装依赖、配置雷达驱动启动文件、创建和修改启动脚本、保存地图以及运行结果展示。最后提供了参考链接以便进一步学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


配置

软件

  • Ubuntu18.04
  • ROS melodic

硬件

  • turtlebot2
  • rpldar A2

工作机和主机均由一台笔记本完成


一、安装

确保cartographer、cartographer_ros、rplidar_ros、cartographer_turtlebot、turtlebot_apps

二、制作雷达驱动启动文件

1、复制 rplidar.launch 到 rplidar-laser.launch

$ roscd turtlebot_navigation
$ mkdir -p laser/driver
$ sudo cp ~/catkin_ws/src/rplidar_ros/launch/rplidar.launch laser/driver/rplidar_laser.launch

2、打开 rplidar_laser.launch进行修改

检查 frame_id 是否指定为 laser:

<node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.0 0.0 0.18 0 0.0 0.0 base_link laser 100"/>

3、增加 TF 定义

<node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.0 0.0 0.18 0 0.0 0.0 base_link laser 100"/>

修改为 args="0.0 0.0 0.18 0 0.0 0.0 为自己的实际安装位置。详情查看,static_transform_publisher 部分

static_transform_publisher x y z qx qy qz qw frame_id child_frame_id period_in_ms

这里假设底盘的中心点为 0,雷达放在机器人托盘中心位置,X 为 0,高度为 18CM,Z 为 0.18m。
TF 的单位使用米的,测量单位是 CM。
rplidar_laser.launch修改后的完整代码如下:

<launch>
  <node name="rplidarNode"          pkg="rplidar_ros"  type="rplidarNode" output="screen">
  <param name="serial_port"         type="string" value="/dev/ttyUSB0"/>  
  <param name="serial_baudrate"     type="int"    value="115200"/>
  <param name="frame_id"            type="string" value="laser"/>
  <param name="inverted"            type="bool"   value="false"/>
  <param name="angle_compensate"    type="bool"   value="true"/>
  </node>

  <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.0 0.0 0.18 0 0.0 0.0 base_link laser 100"/>
</launch>

三、使用cartographer_turtlebot构建地图

1、增加 turtlebot_lidar.launch

$ cd ~/catkin_ws/src/cartographer_turtlebot/cartographer_turtlebot/launch
$ touch turtlebot_lidar.launch (touch 创建空白文件)
$ vim turtlebot_lidar.launch 

写入如下代码

<launch>
  <arg name="configuration_basename"/>

  <include file="$(find turtlebot_bringup)/launch/minimal.launch" />

  <node name="cartographer_node" pkg="cartographer_ros"
      type="cartographer_node" args="
          -configuration_directory
              $(find cartographer_turtlebot)/configuration_files
          -configuration_basename $(arg configuration_basename)"
      output="screen">
    <remap from="scan" to="/scan" />
  </node>

  <node name="flat_world_imu_node" pkg="cartographer_turtlebot"
      type="cartographer_flat_world_imu_node" output="screen">
    <remap from="imu_in" to="/mobile_base/sensors/imu_data_raw" />
    <remap from="imu_out" to="/imu" />
  </node>

  <node name="rviz" pkg="rviz" type="rviz" required="true"
      args="-d $(find cartographer_turtlebot
          )/configuration_files/demo_turtlebot.rviz" />

</launch>

2、新增启动文件 turtlebot_lidar_2d.launch

$ cd ~/catkin_ws/src/cartographer_turtlebot/cartographer_turtlebot/launch
$ touch turtlebot_lidar_2d.launch
$ vim turtlebot_lidar_2d.launch

写入如下代码

<launch>
  <include file="$(find cartographer_turtlebot)/launch/turtlebot_lidar.launch">
    <arg name="configuration_basename" value="turtlebot_urg_lidar_2d.lua" />
  </include>
</launch>

3、重新编译

#重新编译
$ cd ~/catkin_ws
$ catkin_make_isolated --install --use-ninja
该处使用的url网络请求的数据。

四、运行

  1. 启动rplidarA2,打开一个新终端,输入:
    $ roslaunch turtlebot_navigation rplidar_laser.launch
  2. 启动cartographer_turtlebot建地图,
    再打开一个新终端,输入:
    $ roslaunch cartographer_turtlebot turtlebot_lidar_2d.launch
  3. 使用键盘操作turtlebot2移动,又打开一个新终端
    $ roslaunch turtlebot_teleop keyboard_teleop.launch
    具体以及更多控制方式可参考:创客智造-Turtlebot 入门 - 遥控

五、保存地图

#新建map文件夹用于保存地图
$ mkdir -p ~/map
#启动存图,并将名为lidar_2d的地图文件保存在map文件夹
$ rosrun map_server map_saver -f ~/map/lidar_2d
#查看内容,包含lidar_2d.pgm  lidar_2d.yaml
$ ls ~/map   

六、运行结果

在这里插入图片描述
待调优


参考链接

  • https://www.jianshu.com/p/cb87eab6535c

感谢原作者的分享~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值