镭神智能C16调试及其适配Autoware1.14

一、将硬件连通,确定数据通讯成功

二、下载好传感器的驱动并编译完成

mkdir -p ~/lslidar_ws/src
cd ~/lslidar_ws/src
git clone https://github.com/tongsky723/lslidar_C16.git
cd ~/lslidar_ws
catkin_make
source devel/setup.bash
roslaunch lslidar_c16_decoder  lslidar_c16.launch

三、开始查看雷达参数

3.1 rviz效果图

镭神智能C16调试及其适配Autoware1.14_第1张图片

3.2 查看启动了哪些话题和节点

3.2.1 列出正在运行的话题,终端输入:

rostopic list -v 

镭神智能C16调试及其适配Autoware1.14_第2张图片

3.2.2 列出正在运行的节点,终端输入:

rosnode list

镭神智能C16调试及其适配Autoware1.14_第3张图片

3.2.3 查看某一节点的具体参数和通讯话题,终端输入命令:

rosnode info 节点名

镭神智能C16调试及其适配Autoware1.14_第4张图片

3.3 查看雷达的扫描频率

通过rviz可以看到,点云的话题名为 /lslidar_point_cloud,因此终端输入命令:

rostopic hz /lslidar_point_cloud

镭神智能C16调试及其适配Autoware1.14_第5张图片
注:红框内为消息接发收时间参数,频率大概在10hz左右,与厂家说明书参数基本一致。

3.4 查看点云的具体参数

查看雷达扫描过程中,某一行的点云的坐标系名称、点云数等参数。

rostopic echo --noarr  /lslidar_point_cloud    #一定要加--noarr,排除话题数据中的数组信息,否则会出现乱码

镭神智能C16调试及其适配Autoware1.14_第6张图片

注:红框内的数据为一组完整数据,雷达的坐标系frame_id名称为laser_link;每一行激光的总点云数大概为30000。

常见三维点云的具体格式如下,header类类型包括stamp时间戳,frame_id 坐标系名称(该参数是一个字符串类型,可以选择的地图类型),seq是一个记录消息序号的整型变量:

//头文件
header: 
  seq: 18664
  stamp: 
    secs: 1551087603
    nsecs: 700827000
  frame_id: "velodyne"
//height可视为点云数据的行数;
//如果为1,则表示无序;
//否则为有组织点云数据集的高度/行数
height: 1
//width为一行的总点数
//对于无序数据集而言,width即为点云总数
width: 22998
//看到fields,可以先跳过看完point_step和row_step之后再回来
//field格式包括name,offset,datatype,count,具体定义见sensor_msgs/PointField.msg
//该点云所包括的信息有点云的xyz信息(即点云在激光雷达坐标系的位姿)以及强度信息
//offset此处的含义不是很明白,我的理解是对于name“x”而言,它的信息包含在第0字节-第3字节中;name“y”而言,包含在第4字节-第7字节;依次类推。欢迎有大佬帮我在此处解疑下
fields: 
  - 
    name: "x"
    offset: 0
    datatype: 7
    count: 1
  - 
    name: "y"
    offset: 4
    datatype: 7
    count: 1
  - 
    name: "z"
    offset: 8
    datatype: 7
    count: 1
  - 
    name: "intensity"
    offset: 16
    datatype: 7
    count: 1
  - 
    name: "ring"
    offset: 20
    datatype: 4
    count: 1
//数据存储方式,包括大端与小端,具体解释见后文参考链接
is_bigendian: False
//存储一个点云所需的字节长度,单位为byte
point_step: 32
//存储一行点云所需的字节长度,单位为byte
//row_step = point_step * width
row_step: 735936
//点云数据信息,该数组解析方式由field进行定义
//data数组的大小为row_step * height
data: [51, 81, 165, 64, 127, 62, 141, 192, 255, ......]


3.5 将点云的数据信息进行录包

rosbag record  -a  -O  lslidar_bagfiles
#  -a表示所有发布的话题都应该积累在一个bag文件中;-o表示所有数据记录名为subset.bag的文件中。

镭神智能C16调试及其适配Autoware1.14_第7张图片

rosbag  info  lslidar_bagfiles_2022-08-08-09-26-25.bag

镭神智能C16调试及其适配Autoware1.14_第8张图片

rosbag play  lslidar_bagfiles_2022-08-08-09-26-25.bag

镭神智能C16调试及其适配Autoware1.14_第9张图片

四、查看建图效果

4.1 下载和编译A-LOAM

cd catkin_ws/src
git clone https://github.com/HKUST-Aerial-Robotics/A-LOAM.git
cd ..
catkin_make
source ~/catkin_ws/devel/setup.bash

4.2 安装A-LOAM所需的依赖ceres-solver-1.14.0

镭神智能C16调试及其适配Autoware1.14_第10张图片

下载链接:http://ceres-solver.org/installation.html

# CMake
sudo apt-get install cmake
# google-glog + gflags
sudo apt-get install libgoogle-glog-dev libgflags-dev
# Use ATLAS for BLAS & LAPACK
sudo apt-get install libatlas-base-dev
# Eigen3
sudo apt-get install libeigen3-dev
# SuiteSparse (optional)
sudo apt-get install libsuitesparse-dev
tar zxf ceres-solver-1.14.0.tar.gz
mkdir build
cd build
cmake ../ceres-solver-1.14.0
make -j4
make test
# Optionally install Ceres, it can also be exported using CMake which
# allows Ceres to be used without requiring installation, see the documentation
# for the EXPORT_BUILD_DIR option for more information.
sudo make install

4.3 修改A-LOAM的配置文件

~/catkin_ws/src/A-LOAM/src

打开scanRegistration.cpp文件:
将ros::Subscriber subLaserCloud = nh.subscribe(“/velodyne_point_cloud”, 100, laserCloudHandler);
改为:
ros::Subscriber subLaserCloud = nh.subscribe(“/lslidar_point_cloud”, 100, laserCloudHandler);

镭神智能C16调试及其适配Autoware1.14_第11张图片注:这样和录制的bag包的话题才可以对应上。

4.3 查看建图效果

先运行A-LOAM算法:

cd ~/catkin_ws
catkin_make
roslaunch aloam_velodyne aloam_velodyne_VLP_16.launch 

注意功能包的名称,在cmake.list中寻找:
镭神智能C16调试及其适配Autoware1.14_第12张图片

然后在打开bag包:

cd ~/ws/lidar_bag
rosbag play lslidar_bagfiles_2022-08-08-09-26-25.bag

镭神智能C16调试及其适配Autoware1.14_第13张图片

五、适配Autoware1.14

由于Autoware默认使用velodyne激光雷达,参考系使用velodyne;点云话题为points_raw。因此,如果要在autoware1.14上使用lslidar,需将雷达的格式转化为velodyne的格式。即,需要将/lslidar/src/lslidar_C16/lslidar_c16_decoder/launch/lslidar_c16.launch文件中的frame id由laser_link修改为velodyne,将原话题lslidar_point_cloud转化为points_raw,添加一行:

<remap from="lslidar_point_cloud" to="/points_raw" />

由:

镭神智能C16调试及其适配Autoware1.14_第14张图片
改为:

镭神智能C16调试及其适配Autoware1.14_第15张图片

参考资料:
(1)[ROS常用组件] — rqt工具箱
(2)详细的Rostopic命令系列(包括消息发布等实例操作)

你可能感兴趣的:(ubuntu,linux)