Robosense在LIOSAM中的使用

Robosense在LIOSAM中的使用

在上次跑LIOSAM过程中,发现LIOSAM代码主要使用的激光雷达是Velodyne和Outser,且对于Outser而言,代码中的主要格式是将Outser的数据格式转换为Velodyne的数据格式来使用,见如下代码。

else if (sensor == SensorType::OUSTER)
        {
            // Convert to Velodyne format
            pcl::moveFromROSMsg(currentCloudMsg, *tmpOusterCloudIn);
            laserCloudIn->points.resize(tmpOusterCloudIn->size());
            laserCloudIn->is_dense = tmpOusterCloudIn->is_dense;
            for (size_t i = 0; i < tmpOusterCloudIn->size(); i++)
            {
                auto &src = tmpOusterCloudIn->points[i];
                auto &dst = laserCloudIn->points[i];
                dst.x = src.x;
                dst.y = src.y;
                dst.z = src.z;
                dst.intensity = src.intensity;
                dst.ring = src.ring;
                dst.time = src.time * 1e-9f;
            }
        }

于是乎,就想到如果是其他激光雷达怎么办,如果是Robosense呢???紧接着,在github上找到了Robosense的驱动,rslidar_SDK,支持两种格式的数据读取和转换分别是XYZI和XYZIRT,当然在编译前,在CMakeLists文件中可以选择:

#=======================================
# Custom Point Type (XYZI, XYZIRT)
#=======================================
set(POINT_TYPE XYZI)

同样在编译之前,在CMakeLists中下列代码还需要更改编译方式,由于该代码支持ROS2的编译。

#=======================================
# Compile setup (ORIGINAL,CATKIN,COLCON)
#=======================================
set(COMPILE_METHOD CATKIN)

补充一下rslidar_sdk编译方式:
该驱动支持的Robosense的型号有:

RS16
RS32
RSBP
RS128
RS80
RSM1-B3
RSHELIOS

编译之前需要同样需要在config.yaml文件中进行选择

lidar:
  - driver:
      lidar_type: RS128            #LiDAR type - RS16, RS32, RSBP, RS128, RS80, RSM1, RSHELIOS
      frame_id: /rslidar           #Frame id of message
      msop_port: 6699              #Msop port of lidar
      difop_port: 7788             #Difop port of lidar
      start_angle: 0               #Start angle of point cloud
      end_angle: 360               #End angle of point cloud 
      min_distance: 0.2            #Minimum distance of point cloud
      max_distance: 200            #Maximum distance of point cloud
      use_lidar_clock: false       #True--Use the lidar clock as the message timestamp
                                   #False-- Use the system clock as the timestamp

安装依赖项:
1.Yaml (必需)

版本号: >= v0.5.2

若已安装ROS desktop-full, 可跳过

安装方式:

sudo apt-get update
sudo apt-get install -y libyaml-cpp-dev

2.Pcap (必需)

版本号: >=v1.7.4

安装方式:

sudo apt-get install -y  libpcap-dev

3.Protobuf (可选,注意如果跑Cartographer,可能会版本和安装方式会冲突)

版本号: >=v2.6.1

安装方式:

sudo apt-get install -y libprotobuf-dev protobuf-compiler

4.依赖ROS编译
(1) 打开工程内的CMakeLists.txt文件,将文件顶部的set(COMPILE_METHOD ORIGINAL)改为set(COMPILE_METHOD CATKIN)。已经完成
(2) 将rslidar_sdk工程目录下的package_ros1.xml文件重命名为package.xml。
(3) 进入文件夹进行编译:

cd rslidar_sdk
mkdir build && cd build
cmake .. && make -j4//如果是8线程可以相应的更改

运行:

source devel/setup.bash //在build文件夹下面
cd ..
roslaunch rslidar_sdk start.launch //在rslidar_sdk文件夹下面

接下里下载代码:liosamrslidar,并进行编译完成使用。如果你已经编译过LIO-SAM,那么你需要下载下面这个代码:rs_to_velodyne,然后将该代码放置与LIO-SAM的同一工作空间下进行编译,同时修改LIO-SAM的run.launch文件:

<launch>

    <arg name="project" default="lio_sam"/>
    
    <node pkg="lio_sam" type="lio_sam_rs_to_velodyne" name="rs2velodyne_node" args="XYZIRT" />
    
    <!-- Parameters -->
    <rosparam file="$(find lio_sam)/config/params.yaml" command="load" />

    <!--- LOAM -->
    <include file="$(find lio_sam)/launch/include/module_loam.launch" />

    <!--- Robot State TF -->
    <include file="$(find lio_sam)/launch/include/module_robot_state_publisher.launch" />

    <!---Run Navsat -->
    <!--include file="$(find lio_sam)/launch/include/module_navsat.launch" /-->

    <!--- Run Rviz-->
    <include file="$(find lio_sam)/launch/include/module_rviz.launch" />


</launch>

然后正常启动即可。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值