Caution Tape Robotics Club
返回博客

如何让你的 VEX IQ 机器人精确转向

2026年2月6日 2 分钟阅读 Master Shifu

使用动量补偿的机器人精确转向

你是否曾经让机器人转 90 度,结果却看着它转到了 95 或 100 度?这种过冲问题是 VEX IQ 编程中最令人沮丧的挑战之一。

在本指南中,我们将教你一种叫做动量补偿的技术,让你的机器人精确停在你想要的位置。

为什么我的机器人会过冲?

当你让电机停止时,机器人不会立即冻结。它有动量 - 运动物体继续运动的趋势。以下是发生的情况:

  1. 机器人正在向 90 度旋转
  2. Brain Inertial 读数为 90 度 - 该停止了!
  3. 你发送停止命令
  4. 但机器人仍在运动…它滑行到了 95 度

你的机器人越重,转速越快,过冲就越严重。

解决方案:提前停止

技巧很简单:在到达目标之前停止,让动量带你走完剩余的路程。

如果你的机器人通常过冲 10 度:

  • 目标:90 度
  • 停止于:80 度
  • 动量带你到:约 90 度

这个”提前停止”的量就是我们所说的动量值

转向函数

这是一个带有动量补偿的自定义模块,可以让机器人转到任意角度:

defineturnrotationrotationvelocityvelocitymomentummomentumifrotationBrainInertialrotationindegreesthen左转 - 通过加上动量值提前停止whilerotationmomentumBrainInertialrotationindegreessetLeftMotorvelocitytovelocity%setRightMotorvelocitytovelocity%spinLeftMotorreversespinRightMotorforwardelse右转 - 通过减去动量值提前停止whilerotationmomentumBrainInertialrotationindegreessetLeftMotorvelocitytovelocity%setRightMotorvelocitytovelocity%spinLeftMotorforwardspinRightMotorreversestopLeftMotorstopRightMotor

每个参数的作用

参数控制内容
rotation目标角度(从起始位置算起的角度)
velocity转向速度(0-100%)
momentum提前停止的角度数

转向逻辑如何工作

函数首先通过比较目标位置(rotation)和当前位置(BrainInertial rotation)来判断转向方向:

右转(目标 > 当前):

  • 左电机向前转
  • 右电机向后转
  • 机器人顺时针旋转

左转(目标 < 当前):

  • 左电机向后转
  • 右电机向前转
  • 机器人逆时针旋转

动量计算

假设你想右转到 90 度,动量 = 10:

没有动量补偿:

停止于:BrainInertial = 90
机器人滑行到:约 100 度(过冲了 10 度!)

有动量补偿:

停止于:BrainInertial = 90 - 10 = 80
机器人滑行到:约 90 度(完美!)

对于左转,我们加上动量值而不是减去(因为左转时 Brain Inertial 减小)。

完整程序

这是一个演示转向的完整程序:

whenstartedcalibrateBrainInertialturn90rotation30velocity10momentumturn0rotation30velocity10momentumturn-90rotation30velocity10momentumturn0rotation30velocity10momentum

这个程序:

  1. 校准惯性传感器(保持机器人静止!)
  2. 右转到 90 度
  3. 转回 0 度(中心)
  4. 左转到 -90 度
  5. 回到中心

调整动量值

正确的动量值取决于你机器人的重量、轮子抓地力和转向速度。每个机器人都不同!

动量行为
太低机器人过冲目标
刚好机器人精确停在目标位置
太高机器人在目标前停下

如何调整:

  • 机器人过冲?→ 增加动量值
  • 机器人提前停下?→ 减小动量值

速度也很重要

转得越快,动量越大,所以需要更高的补偿。如果你改变转向速度,你可能需要重新调整动量值。

常见问题和解决方法

机器人转向过冲

  • 增加你的动量值
  • 尝试降低速度

机器人在目标前停下

  • 减小你的动量值

机器人转向方向错误

  • 检查设备配置中的电机方向
  • 确保 LeftMotor 和 RightMotor 在正确的一侧

转向精度不一致

  • 确保 Brain Inertial 已校准(启动时机器人必须静止)
  • 检查电池电量 - 低电量会影响电机性能
  • 清洁轮子 - 打滑会导致结果不一致

与直线行驶结合

现在你可以将转向与我们之前指南中的直线行驶函数结合使用:

whenstartedcalibrateBrainInertialdriveStraight0rotation720distance30velocity1kpturn90rotation30velocity10momentumdriveStraight90rotation720distance30velocity1kpturn180rotation30velocity10momentumdriveStraight180rotation720distance30velocity1kp

这创建了一个 L 形路径:

  1. 前进(航向 0°)
  2. 右转 90°
  3. 前进(航向 90°)
  4. 再右转 90°
  5. 前进(航向 180°)

快速参考表

问题最可能的原因快速解决
转向过冲动量值太低增加动量值
提前停下动量值太高减小动量值
转向方向错误电机方向错误检查设备配置
结果不一致校准问题启动时保持静止

下一步

掌握动量转向后,你可以:

  • 构建复杂的自主程序,结合行驶和转向
  • 学习比例转向以获得更平滑的旋转
  • 探索 PID 控制以达到竞赛级别的精度

动量补偿技术被各级别的 VEX 竞赛队伍使用。掌握这些基础知识,你将拥有应对任何自主挑战的构建模块!


专业提示:保持一个调参日志!记录下哪些动量和速度值最适合你的机器人。如果你修改了机器人的重量或轮子配置,这些值会改变。

分享文章

不知道从哪里开始?

使用路径指南为您的孩子找到合适的课程。

探索课程