发新话题
打印

我是怎样制作金牛座机器人的

我是怎样制作金牛座机器人的

金牛座的来历
金牛座是我非常早期的一个机器人。之所以如此命名,是因为牛喜欢追赶红色,而我打算设计一个追赶某种颜色的机器人。但是我的第一个机器人——在2002年初做的,那时我已有两年经验——显然还是失败了。一年之后,就是在2003年末,我决定重做它。这时因为从其它的几个机器人项目中学了不少,所以知道了之前失败的所迎因。当然,你可能注意到了这款机器人的车轮设计与火星漫步者非常的类似。但我必须强调:做这款机器人的时候,我压根儿就不知道火星漫步者也是这样!

金牛座2的机械特
金牛座2具有0度旋转半径(也即能原地旋转)。并且它具有几乎是全方向移动,除了它的腿关节上的伺服电机的旋转有个度数的限制。因此金牛座2可以横着走,直着走,斜着走,甚至可以以一个正弦曲线的形式走而面朝同一个方向。最后还要说明一下:它能适应复杂的地形。
结构设计

金牛座2是用2D CAD设计的(我是第一次用CAD软件啊!),用


电子方面的设计编程和控制

我用了一个基于微控制器的PIC(优先中断控制)系统,编程语言采用C。用8数字输出独立地控制每个伺服电机,而CMUcam影像模块的接口用的是串口。因为8个伺服电机消耗大量的能量,所以我必须使用两个镍镉蓄电池组。还有,作为附加的非接触缓冲传感器,我做了3个红外发射接收传感器,下面就是:


我编程控制金牛座2从它的摄像头(CMUcam的一部分)获取图像,然后读入颜色绿和蓝的中间块(图像中的颜色矩心)。接下来让伺服电机转动,让它总是朝颜色的中间块方向移动。我试着让金牛座2循一条白色轨迹线,结果它干得还真不赖。独立控制每个轮子,要求你必须把每个轮子都转到一个特定的角度,以便每个轮子的轴心都指向同一个中心点(或者说旋转轴心),下面的图能说明得更清楚一些:

如果两个前轮有相同的角度,旋转轴心就不再是公共的了,就会产生比较大的阻力和滑行。如果轮子保持上图所示的角度,机器人就会循着一个虚拟的以旋转轴心为圆心的完美圆移动。只需要基本的几何知识,已知旋转半径和轮子的位置就可以算出需要的每个轮子的角度。
当我编程时,我做了一个连续模糊逻辑算法来把轮子角度和目标方向联系起来。前轮和后轮是反向的,所以对于每个圆周我只需要做两个角度计算。我也做了一些其它几种算法的混合,正如你在上面的视频中看到的那样。另外还有一个方法是做一个几何查找表来控制轮子的角度。



TOP

以下是能让金牛座2在原地打转的轮子位置:

再来一张近景照:

费用:

搭建整个机器人只花了大概~$90,由于很多部件是从我的一些旧机器人上拆下来的。这儿有一个所有用到的部件的清单并且附上了典型价格:
(2) 7.2V 镍镉蓄电池组($16)

(1) CMUcam影像模块 ($100)
(1) Cerebellum Microcontroller(微控制器), by Botrics ($40)

(3) 自制的IR(红外发射接收传感器) (元件花了~$4)

(8) HS-311 servos(伺服电机) ($71)

(1) 没用的调制解调器的电线($3)

(4) 泡沫塑料4英寸直径飞行器模型轮子 ($15)

(1) 一张1'x1'HDPE高密度聚乙烯板($10)

(2) 滚珠轴承(在废料堆里找到)

(1) 一张1'x1'铝板 ($10)

做机器人也挣钱
做金牛座其实根本没花我什么钱,不仅是因为它被授权开发因而有一笔资金支持(还没花完,有些结余),而且也因为我拿这款机器人参与了2004年度移动监控机器人竞赛——获得了第三名和$250的奖金。

千万别用CMUcam影像模块!
当年我本来应该得第二名的。都是因为CMUcam有个并不广为所知的bug:当获取了大量蓝色光线的时候会导致硬件失效——比如那种来自太阳的蓝光。我一直不明白它为什么莫名其妙就停止工作,直到两年后当我仔细分析CMUcam在太阳光下的输出的时候才发现问题出在CMUcam。那些开发者从来没有解决这个问题,也没打算解决。你不信我说的吗?那就找个阳光明媚的日子,把CMUcam对向太阳,看看它罢不罢工!(啊!啊!这玩意儿害苦我了!)

--------------------------------------------
                    翻译:王亚
                    编辑:hupo

TOP

古月

TOP

发新话题