这篇是最近的实验记录:在Ubuntu系统下读取点云数据并在rviz中显示,录制自己的rosbag数据包并离线播放,将rosbag文件转化为pcd格式导入MATLAB中,和双目相机进行外参标定。

目录

  • 硬件准备
  • 软件准备
  • 开始
    • 速腾16线激光雷达
      • 环境配置
      • 编译运行
      • 录制rosbag
      • 读取自己录制的rosbag
      • 转化rosbag数据为pcd格式
        • 显示PCAP格式点云
    • ZED 2 双目相机
      • 环境配置
      • 利用MATLAB进行双目相机内参标定
      • MATLAB 外参标定
  • ------------------------------------未完待续-----------------------------------

硬件准备

Robosense 16线激光雷达
按照官网用户手册进行电气连接即可

软件准备

笔记本电脑安装Linux系统,我的是Ubuntu 18.04,ROS Melodic。
参考:CSDN、ROS官网、Robosense-Github

开始

速腾16线激光雷达

环境配置

按照官方提示,首先下载rslidar_sdk项目,这里我用的2.1的方法,网络不好的朋友用2.2的方法手动下载一下应该也可以。之后按照3.3和3.4的指令,安装两个必需的库yaml和libpcap
此外,还需要修改电脑的IP地址来和激光雷达适配。将电脑和雷达连接后,对电脑IP地址进行修改,进入设置-网络-有线连接-设置-IPV4-地址,在 地址栏填入192.168.1.102,子网掩码255.255.255.0,网关(gateway)192.168.1.1,(激光雷达默认的IP地址是192.168.1.200)DNS我没有设置,自动配置,没有出现什么问题(有其他博主配置了才能运行,这里大家按自己情况参考),其他是要检查portal是否为6699和7788.

编译运行

环境配置完毕后编译运行rslidar_sdk,依旧按官方提示
我试过4.1或4.2的方法都可以。

我的备忘:重新读取激光雷达数据时先从终端进入我的工作空间cd robosense_ws,编译运行catkin_make,配置环境source devel/setup.bash,输入roslaunch rslidar_pointcloud rs_lidar_16.launch 即可弹出Rviz窗口,能看到激光雷达实时采集到的点云数据。(如果看不到的话,在Rviz中左侧栏下方的Add按钮中添加pointcloud话题即可) 使用roslaunch指令可以自动启动节点管理器,不需要roscore。

录制rosbag

进入工作空间,输入指令rosbag record -O [bagname] [topic1] [topic2] [...] 开始录制点云数据的rosbag,不加中括号,bagname是可选项。按ctrl+c终止record指令即可结束录制。
我的备忘rosbag record -O lidar1.bag rslidar_points
这里bagname.bag是可以自己指定的录制出的ros包名称,如果不指定则默认按照录制结束时间命名,topic1是激光雷达读取的点云数据流的话题名称,也可以列出多个话题名称。在rviz中可以查看pointcloud对应的topic名称。

读取自己录制的rosbag

这里要记住之前实时显示点云时的话题名称,在rviz中修改好配置才能播放rosbag包。
打开终端进入存放自己录制好的rosbag的工作空间,输入指令rosbag play -l lidar1.bag
这里 -l 是loop,循环播放的含义,因为我录制的rosbag时长较短所以循环播放,还有很多播放指令可以参考其他博客

我的备忘:弹出rviz窗口后在左侧栏中Global Option 选项中修改Fixed Frame为 rslidar,Add添加PointCloud2话题,并将话题Topic修改为/rslidar_points

转化rosbag数据为pcd格式

为了在MATLAB中使用点云数据,需要将点云数据转化为MATLAB支持的pcd或ply格式。之前在Windows系统下使用速腾自带的RSView软件采集并可视化点云数据,但录制的数据包只能存储为pcap或csv格式,都是MATLAB不支持的格式,所以才有了这篇博客,在Ubuntu下尝试完成激光雷达和双目相机的外参标定的工作。
新建终端roscore进入工作空间cd robosense_ws
将ros包转化成pcd文件rosrun pcl_ros bag_to_pcd <input_file.bag> <topic> <output_directory>
输入你的rosbag名也可加上路径,话题名称,转化后的pcd文件的存储位置,这样就把ros包转化成pcd格式文件了,注意pcd文件是按帧存储的,因此一个bag文件获取的pcd文件是很多个,每个pcd是一帧数据,可以通过pcl_viewer命令pcl_viewer <filename.pcd>来查看,还可以用指令-bc -fc 加上r,g,b数值来改变背景或点云的颜色。

我的备忘rosrun pcl_ros bag_to_pcd pointcloud1/lidar1.bag rslidar_points ~/pcd_file1 pcl_viewer 1_1.pcd -fc (255,255,0)

显示PCAP格式点云

想将之前在Windows系统下采集的pcap格式点云数据拷贝到ubuntu系统下读取。这里要进入工作空间下的src文件夹—ros_rslidar—rslidar_pointcloud—launch—rs_lidar_16.launch,修改<param name="pcap" value="你的pcap文件绝对位置">,这里可以添加多行同时读取多个pcap数据包。
之后在终端进入工作空间cd robosense_ws 输入roslaunch rslidar_pointcloud rs_lidar_16.launch即可显示pcap文件。

