在上篇博客对Ubuntu20.04+ ros-noetic 安装cartographer基础上,本文介绍如何利用雷达数据进行Cartographer建图
一、Ubuntu20.04下调试(ROS-neotic)
1.1进入设置界面,选择 网络->有线连接
1.2 设置IP和DNS:
1.3 查看与测试:
使用 ip a 查看是否修改成功:
使用ping命令测试,下图结果显示 连接成功:
1.4.4 下载驱动
官方连接:GitCode - 开发者的代码家园
1.4.1 将代码下载到robosense_ws空间。
mkdir -p robosense_ws/src //
cd robosense_ws/src
git clone https://github.com/RoboSense-LiDAR/rslidar_sdk.git
cd rslidar_sdk
git submodule init //下载子模块
git submodule update
1.4.2 在robosense_ws文件夹中更改config.yaml文件的雷达类型为 RSHELIOS_16P 。
编译执行(更改文件后catkin)
cd robosense_ws
catkin_make
source ./devel/setup.bash //启动都需source
roslaunch rslidar_sdk start.launch //启动雷达
二、下载pointcloud_to_laserscan包实现三维转二维
2.1 安装 pointcloud_to_laserscan包
cd ~/robosense_ws/src
git clone https://github.com/BluewhaleRobot/pointcloud_to_laserscan.git
cd ~/robosense_ws
catkin_make //更改后须catkin
2.2 创建launch文件
用VScode打开robosense_ws:
code robosense_ws
在launch文件夹下 创建point_to_scan.launch,添加代码如下:
<?xml version="1.0"?>
<launch>
<!-- run pointcloud_to_laserscan node -->
<node pkg="pointcloud_to_laserscan" type="pointcloud_to_laserscan_node" name="pointcloud_to_laserscan">
<remap from="cloud_in" to="/rslidar_points"/>
<rosparam>
# target_frame: rslidar # Leave disabled to output scan in pointcloud frame
transform_tolerance: 0.01
min_height: -0.4
max_height: 1.0
angle_min: -3.1415926 # -M_PI
angle_max: 3.1415926 # M_PI
angle_increment: 0.003 # 0.17degree
scan_time: 0.1
range_min: 0.2
range_max: 100
use_inf: true
inf_epsilon: 1.0
# Concurrency level, affects number of pointclouds queued for processing and number of threads used
# 0 : Detect number of cores
# 1 : Single threaded
# 2->inf : Parallelism level
concurrency_level: 1
</rosparam>
</node>
</launch>
三 、 修改cartographer相关文件
3.1 创建rs16_lidar.lua文件:
cd ~/catkin_ws/src/cartographer_ros/cartographer_ros/configuration_files
cp revo_lds.lua rs16_lidar.lua //复制
gedit rs16_lidar.lua //打开文件
修改rs16_lidar.lua内容如下:
3.2 创建cartographer_demo_rs16.launch文件:
cd ~/catkin_ws/src/cartographer_ros/cartographer_ros/launch
cp demo_revo_lds.launch cartographer_demo_rs16.launch
修改cartographer_demo_rs16.launch文件内容:
<launch>
<param name="/use_sim_time" value="false" />
<node name="cartographer_node" pkg="cartographer_ros"
type="cartographer_node" args="
-configuration_directory $(find cartographer_ros)/configuration_files
-configuration_basename rs16_lidar.lua"
output="screen">
<remap from="scan" to="/scan" />
</node>
<node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.0 0.0 0.45 0 0.0 0.0 map rslidar 100" />
<node name="cartographer_occupancy_grid_node" pkg="cartographer_ros"
type="cartographer_occupancy_grid_node" args="-resolution 0.05" />
<node name="rviz" pkg="rviz" type="rviz" required="true"
args="-d $(find cartographer_ros)/configuration_files/demo_2d.rviz" />
</launch>
四、启动建图
终端1:启动3d雷达驱动
cd robosense_ws
catkin_make //编译
source ./devel/setup.bash
roslaunch rslidar_sdk start.launch
终端2: 启动pointcloud_to_laserscan节点
cd ~/robosense_ws
source devel/setup.bash
roslaunch pointcloud_to_laserscan point_to_scan.launch
终端3:启动Cartographer
cd ~/catkin_cartographer
catkin_make_isolated --install --use-ninja
source install_isolated/setup.bash
roslaunch cartographer_ros cartographer_demo_rs16.launch
原神启动: