用于机器人中快速三角测量的微控制器/ CPU?


15

这涉及重量确实很小的硬件,因为(胖猫大小,3个自由度的6条腿的步行机器人)应该随身携带它。由于这种走法,它需要做大量的三角函数(是否使用矩阵数学,我不确定),这就是这个问题的出处。

PIC,Arduino或廉价的AVR的速度不足以每秒计算100次所有数据,并牢记诸如惯性和避障甚至是蛮力路径/步态之类的东西。

  • 计划A是将大脑运送到机器人上。 无论是微处理器,微型ITX,nettop还是其他产品;什么是快速执行三角函数/矩阵数学的有效硬件?

    我在网上搜索,期望找到专门用于此的AVR,x86或ARM微控制器,但没有运气。

  • 计划B是通过WiFi连接一台x86机器来完成繁重的工作。也非常适合制作原型,但是我希望在硬件小型化时最终将其迁移到计划A。但是即使如此,什么台式机CPU可以最快地执行三角函数?

  • 计划C是分配负载,并为每条线路配备一个省电的微控制器/内核,尽管由于很多原因,这并不是最佳解决方案,但我喜欢它的可扩展性。

我尚未确定所使用的语言和/或库,但更喜欢Pascal和C ++。

(欢迎提出更适合的标签的建议,我是新来的)


11
浮点数学不是必须的。您始终可以构建正弦(或任何其他函数)表,将它们放入AVR的闪存中,并使用定点计算在值之间进行插值。这可能足够快以满足您的需求。
Christoph

3
常见的解决方案不是预先丢失大量的数学运算,而是预先计算值表然后查找答案。在多个CPU之间分配工作的想法也很好,例如,一个强大的主CPU,然后每个分支一个处理器。
约翰·U

2
您也可以考虑在Robotics Stackexchange网站上询问此类问题。
Rocketmagnet

1
计划B将很快进行计算,但是通过WiFi进行的通信很可能会降低性能。您是否考虑过使用通过USB连接的Android手机?没有wifi滞后的情况下,它的计算能力大大提高
stefan

1
带有浮点单元的STM32F4板似乎足以满足您的应用要求。它具有128k SRAM和64k CCM。它可以运行在168MHz。一个32位浮点乘法只需要1个CPU周期..
richieqianle

Answers:


16

听起来您的应用程序实际上并不是计算密集型的全部。例如,dsPIC可以为每个迭代执行400 k条指令。好多啊。但是,具有良好的低电平I / O功能,PWM生成器,计时器等将很有用。

在像dsPIC这样的整数机器上,正弦和余弦的确不是那么难。我自己做了几次。诀窍是选择正确的角度表示形式。从理论的角度来看,弧度可能很好,但是在计算上不方便。离开是人为的,只是愚蠢的。使用您的机器尺寸整数所代表的完整范围来表示一整圈。例如,在一个16位处理器的dsPIC上,一个完整的旋转是65536个计数,这比控制机器人或仍然可以进行测量所需的精度和分辨率要高得多。

这种表示的一个优点是,所有的换行都是由于无符号整数的加法和减法工作而自动发生的。另一个重要的优点是,这种表示形式特别适合将查找表用于正弦和余弦。您只需要存储1/4个周期。角度的前两位告诉您所处的象限,告诉您是向前还是向后索引表,以及是否对结果取反。接下来的N个低位用于索引表,该表具有2 N个段(2 N +1个点)。注意,向后索引表只是对表索引位的补充。

您可以给表足够的分数,以便选择最接近的答案就足够了。例如,如果表有1024个段,则将计算正弦和余弦到最接近的1/4096圆。这将足以控制机器人。如果需要更高的精度,则可以使表更大,或者使用角度的其余低位在相邻表条目之间进行线性插值。

无论如何,关键是看来您对此处理器的要求与所述问题不符。我可能会使用dsPIC33F。与单板计算机上的x86等全面的通用计算过程相比,它肯定更小,重量更轻,并且能效更高。


我总是给人以为PIC即使是逆运动学也要放慢速度,但我可能需要重新考虑。是否有可能以至少100 /秒的速度对6个3DOF腿进行反向运动?多数民众赞成在6x3x100逆运动学只是为了获得实时的腿部动作。无论如何,我需要逆运动学与算法运行在同一平台上进行,这样我就不必两次重新实现这些部分。该算法的要求更高,并且肯定无法在PIC或Arduino-isch板上运行。
Barry Staes 2013年

9

您将要处理很多输入信号。您不一定需要具有高吞吐量的CPU。许多信号可以并行处理。这是典型的DSP领域。当然,您也确实需要常规的CPU功能。没问题 集成DSP有很多CPU。

用于此类应用的典型芯片设计是Cortex-M4。它带有集成的DSP,并且-M4F版本也具有FPU。这可能不是必需的,三角函数可以很容易地在定点数学中完成。


