当前位置: 首页 > news >正文

机器人持续学习基准LIBERO系列5——获取显示深度图

0.前置

  • 机器人持续学习基准LIBERO系列1——基本介绍与安装测试
  • 机器人持续学习基准LIBERO系列2——路径与基准基本信息
  • 机器人持续学习基准LIBERO系列3——相机画面可视化及单步移动更新
  • 机器人持续学习基准LIBERO系列4——robosuite最基本demo

1.更改环境设置

  • LIBERO-master/libero/libero/envs/env_wrapper.py,第37行camera_depths=False改为True
    在这里插入图片描述

2.获取归一化后的深度图

  • robosuite里面直接获取到的是三维的归一化到[0,1]区间的深度图
  • 其中第三个维度为通道数1
agentview_depth = (obs["agentview_depth"])
robot0_eye_in_hand_depth =  (obs["robot0_eye_in_hand_depth"])

3.调整显示深度图

  • 要把第三个维度去掉,再把值扩大到0-255,化为整数才能显示(参考)
agentview_depth = (agentview_depth.squeeze() * 255) .astype(np.uint8)
robot0_eye_in_hand_depth = (robot0_eye_in_hand_depth.squeeze() * 255) .astype(np.uint8)
  • 显示
display(Image.fromarray(agentview_depth))
display(Image.fromarray(robot0_eye_in_hand_depth))

4.同时可视化彩色图和深度图

  • 前置代码:机器人持续学习基准LIBERO系列1——基本介绍与安装测试, 机器人持续学习基准LIBERO系列2——路径与基准基本信息
env_args = {"bddl_file_name": os.path.join(os.path.join(get_libero_path("bddl_files"), task.problem_folder, task.bddl_file)),"camera_heights": 128,"camera_widths": 128
}env = OffScreenRenderEnv(**env_args)
#设置种子
env.seed(0)
#环境重置
env.reset()
#初始化
env.set_init_state(init_states[0])import numpy as np
#运动机械臂更新环境
obs, _, _, _ = env.step([0.] * 7)
#获取手外相机视角图片
agentview_image = (obs["agentview_image"])
robot0_eye_in_hand_image = (obs["robot0_eye_in_hand_image"])
agentview_depth = (obs["agentview_depth"])
robot0_eye_in_hand_depth =  (obs["robot0_eye_in_hand_depth"])
#深度图第三个维度是1,还是归一化后的,所以要把第三个维度去掉,再把值扩大到0-255,化为整数才能显示
#https://www.coder.work/article/7752795
agentview_depth = (agentview_depth.squeeze() * 255) .astype(np.uint8)
robot0_eye_in_hand_depth = (robot0_eye_in_hand_depth.squeeze() * 255) .astype(np.uint8)
display(Image.fromarray(agentview_image))
display(Image.fromarray(agentview_depth))
display(Image.fromarray(robot0_eye_in_hand_image))
display(Image.fromarray(robot0_eye_in_hand_depth))

在这里插入图片描述
在这里插入图片描述

  • 关闭环境
env.close()
http://www.lryc.cn/news/279288.html

相关文章:

  • Java 面试题 - 多线程并发篇
  • 2401d,讨论d串滑动参数
  • etcd官方docker镜像及dockerfile问题处理
  • 2023 IoTDB Summit:天谋科技高级开发工程师苏宇荣《汇其流:如何用 IoTDB 流处理框架玩转端边云融合》...
  • Pygame程序的屏幕显示
  • LVGL的List控件的触摸按键和实体按键的处理
  • 数据结构 模拟实现二叉树(孩子表示法)
  • Android14之解决刷机报错:Can not load Android system. Your data may be corrupt(一百七十七)
  • 二阶贝塞尔曲线生成弧线
  • FilterQuery过滤查询
  • java多线程(并发)夯实之路-线程池深入浅出
  • 数据库-列的类型-字符串char类型
  • 大话 JavaScript(Speaking JavaScript):第二十一章到第二十五章
  • ICMP协议
  • 环信服务端下载消息文件---菜鸟教程
  • 创建型模式 | 建造者模式
  • MVC设计模式
  • WSL (2103) ERROR: CreateProcessEntryCommon:493: chdir 错误解决
  • 【二、自动化测试】为什么要做自动化测试?哪种项目适合做自动化?
  • 用ChatGPT来造一个ChatGPT:计算机领域智能问答系统实践(2)
  • Ubuntu开机自动挂载硬盘
  • vue3基础:单文件组件介绍
  • OCR字符识别:开始批量识别身份证信息
  • php多小区智慧物业管理系统源码带文字安装教程
  • 解决虚拟机的网络图标不见之问题
  • 【Spring类路径Bean定义信息扫描】
  • Ubuntu上安装VMware+win11系统手册
  • 2024年1月12日:清爽无糖rio留下唇齿之间的香甜
  • 群晖Synology Drive同步文件时过滤指定文件夹“dist“, “node_modules“
  • 小程序中滚动字幕