机器人持续学习基准LIBERO系列7——计算并可视化点云

这篇具有很好参考价值的文章主要介绍了机器人持续学习基准LIBERO系列7——计算并可视化点云。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0.前置

  • 机器人持续学习基准LIBERO系列1——基本介绍与安装测试
  • 机器人持续学习基准LIBERO系列2——路径与基准基本信息
  • 机器人持续学习基准LIBERO系列3——相机画面可视化及单步移动更新
  • 机器人持续学习基准LIBERO系列4——robosuite最基本demo
  • 机器人持续学习基准LIBERO系列5——获取显示深度图
  • 机器人持续学习基准LIBERO系列6——获取并显示实际深度图

1.前置代码

  • 机器人持续学习基准LIBERO系列6——获取并显示实际深度图

2.重新获取真实深度信息

  • 之前的由于要显示,进行了整数化处理,所以重新获取一下原始真实深度信息
from robosuite.utils.camera_utils import get_real_depth_map
agentview_depth_real = get_real_depth_map(env.sim, agentview_depth)

3.获取图像尺寸

h,w = env_args['camera_heights'],  env_args['camera_widths']

4.创建像素点序列和颜色序列

i = np.zeros([h*w,2])#(点数,像素点二维坐标)
colors = np.zeros([h*w,3])#(点数,像素点对应的RGB值)
for x in range(h):
    for y in range(w):
        i[x*h+y] = [x,y]
        colors[x*h+y] = agentview_image[x,y]

5.获取相机内外参

  • robosuite官方文档有对应函数get_camera_intrinsic_matrix,get_camera_extrinsic_matrix
from robosuite.utils.camera_utils import get_camera_extrinsic_matrix,get_camera_intrinsic_matrix

camera_intrinsic_matrix_ = np.linalg.inv(get_camera_intrinsic_matrix(env.sim,'agentview', env_args['camera_heights'],  env_args['camera_widths']))
camera_extrinsic_matrix_ = np.linalg.inv(get_camera_extrinsic_matrix(env.sim,'agentview'))

6.计算世界坐标系下三维点坐标

  • 相机内外参使用参考公式
    机器人持续学习基准LIBERO系列7——计算并可视化点云,LIBERO,机器人操作持续学习论文,持续学习,迁移学习,终身学习,多任务学习,libero,机器人,增量学习
points = np.zeros([i.shape[0],3])
for num,p in enumerate(i):
    p_ = (camera_intrinsic_matrix_@(np.array([[p[0],p[1],1]]).T * agentview_depth_real[int(p[0]),int(p[1])] )).T
    p_ = (camera_extrinsic_matrix_@np.array([p_[0,0],p_[0,1],p_[0,2],1]).T).T
    points[num] = p_[:-1]
print(points)

7.关闭环境

env.close()
  • 不关闭环境,就是用open3d显示的话,会报错
X Error of failed request:  BadAccess (attempt to access private resource denied)
  Major opcode of failed request:  152 (GLX)
  Minor opcode of failed request:  5 (X_GLXMakeCurrent)
  Serial number of failed request:  183
  Current serial number in output stream:  183

8.open3d显示点云

import open3d as o3d
pcd_show = o3d.geometry.PointCloud()
pcd_show.points = o3d.utility.Vector3dVector(points[:, :3])
pcd_show.colors = o3d.utility.Vector3dVector(colors[:]/255)
o3d.visualization.draw_geometries([pcd_show])

机器人持续学习基准LIBERO系列7——计算并可视化点云,LIBERO,机器人操作持续学习论文,持续学习,迁移学习,终身学习,多任务学习,libero,机器人,增量学习
机器人持续学习基准LIBERO系列7——计算并可视化点云,LIBERO,机器人操作持续学习论文,持续学习,迁移学习,终身学习,多任务学习,libero,机器人,增量学习文章来源地址https://www.toymoban.com/news/detail-797556.html

到了这里,关于机器人持续学习基准LIBERO系列7——计算并可视化点云的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包