slam-python icon indicating copy to clipboard operation
slam-python copied to clipboard

视觉里程计中的一段代码逻辑是否存在问题?

Open zhchyang2004 opened this issue 7 years ago • 5 comments

感谢提供了这么专业的代码和文档。我按照你的资料进行了复现,受益匪浅!但是发现了如下问题:

如下二者的逻辑关系不一致:

https://github.com/zsirui/slam-python/tree/master/4/joinPointCloud.py 中的第51、52行: p = slamBase.transformPointCloud(p0, pnp.T) pointCloud = slamBase.addPointCloud(pointCloud.to_list(), p)

与 https://github.com/zsirui/slam-python/blob/master/3/joinPointCloud.py中的第23、24行: p = slamBase.transformPointCloud(p0, pnp.T) pointcloud = slamBase.addPointCloud(p, p1)


是否应该将前者的代码改为如下形式,即与后者一致? p = slamBase.transformPointCloud(pointCloud, pnp.T) pointCloud = slamBase.addPointCloud(p,p0)

在没有滤波的情况下,我将颜色加入到4/joinPointCloud.py 的点云中,经过若干次拼接后,可以观察到,这样修改后的点云效果与rgb图像相仿,而按照原来的代码形式,带颜色的点云效果与rgb图像相差很大。

zhchyang2004 avatar Dec 27 '18 11:12 zhchyang2004

请问你运行过前面的棋盘格py文件与readYaml的py文件没有,也出现很多bug,很想问一下,作者这块都是验证上传的吗

watertianyi avatar Dec 28 '18 00:12 watertianyi

棋盘格py文件没有运行过。 运行过readYaml文件。有时候在进行读写操作的时候,里面的'rb'和'wb'处会报错。但是对于复现项目来说,这个问题不大,因为readYaml只是帮助提取了相机内参和畸变系数。我在运行主程序的时候,屏蔽了读取readYaml文件,并直接用如下代码:

CameraIntrinsicData=np.array([ 4.0221263617087789e+02, 0., 2.7927783248995860e+02, 0.,
								4.0221263617087789e+02, 2.6686931417897887e+02, 0., 0., 1. ]).reshape(3,3)
DistortionCoefficients=np.array([ -8.6610044683997529e-03, -6.8094690368079636e-01,
							1.3699186493148167e-02, -1.0121417303145586e-02,
							1.2108008011320421e+00 ])
#CameraIntrinsicData, DistortionCoefficients = readyaml.parseYamlFile(CalibrationDataFile)

zhchyang2004 avatar Dec 28 '18 01:12 zhchyang2004

@zhchyang2004 你好,是的,我已经调通了readYaml,但是在slamBase.py 运行的点云图应该是包含RGB的,但是出来的图不是RGB的,你运行过这个程序没有

watertianyi avatar Dec 28 '18 07:12 watertianyi

是哪一个主题中的的slamBase.py?

zhchyang2004 avatar Dec 28 '18 10:12 zhchyang2004

感谢提供了这么专业的代码和文档。我按照你的资料进行了复现,受益匪浅!但是发现了如下问题:

如下二者的逻辑关系不一致:

https://github.com/zsirui/slam-python/tree/master/4/joinPointCloud.py 中的第51、52行: p = slamBase.transformPointCloud(p0, pnp.T) pointCloud = slamBase.addPointCloud(pointCloud.to_list(), p)

https://github.com/zsirui/slam-python/blob/master/3/joinPointCloud.py中的第23、24行: p = slamBase.transformPointCloud(p0, pnp.T) pointcloud = slamBase.addPointCloud(p, p1)

是否应该将前者的代码改为如下形式,即与后者一致? p = slamBase.transformPointCloud(pointCloud, pnp.T) pointCloud = slamBase.addPointCloud(p,p0)

在没有滤波的情况下,我将颜色加入到4/joinPointCloud.py 的点云中,经过若干次拼接后,可以观察到,这样修改后的点云效果与rgb图像相仿,而按照原来的代码形式,带颜色的点云效果与rgb图像相差很大。

首先,我是参照别人的一个视觉里程计(C++代码)教程,进行了使用Python编写的工作。原本别人的教程是一个循序渐进的过程,第三章和第四章侧重的主题不太一样,所以这里表现的逻辑是不一样的。Python版的PCL库是没有颜色区域的,我是通过自己的一些代码改造,让点云能够显示颜色,但到后期发现,想完整实现别人的视觉里程计的完整教程,需要很多其他知识,所以最终只出现了这四章内容。

zsirui avatar May 18 '19 05:05 zsirui