• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
MKT-porter
博客园    首页    新随笔    联系   管理    订阅  订阅
Ubuntu20.04系统安装Livox ROS Driver

 

笔记本ubuntu20

0 硬件链接

激光雷达和电脑接在一起

电脑静态IP 192.168.1.50  子网掩码 255.255.255.0

 

 

 

 

使用的激光雷达ID

查看位置

 

实际的serial numbel 

 3GGDJ770010109

  

 

 

1. 准备工作

官网虽说ros支持ubuntu18和16,但是ubuntu20也可以直接用。 

1-1 Livox SDK 依赖于 cmake 。你可以通过 apt 工具安装这些依赖包 :

sudo apt install cmake

  

先要确保ROS和Livox-SDK安装成功!安装过程可参考:
1-2 ROS安装:https://blog.csdn.net/weixin_43994864/article/details/119703293
1-3 Livox-SDK安装:https://blog.csdn.net/weixin_43994864/article/details/119703681

# 安装Livox_SDK
git clone https://github.com/Livox-SDK/Livox-SDK.git
cd Livox-SDK
sudo ./third_party/apr/apr_build.sh
cd build && cmake ..
make
sudo make install

  

 

 

 

 

2. 下载ws_livox文件

 

# 安装livox_ros_driver
git clone https://github.com/Livox-SDK/livox_ros_driver.git ws_livox/src
cd ws_livox
catkin_make

  

下载速度如果很慢,可手动下载解压,下载地址:https://github.com/Livox-SDK/livox_ros_driver

 

 

 

 

 

3 运行测试

文档说明

 

 

 

| launch 文件名             | 功能                                                         |
| ------------------------- | ------------------------------------------------------------ |
| livox_lidar_rviz.launch   | 连接览沃雷达设备<br>向外发布 pointcloud2 格式的点云数据<br>自动加载rviz |
| livox_hub_rviz.launch     | 连接览沃中心板设备<br>向外发布 pointcloud2 格式的点云数据<br>自动加载rviz |
| livox_lidar.launch        | 连接览沃雷达设备<br>向外发布 pointcloud2 格式的点云数据    |
| livox_hub.launch          | 连接览沃中心板设备<br>向外发布 pointcloud2 格式的点云数据  |
| livox_lidar_msg.launch    | 连接览沃雷达设备<br>向外发布览沃自定义点云数据             |
| livox_hub_msg.launch      | 连接览沃中心板设备<br/>向外发布览沃自定义点云数据           |
| lvx_to_rosbag.launch      | 转换 lvx 文件为 rosbag 文件<br>直接将 lvx 文件转换为 rosbag 文件 |
| lvx_to_rosbag_rviz.launch | 转换 lvx 文件为 rosbag 文件<br>从 lvx 文件中读取点云数据,并转换为 pointcloud2 格式向外发布 |
  

  

运行采集ROS节点

频率可能修改

| 参数名       | 详细说明                                                     | 默认值 |
| ------------ | ------------------------------------------------------------ | ------ |
| publish_freq | 设置点云发布频率 <br>浮点数据类型,推荐值 5.0,10.0,20.0,50.0 等。 | 10.0   |
| multi_topic  | LiDAR 设备是否拥有独立的 topic 发布点云数据<br>0 -- 所有 LiDAR 设备共同使用同一个 topic 发送点云数据<br>1 -- 每个 LiDAR 设备各自拥有独立的 topic 发布点云数据 | 0      |
| xfer_format  | 设置点云格式<br>0 -- 览沃 pointcloud2(PointXYZRTL) 点云格式<br>1 -- 览沃自定义点云数据格式<br>2 -- PCL库中标准 pointcloud2(pcl::PointXYZI) 点云格式 | 0      |

  

 配置文件

 livox_lidar_rviz.launch 

脚本参数说明
livox_lidar_config.json

1 默认不用改

2 enable_connect 参数

