发 帖  
原厂入驻New
实战多通道高速精密测温仪的全系列设计教程,以实际项目为依托,提升工程师核心竞争力!→点击立即抢购←
[问答] 机器人的硬件
101 机器人
分享
安静高效的机器人正在接管——阻止它们已经太迟了。不,这不是机器人世界末日另一个可怕的故事。这是关于您下一设计硬件预算和规划面临威胁的问题。虽然您无法阻碍技术变革,但是您可以预测其影响。


0
2019-7-17 08:08:16   评论 分享淘帖 邀请回答
6个回答
问题是,来自机器人世界的概念——它们本身以及设计需求,正在向其他嵌入式系统渗透。这种渗透似乎遵循一种确定的顺序。首先,低成本传感器,通常来自智能电话技术,致动器,例如来自射频受控(RC)模型的伺服电机,提高了新设计中控制环路的数量和复杂度。然后,要求从人操作员控制系统逐步过渡到系统本身自主的进行控制:首先自动完成相关的动作序列,然后把人机接口从动作转换为目标,然后转到完全自主。例如,想一下汽车从手动发展到全自动变速,直至自动辅助驾驶系统,最后是完全自动驾驶。嵌入式系统正在变成机器人。
很显然,当您沿这一路线前进时,系统的计算负载也在增加。但是会有多少?有哪些算法?您怎样为这些新计算负载提供支持?我们将尝试通过一个实例来量化这一讨论。这个例子从一个玩具开始——实际上,是一个玩具机器人。
2019-7-17 17:16:56 评论

举报

遇到六足机甲
我们这个例子的明星是一个人见人爱的——可能还有些丑,这取决于您的眼光,机械装配,它有六条腿,放射状的分散在中心平台周围(图1)。每条腿都有三个自由度:可以在平台平面内围绕其根部旋转,能够转动两个腿部关节。每个轴都是由伺服电机控制的。

图 1.一个典型的六足机甲面对更常见的险恶的机器人。

这种安排的好处是有吸引人的生物生态系统(除非您不喜欢昆虫),比较简单。但这也掩盖了其复杂性,当需求有看似合理的变化时,为我们提供了计算强度随之变化的丰富的实例。
对六足机甲的一些反思揭示了一个问题。腿不像轮子那样。六足机甲脚的空间位置与其关节角度之间的关系并不简单。它实际上是一系列三角计算,非常复杂而且不直观,大部分人类操作员都无法在大脑中思考完成。因此,让人直接去控制伺服电机只会导致悲剧——就像让一个人去同时操作六台挖土机一样。至少,您需要让操作员设定好脚的位置或者站好姿势,让六足机甲计算必要的角度。
这些计算,有时候被不太准确的称之为逆运动学,在开发源代码中记录并实现。由于玩具六足机甲能够接受较长的延时,因此,Arduino电路板上的微小控制器单元(MCU)应该有足够的时间去完成计算。
据机器人供应商krtkl技术核心团队的CEO Ryan Cousins、CTO Jamil Weatherbee,以及首席设计官Russell Bush,具有讽刺意味的是,I/O而不是三角函数给Arduino带来了难题。这些18个伺服电机的每一个都需要一系列脉冲,大约每20 ms一个脉冲。(古怪的是,如果您不是一个RC迷,脉冲宽度确定了电机的轴间角,更新频率相对并不重要。)这一团队报告说,“Arduinos用于运动计算是足够的,但是,I/O负载是个难题。”通常,六足机甲开发人员会在Arduino上增加一个多通道伺服驱动装置,完成脉冲序列的产生和时序。
对于简单应用,只是向伺服电机发送端点命令,让每一电机按照自己的摆率旋转就可以了。腿会迅速的从一个姿势移动到下一个姿势。但是,这一方法要求您在让一些腿移动的同时,平台要保持稳定状态。传统的方法是三脚架姿势,三条腿摆到新位置。对于平滑运动,对于精细的步态控制,还有不平坦的地势,导致运动非常复杂,计算强度非常大。
2019-7-17 17:17:06 评论

举报

