速腾Helios-16P使用Lego-loam实时构建点云地图(一)——雷达调试
将雷达信号线连接至电脑(注意:如果电脑没有网口需要转接线连接的话,转接线的接口协议一定要USB3.0以上,插入电脑的USB口也应是3.0以上,否则雷达传输数据时会丢包)。
目录
一、安装雷达驱动
1.1 连接硬件
将雷达信号线连接至电脑(注意:如果电脑没有网口需要转接线连接的话,转接线的接口协议一定要USB3.0以上,插入电脑的USB口也应是3.0以上,否则雷达传输数据时会丢包)。
1.2 下载雷达驱动包
两种下载方式(任选其一):
1.使用git clone
mkdir -p RS_Helios_16P_ws/src
cd RS_Helios_16P_ws/src
git clone https://github.com/RoboSense-LiDAR/rslidar_sdk.git
cd rslidar_sdk
git submodule init
git submodule update
2.直接下载
进入速腾官方雷达驱动GitHub,也就是上面的驱动包链接,点击右侧releases,选择rslidar_sdk-v1.5.0.tar.gz下载:
mkdir -p RS_Helios_16P_ws/src
将下载好的压缩包解压到RS_Helios_16P_ws/src文件夹下。
1.3 依赖安装
ROS不必说了,安装Ubuntu对应版本就行,之前的博客也写过,最好是ros desktop-full ,不然还要安装其他依赖。
Yaml安装(ros desktop-full可跳过):
sudo apt-get update
sudo apt-get install -y libyaml-cpp-dev
libpcap安装:
sudo apt-get install -y libpcap-dev
protobuf安装:
sudo apt-get install -y libprotobuf-dev protobuf-compiler
1.4 编译运行雷达驱动包
编译、运行(有三种方式编译运行rslidar_sdk,这里采用依赖于ROS-catkin编译的方式,其他两种参考链接里的官方教程):
(1)打开rslidar_sdk文件夹下的CMakeLists.txt文件,将变量POINT_TYPE改为XYZIRT,变量COMPILE_METHOD改为CATKIN:
(2)将rslidar_sdk文件夹下的package_ros1.xml文件里的内容替换掉package.xml文件里的内容(我发现这两个文件夹里的内容是一样的,如果一样,这步操作可省略,如果没有package.xml文件,就直接把package_ros1.xml文件重命名为package.xml)。
(3)打开rslidar_sdk/config/config.yaml文件,修改send_packet_ros为true,lidar_type为RSHELIOS_16P:
(4)回到工作空间RS_Helios_16P_ws目录下,编译:
catkin_make
1.5 配置电脑IP
(用完雷达记得将设置中有线地址选择之前的默认地址,否则上不了网)
速腾Helios_16P出厂默认ip地址是192.168.1.200,你需要将你的计算机ip设置为前三段与雷达相同即192.168.1.开头,最后一位取0-255之间不与雷达的ip相同即可。
在电脑设置-网络-有线中点击“+”号,IPv4方式选择手动,输入地址“192.168.1.102”和子网掩码“255.255.255.0”,网关不需要配置。配置完成后,选择连接此配置,可以通过 ifconfig 命令查看静态 IP 是否生效:
1.6 运行雷达
cd ~/RS_Helios_16P_ws
source devel/setup.bash //添加环境变量
roslaunch rslidar_sdk start.launch
二、查看雷达参数和属性
2.1 发布的节点和话题
rosnode list
rostopic list
2.2 查看雷达扫描频率
rostopic hz /rslidar_points
2.3 查看雷达点云的坐标系名称和点云数等参数
rostopic echo --noarr /rslidar_points
三、修改雷达点云坐标系名称、话题名为velodyne格式
大部分激光SLAM算法都是适配的velodyne雷达,我们要用速腾雷达需要改变格式才能使用算法。
两种方法:
1.(没试过,可能还需要修改其他文件)直接修改~/RS_Heilos_16P_ws/src/rslidar_sdk-v1.5.0/config/config.yaml文件的ros_frame_id为velodyne,ros_send_point_cloud_topic为 /velodyne_points:
2.安装rs_to_velodyne功能包
进入~/RS_Heilos_16P_ws/src,在此下载功能包并与雷达驱动包联合编译:
cd ~/RS_Heilos_16P_ws/src
git clone https://hub.fastgit.org/HViktorTsoi/rs_to_velodyne.git
cd ..
catkin_make
在~/RS_Heilos_16P_ws/src/rs_to_velodyne下新建launch文件并打开:
touch rstovelodyne.launch
gedit rstovelodyne.launch
在此launch文件中写入:
<launch>
<node pkg="rs_to_velodyne" name="rs_to_velodyne" type="rs_to_velodyne" args="XYZIRT XYZIRT" output="screen">
</node>
</launch>
启动rs_to_velodyne转化节点 :
cd ~/RS_Heilos_16P_ws
source devel/setup.bash
roslaunch rs_to_velodyne rstovelodyne.launch
启动转化节点成功 :
集成launch:
打开~/RS_Heilos_16P_ws/src/rslidar_sdk-v1.5.0/launch/start.launch,在末尾将启动转化节点的launch加进去:
<!--- rs_to_velodyne -->
<include file="$(find rs_to_velodyne)/launch/rstovelodyne.launch" />
改后的start.launch文件为:
<launch>
<node pkg="rslidar_sdk" name="rslidar_sdk_node" type="rslidar_sdk_node" output="screen">
<param name="config_path" value=""/>
</node>
<!--- rs_to_velodyne -->
<include file="$(find rs_to_velodyne)/rstovelodyne.launch" />
<!-- rviz -->
<node pkg="rviz" name="rviz" type="rviz" args="-d $(find rslidar_sdk)/rviz/rviz.rviz" />
</launch>
启动rslidar:
cd ~/RS_Helios_16P_ws
source devel/setup.bash //添加环境变量
roslaunch rslidar_sdk start.launch
另开一个终端查看话题:
rostopic list
可以看到话题中有了velodyne_points:
不过又可能会报错如:
出现这个警告的原因,大概率是因为rs_to_velodyne
功能包中定义的点云数据结构中的intensity
出现了不一致。
进入~/RS_Heilos_16P_ws/src/rs_to_velodyne/src/rs_to_velodyne.cpp文件,把rslidar的点云格式x下的uint8_t intensity改为PCL_ADD_INTENSITY(两处),把定义数据类型POINT_CLOUD_REGISTER_POINT_STRUCT中的intensity的类型改成浮点型float:
改完后重新编译并运行应该就没问题了。
参考资料:
更多推荐
所有评论(0)