手持激光焊接机

当前位置:前位置:首页 > 手持激光焊接机
全部 408

分拣机器人功能,使用NVIDIA ISAAC和TAO开发AI驱动的机器人

时间:2022-05-25   访问量:0
泉州五轴分拣机器人

从制造汽车到帮助外科医生和送披萨,机器人不仅自动化,而且将人类任务的速度提高了许多倍。随着人工智能的出现,你可以建造更智能的机器人,它们可以更好地感知周围环境,并在最少的人工干预下做出决策。

例如,一个用于仓库的自动机器人将有效载荷从一个地方移动到另一个地方。它必须感知周围的自由空间,检测并避免路径中的任何障碍,并做出“即时”决定,毫不拖延地选择新路径。

这就是挑战所在。这意味着构建一个由人工智能模型支持的应用程序,该模型经过训练和优化,可以在这种环境下工作。它需要收集大量高质量的数据,并开发一个高度精确的人工智能模型来驱动应用程序。这些是将应用程序从实验室转移到生产环境的关键障碍。

在这篇文章中,我们将展示如何使用NVIDIAISAAC平台和TAO框架解决数据挑战和模型创建挑战。你使用NVIDIAISAACSim,一个机器人模拟应用程序,用于创建虚拟环境和生成合成数据。这个NVIDIATAO工具包是一种低代码人工智能模型开发解决方案,与从头开始的训练相比,它具有内置的转移学习功能,可以用一小部分数据微调预训练模型。最后,使用NVIDIAISAACROS将优化模型部署到机器人上,并将其应用于现实世界。

图1。概述使用NVIDIAISAACSim对TAO工具包模型进行合成数据培训的工作流程,以适应现实世界的用例。

先决条件

开始之前,您必须拥有以下用于培训和部署的资源:

北京垃圾分拣机器人

NVIDIAGPU驱动程序版本:》470

快递分拣机器人视频

NVIDIADocker:2.5.0-1

NVIDIAGPU云端或内部:

NVIDIAA100

NVIDIAV100

NVIDIAT4

NVIDIARTX30×0(NVIDIAISAAC是也支持NVIDIARTX20系列)

NVIDIAJetsonXavier或JetsonXavierNX

NVIDIATAO工具包:4.22。有关更多信息,请参阅TAO工具包快速入门指南

NVIDIAISAACSim和ISAACROS

小黄人分拣机器人是什么

使用NVIDIAISAACSim生成合成数据

分拣机器人厂家排名

在本节中,我们将概述在NVIDIAISAACSim中生成合成数据的步骤。Syntheticdata是计算机模拟或算法生成的注释信息。当真实数据难以获取或成本高昂时,合成数据可以帮助解决数据难题。

NVIDIAISAACSim提供三种生成合成数据的方法:

复制器作曲家

Python脚本

GUI

在这个实验中,我们选择使用Python脚本生成具有领域随机化的数据。Domainrandomization改变在模拟环境中定义场景的参数,包括场景中各种对象的位置、比例、模拟环境的照明、对象的颜色和纹理等。

添加域随机化以同时改变场景的多个参数,通过将其暴露于现实世界中看到的各种域参数,提高了数据集质量并增强了模型的性能。

在本例中,您使用两个环境来培训数据:一个仓库和一个小房间。接下来的步骤包括向场景中添加符合物理定律的对象。我们使用了NVIDIAISAACSim卡中的示例对象,其中还包括YCBdataset中的日常对象。

安装NVIDIAISAACSim卡后ISAACSim卡应用程序选择器为包含脚本的在文件夹中打开提供一个选项。这用于运行用于生成数据的脚本。

按照列出的步骤生成数据。

defadd_camera_to_viewport(self):#Addacameratothesceneandattachittotheviewport_rig=(create_prim("/Root/CameraRig","Xform"))=create_prim("/Root/CameraRig/Camera","Camera")

将语义ID添加到楼层:

defadd_floor_semantics(self):#Getthefloorfromthestageandupdateitssemanticsstage=_stage()floor_prim=("/Root/Towel_Room01_floor_bottom_218")add_update_semantics(floor_prim,"floor")

在具有物理特性的场景中添加对象:

defload_single_asset(self,object_transform_path,object_path,usd_object):#Randomx,ypointsforthepositionoftheUSDobjecttranslate_x,translate_y=150*(),150*()#LoadtheUSDObjecttry:asset=create_prim(object_transform_path,"Xform",position=([150+translate_x,175+translate_y,-55]),orientation=euler_angles_to_quat(([0,0.0,0]),usd_path=object_path)#Settheobjectwithcorrectphysics(asset,"convexHull",False)

初始化域随机化组件:

