12.Isaac教程--未来工厂中的搬运车

news2024/11/23 10:59:47

未来工厂中的搬运车

ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html

文章目录

    • 未来工厂中的搬运车
    • 运行模拟器
    • 搬运车送货申请
    • 自动小车运输的行为树
    • 导航与感知互通
    • 仅限自主导航申请
    • 仅适用于感知
    • 训练模型
      • 物体检测模型(DetectNetv2)
      • 姿态估计模型(姿态CNN解码器)
    • 运行推理流程
      • 用真值边界框进行仿真推理
      • 检测+姿态估计模拟推理
    • 检测推理参数
    • 测绘申请

未来工厂 (FoF: Factory of the Future) 场景中的搬运车交付应用程序由 Isaac 的各种功能和特性提供支持:

  • 具有逼真的物理特性的高质量、逼真的模拟环境

  • 定义复杂应用程序流程的行为树

  • 目标检测和 3D 姿态估计,经过全面模拟训练

  • 在车道右侧行驶或走最短路径之间的选择

  • 多激光雷达定位和避障

运行模拟器

打开一个终端窗口,导航到包含提取的 Isaac Sim 发布存档的文件夹并执行以下命令:

./builds/factory_of_the_future.x86_64 --scene Factory01

这将打开一个 Unity3D 窗口并加载未来工厂环境,以及机器人和一组手推车。

注意

此场景需要 RTX 2080 或更好的 GPU 才能以可接受的 (~30Hz) 帧速率运行。

该场景具有四种不同的相机选项,用户可以使用左右箭头键在这些选项之间切换:

  • MainCamera:相机姿态在场景中是固定的,除非手动改变:

    1. 滚动缩放。

    2. 按住鼠标右键并移动鼠标以旋转视图。

    3. 按住鼠标中键并移动鼠标以平移视图。

  • GUICamera:禁用外部摄像头以获得更高的 FPS。

  • FollowRobotCamera:改变位置以跟随机器人。 不同于 ChaseRobotCamera 相机,
    该相机不随机器人旋转。

  • ChaseRobotCamera:改变位置和旋转以追逐机器人。

搬运车送货申请

打开一个新的终端窗口并从 Isaac SDK 文件夹中运行以下命令:

bazel run packages/cart_delivery/apps:cart_delivery

