ubuntu读取mid40并展示

最近学习了多传感器融合的 lidar + camera 部分,实现了输出彩色点云图。

一、总结了解

原理:就是简单的求解两个传感器的变换矩阵 R 而已。

步骤:

步骤名称使用包
1. 可视化 lidar 结果使用
2. 可视化 camera 结果
3. 二者标定并进行重投影

二、第一步:ubuntu读取mid40并展示

  1. 前提

    1. 确保ip正确(用自带的软件试试就好)
    2. 自己安装必要的环境,这里只是记录一下可视化用的包和命令。
  2. 首先要安装 livox-SDK 和 livox-driver link;
    我的路径是

    --Livox_related(这个需要你自己建立,随便命名)
    	  - Livox-SDK(git 下载下来就是这个文件夹,我们不会显示用到他)
    	      - ws_livox(git 下载下来就是这个文件夹,我们主要用这个)
    
  3. 进入工作空间并运行

    1. 进到 ws_livox 里面
      里面是这样的
      -- ws_livox
        - build
        - devel
        - src
      
    2. 软件包环境设置。
      因为你接下来就要 roslaunch 了,那这个launch文件在哪里呢?所以设置如下
      source ./devel/setup.sh
      
    3. 启动指定的设备。
      因为我们要运行 roslaunch livox_ros_driver livox_lidar_rviz.launch 的,所以先打开 launch 文件,设置一下。
      1. 打开 livox_lidar_rviz.launch 文件。它在 ws_livox -> src -> livox_ros_driver -> launch 路径下。

      2. 设置那个 bd_list 为你的设备编码。

      3. 回到 ws_livox 路径,直接运行下面就自动弹出窗口并可视化了。

        roslaunch livox_ros_driver livox_lidar_rviz.launch
        
  4. 完成后总结

    • ws_livox 是一个工作空间,livox_driver_ros 是一个功能包。 当然这个工作空间只有这一个功能包

三、第二步:使用 livox_camera_lidar_calibration 进行lidar-相机标定的准备工作

显然,如果你想要标定,那首先要联通两种设备作为准备。

  1. 环境配置
    配置环境的时候注意要按照官网的来配置,不然文件目录特别容易弄错!!!
    最终安装好的目录:

    ws_calibration(自己建的)
    	- Livox-SDK(第一步)
    		- ws_livox (最好在 Livox-SDK 的目录下创建这个)
    			- src
    				- livox_ros_driver(那个驱动,一定要安装对)
    				- livox_camera_drivaer(我们要用的标定文件)
    			- build
    			- devel
    		- 其他的文件夹	
    

    如何查看是否成功呢?运行官网的命令就好。

    source ./devel/setup.sh
    roslaunch camera_lidar_calibration cameraCalib.launch
    
  2. 进行相机标定。这里建议使用matlab,自带的试了,必须设置标定板的行和列(自带的代码无法自适应) ,从而获得一个3x3的内参矩阵,和 5个畸变纠正参数 (这里的畸变我都设置为0,因为我在运行他的畸变矫正后,发现:当只有径向畸变的时候,图片的黑边不对称。但应该是对称的。所以还不如设置为0)。

  3. 连接雷达
    检查标定板角点是否在点云中,输入点云可视化的命令查看点云

    roslaunch livox_ros_driver livox_lidar_rviz.launch(这里仅仅只是看看,后面不用这个的,因为他要求用自己diy的点云格式,但这里是标准点云格式)。
    

    需要录制rosbag时输入另一个命令,自动保存对应的“livox custom msg format”格式。

    roslaunch livox_ros_driver livox_lidar_msg.launch(到这里你可以试试,等相机准备好后,还要一起录制)
    
  4. usb 相机可视化
    其实后来发现:

    • 这个在标定过程中不是必须的。因为采集流程是:【采集10s的静止激光雷达数据(.bag)和一张照片】* 10次。所以我后来直接用系统自带的拍照功能了。
    • 但是在标定好后实际使用的时候是需要的,因为你需要发布img消息。

    我参考的连接link
    首先,我们使用的是官方的 usb_cam 的包。这个包大概有两种方法:1.系统安装法:使用 apt-get; 2. 源码安装法。系统安装法是安装到一个固定的路径(可用 roscd usb_cam 找到路径),但问题是后面我们要修改launch文件,但是这个路径不让你随便改。所以就用源码安装法吧!

四、正式开始标定

这里我们才正式开始进行配准。

4.1 获取3d-2d对应点

  1. 第一步:想办法获取图像上4个以上点的像素坐标并放在 data/corner_photo.txt中,如下图。这里就不多说了,官方标定库好像没有办法直接选点得坐标,这里建议使用 GPT 自己写一段程序。

  2. 第二步:获取雷达点云中的角点坐标。流程:录制bag->转化为pcd-> 使用pcl_viewer获取三维点。

    • 首先,录制的话就进入到 Home\files\Livox_related\ws_calibration\Livox-SDK\ws_livox 下面(这是一个ros工作空间), 先 source devel/setup.bash ,然后用 roslaunch livox_ros_driver livox_lidar_msg.launch 然后再输入 rosbag record /livox/lidar 就好。注意录制时候别动。

      source devel/setup.bash 是为了方便补全
      roslaunch livox_ros_driver livox_lidar_msg.launch 是发布自定义形式的点云
      rosbag record /livox/lidar 是录制

    • 然后依据标定库转为PCD文件。你需要修改一下 pcdTransfer.launch 中的内容,如下图,修改输入输出路径和bag的数量就好。

    • 使用pcl_viewer打开PCD文件,按住shift+左键点击即可获得对应的点坐标。注意和照片采用相同的角点顺序 pcl_viewer -use_point_picking xx.pcd。将xyz角点坐标按如下格式保存在data/corner_lidar.txt中,将所有PCD文件中雷达点云的角点坐标保存下来,如下图

  3. 第三步:依据官方库进行标定就好,一般不需要设置初始外参(用它自带的就好),而且一般不会失败。

五、输出彩色点云

这里我没有用官方标定库给的染色方法,因为我发现好像我最上面的点云被染成了图像中底板的颜色。所以另外找库 LInk

5.1 准备好融合的代码

进入 /home/yzp/files/code_program/Livox_COLOR. 然后按照项目的说明进行配置就好。注意要手动修改图片的大小(在 mian.cpp 的宏定义里面的 H 和 W,否则会发现数组越界,而且报错还不明显)。对于usb相机的发布程序,要注意你发布的像素大小。

5.2 启动程序

依次启动激光雷达的点云发布程、usb相机发布程序、融合程序,就可以了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值