灵巧的六足机甲
三脚架式的步态非常简单。为三条腿计算脚的新位置。抬起来这些腿,将其摆动到计算好的新位置。重复另外三条腿。但是还有更好的方法让这个小动物走路,例如,算好腿的运动弧度,调制腿的速度,或者让多条腿同时运动。这些步态会要求不断更新所有18个伺服电机,每20 ms向每一电机传送一个新脉冲。这意味着,您得把每个脉冲的逆运动学计算时间保持在1 ms以内。为尽可能降低三角函数库累积误差,尽量使其不在腿部运动时显现出来,您现在可能需要32位,或者单精度浮点计算。换言之,计算负载从20倍增加到了几百倍。小Arduino在这里就出局了。krtkl团队提醒说,“当您对Arduino提出太多要求时,肯定会看到器件的性能不行了。”
现在,再复杂一些:不平坦的地势。邻近的机器人俱乐部很好的演示了障碍物和台阶。对于某些应用这是必须的,例如,搜索和营救机器人。
而对于不平坦的地势,需要连续控制腿的运动轨迹。并不是采用标准腿部运动脚本,而是需要为每一只脚的放置计算弧度,确保脚部落在踏实的地面上,六足机甲的任何部位都不会碰上障碍物,平台也一直保持稳定。现在,您的六足机甲能够爬过瓦砾——但是对于计算负载,增加了大量的立体几何计算。现在,您至少是在32位多核MCU环境下,实际上实时运行了一个刚性模型仿真。
但是,我们仔细的跨过了这里的另一个问题。在友谊比赛中,或者对于在熟悉的静态场景中进行导航时,您可以获得经过预定义的3D地形图。但是,在大部分应用中,包括在这些废墟建筑物中导航前进,您的机器人至少要进行一些3D地图构建任务,自己运动时要能够在空间中定位自己。
2019-7-17 17:17:14 评论

举报

我在这里
原理上,如果您有六足机甲周围环境详细的静态地图,您可以使用专门的方法来建立您的位置。这可能会包括带有加速度计的惯性导航——还记得那些廉价的手机配件吗,射频信标三角测量,激光测距仪,还有环境传感嵌入式定位仪等。这些方法都会建立一个位置任务,每一个的计算量都不大。
但是,逐渐的,设计人员使用摄像机和机器视觉算法作为位置算法的输入。krtkl团队列举了RC直升飞机作为这种发展的一个早期实例。他们注意到,“直升飞机的稳定性是一个很大的难题。通常使用陀螺,但是现在的稳定性基于视觉处理。”
测量相对于地平线的高度要比依靠加速度计的推算定位更精确。但是有成本问题。视觉处理是一组数字信号处理(DSP)任务,至少需要支持SIMD硬件(例如,ARM的NEON™引擎)的快速32位CPU,但是更适合采用DSP芯片或者FPGA。
另一个例子来自不同的世界:零售客户服务。Fellow Robots现场测试了自主客户关怀机器人,它在销售亭和《神秘博士》中的Dalek之间来回穿梭。这一装置在硬件商店周围随机游走,询问客户是否需要帮助,引导他们找到所需要的商品。设计可以开发一个商店的静态地图,以便导航。但是,它依靠来自两个板上2D LIDAR单元的视频和数据,确定自己的位置,跨过地图上没有标出的障碍物(图2)。它还使用了来自轮子的轴编码器数据,以及惯性导航模组的数据。

图 2.联合位置和映射功能随时生成一副地图,把机器人标注在其中。

这些数据汇集到自适应蒙特卡洛定位(AMCL)算法中。这一程序结合了地图数据、视觉和LIDAR数据,以及推算定位得出的位置,为机器人的位置和方向构建了概率地图。其计算量的确非常大,这与您要求的分辨率有关,但是能够承受输入数据较大的误差或者不确定性。
Fellow Robots设计还必须能够识别出意外的障碍,例如,临时的显示台或者客户,并避开这些障碍。它使用了视觉处理功能来搜索人脸。一旦找到了某些人,相当于机器人的眼睛接触,机器人使用语音合成和识别功能,以及触摸大显示屏上的产品分类,来介绍自己,识别出客户在寻找什么,帮助他们找到这些商品。
这些功能层需要来自各种源的应用程序层。据Fellow Robots CIO Thavidu Ranatunga,这些程序也相应的需要几种不同的工作环境。他说,您可以把设计想象成几台协同工作的机器。
Ranatunga报告说,“有一台运行在Windows上的用户接口机器。然后,还有一台机器执行来自机器人操作系统(ROS)组织的机器人程序,运行在Linux上,还有一些运行在Arduinos上的C程序。”
Windows的一项重要工作是联网。出于各种原因——包括通过云进行语音识别等,机器人需要WiFi。事实上,如果不是功耗受限,它完全可以承载整个WiFi路由器。
这一次,计算负载远远不止我们在六足机甲上放置的多核MCU。Ranatunga说:“我们使用了Intel内核i5中所有四个内核,以及1.6 gigabytes (GB)的存储器。”有了这些指标,我们的六腿朋友可以工作了。
2019-7-17 17:17:20 评论

