pcl怎么根据深度显示颜色_rviz显示点云的参考坐标系问题

现象描述

获得深度相机的点云后,使用pcl处理(除了滤波外,还会进行坐标系变换,比如从相机坐标系变换到机器人的 base_link),然后将pcl点云类型转换为ROS msg的点云类型。然后发布为话题进行显示,具体情况就是下面这张图

fcbde00c240af7c8584cca8f3c818058.png

右边图像是深度相机采集的原始点云 /kinect/depth/points,参考系为 kinect_link

左边为坐标系变换后的点云/scene/points,参考坐标系为 kinect_link

解决办法

这里我们是想把深度图显示在 base_link 坐标系下,因为 /scene/points 已经变换到 base_link 坐标系下了。 所以要想正常显示,必须在 发布点云 /scene/points 的话题前将其参考坐标系设置为 base_link,设置代码如下

pcl::toROSMsg(tranf_pcd, scene_pcd);
scene_pcd.header.frame_id = "base_link";

话题 /scene/points 发布的就是 scene_pcd 这个Ros中的点云类型。

正确结果如下:

87e57c9c64526eeeb3a86e99093669c2.png

未解之谜

这里有个问题,就是在把点云由 kinec_link 变换为 base_link 的时候,使用的坐标变换矩阵为啥是 kinect_depth_link 相对 base_link 的变换矩阵??二者并不是相同的参考系

6e58a1d1f67a223644eae898d7c2b4a3.png

经过苦思冥想,这里的 kinect_depth_link 是我自己根据点云添加的真实点云数据的参考坐标系。

所以问题演变为为什么深度相机采集的点云参考坐标系定义的是kinect_link,而实际的数据并不是这个参考坐标系?????

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值