ROS geometry_msgs中的X,Y和Z是什么意思

时间:2018-06-21 19:33:42

标签: ros

我正在尝试使用以下公式将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;

Twist.angle是向量[x,y,z],因此是Twist.linear。 xyz在向量中是什么意思,如何从两个向量中获得角度和速度?

这是我在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);
}

1 个答案:

答案 0 :(得分:4)

请考虑您在某个空间中,然后有3个轴-xyz彼此垂直,并且它们的交点称为原点(x = 0,y = 0,z = 0)。这可以作为参考框架,即您可以定义各种点和方向。他们。

x中的yzTwist.linearxyz中的线速度方向wrt该参考框架。

类似地,x中的yzTwist.angularxy和{{1 }}方向wrt相同的参照系。

现在,您可以确定需要什么了。

我可以看到您有一个地面机器人。因此,很可能您的角速度将在z中,即您的转弯速度。并且您的线速度将主要在z中,即您的直线移动速度。至少Turtlebot 2就是这种情况。