defcreate_camera_randomization(self):#Arangeofvaluestomoveandrotatethecameracamera_tranlsate_min_range,camera_translate_max_range=(100,100,-58),(220,220,-52)camera_rotate_min_range,camera_rotate_max_range=(80,0,0),(85,0,360)#CreateaTransformationDRComponentfortheCamera_transform=(prim_paths=[()],translate_min_range=camera_tranlsate_min_range,translate_max_range=camera_translate_max_range,rotate_min_range=camera_rotate_min_range,rotate_max_range=camera_rotate_max_range,duration=0,5).do()

确保模拟中的摄影机位置和属性与真实世界的属性相似。为生成正确的自由空间分段掩码,需要向地板添加语义ID。如前所述,应用领域随机化来帮助提高模型的sim2real性能。

NVIDIAISAACSim文档中提供的离线数据生成示例是我们脚本的起点。对这个用例进行了更改,包括使用物理向场景添加对象、更新域随机化,以及向地板添加语义。我们已经为数据集生成了近30000张带有相应分割模板的图像。

使用TAO工具包进行培训、调整和优化

在本节中,您将使用TAO工具包使用生成的合成数据对模型进行微调。为了完成这项任务,我们选择了NGC提供的UNET模型进行实验。

!ngcregistrymodellistnvidia/tao/pretrained_semantic_segmentation:*

设置数据、规格文件和实验目录:

%set_envKEY=tlt_encode%set_envGPU_INDEX=0%set_envUSER_EXPERIMENT_DIR=/workspace/experiments%set_envDATA_DOWNLOAD_DIR=/workspace/freespace_data%set_envSPECS_DIR=/workspace/specs

下一步是选择模型。

选择正确的预训练模型

预训练人工智能和深度学习模型是在代表性数据集上进行训练并使用权重和偏差进行微调的模型。与从头开始的训练相比,只需使用一小部分数据就可以应用迁移学习,您可以快速轻松地微调预训练模型。

在预训练模型领域中,有一些模型执行特定任务,比如检测人、汽车、车牌等。

我们首先选择了一个带有ResNet10和ResNet18主干的U-Net型号。从模型中获得的结果显示,在真实数据中,墙和地板合并为一个实体,而不是两个单独的实体。即使模型在模拟图像上的性能显示出较高的精度,这也是事实。

并联分拣机器人关键技术

我们用不同的主干和图像大小进行实验,观察延迟与准确性之间的权衡。表中所有型号均相同;只有脊柱不同。

根据结果,我们显然需要一个更适合用例的不同模型。我们选择了NGC目录中提供的PeopleSemSeg型号。该模型在“person”类的500万个对象上进行了预训练,数据集由相机高度、人群密度和视野组成。该模型还可以将背景和自由空间分割为两个独立的实体。

在使用相同的数据集对该模型进行训练后,平均IOU增加了10%以上,得到的图像清楚地显示了地板和墙壁之间更好的分割。

显示了在使用真实数据对PeopleSeg模型进行微调之前,从机器人的角度在模拟图像和真实图像上识别自由空间。也就是说,使用纯NVIDIAISAACSim卡数据训练的模型。

关键的一点是,虽然可能有许多经过预训练的模型可以完成这项任务,但选择一个最接近当前应用程序的模型是很重要的。这就是陶的特制模型有用的地方。

!taounettrain--gpus=1--gpu_index=$GPU_INDEX\-e$SPECS_DIR/spec_vanilla_\-r$USER_EXPERIMENT_DIR/semseg_experiment_unpruned\-m$USER_EXPERIMENT_DIR/\-nmodel_freespace\-k$KEY

培训模型后,根据验证数据评估模型性能:

!taounetevaluate--gpu_index=$GPU_INDEX-e$SPECS_DIR/spec_vanilla_\-m$USER_EXPERIMENT_DIR/semseg_experiment_unpruned/weights/model_\-o$USER_EXPERIMENT_DIR/semseg_experiment_unpruned/\-k$KEY

当您对NVIDIAISAACSim数据的模型性能和Sim2Sim验证性能感到满意时,请删减模型。

要以最小的延迟运行此模型,请将其优化为在目标GPU上运行。有两种方法可以实现这一点:

Pruning:TAO工具包中的修剪功能会自动删除不需要的层和神经元,有效地减小模型的大小。必须重新训练模型,以恢复修剪过程中丢失的精度。

Post-trainingquantization:TAO工具包中的另一项功能可以进一步缩小模型尺寸。这将其精度从FP32更改为INT8,在不牺牲精度的情况下提高了性能。

首先,删减模型:

