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产品无法在国内机器人上普及的原因,毕竟我们国家的工程师编程水平非常低(可能比你想象的还要低),而那些编程高手又被高薪的互联网行业吸引走了,导致机器人行业的高端人才稀缺。无人驾驶、深度学习等技术逐渐兴起,由于技术同源,机器人专业又得到了青睐,也出现了一些高薪岗位,这对于机器人专业的人才也是一件好事。