图片
4.2.【omniverse】的下载与安装4.2.1. 下载https://developer.nvidia.cn/omniverse下载需要邮箱注册图片
4.2.2. 点击这个网站https://docs.omniverse.nvidia.com/install-guide/latest/index.html4.2.3. 选择你的安装方式https://docs.omniverse.nvidia.com/install-guide/latest/workstation-install.html· 下载 omniverse launcher· linux安装方法:○ 给权限,命令行 ./xxxx○ 或者不用命令行,右键APPImage -> permissions -> allow execution as file· 注册账户yanaibo1214@gmail.com图片
4.3.【Isaac Sim】的安装robotics simulationhttps://developer.nvidia.com/isaac/sim图片
4.3.1. prerequisite系统要求图片
4.3.2. 安装Isaac sim· 点击 exchange交易所,找到isaac sim图片
· 版本选择 2023.1.1或者2023.1.04.3.3.安装cache图片
· 安装好之后,进入 Nucleus注册账户图片
· 点击设置。必须有 Cache出来才算装上了,并且都是RUNNING状态假如 Cache是Stop状态,就换一个版本2023.1.0去图书馆卸载Cache再重新安装图片
· 同时点击文件夹,可以打开浏览器看到文件内容图片
5.GR00Thttps://developer.nvidia.com/project-GR00T?ncid=so-yout-261862-vt486.基本结构图片
7.基本操作教程7.1. 界面操作简单介绍7.1.1. menu bar工具栏7.1.2. 左侧栏图片
1是选择2是移动3是旋转。 搭配使用:先选择物体,再拖动它快捷键 QWER像lol游戏WW按两下会显示自身坐标系,按一下就是世界坐标系7.1.3. 项目栏这里可以打开代码7.1.4. 时间戳window->extensions时间线是一个扩展程序,允许开发人员查看和修改可滚动和可自定义时间线的设置。默认情况下,时间线处于禁用状态,要启用它,请转到窗口 >扩展,在搜索栏中输入omni.anim.window.timeline,然后单击切换按钮。然后,在屏幕底部,会出现时间线小部件。· 当您按下“播放”按钮时,时间线标记开始移动,并在时间线上循环。· 模拟的开始/停止进度也可以在默认布局底部的时间线上查看。7.2. helloword入门启动 Isaac Sim launcher· 加载了一个地板图片
图片
7.2.1. 退出当前项目点击 File点击 Newdont save即可7.3. 机械臂demo图片
图片
7.3.1. 抓取右侧的 stage场景中点击target cube将它拖到任意一个机械臂可能到达的地方点击左侧 Task Controls中的Follow Target按钮的start,机械臂就开始运动了7.4. 堆码垛demomanuplation Simple stack7.5. 机器人大集合里面有 UR10 Franka jetbot realsense等7.6. extensions创建图片
图片
Configuration Tooling Template配置工具类;Loaded Scenario template办公室等场景的模版;Scripting Template脚本模版,例如工厂流水线式工作,第一步、第二步、第三步固定;UI Component Library仪表等需要人看着操作的图片
打开图片
图片
图片
添加你自己创建的 extensions,添加完成之后点击自己的extensions,可以查看信息图片
同时,在任务栏也会出现一个条目 title,点击它的下拉菜单,加载扩展(extension)图片
7.7. standalone应用-python创建意思就是用 python脚本来启动isaac sim,不是用gui。好处是不占用资源,因为界面渲染会占据大量资源。这个方式适合强化学习。先关闭 isaac sim· 强化学习图片
图片
这个案例是让小车靠近小球。· 普通应用Shellcd /home/yab/.local/share/ov/pkg/isaac-sim-2023.1.1Shell./python.sh standalone_examples/api/omni.isaac.franka/follow_target_with_rmpflow.py执行之后等待一下,图片
或者Shell./python.sh standalone_examples/api/omni.isaac.core/add_cubes.py8. stage配置8.1. 设置全局场景属性8.2. 设置全局物理属性图片
图片
8.3. 添加地面图片
图片
图片
8.4. 添加灯光图片
9.制作一个简易小车入门9.1. 添加和抓取形状9.2. 给物体添加物理属性图片
刚体,碰撞体,预设属性如果添加了,那么开始仿真之后,它就会像真实世界中的物体。图片
就倒地了如果 enable取消勾选,物体就不会倒地图片
9.3.测试碰撞属性同上9.4.编辑物理属性比如摩擦力图片
图片
9.5.编辑物理属性比如颜色和反射率首先选择你要改变的物体,再点击颜色设置图片
再选中车体,选择 material图片
9.6.建立图元prim图片
图片
9.7. 添加关节· 选中 body和left wheel,然后create一个revolute joint· 此时会出现一个绿色的圆圈,调整它的 axis,使得圆圈的朝向和轮子旋转的方向一致即可· 点击开始仿真按钮,按住 shift按键,单击车子任意部位,即可拖动它运动图片
9.8.添加驱动· 同时选中两个关节,添加角度驱动器图片
· 位置控制:对于位置控制关节,设置高刚度和相对低或零阻尼。· 速度控制:对于速度控制器关节,设置高阻尼和零刚度。对于车轮上的关节,速度控制更有意义,因此将两个车轮的阻尼设置为1e4*,并将目标速度设置为200。如果您使用的关节范围有限,则可以在“属性”选项卡的“原始USD属性”>“下限(上限)”下进行设置。按下“播放”即可看到模拟移动机器人启动。9.9.添加关节根articulation图片
9.10. 添加相机和传感器图片
9.11.添加激光雷达https://docs.omniverse.nvidia.com/isaacsim/latest/advanced_tutorials/tutorial_advanced_range_sensor_lidar.html#isaac-sim-app-tutorial-advanced-range-sensor-lidar细节在第 13.1中的激光雷达导入9.12. 更复杂的机器人https://docs.omniverse.nvidia.com/isaacsim/latest/advanced_tutorials/tutorial_advanced_rigging_robot.html#isaac-sim-app-tutorial-advanced-rigging-robot图片
9.13. 调用外部python编译器通过调用外部的编辑器来操作 isaac sim或者通过 WINDOW EXTENSIONS图片
· 打开一个新的 terminal,输入telnet localhost 8223· 输入代码,回车仅在空的 Stage运行以下脚本,并且只运行一次。Isaac Sim Core API原始 USD API功能多样且详细,但很复杂,尤其是对于初学者来说。Isaac Sim有一组核心API,可简化机器人模拟器的一些常用操作。这些API抽象了默认参数设置。以下API:设置舞台添加具有物理和碰撞预设的长方体设置物理和视觉材料属性Plain Textimport numpy as npfrom omni.isaac.core.objects import DynamicCuboidfrom omni.isaac.core.objects.ground_plane import GroundPlanefrom omni.isaac.core.physics_context import PhysicsContextPhysicsContext()GroundPlane(prim_path='/World/groundPlane', size=10, color=np.array([0.5, 0.5, 0.5]))DynamicCuboid(prim_path='/World/cube',position=np.array([-.5, -.2, 1.0]),scale=np.array([.5, .5, .5]),color=np.array([.2,.3,0.]))10. 编辑器使用10.1.调用vscode10.1.1. Isaac Sim VS Code Edition先要在 vscode中安装插件在 4.0.0中快速打开vscode的方法是在扩展管理中使能扩展插件,如下图片
在更早的版本,则打开 Isaac Sim App Selector图片
详情见链接https://docs.omniverse.nvidia.com/isaacsim/latest/reference_material/reference_user_interface.html#isaac-sim-app-selector点击图片
创建一个空的 python脚本,输入代码,点击左侧的运行按钮,得到一个球体图片
图片
更多细节可以参考https://marketplace.visualstudio.com/items?itemName=NVIDIA.isaacsim-vscode-edition10.2. 在vscode中debug用python文件· 打开 Isaac Sim App Selector详情见链接https://docs.omniverse.nvidia.com/isaacsim/latest/reference_material/reference_user_interface.html#isaac-sim-app-selector图片
· vscode中要先安装isaac插件Isaac Sim VS Code Editioncode .打开之后,我们测试一个demo,文件目录如下,加一个断点。图片
· 点击左侧的 run and debug按钮,点击debug即可。或者按F5也可以图片
· 传参数更改一下 launch.json和python文件Shell{// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387'version': '0.2.0','configurations': [{'name': 'Python: Current File','type': 'python','request': 'launch','program': '${file}','console': 'integratedTerminal','env': {'EXP_PATH': '${workspaceFolder}/apps','RESOURCE_NAME': 'IsaacSim'},'python': '${workspaceFolder}/kit/python/bin/python3','envFile': '${workspaceFolder}/.vscode/.standalone_examples.env','preLaunchTask': 'setup_python_env','args': ['--/persistent/isaac/asset_root/default=\'omniverse://my_server\'']},{'name': 'Python: Current File','type': 'python','request': 'launch','program': '${file}','console': 'integratedTerminal','env': {'RESOURCE_NAME': 'IsaacSim'},'python': '${workspaceFolder}/kit/python/bin/python3','envFile': '${workspaceFolder}/.vscode/.standalone_examples.env','preLaunchTask': 'setup_python_env'},{'name': 'Python: Attach (windows-x86_64/linux-x86_64)','type': 'python','request': 'attach','port': 3000,'host': 'localhost'},{'name': '(Linux) isaac-sim','type': 'cppdbg','request': 'launch','program': '${workspaceFolder}/kit/kit','args': ['${workspaceFolder}/apps/omni.isaac.sim.kit','--ext-folder', '${workspaceFolder}/exts','--ext-folder', '${workspaceFolder}/apps'],'stopAtEntry': false,'cwd': '${workspaceFolder}','environment': [],'externalConsole': false,'MIMode': 'gdb','setupCommands': [{'description': 'Enable pretty-printing for gdb','text': '-enable-pretty-printing','ignoreFailures': true}]}]}Copyright (c) 2020-2023, NVIDIA CORPORATION. All rights reserved.NVIDIA CORPORATION and its licensors retain all intellectual propertyand proprietary rights in and to this software, related documentationand any modifications thereto. Any use, reproduction, disclosure ordistribution of this software and related documentation without an expresslicense agreement from NVIDIA CORPORATION is strictly prohibited.import omnifrom omni.isaac.kit import SimulationApp# The most basic usage for creating a simulation appkit = SimulationApp()for i in range(100):kit.update()omni.kit.app.get_app().print_and_log('Hello World!')kit.close() # Cleanup applicationThe most basic usage for creating a simulation appkit = SimulationApp()import carbserver_check = carb.settings.get_settings().get_as_string('/persistent/isaac/asset_root/default')print(server_check)for i in range(100):kit.update()kit.close() # Cleanup application图片
10.3. debug在isaac sim中跑的应用和vscode交互· 运行 isaac sim· 在 isaac sim顶部工具栏的窗口,扩展中搜索omni.kit.debug.vscode,使能它,然后可以看到一行红字“VS Code Debugger Unattached”图片
· 运行你刚刚的 vscode,点击debug的按钮旁边的下拉菜单图片
这时候红色字变蓝色了·上一步能成功,原因在于 vscode和isaac sim之间配置了相同的ip和端口图片
想要更改参数,在 app selector中添加即可Shell--/exts/omni.kit.debug.python/host='127.0.0.1'--/exts/omni.kit.debug.python/port=3000Shell{'name': 'Python: Attach (windows-x86_64/linux-x86_64)','type': 'python','request': 'attach','port': 3000,'host': '127.0.0.1'},· 点击 isaac sim中的Break,那么断点就会在vscode中出现11.核心API11.1. hello world工具栏选择 hello world,点击containning folder,你就可以看到这个例子包含的代码文件图片
图片
· world是单例打开 hello_world.py重写代码Copyright (c) 2020-2023, NVIDIA CORPORATION. All rights reserved.NVIDIA CORPORATION and its licensors retain all intellectual propertyand proprietary rights in and to this software, related documentationand any modifications thereto. Any use, reproduction, disclosure ordistribution of this software and related documentation without an expresslicense agreement from NVIDIA CORPORATION is strictly prohibited.from omni.isaac.examples.base_sample import BaseSampleimport numpy as npCan be used to create a new cube or to point to an already existing cube in stage.from omni.isaac.core.objects import DynamicCuboidNote: checkout the required tutorials at https://docs.omniverse.nvidia.com/app_isaacsim/app_isaacsim/overview.htmlclass HelloWorld(BaseSample):def__init__(self) -> None:super().__init__()returndef setup_scene(self):world = self.get_world()world.scene.add_default_ground_plane()fancy_cube = world.scene.add(DynamicCuboid(prim_path='/World/random_cube', # The prim path of the cube in the USD stagename='fancy_cube', # The unique name used to retrieve the object from the scene later onposition=np.array([0, 0, 1.0]), # Using the current stage units which is in meters by default.scale=np.array([0.5015, 0.5015, 0.5015]), # most arguments accept mainly numpy arrays.color=np.array([0, 0, 1.0]), # RGB channels, going from 0-1))returnasync def setup_post_load(self):returnasync def setup_pre_reset(self):returnasync def setup_post_reset(self):returndef world_cleanup(self):return重新开一个 stage,点击load hello world添加打印信息,可以在 terminal中显示Shellfrom omni.isaac.examples.base_sample import BaseSampleimport numpy as npfrom omni.isaac.core.objects import DynamicCuboidclass HelloWorld(BaseSample):def__init__(self) -> None:super().__init__()returndef setup_scene(self):world = self.get_world()world.scene.add_default_ground_plane()fancy_cube = world.scene.add(DynamicCuboid(prim_path='/World/random_cube',name='fancy_cube',position=np.array([0, 0, 1.0]),scale=np.array([0.5015, 0.5015, 0.5015]),color=np.array([0, 0, 1.0]),))returnasync def setup_post_load(self):self._world = self.get_world()self._cube = self._world.scene.get_object('fancy_cube')self._world.add_physics_callback('sim_step', callback_fn=self.print_cube_info) #callback names have to be uniquereturn# here we define the physics callback to be called before each physics step, all physics callbacks must take# step_size as an argumentdef print_cube_info(self, step_size):position, orientation = self._cube.get_world_pose()linear_velocity = self._cube.get_linear_velocity()# will be shown on terminalprint('Cube position is : ' + str(position))print('Cube's orientation is : ' + str(orientation))print('Cube's linear velocity is : ' + str(linear_velocity))https://docs.omniverse.nvidia.com/isaacsim/latest/core_api_tutorials/tutorial_core_hello_world.html12. ROS和ROS212.1. ROS1参考文档:https://docs.omniverse.nvidia.com/isaacsim/latest/ros_tutorials/tutorial_ros_turtlebot.htmlturtlebot3链接:https://emanual.robotis.com/docs/en/platform/turtlebot3/overview/· 导入 turtlebot3_burger进入 isaac sim的工作空间Plain Textgit clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git turtlebot3Plain Textrosrun xacro xacro -o turtlebot3_burger.urdf turtlebot3_burger.urdf.xacro图片
图片
图片
12.1.1. 发送速度指令Plain Textrostopic pub /cmd_vel geometry_msgs/Twist '{linear: {x: 0.2, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: 0.0}}'Plain Textrostopic pub /cmd_vel geometry_msgs/Twist '{linear: {x: 0.0, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: 0.0}}'Plain Textrosrun teleop_twist_keyboard teleop_twist_keyboard.py12.1.2. 添加单线激光12.1.3. 发布odom先运行 roscore,再启动isaac模拟仿真。roscore只要启动一次就可以了。不需要关掉。图片
图片
12.1.4. 发布odom->base_link12.1.5. 发布其他传感器的link图片
图片
· 如果只写 targetPrims,那么生成的tf是world->base_scan。· 本案例中,两者都要填写。base_footprint不填写,它会报错图片
12.1.6. 导航--以carter_warehouse为例https://github.com/isaac-sim/IsaacSim-ros_workspaces12.1.6.1. 单线激光雷达图片
图片
图片
0.1-0.62占据栅格的高度范围Plain Textroslaunch carter_2dnav carter_navigation.launch12.1.6.2. 多线激光雷达图片
Isaac/Samples/ROS/Scenario/rtx_lidar_carter_warehouse_navigation.usdPlain Textroslaunch carter_2dnav carter_navigation_rtx.launch12.2. ROS2https://docs.omniverse.nvidia.com/isaacsim/latest/ros_ros2_tutorials.html12.2.1. 官方demohttps://docs.omniverse.nvidia.com/isaacsim/latest/ros2_tutorials/tutorial_ros2_navigation.html1.加载模型Isaac Examples -> ROS2 -> Navigation2.点击 PLAY开始仿真3.运行 launch文件Shellros2 launch carter_navigation carter_navigation.launch.py机器人初始位置配置在文件carter_navigation_params.yaml中,如果机器人位置不正确,点击 rviz中 的2D Pose Estimate按钮给一个方向。4.导航点击 rviz中的Navigation2 Goal 按钮,可以导航。5.自动导航Shellros2 launch isaac_ros_navigation_goal isaac_ros_navigation_goal.launch.py其中 launch的参数如下:· goal_generator_type:生成目标点的类型RandomGoalGenerator 是随机生成;GoalReader 是用户自定义。· map_yaml_path:地图路径。默认isaac_ros_navigation_goal/assets/carter_warehouse_navigation.yaml.此时的目标点类型是RandomGoalGenerator.· iteration_count:目标点被设置多少次.· action_server_name:执行服务器的名字.· obstacle_search_distance_in_meters:障碍物搜索距离.· goal_text_file_path:用户自定义的静态目标点。每一行都必须有一个单独的目标位姿,格式是pose.x pose.y orientation.x orientation.y orientation.z orientation.w.参考文档在isaac_ros_navigation_goal/assets/goals.txt.此时的目标点类型也必须是GoalReader.· initial_pose:初始位姿[pose.x, pose.y, pose.z, orientation.x, orientation.y, orientation.z, orientation.w].6.注意的地方小车默认使用 RTX雷达。小车上大部分相机都屏蔽 publish图片,可以去_camera_render_product节点使能对应相机。12.2.2. 自制图片
图片
· 设置 ROS_DOMAIN_ID为0,因为isaac sim默认是012.2.3. 模型导入、栅格地图生成图片
图片
图片
模型导入之后,用 ariculation inspector来观察是否导入正确。检查机器人行为是否符合预期。如果发送速度控制,机器人会震荡,那么需要用 Gain tuner来调整。首先要把重力去掉来调试。kp和kd设置为100来试试等。具体参考视频教程的b站内容。第一讲。图片
· 加载一个环境图片
这需要网络下载,等待一下,选择最简单的 simple_warehouse和ware_extras图片
图片
图片
调整完,计算之后,点击可视化,保存 jpg和yaml。 保存的路径在13.1.5节中,这里先放在桌面。12.2.4. 激光雷达导入图片
图片
雷达是 PhysX Lidar图片
图片
把它拖上来图片
图片
图片
这个 domian id是跟你自己电脑设置的bashrc相关。如果没设置,就不用管它12.2.5.轮速订阅图片
图片
订阅节点输出的角速度和线速度都是 3维向量,需要一个中间转化模块,输出一维值。角速度输出的是 z分量,线速度输出的是x分量。图片
把差速控制器连接给本体上的左右关节电机图片
constant token组合两个关节名字,成为array,发给ariculation controller中的jointNames。array是可以增加input的。另外 twist的输出要连接controller的输入。图片
每个 constant token赋值两个joint名字ros2 run rqt_robot_steering rqt_robot_steering测试一下小车能不能跑12.2.6.添加odom图片
图片
记得把 timestamp和context也连接上,图片中忘记加了· 添加 raw transform tree 它表示的是odom到base link· transform tree表示的是base link到lidar camera imu的图片
图片
运行后就会发布 odom到base link的tf· 添加 base link本体的tf图片
ros2 run tf2_tools view_frames.py图片
Shellsudo apt install python3-rosinstall-generator python3-wstool build-essential python3-rosinstall python3-rosdep12.2.7.创建工作空间Shellcd /home/yab/.local/share/ov/pkg/isaac-sim-4.0.0mkdir -p ros2_workspace/srccolcon buildsource install/setup.bashsudo apt install ros-foxy-pointcloud-to-laserscanShellrosdep install -i --from-path src --rosdistro foxy -y代码在第 3节的链接中图片
Shellros2 launch carter_navigation carter_navigation.launch.py· 有个报错图片
先启动 isaac sim,再启动launch文件一般重定位是没有的,所以需要自己手动发一个 2d pose13.四足14.人形【原文】:https://www.yuque.com/g/ryanji-wtpey/aumvf4/yyhruy8kts47s34v/collaborator/join?token=szoLcoWDy2LLWj5t&source=doc_collaborator#《【仿真】isaac sim》图片
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。线上股票配资开户提示:文章来自网络,不代表本站观点。