配置文件中指定的设备连接状态配置为使能连接时 (true) ,览沃 ROS 驱动程序只会连接该配置文件中指定的设备;
当配置文件中指定的设备连接状态全部配置为禁止连接 (false) 时,览沃 ROS 驱动程序会自动连接扫描到的所有设备;
3 IMU 传感器数据
我们手上这个是MID -70 序列的,所以没有IMU
IMU 传感器数据推送<br>1 -- 以 200Hz 频率推送 IMU 传感器数据<br>其他值 -- 未定义,会导致不可预测的行为发生<br>目前只有 Horizon/Tele 支持此选项,MID 序列不支持 | 0 |
LiDAR 配置参数说明
| 属性                       | 类型   | 描述                                                         | 默认值          |
| :------------------------- | ------ | ------------------------------------------------------------ | --------------- |
| broadcast_code             | 字符串 | LiDAR 广播码,15位字符,由14位字符长度序列号加一个字符长度附加码组成 | 0TFDG3B006H2Z11 |
| enable_connect             | 布尔值 | 是否连接此 LiDAR<br>true -- 连接此 LiDAR<br>false -- 禁止连接此 LiDAR | false           |
| return_mode                | 整型   | 回波模式<br>0 -- 第一个回波模式<br>1 -- 最强回波模式<br>2 -- 双回波模式 | 0               |
| coordinate                 | 整型   | 原始点云数据的坐标轴类型<br>0 -- 直角坐标系<br>1 -- 球坐标系 | 0               |
| imu_rate                   | 整型   | IMU 传感器数据的推送频率<br>0 -- 关闭 IMU 传感器数据推送<br>1 --  以 200Hz 频率推送 IMU 传感器数据<br>其他值 -- 未定义,会导致不可预测的行为发生<br>目前只有 Horizon/Tele 支持此选项,MID 序列不支持 | 0               |
| extrinsic_parameter_source | 整型   | 是否使能外参自动补偿<br>0 -- 不补偿 LiDAR 外参<br>1 -- 自动补偿 LiDAR 外参<br> | 0               |

  

 

{
    "lidar_config": [
        {
            "broadcast_code": "3GGDJ7700101091",
            "enable_connect": false,
            "return_mode": 0,
            "coordinate": 0,
            "imu_rate": 1,
            "extrinsic_parameter_source": 0,
            "enable_high_sensitivity": false
        },
        {
            "broadcast_code": "0TFDG3U99101431",
            "enable_connect": false,
            "return_mode": 0,
            "coordinate": 0,
            "imu_rate": 0,
            "extrinsic_parameter_source": 0,
            "enable_high_sensitivity": false
        }
    ],
	
    "timesync_config": {
        "enable_timesync": false,
        "device_name": "/dev/ttyUSB0",
        "comm_device_type": 0,
        "baudrate_index": 2,
        "parity_index": 0     
    }
}

  



 

脚本自己写的 ,在后面

 

 

 

 

 

 

 

 

列出所有运行的节点

rosnode list

  

 

 

列出所有正在发布或接收的话题

 rostopic list 

  

 

 

 

 

查看某个话题的消息类型/格式

rostopic type /livox/lidar

  

 

 

查看话题中的消息类型/格式内容

rosmsg show sensor_msgs/PointCloud2

  

 

显示话题发布的消息

 rostopic echo /livox/lidar

  

 

 

 

查看某个消息的发布者(Publishers)、订阅者(Subscribers)、消息类型/格式(Type)

 

rostopic info /livox/lidar

  

 

 

 https://livox-wiki-cn.readthedocs.io/zh_CN/latest/tutorials/single_lidar_capture.html#ros

 

开启录制bag文件之前,未来了后续和相机图像对齐,要考一个时间戳问题

时间戳由雷达时间戳变为电脑ros时间戳

参看5-1中的修改。

 

运行脚本

修改自己的source路径

 

#!/bin/sh


#延迟1秒执行
sleep 1
  
echo "激光雷达"
#echo "测试开始,消息记录到日志里" > /home/pi/start/test_desk1.log


echo "1 开启ros节点 roscore 等待完全开启再往后执行 "
gnome-terminal -t "1_roscore" -x bash -c "\
roscore; \
exit;exec bash;"
sleep 5


echo "2-1 开启采集雷达节点-rviz查看  "
gnome-terminal -t "2_get_ladir" -x bash -c "\
source /home/dongdong/v2_Project/v7_ladir/ROS_SDK/ws_livox/devel/setup.bash; \
roslaunch livox_ros_driver livox_lidar_rviz.launch; \
exit;exec bash;"
sleep 3

# echo "2-2 开启采集雷达节点-录制模式  "
# gnome-terminal -t "3_recoreder_ladir" -x bash -c "\
# source /home/dongdong/v2_Project/v7_ladir/ROS_SDK/ws_livox/devel/setup.bash; \
# roslaunch livox_ros_driver livox_lidar_msg.launch; \
# exit;exec bash;"
# sleep 1



echo "3 开启采集雷达节点-录制模式  "
gnome-terminal -t "3_recoreder_ladir" -x bash -c "\
rosbag record /livox/lidar; \
exit;exec bash;"
sleep 1



