我正在尝试使用以下公式将 Twist 转换为左右轮的速度:
float speed_wish_right = (cmd_vel.angle*WHEEL_DIST)/2 + cmd_vel.speed;
float speed_wish_left = cmd_vel.speed*2-speed_wish_right;
Run Code Online (Sandbox Code Playgroud)
Twist.angular是一个向量 [x, y, z],所以是Twist.linear。x、y、z 在向量中是什么意思,如何从两个向量中获得角度和速度?
这是我在 Arduino 中的回调函数
const int WHEEL_DIST = 16;
void velCallback(geometry_msgs::Twist vel) {
float linear = vel.linear.x;
float angle = vel.angular.z;
float speed_wish_right = (angle * WHEEL_DIST) / 2 + linear;
float speed_wish_left = linear * 2 - speed_wish_right;
motors.setSpeeds(speed_wish_left, speed_wish_right);
}
Run Code Online (Sandbox Code Playgroud)
aks*_*k07 11
认为你在一些空间,则有3个轴- x,y和z它们是相互彼此垂直和它们的交叉点被称作原点(x = 0,Y = 0,Z = 0)。这可以是一个参考框架,即您可以定义不同的点和方向。
的x,y和z在Twist.linear是线速度x,y以及z方向WRT的参考该帧。
类似地,x、y、 和zinTwist.angular分别是关于x、y和z方向的角速度。
因为你有一个地面机器人,你的角速度很可能是z机器人的转动速度。并且您的线速度将主要x在即机器人的直线移动速度中。至少 Turtlebot 2 就是这种情况。