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

0.前置

1.前置代码

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.获取相机内外参

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.计算世界坐标系下三维点坐标

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下数字逻辑设计与验证实战:从基本门电路到综合实验](https://wenku.csdn.net/doc/3z990z5f6m?utm_source=wenku_answer2doc_content) 要掌握在Libero环境下使用Verilog HDL设计和验证74系列门电路,首先需要对基本的数字逻辑门电路有深刻的理解。对于与非门(如74HC00)和或非门(如74HC02),你需要了解它们的工作原理和特点。Libero作为一款强大的EDA工具,其在数字逻辑设计与仿真验证中扮演着核心角色。 在Libero中设计基本门电路,需要遵循以下步骤: 1. 打开Libero软件,创建一个新项目,并选择适合的FPGA或CPLD设备作为目标器件。 2. 使用Verilog HDL编写门电路的代码,例如设计一个与非门,可以这样写: ```verilog module nand_gate(input a, input b, output reg y); always @ (a or b) begin y = ~(a & b); end endmodule ``` 3. 定义输入输出端口,并将设计的门电路模块与FPGA/CPLD的引脚进行连接。 4. 利用Libero的仿真工具进行仿真测试,你需要编写测试平台(testbench),为门电路提供各种输入信号,并观察输出结果是否符合预期。 5. 在仿真结果中,检查逻辑门的输出响应是否与理论一致,如与非门的输出应在输入全为高电平时为低电平。 6. 如果仿真结果正确,接下来可以进行综合操作,将设计映射到实际的硬件上进行进一步验证。 通过上述步骤,你可以在Libero环境下实现从设计到验证的整个流程。为了深入了解这些概念,并获取更多实战经验,建议阅读《Libero下数字逻辑设计与验证实战:从基本门电路到综合实验》。该文档详细介绍了如何使用Libero进行数字逻辑设计和仿真验证的完整过程,对于学习和掌握这些技能将是非常有用的资源。 参考资源链接:[Libero下数字逻辑设计与验证实战:从基本门电路到综合实验](https://wenku.csdn.net/doc/3z990z5f6m?utm_source=wenku_answer2doc_content)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿航626

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值