你是否曾经让机器人转 90 度,结果却看着它转到了 95 或 100 度?这种过冲问题是 VEX IQ 编程中最令人沮丧的挑战之一。
在本指南中,我们将教你一种叫做动量补偿的技术,让你的机器人精确停在你想要的位置。
为什么我的机器人会过冲?
当你让电机停止时,机器人不会立即冻结。它有动量 - 运动物体继续运动的趋势。以下是发生的情况:
- 机器人正在向 90 度旋转
- Brain Inertial 读数为 90 度 - 该停止了!
- 你发送停止命令
- 但机器人仍在运动…它滑行到了 95 度
你的机器人越重,转速越快,过冲就越严重。
解决方案:提前停止
技巧很简单:在到达目标之前停止,让动量带你走完剩余的路程。
如果你的机器人通常过冲 10 度:
- 目标:90 度
- 停止于:80 度
- 动量带你到:约 90 度
这个”提前停止”的量就是我们所说的动量值。
转向函数
这是一个带有动量补偿的自定义模块,可以让机器人转到任意角度:
每个参数的作用
| 参数 | 控制内容 |
|---|---|
rotation | 目标角度(从起始位置算起的角度) |
velocity | 转向速度(0-100%) |
momentum | 提前停止的角度数 |
转向逻辑如何工作
函数首先通过比较目标位置(rotation)和当前位置(BrainInertial rotation)来判断转向方向:
右转(目标 > 当前):
- 左电机向前转
- 右电机向后转
- 机器人顺时针旋转
左转(目标 < 当前):
- 左电机向后转
- 右电机向前转
- 机器人逆时针旋转
动量计算
假设你想右转到 90 度,动量 = 10:
没有动量补偿:
停止于:BrainInertial = 90
机器人滑行到:约 100 度(过冲了 10 度!)
有动量补偿:
停止于:BrainInertial = 90 - 10 = 80
机器人滑行到:约 90 度(完美!)
对于左转,我们加上动量值而不是减去(因为左转时 Brain Inertial 减小)。
完整程序
这是一个演示转向的完整程序:
这个程序:
- 校准惯性传感器(保持机器人静止!)
- 右转到 90 度
- 转回 0 度(中心)
- 左转到 -90 度
- 回到中心
调整动量值
正确的动量值取决于你机器人的重量、轮子抓地力和转向速度。每个机器人都不同!
| 动量 | 行为 |
|---|---|
| 太低 | 机器人过冲目标 |
| 刚好 | 机器人精确停在目标位置 |
| 太高 | 机器人在目标前停下 |
如何调整:
- 机器人过冲?→ 增加动量值
- 机器人提前停下?→ 减小动量值
速度也很重要
转得越快,动量越大,所以需要更高的补偿。如果你改变转向速度,你可能需要重新调整动量值。
常见问题和解决方法
机器人转向过冲
- 增加你的动量值
- 尝试降低速度
机器人在目标前停下
- 减小你的动量值
机器人转向方向错误
- 检查设备配置中的电机方向
- 确保 LeftMotor 和 RightMotor 在正确的一侧
转向精度不一致
- 确保 Brain Inertial 已校准(启动时机器人必须静止)
- 检查电池电量 - 低电量会影响电机性能
- 清洁轮子 - 打滑会导致结果不一致
与直线行驶结合
现在你可以将转向与我们之前指南中的直线行驶函数结合使用:
这创建了一个 L 形路径:
- 前进(航向 0°)
- 右转 90°
- 前进(航向 90°)
- 再右转 90°
- 前进(航向 180°)
快速参考表
| 问题 | 最可能的原因 | 快速解决 |
|---|---|---|
| 转向过冲 | 动量值太低 | 增加动量值 |
| 提前停下 | 动量值太高 | 减小动量值 |
| 转向方向错误 | 电机方向错误 | 检查设备配置 |
| 结果不一致 | 校准问题 | 启动时保持静止 |
下一步
掌握动量转向后,你可以:
- 构建复杂的自主程序,结合行驶和转向
- 学习比例转向以获得更平滑的旋转
- 探索 PID 控制以达到竞赛级别的精度
动量补偿技术被各级别的 VEX 竞赛队伍使用。掌握这些基础知识,你将拥有应对任何自主挑战的构建模块!
专业提示:保持一个调参日志!记录下哪些动量和速度值最适合你的机器人。如果你修改了机器人的重量或轮子配置,这些值会改变。