模型制作
ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html
该软件包演示了具有软件定义装配工作流程的工厂场景。 在模拟工厂环境中,多个 AMR 在装配站之间运输材料,而每个装配站的机械臂拾取所需材料并将其放置在对接的 AMR 上。 多个机器人分别由一个 Isaac SDK 应用程序控制,每个应用程序的任务由一个集中的任务协调器分配。
文章目录
- 模型制作
- 运行模拟
- 运行工厂任务
- 它是如何工作的?
运行模拟
此示例使用 NVIDIA Omniverse Isaac Sim。 要设置和启动 Omniverse,请参阅相应的文档:
-
https://docs.omniverse.nvidia.com/app_isaacsim/app_isaacsim/overview.html
-
https://docs.omniverse.nvidia.com/app_isaacsim/app_isaacsim/ext_omni_isaac_robot_engine_bridge.html
Omniverse 运行后,从内容面板加载舞台:
omni:/Isaac/Samples/Isaac_SDK/Scenario/multi_robot_fof.usd
在 Robot Engine Bridge 面板上,将 Application Json Path 更改为:
<your isaac folder>/sdk/packages/multi_robot_fof/isaacsim.app.json
单击 Isaac SDK 后端的 Create Application,然后单击 Play 开始模拟。
注意
请确保在单击创建应用程序之前更新应用程序 JSON 路径。 如果您在 Omniverse 窗口底部看到错误消息“应用程序未成功启动”,请检查应用程序 JSON 路径是否为有效文件。
运行工厂任务
模拟开始后,打开一个新终端,导航到 Isaac SDK 文件夹,然后运行:
bob@desktop:~/isaac/sdk$ bazel run packages/multi_robot_fof:factory_mission
这将启动任务协调器。
打开第二个新终端,导航到 Isaac SDK 文件夹,然后运行:
bob@desktop:~/isaac/sdk$ ./packages/multi_robot_fof/launch_robots.sh
这会启动七个 Isaac SDK 应用程序:三个运输应用程序 (//packages/multi_robot_fof:transporter) 用于控制三个 AMR,四个站应用程序 (//packages/multi_robot_fof:station) 用于控制装配站的 UR10 臂。
注意
该脚本首先运行 packages/multi_robot_fof:build_graph 以生成 pose2 规划图,这可能需要几秒钟。 在此之后,它会继续启动传输器和站点应用程序,这在第一次运行时可能需要一段时间才能构建。
所有应用程序启动后,在 localhost:2999 打开任务坐标的 Sight。 “地图查看器”窗口显示所有 AMR 的当前姿态、目标和计划的全局路径。 您还可以在 localhost:4000-4006 查看单个机器人应用程序的 Sight。 下面的屏幕截图显示了任务坐标和运输机器人 1 的视线。
它是如何工作的?
下图显示了多个 Isaac SDK 应用程序和模拟器是如何连接的。 带箭头的实线表示数据流通过 TCP 上的 Isaac Capnp Proto 消息。
在 Omniverse 模拟器中,每个 AMR 和机械臂都会在不同的 TCP 端口对上发布传感器数据并从相应的 Isaac SDK 应用程序(transporter/station)接收驱动命令,如图所示。 packages/multi_robot_fof/isaacsim.app.json
中的节点名称与 Omniverse 模拟器中 RobotEngine 组件的节点名称匹配。
工厂任务应用程序使用 MissionServer MissionServer
向各个运输车或站点应用程序发布任务并从中接收任务状态。 对于运输应用程序,任务行为控制 navigation.go_to.go_to_behavior
节点并指定目标航路点和到达容差。 对于站应用程序,任务行为指定姿势树上拾取对象的名称和下降姿势。 下图是小站app的行为树。
注意
当站点应用程序完成任务时,您会看到错误消息 Component ‘task_remain_checker/PyCodelet’ of type ‘isaac::alice::PyCodelet’ reported FAILURE: All tasks are done.’
,以及来自其他行为树组件的后续错误消息。 这是给定上面所示的行为树构造的预期行为。