coppeliasim中d435如何读取深度图像?

如题。。。。。。。。。。。。。。。
回复

使用道具 评分 举报

大神点评6

dongdongming 2021-9-23 14:39:55 显示全部楼层
/sim/camera/D435/depthImage
回复

使用道具 评分 举报

 楼主| ababala 2021-9-23 22:59:08 显示全部楼层
dongdongming 发表于 2021-9-23 14:39
/sim/camera/D435/depthImage

这个topic无法使用cv_bridge转换过来,请问是什么问题呢?
回复

使用道具 评分 举报

wuyucong 2021-9-25 15:25:15 显示全部楼层
ababala 发表于 2021-9-23 22:59
这个topic无法使用cv_bridge转换过来,请问是什么问题呢?

正在整理示例代码
回复

使用道具 评分 举报

dongdongming 2021-9-25 15:27:47 显示全部楼层
ababala 发表于 2021-9-23 22:59
这个topic无法使用cv_bridge转换过来,请问是什么问题呢?

验证一下再答复你,你可以先用颜色识别完成
回复

使用道具 评分 举报

wuyucong 2021-9-27 19:11:30 显示全部楼层
回复

使用道具 评分 举报

wuyucong 2021-9-27 19:38:46 显示全部楼层
在仿真软件中修改对应机器人仿真脚本内容
微信截图_20210927190859.png 将其中对应的函数进行替换,特别注意以下修改会将深度数据改为以m为单位的形式
微信截图_20210927192208.png
对应的函数源码如下
  1. function imagePublish()
  2. imageBuffer = {}
  3. local x, y = 0, 0
  4. local resolution = {}
  5. -- UVC
  6. resolution = sim.getVisionSensorResolution(cameraHandle[1aaaa])
  7. imageBuffer[1] = sim.getVisionSensorImage(cameraHandle[1], x, y, resolution[1], resolution[2], 1)
  8. simROS.imageTransportPublish(UVCRgbImagePub, imageBuffer[1], resolution[1], resolution[2], tostring(imageFrameId))
  9. -- D435 coloraaa
  10. resolution = sim.getVisionSensorResolution(cameraHandle[2])
  11. imageBuffer[2] = sim.getVisionSensorImage(cameraHandle[2], x, y, resolution[1], resolution[2], 1)
  12. simROS.imageTransportPublish(D435ColorImagePub, imageBuffer[2], resolution[1], resolution[2], tostring(imageFrameId))
  13. -- D435 depth
  14. --imageBuffer[3] = sim.getVisionSensorDepthBuffer(cameraHandle[2]+sim.handleflag_codedstring, x, y, resolution[1], resolution[2])
  15. imageBuffer[3] = sim.getVisionSensorDepthBuffer(cameraHandle[2]+sim.handleflag_codedstring+sim.handleflag_depthbuffermeters, x, y, resolution[1], resolution[2])
  16. -- deepData = sim.transformImage(imageBuffer[3],{640,480},4)
  17. depthImageMsg={}
  18. depthImageMsg['header']={seq=0, stamp=0, frame_id=tostring(imageFrameId)}
  19. depthImageMsg['height']=resolution[2]
  20. depthImageMsg['width']=resolution[1]
  21. depthImageMsg['encoding']='32FC1' -- ?
  22. depthImageMsg['is_bigendian']=0
  23. depthImageMsg['step']=640*4
  24. depthImageMsg['data']=imageBuffer[3]
  25. simROS.publish(D435DepthImagePub, depthImageMsg)
  26. imageFrameId = imageFrameId + 1
  27. end
复制代码
可以实现你需求的效果,其中需要注意的是数据的大小端模式会和你使用的平台相关,图片编码是32FC,在cvbridge中需要用到
微信截图_20210927192223.png
回复

使用道具 评分 举报

您需要登录后才可以回帖 登录 | 立即注册

  • 0 关注
  • 0 粉丝
  • 1 帖子