Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the wp-statistics domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /www/wwwroot/robotattractor/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the jetpack domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /www/wwwroot/robotattractor/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the updraftplus domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /www/wwwroot/robotattractor/wp-includes/functions.php on line 6114
在 NVIDIA Jetson AGX Xavier 上跑大型机器人算法 – 机器人家园

1 Jetson简介

  Jetson AGX Xavier是NVIDIA公司发售的人工智能和机器人计算开发板,其配置是:8核ARM v8架构CPU、32TOPS算力的GPU、32GB的内存、32GB的固态硬盘。跟给工控机比,Xavier的个头很小,你一只手都能拿住。别看个头不大,性能相当厉害,至少能覆盖99%的机器人应用。NVIDIA公司说的倒是直白,这个小“电脑”主要就是针对机器人应用设计的。它最大功率才30w,身体很大一部分是散热片,散热片里面有个小风扇。

2 机器人应用

  笔者以前写过一篇介绍AGV控制系统的文章,其中提到了各种控制器的实现方案,但是当时对Xavier不熟悉所以遗漏了。其实,AGV就是个机器人,只不过它是个稍微简单一点的移动机器人。现在,AGV行业也是比较低端高端都有,一个机械制造公司都可以转行做AGV,可见AGV这个机器人的技术水平可以很低。但是,AGV也是可以很高端的,上百万的大型AGV也是有的。AGV的未来发展趋势应该是更灵活、智能。在这样的趋势下,普通的PLC或者一般的工控机都满足不了了。PLC的缺点极其明显,为了追求实时和可靠将编程接口固化,后果自然是缺乏任何的开放性和灵活性。就算codesys吹的再牛说自己再开放,它本质仍然是个PLC,PLC能开放到哪里去呢。而工控机搭配显卡的方式显然又太贵太臃肿了,就算是中端的研华也要万元级了。
  如果你对算力和价格都有很高的要求,那Xavier类的产品可能是个选择。对于机器人来说,一来它有几个价格的产品系列,性能从高到低对应的价格分的很开;其次,性能绝对是杠杠的,轻松碾压所有PLC,可以说把它和PLC作比较是有点侮辱它了。
  机器人对控制器有哪些要求?这就要看应用场景了。但是Xavier能用于复杂的机器人任务吗,这个问题笔者在使用前也是充满怀疑。既然Xavier性能这么强悍,那我们就不考虑那些简单的应用程序了,直接考虑那些最复杂的任务。笔者挑选了几个,包括三维激光SLAM、三维目标检测、带约束的轨迹规划,分别对应着机器人中的感知、建模和规划,这里没考虑控制因为控制本身相对于其它三个的计算量不大。这些任务对计算资源的要求是不低的。

2.1 目标检测

  测试某目标检测程序,结果如下图所示,在停车场环境中检测出的车辆(蓝色长方体)超过50辆,还有行人(黄色圆柱)。测试结果显示,最大帧率能达到15FPS左右(也就是每秒检测15次)。这个结果对于中低速的移动机器人是够了。

  因为目标检测所需要的计算是在GPU中完成的,所以计算环境要装好。笔者的环境如下图左所示,包含CUDA、cudNN和TensorRT,这些不需要一个个装,直接在jetpack中一次性装好了。运行程序时,Xavier功耗怎么样呢?下图右是运行一个小时后的温度。Xavier放在开放的环境,环境温度24度,Xavier上的风扇开到最大,工作一小时后GPU芯片的温度是34度左右,比体温还要低,完全可以接受。

2.2 SLAM

  三维激光SLAM就用大名鼎鼎的LEGO-LOAM了,过程如下几幅图所示。在Rviz中显示和用鼠标拖动大型点云地图也很流畅。


2.3 轨迹规划

  笔者选择的轨迹规划是ROS的teb_local_planner,这个规划方法底层使用了优化的思想,调用的库是G2O图优化库。优化需要一些矩阵计算,本身的计算量是不小的。而且轨迹规划需要频繁运行碰撞检测,这也是一种CPU计算密集型的任务。测试结果表明Xavier完全可以以10Hz的频率运行规划程序。

3 总结

  经过这样的测试,笔者认为Xavier可以胜任移动机器人的几乎所有任务,不论是服务型的移动机器人还是工业上的AGV。如果说要用在室内机器人上,可能需要任务比室外要少,因为室外速度高而且环境更复杂。越来越多国外的AMR移动机器人采用ROS系统,硬件选择工控机或者Xavier类的产品。
  当然,使用Xavier对开发人员的要求相对高一些,你不仅要具备机器人的专业知识,还要有C++和CUDA编程的能力,这也是短时间内Xavier产品无法在国内机器人上普及的原因,毕竟我们国家的工程师编程水平非常低(可能比你想象的还要低),而那些编程高手又被高薪的互联网行业吸引走了,导致机器人行业的高端人才稀缺。无人驾驶、深度学习等技术逐渐兴起,由于技术同源,机器人专业又得到了青睐,也出现了一些高薪岗位,这对于机器人专业的人才也是一件好事。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注