cartographer安装和使用

1.安装RPLIDAR

建立工作空间(catkin_ws/src是工作路径)

mkdir -p ~/catkin_ws/src         #创建文件夹,catkin_wssrc都是文件名可以按照自己的要求更改

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.luademo_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

<param name="/use_sim_time" value="true" />

//使用我们的配置文件,revo_lds.lua改为my_revo_lds.lua

<node name="cartographer_node" pkg="cartographer_ros"

      type="cartographer_node" args="

          -configuration_directory $(find cartographer_ros)/configuration_files

          -configuration_basename revo_lds.lua"

//horizontal_laser_2d改为我们的输出话题radar_real

<remap from="scan" to="horizontal_laser_2d" />

//不使用bag,删去以下内容

<node name="playbag" pkg="rosbag" type="play"

      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也可以是wafflewaffle_pi

2.source install_isolated/setup.bash #每开一个新的终端都要设置一下这个环境变量

3.roslaunch turtlebot3_gazebo turtlebot3_house.launch #这里也可以选择其他的环境,或者自己搭建一个虚拟环境

4.roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch #建图时要切换到这个终端,用键盘控制turtlebot运动(重新打开一个终端,重复12)

5.roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=cartographer #这里也可以选择其他的slam方法(重新打开一个终端,重复12)

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也可以是wafflewaffle_pi

2.source install_isolated/setup.bash #每开一个新的终端都要设置一下这个环境变量

3.roslaunch turtlebot3_gazebo turtlebot3_house.launch (重新打开一个终端,重复12)

4.roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=/home/popvan/map/fake_map/#{name}.yaml (重新打开一个终端,重复12)

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