cartographer安装和使用
1.安装RPLIDAR
建立工作空间(catkin_ws/src是工作路径)
mkdir -p ~/catkin_ws/src #创建文件夹,catkin_ws、src都是文件名可以按照自己的要求更改
cd ~/catkin_ws/src #在src文件下进行安装rplidar工具包
git clone https://github.com/ncnynl/rplidar_ros.git
cd .. #返回上级包编译
catkin_make_isolated --install --use-ninja #进行编译 //网上有教程是使用catkin_make进行编译,但是因为该命令是用于编译工作空间下所有的功能包(要求各个功能包不重复),在安装cartographer时,有重复的文件名,这就导致了catkin_make失效。所以我们使用catkin_make_isolated --install --use-ninja,对各个功能包进行单独的编译
2.添加变量环境并赋予雷达连接串口权限
2.1设置环境
source install_isolated/setup.bash //运行setup文件可以使系统使用这个工作区以及其中包含的代码。每打开一个新的终端都需要设置环境变量运行工作区的setup.bash文件,否则终端无法找到所需运行的代码。
如果只有一个工作区,我们可以在终端输入echo “source ~/catkin_ws/ install_isolated /setup.bash” >> ~/.bashrc这可以使终端默认工作区域在install_isolated文件下,避免每次手动输入配置环境命令。
2.2 赋予雷达连接串口权限(上面两个步骤配置完成后,后续打开雷达操作无需重复,直接此步开始)
ls -l /dev |grep ttyUSB #检查雷达连接了哪个串口。如果雷达连接成功,输入该命令后,连接雷达的串口会以红色字体显示出来。
sudo chmod a+rw /dev/ttyUSB0 #赋予串口权限。这个也行sudo chmod 666 /dev/ttyUSB0
3.运行雷达
roslaunch rplidar_ros view_rplidar.launch //运行成功会打开rviz,显示扫描图像
补充:rplidar_ros功能包下的launch文件里有三种类型的launch文件。分别是xx.launch, test_xx.launch, view_xx.launch。后缀a3对应a3版本雷达,无后缀对应a1/a2雷达。第一个是纯节点运行,第二个是在命令行窗口直接输出测量数据,第三个是利用rviz可视化测量数据。
4. 利用cartographer建图
以上是为了测试雷达是否正常运行。接下来进行利用cartographer对雷达扫描数据进行建图。需要修改两个文件:revo_lds.lua和demo_revo_lds.launch。
#4.1修改revo_lds.lua文件
sudo gedit ~/catkin_ws/src/cartographer_ros/cartographer_ros/configuration_files/revo_lds.lua #打开revo_lds.lua文件
复制原先的文件,新建一个my_revo_lds.lua文件并修改:
tracking_frame = "horizontal_laser_link", //SLAM算法跟踪坐标系的名称
published_frame = "horizontal_laser_link" //用作发布位姿子坐标系的名称
修改为
tracking_frame = "laser ",
published_frame = "laser "
#4.2修改demo_revo_lds.launch
sudo gedit ~/catkin_ws/src/cartographer_ros/cartographer_ros/launch/demo_revo_lds.launch #打开demo_revo_lds.launch文件
复制原先的文件,新建为my_demo_revo_lds.launch直接把原先的文件内容改成下面这个
//因为非bag仿真,将以下true改为false
//使用我们的配置文件,将revo_lds.lua改为my_revo_lds.lua
type="cartographer_node" args="
-configuration_directory $(find cartographer_ros)/configuration_files
-configuration_basename revo_lds.lua"
//将horizontal_laser_2d改为我们的输出话题radar_real
//不使用bag,删去以下内容
args="--clock $(arg bag_filename)" />
注:每次修改完配置都需要进行编译。
catkin_make_isolated --install --use-ninja #进行编译
5. 运行cartographer框架
roslaunch cartographer_ros my_demo_revo_lds.launch
注意!!!!!
如果运行第五步骤的时候无法打开rvzi以及打开rviz后无法显示图像。可能是因为在4.3步骤时进行的编译出错,没有覆盖掉原先的编译文件。
解决方法:手动打开
catkin_ws/install_isolated/share/catorgrapher_ros/ catorgrapher_files重复步骤4.1
catkin_ws/install_isolated/share/catorgrapher_ros/ launch重复步骤4.2
cartographer仿真建图
1.建图
1.export TURTLEBOT3_MODEL=burger #每开一个新的终端都要设置一下这个环境变量,除了burger也可以是waffle或waffle_pi
2.source install_isolated/setup.bash #每开一个新的终端都要设置一下这个环境变量
3.roslaunch turtlebot3_gazebo turtlebot3_house.launch #这里也可以选择其他的环境,或者自己搭建一个虚拟环境
4.roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch #建图时要切换到这个终端,用键盘控制turtlebot运动(重新打开一个终端,重复1、2)
5.roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=cartographer #这里也可以选择其他的slam方法(重新打开一个终端,重复1、2)
2.保存
1.mkdir -p ~/map/fake_map
2.rosrun map_server map_saver -f ~/map/fake_map/#{name}
cartographer仿真路径规划
1.export TURTLEBOT3_MODEL=burger #每开一个新的终端都要设置一下这个环境变量,除了burger也可以是waffle或waffle_pi
2.source install_isolated/setup.bash #每开一个新的终端都要设置一下这个环境变量
3.roslaunch turtlebot3_gazebo turtlebot3_house.launch (重新打开一个终端,重复1、2)
4.roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=/home/popvan/map/fake_map/#{name}.yaml (重新打开一个终端,重复1、2)