ZED 2 双目相机

环境配置

在官方Github这里可以看到使用ZED相机的prerequisition,我的系统是Ubuntu18.04,安装了CUDA11.7,ROS Melodic。在这里下载安装了SDK8.2,注意看好自己的系统和CUDA的版本,下载对应的ZED SDK。下载安装好之后会在/usr/local/zed/tools下看到一系列工具用来可视化相机采集到的图像。

我的备忘:ZED可视化工具位置:/usr/local/zed/tools/zed_explorer
ZED读取的图像保存位置:/home/amber/Documents/ZED

利用MATLAB进行双目相机内参标定

在Ubuntu系统下安装MATLAB,这里和window下略有不同,首先从官网上下载了.iso文件,之后在终端运行相应命令来进行安装,有很多博客讲的很仔细就不再展开。安装好后进入安装文件夹,我是安在/home下新建的的/matlab2022a文件夹中,进入文件夹打开终端运行bin/matlab即可启动MATLAB。这里可以参考网上教程创建MATLAB桌面图标,这样就不需要每次都进入终端输入指令来运行了。
刚装好的MATLAB工具栏部分字体太小,可以在编辑器中输入如下指令来调整:

s = settings;
s.matlab.desktop.DisplayScaleFactor;
s.matlab.desktop.DisplayScaleFactor.PersonalValue = 1.4;

1.4是放大的倍数,根据自己需要更改。(这里发现一个问题,调整工具栏字体大小之后有些App使用的时候显示不完全就很心累,遇到这种情况可以先把PersonalValue改成1运行一下再重新运行一遍,然后重启MATLAB)

在Apps中找到Stereo Camera Calibrator,就可以开始双目相机标定啦。只要将双目相机读取的左右图像分别Import即可。在这里附上双目相机采集图像并分割左右图像保存到两个文件夹下的MATLAB程序:
(电脑连接上双目相机,运行程序后,按下空格键即可采集当前时刻的图像帧,并自动分割为左右图像保存在你指定的文件夹下,名称自定。)

clc;
% Open the ZED
zed = webcam('/dev/video2')
preview(zed)
%-----------------------------------------
% Set video resolution=720P
zed.Resolution = zed.AvailableResolutions{1};
% Get image size
[height,width,channels] = size(snapshot(zed))
ok = 1;
i = 1;
% Start loop
while ok
% get key value
w = waitforbuttonpress;
if w
% Capture the current image
img = snapshot(zed);% Split the side by side image into two images
image_left = img(:, 1 : width/2, :);
image_right = img(:, width/2 +1: width, :);
% save images
imwrite(image_left, ['/home/amber/matlab2022a/gyz/left1/',num2str(i),'L.jpg']);
imwrite(image_right, ['/home/amber/matlab2022a/gyz/right1/',num2str(i),'R.jpg']);
% Display the left and right images
subplot(1,2,1);
imshow(image_left);
title('Image Left');
subplot(1,2,2);
imshow(image_right);
title('Image Right');
drawnow;
i = i+1;
end
end
% close the camera instance
% clear zed
%----------------------------------------

在工具栏中勾选
进行calibrate,保存Export Camera Parameters中的Export Parameters to Workspace, 还可以保存生成的session
之后在实时编辑器中输入如下代码可以将刚才生成的重投影误差等数据可视化

showReprojectionErrors(stereoParams,'BarGraph'); %显示重投影误差showExtrinsics(stereoParams,"PatternCentric") %显示外参数据showExtrinsics(stereoParams,"CameraCentric")

采集原始图像时可以多保存一些,因为有些图像重投影误差较大,需要手动剔除。我采集了20组,最后保留了15组图像,最后的Error是0.12。看其他博客说误差在0.3以下就差不多了,大家可以根据自己实际情况作调整。

MATLAB 外参标定

MATLAB自带的LiDAR Toolbox可以用来处理点云数据,包括进行滤波降噪、剔除离群点等功能,非常方便。用LiDAR Camera Calibrator 工具箱来进行激光雷达和双目相机的外参标定,目的是获取两个坐标系之间的转换关系。

首先试着运行了外参标定的官方demo,注意到需要传入的文件格式是:pcdply格式的点云数据 和pngjpg格式的图像数据。
因此计划在ROS下读取rosbag数据再转化成pcd格式,同时采集双目相机图像,传入工具箱中。这里要注意时空同步的问题,由于我只是采集标定板在不同位置的静态场景数据,因此只需要改变标定板位置,保持相机和雷达相对位置固定,分别记录在特定位置下的图像和点云数据即可。

  • 采集数据
  • 在matlab中进行LCC测试
  • 数据前处理:图像降噪、提取roi,点云滤波,地面去除分割
  • 粗配准,精配准

本篇主要是记录自己最近标定实验的流程,年纪大了,没有好记性只有烂笔头啦。如有错误还请大家指正,有疑问的朋友们也可以一起交流讨论,相互学习共同进步~

