线程评级:
  • 0票(s) - 0平均
  • 1
  • 2
  • 3.
  • 4
  • 5
Cam2D_Snapshot深度图像返回不正确的深度值
# 1
复制:将相机放置在场景中,并将其指向30x50x10毫米的块(附件)。用:
代码:
从robodk导入robolink
导入numpy为np
进口操作系统
导入的时间
RDK = robolink.Robolink()

#获取深度快照
cam = RDK。项目(深度相机)
cam.setParam(“开放”)
time . sleep (0.1)
RDK.Cam2D_Snapshot(os.path.join(os.path.abspath('.'), 'tmp.grey32'), cam, 'Depth')
Grey32 = np.fromfile('tmp.grey32', dtype='>u4')
W, h = [:2]
Img = np. fluid (np;(2:], (h, w)))
Img = (Img / np.iinfo(np.uint32).max) # rescale to float 0.0 to 1.0
FAR_LENGTH = 100 #无论FAR_LENGTH设置为多少
img = img * FAR_LENGTH
Img = Img .astype(np.uint16)

#保存为点云与open3d
导入open3d为o3d
FOV = 63.91 #无论FOV设置为多少
fy = h / (2*np.tan(np.radians(FOV) / 2)) # FOV为相机视场
3d.camera. pinholecameraintrinsic ()
宽度= w,
身高= h,
对fx和fy使用相同的值
=年度财政年度
Cx =w / 2,
Cy =h / 2,


pcd = o3d.geometry.PointCloud.create_from_depth_image(o3d.geometry.Image(img), intrinsic)
o3d.io.write_point_cloud (pcd。xyz', pcd, write_ascii=True)
打开生成的pcd。使用MeshLab或点云查看器的xyz文件。

预期结果:生成的点云是一个矩形块,尺寸为30x50x10。

实际结果:得到的点云尺寸不是30x50x10,角度也不是90度。

修复z-distortion:如果我在将img归一化为0到1之间后插入以下行:

代码:
Img = Img / (2 - Img)
然后得到的点云具有正确的尺寸。注意,上面的变换是0到0和1到1,并将直线和平面转换为直线和平面,但扭曲了距离和角度。也许有人在某处插入了某种伽马校正?


附加文件
.stl 30 x50x10.stl(大小:684字节/下载:138)2022世界杯国家队名单
# 2
感谢您的详细反馈。经过一些内部讨论和测试,我们能够用最新版本的RoboDK修复深度图。
您可以下载最新版2022世界杯国家队名单本的RoboDK(版本5.4.3,目前仅更新了Windows二进制文件):
//m.sinclairbody.com/2022世界杯国家队名单download

当你使用这个公式(32位浮点数值精度)时,它现在应该非常准确:
img = img * FAR_LENGTH - NEAR_LENGTH
注意,这是距离传感器平面的距离(相机连接到的参考系的位置)。

让我们知道,如果这是混淆或不是你想要的。
# 3
谢谢。我在文档中没有看到任何类似“NEAR_LENGTH”的东西;你是说焦距吗?看起来你建议的翻译后可能值的范围将是[-NEAR_LENGTH, FAR_LENGTH -NEAR_LENGTH),这是正确的吗?
# 4
这里的NEAR_LENGTH指的是焦距。

FAR_LENGTH是焦距加上工作距离。

例如焦距设置为10mm,工作距离设置为2000mm:
  • NEAR_LENGTH =焦距= 10毫米
  • FAR_LENGTH =焦距+工作距离= 2010 mm
距离计算公式不应返回负值。它应该给出与传感器平面(RoboDK中的参考系)的距离,而不是焦点。

如果有什么不合理的地方,请告诉我们。
对于那些感兴趣的人,这个例子展示了如何通过套接字检索深度图,从点云创建网格并将其导入RoboDK:https://github.com/RoboDK/RoboDK-API/blo..._Camera.py

谢谢你的贡献。
请阅读论坛的指导方针之前发帖!
有关RoboDK的有用信息,请访问我们的在线文档
# 6
谢谢。我只能访问macOS和linux,所以我还没有机会尝试这些变化。我的版本是5.4.1.21935 -我可以期待新版本(由RDK.Version()返回)有5.4.3的形式。xxx,还是基于日期的?(您的示例脚本引用的版本为“5.4.3-2022-06-20”。)我想根据版本有条件地重新缩放,因为我可能无法一次更新所有地方。
# 7
我们将在本周发布Linux和macOS的新版本。
RDK.Version()将返回5.4.3.22248或更高。
请阅读论坛的指导方针之前发帖!
有关RoboDK的有用信息,请访问我们的在线文档
# 8
macOS下载有更新吗?2022世界杯国家队名单我看到.dmg下载的“最后修改”日期是2月21日。2022世界杯国家队名单

% http HEAD//m.sinclairbody.com/2022世界杯国家队名单downloads/Install-RoboDK.dmg
Http /1.1 200 ok
Accept-Ranges:字节
cache - control:信息= 86400
连接:升级,保持活力
内容编码:br
内容类型:应用程序/ x-apple-diskimage
日期:2022年7月16日(星期六)04:23:43 GMT
ETag:“2 ee006c-a309f39-5d88e697205a7-br”
截止日期:2022年7月17日,星期日,04:23:43 GMT
点火电极:超时= 5
最后修改日期:2022年2月21日星期一22:04:09 GMT
Apache服务器:
升级:h2, h2c
不同:接受编码
# 9
我很抱歉延迟,我们需要更长的时间来生产MacOS的更新。这仍然需要几天的时间。我会和你保持联系。

Linux版本最近应该更新过了。如果您在Linux上仍然有阻塞问题,请告诉我们。
我们刚刚为MacOS更新了RoboDK。你可以在这里下载:2022世界杯国家队名单
//m.sinclairbody.com/2022世界杯国家队名单download

最新的MacOS版本支持加载STEP和IGES文件。




浏览此主题的用户:
1客人(年代)