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

Isaac Sim Docker 中使用 Python 脚本

笔记,记录个人尝试过程

主要目的:

1. 直接在代码中运行仿真程序,并对某传感器帧率进行固定化设置,添加噪声等操作。

2. 试多个场景的并行处理,和多用户/账户在远程Docker中的并行使用。

3. 对车辆模型、车辆动力学等进行精细化处理。

原因:

1. 当前设备不支持多场景多小车多传感器同时运行,硬件不足,需要远程使用别的服务器。

2. 若不支持同时多场景同时运行,可以远程服务器中开一个仿真地图,本机开一个仿真地图。

3. 我觉得不会不支持的...先试试看 

尝试了用python独立脚本开启直播流和打开场景,但其它脚本无法同步使用。改,换使用扩展。

Isaac Sim教程07 拓展编程Extension_isaac sim extension-CSDN博客

大佬的博客中,很多代码中的意义都翻译了。
 

在扩展的ui_builder.py中,只有_setup_scene函数是对场景的具体设置,其它都是些ui界面的设置,和重置场景等功能,场景中已经有了完善的内容,不需要在此处添加机器人和一些执行逻辑,全都注释掉。

    def _setup_scene(self):"""LOAD 可加载此实例"""usd_file = "/usd_path"# 加载已有场景open_stage(usd_path = usd_file)world = World()# # 加载ur10e模型# robot_prim_path = "/ur10e"# path_to_robot_usd = "omniverse://localhost/NVIDIA/Assets/Isaac/4.1/Isaac/Robots/UniversalRobots/ur10e/ur10e.usd"# # Do not reload assets when hot reloading.  This should only be done while extension is under development.# if not is_prim_path_valid(robot_prim_path):#     create_new_stage()#     add_reference_to_stage(path_to_robot_usd, robot_prim_path)# else:#     print("Robot already on Stage")# # 创建新的舞台# create_new_stage()# # 添加光源到舞台# self._add_light_to_stage()# # 将ur10e机械臂的USD参考添加到舞台# add_reference_to_stage(path_to_robot_usd, robot_prim_path)# # 创建固定的立方体# self._cuboid = FixedCuboid(#     "/Scenario/cuboid", position=np.array([0.3, 0.3, 0.5]), size=0.05, color=np.array([255, 0, 0])# ) # # 实例化ur10e机械臂的Articulation# self._articulation = Articulation(robot_prim_path)# 获取世界实例# world = World.instance()# # 添加Articulation和Cuboid到世界中# world.scene.add(self._articulation)# world.scene.add(self._cuboid)

在原本的_setup_scenario函数中,调用了scenario.py中的逻辑,我将此处机械臂的运动逻辑改为了差速驱动轮的计算逻辑。 

    def _setup_scenario(self):"""原本用来控制机械臂做循环移动(圆周)改成了轮式里程计的发布"""Noneself._reset_scenario()# UI managementself._scenario_state_btn.reset()self._scenario_state_btn.enabled = Trueself._reset_btn.enabled = True

 isaac sim 扩展仅支持异步发布 rostopic,这里可看官方教程:在扩展中使用ros:
Custom Message — Omniverse IsaacSim

import asyncio
import rospytry:rospy.init_node("hello", anonymous=True, disable_signals=True, log_level=rospy.ERROR)
except rospy.exceptions.ROSException as e:print("Node has already been initialized, do nothing")async def my_task():from std_msgs.msg import Stringpub = rospy.Publisher("/hello_topic", String, queue_size=10)for frame in range(10):pub.publish("hello world " + str(frame))await asyncio.sleep(1.0)pub.unregister()pub = Noneasyncio.ensure_future(my_task())

 


 


http://www.mrgr.cn/news/82053.html

相关文章:

  • Ubuntu 20.04 Realtek 8852无线网卡驱动
  • windows蓝牙驱动开发-生成和发送蓝牙请求块 (BRB)
  • 网站HTTP改成HTTPS
  • java.布尔类型
  • 【Flutter】platform_view之AppKitView在哪个flutter版本添加的
  • Qt QML专栏目录结构
  • 一份关于 Ubuntu 系统下代理配置的故障排查笔记
  • Linux高并发服务器开发 第七天(静态库 动态库)
  • LVS 负载均衡原理 | 配置示例
  • Linux高级--3.2.4.2 常见的几种timer的设计方案
  • Java基本操作笔记
  • 协程原理 函数栈 有栈协程
  • 有限元分析学习——Anasys Workbanch第一阶段笔记(2)应力奇异及位移结果对比、初步了解单元的基本知识
  • 大数据组件(一)快速入门调度组件Airflow
  • 人形机器人全身运动规划相关资料与文章
  • PaddleOCROCR关键信息抽取训练过程
  • 蓝桥杯(Java)(ing)
  • 【网络安全实验室】基础关实战详情
  • 沪深捉妖记(一)探寻妖股的特征
  • 数据结构与算法之动态规划: LeetCode 3105. 最长的严格递增或递减子数组 (Ts版)
  • Nginx - 整合lua 实现对POST请求的参数拦截校验(不使用Openresty)
  • L25.【LeetCode笔记】 三步问题的四种解法(含矩阵精彩解法!)
  • SAP SD信贷管理信用管理手册(下)
  • 通义千问QvQ-72B-Preview模型部署
  • FOC控制原理-ADC采样时机
  • HarmonyOS NEXT应用开发实战:免费练手的网络API接口分享