!taounetprune\-e$SPECS_DIR/spec_vanilla_\-m$USER_EXPERIMENT_DIR/semseg_experiment_unpruned/weights/model_\-o$USER_EXPERIMENT_DIR/unet_experiment_pruned/model_unet_\-equnion\-pth0.1\-k$KEY

重新训练并修剪模型:

!taounettrain--gpus=1--gpu_index=$GPU_INDEX\-e$SPECS_DIR/spec_vanilla_unet_\-r$USER_EXPERIMENT_DIR/unet_experiment_retrain\-m$USER_EXPERIMENT_DIR/unet_experiment_pruned/model_unet_\-nmodel_unet_retrained\-k$KEY

当您对修剪模型的Sim2Sim验证性能感到满意时,请转至下一步,对真实数据进行微调。

!taounettrain--gpus=1--gpu_index=$GPU_INDEX\-e$SPECS_DIR/spec_vanilla_unet_domain_\-r$USER_EXPERIMENT_DIR/semseg_experiment_domain_adpt\-m$USER_EXPERIMENT_DIR/semseg_experiment_retrain/model_unet_\-nmodel_domain_adapt\-k$KEY

后果

表1显示了未运行和修剪模型之间的结果摘要。最终选择用于部署的经过修剪和量化的模型比在NVIDIAJetsonXavierNX上测量的原始模型小17倍,推理性能快5倍。

sim数据的训练数据集由25K个图像组成,而用于微调的真实图像的训练数据仅由44个图像组成。真实图像的验证数据集仅包含56幅图像。对于真实世界的数据,我们收集了三种不同室内场景的数据集。模型的输入图像大小为960×544。推理性能是使用NVIDIATensorRTtrtexec工具。

部署NVIDIAISAACROS

在本节中,我们展示了采用经过训练和优化的模型并使用NVIDIAISAACROS在XavierJetsonNX驱动的iRobot的Create3机器人上进行部署的步骤。Create3和NVIDIAISAACROS图像分割节点均在ROS2上运行。

本例使用/isaac_ros_image_segmentation/isaac_ros_unetGitHubrepo部署空闲空间分段。

要使用自由空间分段模型,请从/NVIDIA-ISAAC-ROS/isaac_ros_image_segmentationGitHubrepo执行以下步骤。

创建Docker交互式工作区:

$isaac_ros_common/scripts/run_your_ws

克隆所有包依赖项:

isaac_ros_dnn_encodersisaac_ros_nvengine_interfaces推理包isaac_ros_tensor_rtisaac_ros_triton

构建并获取工作区的源代码:

$cd/workspaces/isaac_ros-dev$colconbuild.install/

从您的工作机器下载经过培训的自由空间标识模型:

$scp:

将加密的TLT模型和格式转换为TensorRT引擎计划。对INT8模型运行以下命令:

taoconverter-ktlt_encode\-e\-pinput_1,1x3x544x960,1x3x544x960,1x3x544x960\unet_

按照以下步骤进行演练:ISAACROS图像分割:

将TensorRT模型引擎文件保存在正确的目录中。创建更新isaac_ros_unet启动文件中的模型引擎路径和名称。重新生成并运行以下命令:
$colconbuild--packages-up-toisaac_ros_unet.install/$ros2launchisaac_ros_unetisaac_ros_unet_

总结

在本文中,我们向您展示了一个端到端的工作流程,首先是在NVIDIAISAACSim中生成合成数据,使用TAO工具包进行微调,然后使用NVIDIAISAACROS部署模型。

NVIDIAISAACSim和TAOToolkit都是抽象出人工智能框架复杂性的解决方案,使您能够在生产中构建和部署人工智能驱动的机器人应用程序,而无需任何人工智能专业知识。

AmeyKulkarni是NVIDIA的开发技术工程师,专注于将深度学习解决方案有效地部署到边缘。在2019年加入NVIDIA之前,他完成了马里兰大学计算机工程博士学位。他的研究兴趣是在嵌入式平台上部署数字信号处理、计算机视觉和深度学习系统。

RishabhChadha是NVIDIA的嵌入式工程实习生——AI,他专注于为NVIDIAJetson平台集成深度学习和机器人技术框架。他将于2021年毕业于伍斯特理工学院,获得机器人学硕士学位。他的兴趣主要包括深度学习、医学成像和机器人感知。DanielLee是NVIDIA的产品经理,专注于专业可视化解决方案的软件。

审核

智能分拣机器人多少钱一台快递分拣机器人需要什么工作药品分拣机器人多少钱

上一篇:三河abb分拣机器人,日本机器人之父:人类所有工作都可被机器人取代

下一篇:智能物流分拣机器人原理,如何赋予机器人自学的能力

返回顶部