#echo "执行前确保给与脚本本身执行权限 sudo chmod -R 777 xxx.sh"
#echo "查看串口: ls /dev/ttyUSB* "
#echo "临时给与一次串口权限: sudo chmod 777 /dev/ttyUSB0 "
# 开启新的命令窗口执行
# gnome-terminal -t "窗口名字" -x bash -c "要执行的命令1;命令2;exit;exec bash;"
#Shell 脚本自动输入密码 : echo "密码" | sudo 命令

  

 

 

 ros录制消息

rosbag record -O dataset_name.bag /livox/lidar /usb_cam/image_raw

  

(1)rosbag record -a

表示将当前发布的所有topic数据都录制保存到一个rosbag文件中,

录制的数据包名字默认为日期加时间。

(2)rosbag record topic1 topic2 topic3 ...

表示只记录某些感兴趣的topic数据。

(3)rosbag record -O filename.bag topic1 topic2

表示指定生成数据包的名字。

其中 -O (大写的O)后跟录制数据包的名字。如果用 -o(小写的o),则只是给数据包的名字加前缀。

 

ros查看消息

rosbag info 2022-12-13-22-58-07.bag 

ros回放消息

rosbag play 2022-12-13-22-58-07.bag 

  

rosbag play播放数据包

命令

(1)rosbag play recorded1.bag recorded2.bag

如果播放两个及以上bag包,那么他们会第一帧对齐,后面根据第一帧时间戳的时间差播放。

(2)rosbag play -s 5 recorded1.bag

表示从bag的第几s开始播放

(3)rosbag play 

recorded1.bag

表示循环播放此bag包

(4)rosbag play -r 10 recorded1.bag

表示快进10倍播放此bag包,以录制频率的10倍回放。

(5)rosbag play --pause record.bag

表示以暂停的方式启动,防止跑掉数据

(6)rosbag play -u 10 record.bag

表示播放前10s的数据

 

回放数据

分布执行

后面有完成的脚本一次性执行

运行ros

roscore;

 

 

 查看话题名字

rosbag info 2022-12-13-22-58-07.bag;\

 

循环播放 

 

rosbag play -l 2022-12-13-22-58-07.bag;

 

 =======================

 开启可视化软件

rosrun rviz rviz;

 等话题回访开始后,需要添加话题可视化

 手动添加话题

 

 

发现一个报错

 

解决重点,两个办法

 

 

 1 软件直接看到

 

 其中 For frame 后面跟着的就是

2 用命令行查询

话题名字

 

 

 查询话题的frame_id

rostopic echo /livox/lidar | grep frame_id

  

 

 

左侧的Global Options,下面的For frame,双击右侧进行修改

修改前

 

修改后

 

 

 

正常看到回访数据

 

 

 

 

 

记录rosbag脚本 

 

 

#!/bin/sh


#延迟1秒执行
sleep 1
  
echo "激光雷达"
#echo "测试开始,消息记录到日志里" > /home/pi/start/test_desk1.log


echo "1 开启ros节点 roscore 等待完全开启再往后执行 "
gnome-terminal -t "1_roscore" -x bash -c "\
roscore; \
exit;exec bash;"
sleep 5


echo "2-1 开启-rviz软件  "
gnome-terminal -t "2-1 open rviz软件" -x bash -c "\
source /home/dongdong/v2_Project/v7_ladir/ROS_SDK/ws_livox/devel/setup.bash; \
rosrun rviz rviz; \
exit;exec bash;"
sleep 1

echo "2-2 查看要可视化回放的雷达数据 --修改要回放的.bag名字"
gnome-terminal -t "2-2 show bag topic info name" -x bash -c "\
source /home/dongdong/v2_Project/v7_ladir/ROS_SDK/ws_livox/devel/setup.bash; \
rosbag info 2022-12-13-23-53-13.bag;\
exec bash;"
sleep 1

# 正常输出
# path:        2022-12-13-22-58-07.bag
# version:     2.0
# duration:    23.1s
# start:       Dec 13 2022 22:58:07.61 (1670943487.61)
# end:         Dec 13 2022 22:58:30.70 (1670943510.70)
# size:        39.8 MB
# messages:    232
# compression: none [47/47 chunks]
# types:       sensor_msgs/PointCloud2 [1158d486dd51d683ce2f1be655c3c181]
# topics:      /livox/lidar   232 msgs    : sensor_msgs/PointCloud2


echo "2-3 手动在rviz界面中添加话题名字"
#/livox/lidar 

echo "3 开始回放   --修改要回放的.bag名字"
gnome-terminal -t "3_play rosbag" -x bash -c "\
source /home/dongdong/v2_Project/v7_ladir/ROS_SDK/ws_livox/devel/setup.bash; \
rosbag play -l 2022-12-13-23-53-13.bag; \
exit;exec bash;"
sleep 1



