金牛座的来历

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

Taurus 2 

金牛座2的机械特性

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

结构设计

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

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

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

Infrared Emitter Detector Pair 

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

Four Wheel Angle Kinematics 

如果两个前轮有相同的角度,旋转轴心就不再是公共的了,就会产生比较大的阻力和滑行。如果轮子保持上图所示的角度,机器人就会循着一个虚拟的以旋转轴心为圆心的完美圆移动。只需要基本的几何知识,已知旋转半径和轮子的位置就可以算出需要的每个轮子的角度。

当我编程时,我做了一个连续模糊逻辑算法来把轮子角度和目标方向联系起来。前轮和后轮是反向的,所以对于每个圆周我只需要做两个角度计算。我也做了一些其它几种算法的混合,正如你在上面的视频中看到的那样。另外还有一个方法是做一个几何查找表来控制轮子的角度。