举报

可爱的六足机甲有了动力
当我们四处游走寻找直升飞机时,我们已经赋予了这个小可爱高功效的多核MCU,应对复杂的行走步态和崎岖的地面。通过改变话题,我们避开了一个关键问题:如果我们没有3D地形图会怎样?答案是我们得让六足机甲有视觉,这样,当它运动时,能够完成联合定位和映射(SLAM)算法。
大部分简单的SLAM算法,其中有一些已经在ROS库中了,使用了2D LIDAR作为输入,生成机器人周围环境的2D地图。据科英布拉大学2013年的一篇文章,一般而言,它们需要5%到20%的Core i7 CPU就能跟上移动较慢的机器人。但是,这只能帮助我们的设计避开难度大的地形,不能帮助我们跨过去。我们还需要更多的东西。虽然我们能够避开它,但是,我们不希望采用价值500美元的LIDAR。
这使得我们回到了视觉处理上。在今年5月份嵌入式视觉大会的一篇论文中,Videantis营销副总裁Marco Jacobs介绍了来自Viscoda的一种算法,使用了平台运动从2D视频流中提取出3D SLAM。其原理与鸟类转动头部获得视差数据一样,鸟类一般都缺少双目视觉。
算法通过一系列数字滤波器,从图像中提取出可跟踪特征,查看这些特征在后续帧中怎样变化。考虑到估算的平台运动,算法能够计算出每一特征的距离。这显然需要进行很多计算,Videantis的确在他们自己的众核视觉处理器上使用了OpenCV。对于我们相对不复杂的六足机甲,其工作能够在大部分Core i7,或者多核MCU,以及采用了其他数字加速功能的ASSP上执行。
2019-7-17 17:17:24 评论

举报

总结
看起来只需要增加一台摄像机,我们的六足机甲就可以在未知的、崎岖的地形上平稳的行走。我们需要一个多核MCU控制运动,还需要含有多核CPU的桌面计算机,具有外部DRAM,进行视觉处理和3D SLAM。或者,我们可以使用几种类型的数字加速器,从DSP芯片到专用视觉处理器,甚至是小规模FPGA。我们还需要Linux内核,可能还有一些独立的实时程序。
但是,由电池供电的装置无法满足这类功耗预算。可能需要使用无线链路把大部分计算任务卸载到外部桌面计算机中,或者云端。这类链路还支持与深度学习算法相连接,进行目标分类或者环境感知,这就要求我们今后进一步提高自主程度。
我们从一个玩具开始。通过增加算法和计算能力,我们赋予了六足机甲优雅的姿态,能够运动,而且自主动作。但是在发展过程中,我们的计算体系结构实际上变化了——对功耗的限制越多,体系结构的变化就越大。同时相关的不确定性也会增加。当我们赋予六足机甲更多的自主能力时,会很难预测某些约束什么时候会要求改变底层硬件,不仅仅是采用同一系列中速率更高的芯片。
在这一新环境中,可扩展性并不意味着能够为您的MCU购买下一速率等级或者容量更高的存储器。这意味着,能够转换到完全不同的体系结构模型中,同时保留了您的算法和程序投入。机器人已经渗透到嵌入式设计世界中,我们应该更智慧的进行规划。
公司信息:
Intel-英特尔
2019-7-17 17:17:25 评论

举报

只有小组成员才能发言,加入小组>>

34个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /10 下一条

快速回复 返回顶部 返回列表