vex LemLib的角运动
转向运动是 LemLib 可以执行的最简单的运动。所有这些运动都会以某种方式使机器人旋转,并且只使用角度 PID 控制器。
转向角度
{cpp:func}
turnToHeading <lemlib::Chassis::turnToHeading>和 {cpp:class}TurnToHeadingParams <lemlib::TurnToHeadingParams>API 参考。
这个运动使机器人转向面对特定的角度。这个角度是绝对的,这意味着将机器人转向面对 90 度将始终使机器人面向相同的方向。
这个函数有两个必需的参数,要转向的角度(以度为单位)和超时时间。这是运动可以持续的硬时间限制(以毫秒为单位)。在这个时间段过去后,运动将结束,无论它完成得如何。
以下是一个你可以进行的最简单的调用示例:
chassis.turnToHeading(270, 4000); // 使机器人面向 270 度,超时时间为 4000 毫秒lemlib::Chassis::turnToHeading()还有两个更多的可选参数,可以用来定制运动的行为。
第一个是params,它是一个包含命名设置的结构体,以及async,它控制运动是否阻塞执行。
以下是上面相同函数调用的示例,但填充了所有默认值:
chassis.turnToHeading(
270,
4000,
{.maxSpeed = 120}, // 速度永远不会超过 120
true // 这个运动不会阻塞执行
);转向点
{cpp:func}turnToPoint <lemlib::Chassis::turnToPoint> 和 {cpp:class}TurnToPointParams <lemlib::TurnToPointParams> API 参考。
turnToPoint运动的工作方式与turnToHeading运动完全相同,除了它们以场地上的笛卡尔坐标中的一个点为目标,而不是一个方向。如果你想转向面对一个具有固定位置的游戏对象,无论你在场上的位置如何,这特别有用。
为了获得最佳结果,不要尝试将底盘转向距离底盘 10 英寸以内的点。点离机器人越远,你将获得更好的结果。
以下是如何使用它的示例:
// 以 1000 毫秒的超时时间转向点 (53, 53)
chassis.turnTo(53, 53, 1000);与turnToHeading类似,该运动也接受两个可选参数,params和async。
摆动到角度
{cpp:func}
swingToHeading <lemlib::Chassis::swingToHeading>和 {cpp:class}SwingToHeadingParams <lemlib::SwingToHeadingParams>API 参考。
摆动运动的独特之处在于它们只使用传动系统的一半来移动。
以下是如何使用摆动转向的示例:
chassis.setPose(0,0,0); // 机器人现在认为它在 (0,0) 位置,方向为 0 度
chassis.swingToHeading(45, 4000); // 摆动以面向 45 度,超时时间为 4000 毫秒以下插图显示了如果一切正常,这个运动看起来的样子:
与所有其他转向运动一样,swingToHeading也接受一个params和async参数,其工作方式与其他参数完全相同。
摆动到点
{cpp:func}
swingToPoint <lemlib::Chassis::swingToPoint>和 {cpp:class}SwingToPointParams <lemlib::SwingToPointParams>API 参考。
swingToPoint的工作方式与swingToHeading完全相同,除了它转向面对一个点而不是一个方向。
chassis.swingToPoint(53, 53, 4000); // 摆动以面向点 (53, 53),超时时间为 4000 毫秒与所有其他转向运动一样,swingToPoint也接受一个params和async参数,其工作方式与其他参数完全相同。
本文来自 [LemLib](https://lemlib.readthedocs.io/en/stable),经翻译发布于此以供大家学习使用!侵删!