基于Ubuntu18.04+ROS Melodic搭建SLAM小车上位机(树莓派端)


一、所用功能包和串口

1.功能包

本项目采用几个开源项目的功能包实现基于激光雷达进行SLAM建图和导航。所用代码可在码云上进行下载。

该功能包需要在主从机上各自留存一份并编译一份。

2.串口

在本项目中采用树莓派作为上位机进行开发,需要将雷达和下位机与树莓派进行串口通讯。此处通过测试,我的雷达串口为 /dev/ttyUSB1 ,下位机串口为 /dev/ttyUSB0

如果你不知道自己的串口,可以通过插拔器件然后使用指令 ls /dev/ttyUSB* 进行查看所用串口。

你需要根据自己的实际情况,修改如下文件:

下位机串口

修改功能包zxcarlaunch文件夹内的文件bringup.launch,将自己的串口号下图所示位置。
在这里插入图片描述

雷达串口

修改功能包zxcar下文件夹launch/lidar 中文件rplidar.launch ,将自己的雷达串口填入下图位置中。
在这里插入图片描述

二、创建工作空间与编译

1.创建工作空间

建立新的工作空间并将下载的功能包置入其下文件夹src中。
在这里插入图片描述

2.编译

在工作空间下进行编译,初次编译可能会出现报错,根据报错提示进行下载相关依赖即可。
在这里插入图片描述

具体方式可参考:ROS依赖包安装问题

此处使用指令sudo apt-get install ros-melodic-geographic-msgs安装所需依赖包,随后再次进行编译即可。
在这里插入图片描述

3.权限

在linux中运行python文件需要给予其可执行权限,为减少麻烦,此处直接运行指令 sudo chmod -R +x src/ 赋予所有功能包内文件可执行权限。
在这里插入图片描述

4.刷新环境

为了方便之后运行ROS程序时,无需重复刷新环境,此次将source命令写入 .bashrc文件中确保了每次开启命令行时,直接进行刷新。

sudo vi ~/.bashrc

在文件末尾写上内容:

source ~/ws/devel/setup.bash

在这里插入图片描述

三、校准

由于imu在安装时可能存在倾斜等问题,需要进行校准。

1.校准imu

首先在树莓派端(主机端)启动zxcar功能包下的bringup.launch文件,待出现字样 “zxcar_driver start success!” 即表示为启动成功。

roslaunch zxcar bringup.launch

在这里插入图片描述

随后另起命令行,继续在主机端启动do_calib节点进行imu的校准。在进行此操作时,小车应当静止平放在地面上,不要用手触碰小车以确保校准的精度。

rosrun imu_calib do_calib

在这里插入图片描述

根据提示 Press [ENTER] once done. 敲击回车键进行下一步测量。共计需要测量六次
在这里插入图片描述
待校准完成后,将会在当前目录下生成文件imu_calib.yaml,需要将该文件替换 /zxcar/param/imu 目录下的同名文件。

roscd zxcar/param/imu/
sudo rm -rf imu_calib.yaml 
mv ~/imu_calib.yaml ~/ws/src/zxcar/param/imu/

在这里插入图片描述

2.校准角速度

在树莓派端(主机端)启动zxcar功能包下的bringup.launch文件并另开命令行启动calibrate_angular节点。待出现字样 “Bring up rqt_reconfigure to control the test.” 即表示为成功启动。

roslaunch zxcar bringup.launch
rosrun zxcar_nav calibrate_angular.py

在这里插入图片描述
在PC端(从机端)根据提示启动rqt工具。

rosrun rqt_reconfigure rqt_reconfigure 

在这里插入图片描述

此处可修改的参数如下:

  • test_angle :测试旋转的角度
  • speed :测试旋转的速度
  • tolerance : 测试的误差范围

保持默认参数不变,将手机指南针调出并平方在小车上方,记录当前角度值后勾选start_test,开始测试并记录手机上最终的角度,计算小车旋转的角度。
在这里插入图片描述
此处我的小车旋转了355度,就用355/360,计算缩放系数。再次测量旋转的效果,取多次测量的平均数目填入bringup.launch文件中。

roscd zxcar/launch/
sudo vi bringup.launch 

在这里插入图片描述

3.校准线速度

同样,需要对线速度进行校准
主机中分别在两个命令行中运行如下指令:

roslaunch zxcar bringup.launch
rosrun zxcar_nav calibrate_linear.py

待出现 Bring up rqt_reconfigure to control the test. 提示后,在从机上运行rqt工具

rosrun rqt_reconfigure rqt_reconfigure

在这里插入图片描述
同样点击start_test后进行测试,并用卷尺测量小车行走距离。此处我测量行走了1.02米,除以1米后将所得缩放系数填入bringup.launch文件中。

roscd zxcar/launch/
sudo vi bringup.launch 

在这里插入图片描述

四、雷达建图与导航

完成校准后即可进行雷达的建图工作。

1.建图

在主机中启动 lidar_slam.launch文件

roslaunch zxcar lidar_slam.launch

初次启动报错如下,需要安装相关依赖。

sudo apt-get install ros-melodic-gmapping
sudo apt-get install ros-melodic-move-base
sudo apt-get install ros-melodic-amcl
sudo apt-get install ros-melodic-map-server
sudo apt-get install ros-melodic-global-planner
sudo apt-get install ros-melodic-dwa-local-planner

在这里插入图片描述
安装完成后再次运行即可,出现字样 odom received! 表明启动成功。
在这里插入图片描述

随后需要在从机上运行 lidar_slam_rviz.launch文件启动RVIZ界面并同时启动节点 teleop_twist_keyboard

roslaunch zxcar lidar_slam_rviz.launch
rosrun teleop_twist_keyboard teleop_twist_keyboard.py

在这里插入图片描述

节点 teleop_twist_keyboard用于操控小车进行行走,使用方法如提示一样:
在这里插入图片描述
通过操控小车进行行走,可以在RVIZ中查看到建图的效果。
在这里插入图片描述

2.保存图纸

通过操控小车行走实现雷达建图后,需要将建好的图保存在 zxcar/maps下。

主机上运行如下指令即可保存图纸。

roscd zxcar/maps
rosrun map_server map_saver -f house

待完成保存后,即可在从机上停止lidar_slam.launch文件。

3.导航

从机上运行如下指令,同样显示字样**odom received!**表示启动成功。

roslaunch zxcar navigate.launch

主机上则运行指令启动RVIZ

roslaunch zxcar navigate_rviz.launch

在这里插入图片描述

此时需要使用RVIZ上方工具栏中的2D Pose Estimate画笔标定小车的初始位置,随后即可使用2D Nav Goal进行导航。

  • 5
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值