------------------------------------未完待续-----------------------------------

Ubuntu18系统下采集点云数据(速腾16线激光雷达)与ZED 2 相机进行外参标定(Matlab的LCC工具箱)相关推荐

  1. 3、速腾16线激光雷达RS-16 ----- 3D建图算法LeGO-LOAM的使用(Ubuntu18.04 + ROS Melodic)

    Ubuntu18.04使用速腾16线激光雷达RS-16测试3D建图算法 LeGO-LOAM 的使用 1. 安装gtsam因子图库 2. 新建ROS工程目录文件夹,下载源码进行编译 3. 下载相关数据集 ...

  2. 使用速腾16线激光雷达与IMU 实现Cartographer 3D建图

    平台:ubuntu18.04 + rosmelodic 设备: 速腾16线激光雷达(RS-Helios-16P).IMU(WHT901B-485),使用方法见前文 1.创建backpack_2d_rs ...

  3. robosense速腾16线激光雷达配置过程

    环境: 1.速腾16线激光雷达rslidar: 2.工控机: 3.Ubuntu 18.04        melocic版本; 1.1 安装驱动源码 $ mkdir –p ~/catkin_rslid ...

  4. 基于点云强度的3D激光雷达与相机的外参标定

    本文提出一种新颖的方法,可以对3D lidar和带有标定板的相机进行全自动的外参标定,提出的方法能够从lidar的每一帧点云数据中利用强度信息提取标定板的角点.通过激光的反射强度和棋盘格颜色之间的相关 ...

  5. 虚拟机(VMware)ubuntu18.04连接速腾16线激光雷达

    激光雷达自身默认的IP地址是192.168.1.200 (用于以后的测试) 激光雷达要求PC端的IP地址改为 静态地址: 192.168.1.102 一.Win10系统下进行测试 1.修改本机IP地址 ...

  6. Autoware速腾16线激光雷达定位若干问题

    启动Autoware 启用仿真时间 在默认情况下,ROS使用ubuntu系统的时间,也就是墙上时钟时间(wall clock).但当rosbag play一个记录的bag包时,里面记录的是历史时间,所 ...

  7. 用速腾16线激光雷达跑gmapping

    首先运行激光雷达的驱动,launch文件如下 <launch><arg name="model" default="RS16" />&l ...

  8. 速腾聚创16线激光雷达rslidar-16的ros驱动安装与rviz点云显示

    原链接: https://community.bwbot.org/topic/520 运行测试平台:小强ROS机器人 速腾聚创16线激光雷达rslidar-16的供电是直流12v 3A,通信接口是rs ...

  9. w7服务器搭建网站教程,w7系统下的云服务器搭建教程

    w7系统下的云服务器搭建教程 内容精选 换一换 使用云服务器备份创建镜像后,通过创建成功的镜像创建云服务器,但登录云服务器后提示系统进入维护模式,无法正常使用云服务器.当云服务器带有数据盘的时候,恢复 ...

最新文章

  1. 服务器统一计算系统,思科为微软扩展统一计算系统UCS服务器
  2. 程序设计中的驼峰原则
  3. spring注解方式 idea报could not autowire
  4. idea连接mysql
  5. Mac 运行 psql postgres 报错
  6. 出栈是如何操作的?指令:POP dest dest为16位操作数
  7. 北京科技大学大小年计算机,【猛戳】本科一批没录满高校名单(参考2015)!报志愿三步走211分8档,985分4档,全在这!...
  8. 如何提高企业数据质量
  9. 【译】Angular Elements 及其运作原理
  10. 技术方案SOW工作文档模板
  11. linux系统如何启动rpcbind,关于Centos6.8操作系统安装配置nfs、rpcbind服务后实现linux系统间文件数据共享(挂载mount共享路径)...
  12. 最近想入门股票,请问要如何操作?转载(博主备注)
  13. matlab实现图像的拼接,MATLAB实现图像拼接算法(求助)
  14. Linux驱动开发(十三)---USB驱动HID开发学习(鼠标)
  15. Android4.1 关于Rotation相关的Configuration整体分析
  16. python制作雕刻软件_blender for Mac(免费动画制作软件)
  17. IJCAI 2022奖项公布:3篇杰出论文,南加大、耶拿大学等机构在列
  18. 联合国发布2019年《世界人口展望》:人口老化加剧, 到本世纪末地球人口将达109亿...
  19. c#利用GUID生成随机码
  20. cocos2dx之音效引擎

热门文章

  1. 酒店管理系统流程图模板分享及绘制技巧
  2. IO虚拟化 - vitio-blk后端驱动分析【转】
  3. mysql导入数据load data infile用法
  4. 持续集成以及工具git/gitee/jenkins介绍
  5. 用Springboot+netty实现基于Web的聊天室
  6. 一个关于遗传算法的java小实验(吃豆人)
  7. 【Java结合EasyExcel,模板文件填充并导出Excel】
  8. Java缓存学习:CDN缓存机制
  9. Byte数组相关工具类
  10. ROS智能小车的人跟踪跟随