矩阵数学在Cortex-M4F上会占优势吗?(以防我冒险到那里,进行原型制作)
Barry Staes 2013年

3
有点儿学问-Cortex-M4处理器内核没有集成的DSP,它在主处理器内核中集成了一定程度的DSP功能。DSP扩展是增加的乘法/累加指令,这些指令有助于典型的DSP功能(例如滤波和转换)。
uɐɪ

6

几点评论:

  1. 您无需在执行避障的同一CPU上处理三角函数。您可以在两个微控制器之间拆分任务,并使用通信协议使它们对话。

  2. 为了进行实验,我在ARM Cortex M0微控制器中实现了带有卡尔曼滤波器的AHRS算法(它是STM32,不记得其余的,但是我认为它是32 MHz),并且可以使用定点数学运行它大约每秒40个样本。使用更快的控制器,您应该可以轻松携带它,当然您可以尝试使用FPGA或DSP的方式。

  3. 我想说,对腿的控制不会占用大量CPU,并且可以将所有腿一起控制,也许可以与三角学和避障操作分开进行控制(请参见1)


伺服通过控制器或dynamixel总线进行串行控制,因此基本上已经加载。问题在于,软件需要进行的运动学逆运动计算方式远不止实时姿势/步态所需。
巴里·史塔斯

5

三角法很棘手,但是有一些捷径。如果处理能力有限,请考虑使用CORDIC算法。

它基本上是[例如]正弦值的表格。角度可以以度,弧度为单位,任意选择。关键是,这些值的SINE分别为机器人可以使用的度数的1/2(0.5),1/4(0.25),1 / 8、1 / 16.....。

输入角度,减去第一个表格值,将结果设置为第一个结果(0.5)。如果通过演算,您的角度变为负,则添加下一个值(并减去0.25)。否则,继续减去角度并增加结果。

当您到达表格末尾时,您所要做的就是加减法,但您势不可挡。最后一个“提琴手”要乘以。

结果的准确性[和速度]取决于查询表的大小[和分辨率]。


CORDIC看起来不错,但我只会在它使机器人更快时才使用它(这是必需的)。
巴里·史塔斯

3

您可以考虑使用运行通用GNU / Linux系统的Raspberry Pi板。Raspberry Pi具有多个GPIO引脚,可用于连接机器人伺服器或扩展板。

http://www.youtube.com/watch?v=RuYLTudcOaM

型号A Raspberry Pi使用其GPU(使用OpenGL ES 2)最多可以执行24 GFLOP的通用浮点计算,而功耗却保持在2.5W以下。

http://elinux.org/RPi_Hardware

示例:使用Raspberry Pi实现的电池供电机器人设置。

http://www.homofaciens.de/technics-robots-R3-construction_zh_navion.htm

示例2:由树莓派控制的6足机器人:

http://www.youtube.com/watch?v=Yhv43H5Omfc

示例3:由树莓派控制的自平衡2轮倒立摆机器人:

http://www.youtube.com/watch?v=n-noFwc23y0


2

对于有腿机器人,您可以创建一些预定义的腿部移动序列并“播放”它们。可以轻巧地实时避开障碍物fuzzy logic实现来实现,其中所有内容都再次以表格格式出现,而您要做的就是从中选择正确的值并将其用于defuzzyfication过程。

一切都可以在C上以某种方式在更快的处理器上完成ARM7AVR在花了很多时间将所有内容转换为之后,我已经尝试过并失败了fixed point arithmetics


玩步态动画正是我所不想要的。我要实现的算法自行弄清楚如何处理其支路,而该算法就是为什么我需要快速三角函数的原因。但是,我没有在问题中阐明这一点。看到如此多的提示音,我将很浪费时间来编辑问题。我会在适当的时候询问并提供更具体的信息。
巴里·史塔斯

在那种情况下,我会选择伺服支腿系统。每条腿都有自己的控制器。基于代理的方法。
Gossamer 2013年

1

德州仪器(TI)Stellaris平台默认情况下在板上装有浮点单元。不确定使用80MHz时钟的ARM控制器是否足以满足您的应用程序的需要,但是LaunchPad开发板是否非常便宜:http : //www.ti.com/ww/zh/launchpad/stellaris_head.html

它可以通过USB进行编程,免费工具链至少适用于Windows和Linux,尺寸约为4×6厘米,并具有30多个GPIO引脚(如果我计算正确的话)。


0

您可以借助AVR 将x86 Power PC CPU板嵌入到机器人应用程序中,以作为接口卡来控制机器人的驱动器。将最快和最便宜的解决你的问题。但是,是的,您必须将很多代码弄乱到x86架构中,但是幸运的是,您可以从开源OS代码中掌握很多代码。(如果您的机械结构可以承受此重量)


4
“ x86”和“ power pc”是两种完全不同的(至少在历史上某些时候)竞争的体系结构。
克里斯·斯特拉顿
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.