核心原理:差速转向
小米积木机器人采用的是最常见、最基础的机器人转向方式——差速转向。

差速转向的原理:
想象一下你用两脚向前走:
- 直走:左右脚的速度和力量完全一样。
- 原地向左转:你的左脚不动,右脚向前走。
- 向左转(弧线):你的左脚走得慢一些,右脚走得快一些。
机器人也是同样的道理,它有两个由电机独立驱动的主动轮(通常是左右两个轮子),后面或中间有一个万向轮作为从动轮,起支撑作用。
- 前进:左右两个电机以相同的速度正转。
- 后退:左右两个电机以相同的速度反转。
- 原地左转:左侧电机停止或反转,右侧电机正转。
- 原地右转:右侧电机停止或反转,左侧电机正转。
- 左转(弧线):左侧电机速度 < 右侧电机速度(左侧速度为50,右侧速度为100)。
- 右转(弧线):左侧电机速度 > 右侧电机速度(左侧速度为100,右侧速度为50)。
通过控制左右两个驱动轮的速度差,来实现不同角度和半径的转向。

在积木块中的实现方式
小米积木机器人使用图形化编程(通常通过米兔积木 App),转向功能主要通过以下几类积木块来实现。
基础转向积木块
这些是最直接、最简单的转向指令。
左转 [90] 度:让机器人原地向左旋转指定的角度(如90度)。右转 [90] 度:让机器人原地向右旋转指定的角度。
内部逻辑:当执行这个指令时,程序会控制左右电机以相反的速度(或一个停止,一个转动)旋转,并内置了陀螺仪或编码器来检测角度,直到达到设定的角度后才停止。
电机控制积木块(更精确的控制)
如果你想实现更灵活的转向(比如弧线),或者对转向过程有更精细的控制,就需要直接控制电机。
设置左侧电机速度为 [50]设置右侧电机速度为 [100]
实现左转弧线示例:
代码逻辑解析:
设置左侧电机速度为 [50]:左轮以中等速度前进。设置右侧电机速度为 [100]:右轮以两倍的速度前进。等待 [2] 秒:让机器人按照这个速度差行驶2秒。停止全部电机:2秒后,停止所有电机,机器人会保持当前的转向姿态。
通过调整左右两个速度值,你可以控制转弯的半径:
- 速度差越大(如左0,右100),转弯半径越小,接近原地转向。
- 速度差越小(如左80,右100),转弯半径越大,路线更接近直线。
运动控制积木块(兼顾速度和方向)
这类积木块更高级,可以同时控制速度和方向。
以 [速度 50] 和 [方向 30] 的速度移动
代码逻辑解析: 这里的“方向”通常是一个-100到100之间的值。
方向 = 0:表示直行,左右轮速度相同。方向 > 0:表示右转,数值越大,右转越急(左轮越快,右轮越慢)。方向 < 0:表示左转,数值越小(绝对值越大),左转越急(右轮越快,左轮越慢)。
实现左转示例:
代码逻辑解析:
以 [速度 80] 和 [方向 -50] 的速度移动:机器人会以80%的基准速度,向左转一个中等角度前进。等待 [2] 秒:保持这个转向动作2秒。停止全部电机:停止。
编程逻辑与实例
让我们通过一个具体的例子来理解如何组合这些积木块来完成一个“绕过障碍物”的任务。
任务场景:机器人向前走,遇到障碍物,向左转90度,绕过障碍物,然后再向右转90度,继续直走。
所需硬件:除了主机和电机,还需要一个超声波传感器来检测前方障碍物。
编程步骤(图形化积木块):
- 开始循环:让机器人可以持续检测和执行任务。
向前移动 [速度 100]:默认情况下,机器人全速前进。[超声波传感器距离 < 15] ..:这是一个条件判断,如果超声波传感器检测到前方15厘米内有障碍物,就执行下面的“如果为真”部分的代码。停止全部电机:先停下来,避免撞上。左转 [90] 度:原地向左转90度,面向新的方向。向前移动 [速度 100] 等待 [1] 秒:向前走一小段距离,绕过障碍物。右转 [90] 度:再次向右转90度,回到原来的前进方向。结束如果:条件判断结束。等待 [0.1] 秒:在循环中加一个短暂的延时,避免程序占用过多CPU资源,导致传感器读取不灵敏。
常见问题与技巧
-
转向不精准怎么办?
- 校准:在App的设置中,通常有电机校准选项,可以让机器人走一个正方形来自动校准轮速差。
- 地面因素:在光滑地面和粗糙地毯上,摩擦力不同,会导致实际转向角度有偏差,需要根据实际地面调整代码中的角度值。
- 速度影响:速度越快,惯性越大,转向时可能“打滑”,导致角度不准,尝试降低速度进行精确转向。
-
如何实现平滑的弧线转弯?
- 不要使用
左转X度这种原地转向的积木。 - 使用
设置左侧电机速度为 [V1]和设置右侧电机速度为 [V2]。 - 让V1和V2的差距不要太大,比如左轮70,右轮90,机器人就会平滑地向左画一个大弧线。
- 不要使用
-
什么时候用哪种积木块?
左/右转X度:适用于需要精确改变机器人朝向的场景,比如对准墙壁、调整方向进入通道。设置电机速度:适用于需要精确控制运动轨迹的场景,比如沿着曲线行走、绕过障碍物、画圆形等。以速度和方向移动:是前两者的结合,代码更简洁,适合在不需要单独控制每个电机时使用。
希望这份详细的解析能帮助你完全理解小米积木机器人的转向原理和编程方法!动手尝试不同的速度组合,你会发现更多有趣的玩法。