要检查所有正在运行的 Isaac 节点的状态,请在 Web 浏览器中打开 Isaac Sight (http://localhost:3000)。 为获得最佳 Sight 体验,您可以禁用不需要可视化的频道。

机器人现在将自动接近并拿起手推车。 它将以预定义的姿势放下手推车,该姿势可以通过配置进行更改。

自动小车运输的行为树

自主小车运输的应用基于定义感知和导航任务的行为树。 此应用程序说明了通常可以部署在仓库或工厂环境中的交付场景。

应用程序定义的高级任务序列如下:

  1. 机器人从它的起始位置开始。

  2. 机器人移动到购物车拾取点,这是一个预定义的路点。

  3. 机器人在推车下方行驶并将其抬起。

  4. 机器人驾驶小车到达下车点,这是另一个预定义的路点。

  5. 机器人降低推车并将其放下。 它从推车下面驶出。

  6. 机器人返回其原位/空闲位置。

可以在以下路径的 Isaac SDK 中找到控制上述示例应用程序的行为树子图文件:

packages/cart_delivery/apps/cart_delivery.subgraph.json

行为树目前承载着单一的投递任务。 但是,可以针对多次交付修改行为树。

导航与感知互通

感知管道的输出表示推车的估计 3D 姿态。 这个估计的姿势被写入姿势树作为目标姿势,它又被导航堆栈中的 LQR 规划器用来在购物车下行驶。 LQR Planner 也可以切换出来使用强化学习模型在车下行驶。

仅限自主导航申请

在没有行为树的情况下运行自主导航对于测试导航堆栈很有用。 首先,从 Isaac Sim 发布文件夹中加载未来工厂场景:

./builds/factory_of_the_future.x86_64 --scene Factory01

然后在 Isaac SDK 根文件夹中运行以下命令:

bazel run packages/cart_delivery/apps:navigate -- --more apps/assets/maps/virtual_factory_1.json,packages/cart_delivery/apps/navigation.config.json,packages/navsim/robots/str4.json,packages/cart_delivery/apps/pose2_planner.config.json

要导航到所需位置,请执行以下步骤:

  1. 右键单击地图视图窗口并选择设置。

  2. 在设置中,单击选择标记下拉菜单并选择“pose_as_goal”。

  3. 单击添加标记。

  4. 单击更新。 标记将添加到地图中。 您可能需要放大地图才能看到新标记。 机器人不会立即开始导航到标记。

  5. 单击标记并将其拖动到地图上的新位置。 有关详细信息,请参阅交互式标记。

机器人将开始导航到标记位置。

注意:此应用程序还具有一个 DifferentialBaseSpeedCheck 组件,该组件复制由可编程逻辑控制器 (PLC) 进行的速度检查,以确保机器人硬件的安全。 目前,DifferentialBaseSpeedCheck 仅在状态无效时停止机器人并打印到控制台,例如,由于高角速度和线速度的组合。

仅适用于感知

要手动控制机器人并测试感知算法,请按照以下步骤操作:

  1. 从 Isaac SDK 根文件夹中运行以下命令:
bazel run packages/cart_delivery/apps:perception -- --more packages/cart_delivery/apps/detection_pose_estimation.config.json,packages/navsim/robots/str4.json

  1. 如果可用,请使用操纵杆。 否则,请单击左侧的虚拟游戏手柄。 单击小部件上的连接到后端。 选择键盘并使用“wasd”键导航机器人。 有关详细信息,请参阅使用 Sight 的远程操纵杆。

  2. 启用通道并观察 Sight 上的感知输出。

经过训练的物体检测和姿态估计模型允许机器人在仅给定 RGB 相机图像作为输入的情况下推断小车的 3D 姿态(3 DoF 平移 + 3 DoF 旋转)。 当相机距离小车 3-7 米时,检测和姿态估计模型效果最佳。

对象检测模型为检测到的小车输出一个二维轴对齐的边界框。 每次检测的感兴趣区域被裁剪并作为姿势估计模型的输入,该模型输出每个对象实例的估计旋转和平移。

注意

此训练步骤是可选的。 如果跳过此步骤,将使用预训练模型。

训练模型

物体检测模型(DetectNetv2)

对象检测模型是基于 ResNet-18 特征提取器的 DetectNetv2 模型。 基于真实图像的预训练模型在 Isaac Sim Unity3D 中的各种场景设置生成的模拟图像上进行了微调。 该模型将作为训练应用程序的一部分自动下载。

示例场景以 Unity3D 二进制文件的形式提供,以生成小车的随机图像以用于模型训练。 场景 7、13、14 和 15 提供了小车检测的训练数据。 例如,要启动场景 7 的场景,请从 Isaac Sim 发布文件夹运行以下命令:

./builds/factory_of_the_future.x86_64 --scene Factory01 --scenario 7

该模拟必须与 generate_kitti_dataset Isaac 应用程序一起运行,该应用程序生成一个真实数据集并以 KITTI 格式离线保存。 要收集数据集,请从 Isaac SDK 根文件夹中运行以下命令:

bazel run packages/ml/apps/generate_kitti_dataset

默认情况下,录制的场景存储在 /tmp/unity3d_kitti_dataset/ 中,分别分为训练(10000 个样本)和测试(100 个样本)。 生成所有样本后,Isaac 应用程序终止。

生成数据集后,使用 NVIDIA Transfer Learning Toolkit 来训练模型。 有关 GenerateKittiDataset 应用程序和使用迁移学习工具包进行培训的更多详细信息,请参阅 Isaac SDK 文档中的“使用 DetectNetv2 进行对象检测”一章。

姿态估计模型(姿态CNN解码器)

姿态估计模型架构编码如下:

  • 从彩色图像中裁剪出的感兴趣区域

  • 边界框参数

基于这些编码,它然后将姿势估计为从连接的特征空间的回归。

所提供的姿势估计模型仅使用在 Isaac Sim Unity3D 中模拟的图像从头开始训练。 生成姿势估计训练数据的示例场景以 Unity3D 二进制文件的形式提供。 此示例需要大量 CUDA 内存,并且在同一 GPU 上运行模拟和 Isaac 应用程序可能会导致某些平台出现内存不足错误。 从 EA 发布文件夹运行以下命令:

./builds/factory_of_the_future.x86_64 --scene Factory01 --scenario 8

要训练模型,请从 Isaac SDK 根文件夹中运行此二进制文件以及以下 Isaac 应用程序:

bazel run packages/object_pose_estimation/apps/pose_cnn_decoder/training:pose_estimation_cnn_training

有关训练姿势估计模型的更多详细信息,请参阅 Isaac SDK 文档中的使用姿势 CNN 解码器进行 3D 对象姿势估计一章。

运行推理流程

使用经过训练的姿势估计模型,可以针对不同的目的从不同的来源进行推断。 可以在 Isaac Sight 中观察到相应的结果。

用真值边界框进行仿真推理

此示例从模拟中接收图像并在该图像流上运行推理流程。 结果可以在 Isaac Sight 中观察到。

  1. 从 EA 发布文件夹中启动未来工厂模拟:
./builds/factory_of_the_future.x86_64 --scene Factory01 --scenario 8

  1. 从 Isaac SDK 根文件夹中运行以下命令:
bazel run packages/object_pose_estimation/apps/pose_cnn_decoder:pose_estimation_inference_sim_groundtruth_detection

检测+姿态估计模拟推理

此示例对来自模拟的实时摄像机图像运行推车检测和姿态估计。

  1. 从 EA 发布文件夹中启动未来工厂模拟:
./builds/factory_of_the_future.x86_64 --scene Factory01 --scenario 8

  1. 从 Isaac SDK 根文件夹中运行以下命令:
bazel run packages/object_pose_estimation/apps/pose_cnn_decoder:detection_pose_estimation_cnn_inference_app -- --mode sim --image_channel color --intrinsics_channel color_intrinsics --config packages/object_pose_estimation/apps/pose_cnn_decoder/detection_pose_estimation_cnn_inference_dolly.config.json
  1. 在 Web 浏览器 (http://localhost:3000) 中打开 Isaac Sight,然后在左上角的 Windows 选项卡中激活 Replay Control Panel。 在现在可见的 Replay Control Panel 中,将时间滑块移到最左侧,然后单击 START REPLAY。 推理结果将显示在预先录制的摄像机画面中。

有关姿势估计可用推理模式(如图像、日志回放和相机输入)的更多详细信息,请参阅 Isaac SDK 文档中的“使用姿势 CNN 解码器进行 3D 对象姿势估计”一章。

检测推理参数

您可以通过 Isaac Sight 修改某些参数以在运行时调整模型的输出:每个检测都有一个关联的置信度值,置信度阈值将过滤掉所有置信度低于阈值的检测。

为了对用于对象检测的 DetectNetv2 模型的原始检测输出进行后处理,使用非最大抑制来消除单个对象实例的多次检测。 降低非最大抑制阈值以过滤掉与其他检测具有高交叉联合重叠的检测。

这些参数可以在 Isaac SDK 文件夹中的 detection_pose_estimation.config.json 文件中永久修改:

packages/cart_delivery/apps/detection_pose_estimation.config.json

它们也可以在运行时在 Isaac Sight 应用程序配置选项卡中更改。 它们可以在以下路径中找到:

detection_pose_estimation.object_detection.detection_decoder ->
isaac.detect_net.DetectNetDecoder -> confidence_threshold
                                     non_maximum_suppression_threshold

进行更改后,通过提交确认。

测绘申请

要映射环境,请执行以下步骤:

  1. 打开一个新的终端窗口并从 Isaac SDK 文件夹中运行以下命令:
bazel run packages/cart_delivery/apps:gmapping -- --more packages/navsim/robots/str4.json

  1. 在 Web 浏览器中打开 Isaac Sight (http://localhost:3000)。 为获得最佳 Sight 体验,您可以禁用不需要可视化的频道。

  2. 如果可用,请使用操纵杆。 否则,请单击左侧的虚拟游戏手柄。 单击小部件上的连接到后端。 选择键盘并使用“wasd”键导航机器人。 有关详细信息,请参阅使用 Sight 的远程操纵杆。

  3. 启用通道并观察在 Sight 中生成的地图。

  4. 有关详细信息,请参阅 GMapping 应用程序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/154898.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JSP SSM家教管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 JSPSSM家教管理系统 是一套完善的系统源码,对理解JSP java SrpingMVC mybiats 框架 MVC编程开发语言有帮助,系统具有完整的源代码和数据库,以及相应配套的设计文档,系 统主要采用B/S模式开发。 研究的基本内容…

5.5、TCP 的拥塞控制

在某段时间若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏\color{red}对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就…

CSDN第22场周赛

1.写在前面的话22场周赛的详情总比赛第7名了,hhhCSDN周赛非常能够锻炼码代码的能力,无论是在平常的练习题目当中,还是每次的周赛中,题目有难有易,每次周赛的题目出的十分具有代表性,参加了将近20场的周赛&a…

批量PDF文件合并用什么软件?这两个宝藏软件赶快收藏起来

我们在工作中经常有很多处理过的PDF文件,我们经常会将这些文件进行保存,以防日后需要使用,但是太多的PDF文件真的会占用很多存储空间,所以我们可以将各类PDF文件合并在一起,这样也方便以后观看,但是逐个合并…

Docker容器实时日志查看器Dozzle

什么是 Dozzle? Dozzle 是一个小型轻量级应用程序,具有基于 Web 的界面来监控 Docker 日志。Dozzle不存储任何日志文件,仅用于实时监控您的容器日志。 先看个官方的动图 老苏已转成了视频,源文件地址:https://github.c…

制造型企业离不开MES?MES系统有什么应用场景

随着工业物联网的迅速发展,设备监测也成为MES系统中的一个关键环节。过去我们所收集到的资料,也许只是一种记录的作用,随着联网的设备越来越多以及大数据、云计算等技术的发展,数据的价值越来越高。数据收集不再仅仅是一种简单的记…

Codeforces Round #841 (Div. 2) (A--D)

[TOC](Codeforces Round #841 (Div. 2)(A–D)) A、 Joey Takes Money 1、题目 2、思路 3、代码 #include<iostream>#include<algorithm>#include<cstring>using namespace std;typedef unsigned long long ll;int main(){ll t;cin>>t;while(t--){int…

新书赠送丨《中国金融科技发展概览:创新与应用前沿》

我国金融科技发展日新月异&#xff0c;人工智能、云计算、大数据等新兴数字技术与实体经济及金融业的深度融合&#xff0c;推动我国数字经济快速发展&#xff0c;也深刻改变着我国金融业的服务业态和经营模式。过去的一年&#xff0c;金融机构实现核心技术自主可控成为热点&…

影响因子14.65:16S全长测序+低丰度简化菌群,提供根腐病防控新视角

背景介绍当土壤中病原体入侵时&#xff0c;植物可以动态调节其根际微生物并适应这种生物胁迫。植物招募的保护性微生物群落中通常包含一些低丰度的类群&#xff0c;其作用尚不清楚。本研究首先分析了健康和患病黄芪之间根系微生物群落结构的差异&#xff0c;依据患病黄芪根部的…

增加模拟前端的动态范围

1、光电接收电路 下面两张图分别在sensor正偏置和负偏置时的接收电路&#xff0c;这里我们关注一下输出的波形特征为一个脉冲信号&#xff0c;脉冲信号的共模电压为5V分压得到&#xff0c;信号的摆幅为Iout*RT&#xff0c;Iout为光电流&#xff0c;在应用在雷达接收的中时&…

JVM调试命令与调试工具

一、JDK自带命令Sun JDK监控和故障处理命令如&#xff1a;1、jpsJVM Process Status Tool&#xff0c;显示指定系统内所有的HotSpot虚拟机进程。jsp命令格式&#xff1a;jps [ options ] [ hostid ] 扩展参数&#xff1a;jps -l&#xff1b;jps -mlv&#xff1b;各参数说明如下…

tkinter 实现倒计时(1小时)

使用python标准GUI库tkinter实现倒计一小时效果。 废话少说。 效果图&#xff1a; 要不然看个 动态效果 图&#xff1a; 代码&#xff1a; from tkinter import * from tkinter.messagebox import showerrorroot Tk() root.title("倒计时") root.geometry("3…

解析|当前企业OA系统面对的困难与解决方案

近年来&#xff0c;由于疫情爆发&#xff0c;线下的企业办公效率难以保证&#xff0c;不少企业逐渐转向远程办公。尝试过后&#xff0c;远程办公的优势凸显&#xff0c;使得有越来越多的企业开始逐渐深入了解在线办公软件、协同办公OA系统。据统计&#xff0c;2021年数字化办公…

监控docker

当前&#xff0c;容器的使用已经非常普及&#xff0c;将服务迁移到容器上正成为了越来越多公司的选择。而对于运维人员而言&#xff0c;熟悉容器的使用与监控&#xff0c;也已成为一项必不可少的专业技能。关于容器的开源产品&#xff0c;目前知名的有Docker、Containerd、Core…

P2580 于是他错误的点名开始了

题目背景 XS中学化学竞赛组教练是一个酷爱炉石的人。 他会一边搓炉石一边点名以至于有一天他连续点到了某个同学两次&#xff0c;然后正好被路过的校长发现了然后就是一顿欧拉欧拉欧拉&#xff08;详情请见已结束比赛 CON900&#xff09;。 题目描述 这之后校长任命你为特派探员…

范数的意义与计算方法(使用NumPy)

1. 范数的意义 范数可以简单的理解为“距离”。由于向量是既有大小又有方向的量&#xff0c;所以向量是不能直接比较大小的&#xff0c;但是范数提供了一种方法&#xff0c;可以将所有的向量转化为一个实数&#xff0c;然后就可以比较向量的大小了。&#xff08;注&#xff1a…

前端Vue和Element-UI配合后端接口进行数据交互

前言 本次用element-ui的table组件&#xff0c;简单案例演示下前后端数据交互。 前提声明&#xff1a;如果不知道如何在vue中引入element-ui&#xff0c;可以先看下这篇文章:Vue引入并使用Element-UI组件库的两种方式 静态页面 首先先写一个静态页面吧&#xff0c;数据都是…

《Linux运维实战:Centos7.6基于ansible一键离线部署redis6.2.8容器版之cluster集群》

一、部署背景 由于业务系统的特殊性&#xff0c;我们需要针对不同的客户环境部署redis cluster集群&#xff0c;由于大都数用户都是专网环境&#xff0c;无法使用外网&#xff0c;为了更便捷&#xff0c;高效的部署&#xff0c;针对业务系统的特性&#xff0c;我这边编写了基于…

采用模块化设计的轮腿式六足机器人

原创作者&#xff1a;王菡琪1、前言 1.1 背景及意义 近两个世纪以来&#xff0c;人类生产技术水平不断飞跃&#xff0c;人口数量也大幅增长&#xff0c;这是人类史上不曾有的盛景&#xff0c;但是这也同时对我们提出了全新的挑战&#xff0c;于是我们研发了各类机器&#xff…

ECS简单介绍

ECS 云服务器ECS (Elastic Compute Service)是一种可弹性伸缩的计算服务&#xff0c;降低IT成本&#xff0c;提升运维效率&#xff0c;更专注于核心业务创新。 定位&#xff1a;最基础的计算服务&#xff0c;ECS及其上装载的操作系统&#xff0c;通常用作应用程序的运行环境。…