#echo "执行前确保给与脚本本身执行权限 sudo chmod -R 777 xxx.sh"
#echo "查看串口: ls /dev/ttyUSB* "
#echo "临时给与一次串口权限: sudo chmod 777 /dev/ttyUSB0 "
# 开启新的命令窗口执行
# gnome-terminal -t "窗口名字" -x bash -c "要执行的命令1;命令2;exit;exec bash;"
#Shell 脚本自动输入密码 : echo "密码" | sudo 命令

  

4数据格式转化

https://livox-wiki-cn.readthedocs.io/zh_CN/latest/tutorials/format_conversion.html

 

lvx文件转rosbag文件并播放

 roslaunch livox_ros_driver lvx_to_rosbag.launch lvx_file_path:=""

  

在上述命令中双引号内填写本地lvx数据文件路径即可成功运行,转换成功后将在上述路径下生成同名的rosbag格式文件,如下图所示:

../_images/lvx_to_rosbag_01.png ../_images/lvx_to_rosbag_02.png 得到转化成功后的test.bag文件后,可使用rviz可视化工具播放,步骤如下:

 运行rviz:

 

rosrun rviz rviz

  

功打开rviz后,需添加PointCloud2并选择相应的topic,可使用rosbag info <filename.bag>命令查看相应bag文件对应的topic,如下所示:

../_images/rosbag_info.png

在rviz中添加相应topic:

../_images/rviz.png

然后运行rosbag,即可播放:

 

rosbag play <test.bag>

  

rosbag文件转pcd文件

 

PointCloud2格式的rosbag文件

 

 

在.bag文件存储路径下打开终端并运行命令:

 
 rosrun pcl_ros bag_to_pcd <input_file.bag> <topic> <output_directory>

  命令不全,后面有脚本

其中<input_file.bag>为需转换的bag文件名称,<topic>为该bag文件的topic信息,<output_directory>为转化完成后的pcd文件存放地址。

 

 在对应文件夹下,可找到由rosbag文件转化而来的每一帧pcd文件,其文件名为当前帧的时间戳:

 

 

 转换完成后,可使用pcl_viewer查看pcd文件。命令如下:

安装工具

sudo apt install pcl-tools

查看

pcl_viewer <filename.pcd>

  

 

 

 

 

 

执行脚本

 

 

#!/bin/sh


#延迟1秒执行
sleep 1
  
echo "激光雷达"
#echo "测试开始,消息记录到日志里" > /home/pi/start/test_desk1.log


echo "1 开启ros节点 roscore 等待完全开启再往后执行 "
gnome-terminal -t "1_roscore" -x bash -c "\
roscore; \
exit;exec bash;"
sleep 5


echo "2-1 开启转化 "
#rosrun pcl_ros bag_to_pcd <input_file.bag> <topic> <output_directory>
#修改.bag名字
#修改.bag中要转化的topic名字
#修改输出文件夹 output_directory
gnome-terminal -t "2-1 open rviz软件" -x bash -c "\
source /home/dongdong/v2_Project/v7_ladir/ROS_SDK/ws_livox/devel/setup.bash; \
rosrun pcl_ros bag_to_pcd 2022-12-13-23-53-13.bag /livox/lidar /home/dongdong/v2_Project/v7_ladir/ROS_SDK/ws_livox/pcl; \
exec bash;"
sleep 1

  

 

 

5 代码修改问题

5-0 时间戳同步

https://livox-wiki-cn.readthedocs.io/zh_CN/latest/tutorials/timestamp_sychronization.html

 

 

目前实测  笔记本不能进行ptp同步,没有这时钟源发出。

后期可考虑和GPS 时间对接或者 自己用单片机给个外部硬触发信号。

5-1时间戳由雷达时间戳变为电脑ros时间戳

待定

修改官方Livox驱动代码,时间戳是雷达自己的,使得时间戳i为ROS的时间戳(不严谨待定),方便与照片对其。

将ws_livox/src/livox_ros_driver/livox_ros_driver中的lddc.cpp的ros::Time(timestamp / 1000000000.0)改为ros::Time::now()。
livox_ros_driver.cpp

  ros::Time::init();
  while (ros::ok()) {
    lddc->DistributeLidarData();
    cout<<1111111111<<ros::Time::now();
  }

  

rosbag record -O dataset524.bag /livox/lidar /usb_cam/image_raw

  

5-2雷达和相机联合标定

官网

https://github.com/Livox-SDK/livox_camera_lidar_calibration/blob/master/doc_resources/README_cn.md 

网友

https://blog.csdn.net/qq_33958714/article/details/125624082

 

 

 

 

posted on 2022-12-13 16:14  MKT-porter  阅读(5548)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3