ROS - 用POSE展示方向或向量 vector - pose

昨天想在rviz里用pose表示一个vector,搞了半天。

Pose的属性,point是起点,orientation是表示由坐标系原点将[1,0,0]这个向量旋转到想要显示的方向所需的旋转的四元数表示。

假如你有空间中的两个点 A(x1,y1,z1) 和 B(x2,y2,z2),想要表示由A出发指向B的向量,则Pose的Point = A。

然后计算orientation的四元数,及将向量[1,0,0]旋转到向量AB方向的四元数。

target_v = AB/|AB| //单位向量

r = [1,0,0] X target_v X //旋转轴为叉乘方向np.cross()

r = r/|r| //单位向量

Theta = arccos(r*[1,0,0]) //旋转角

四元数公式为

 其中(x,y,z)为旋转轴方向上的单位向量。代入即可得到Pose的orientation。

# A(x,y,z) B(x1,y1,z1)
direction.position = Point(x,y,z)
rhh_v = np.asarray([x-x1,y-y1,z-z1]) //determine A to B or B to A
rhh_v = rhh_v/np.linalg.norm(rhh_v)
rhh_n = np.cross(np.asarray([1,0,0]),rhh_v)
rhh_n = rhh_n/np.linalg.norm(rhh_n)
rhh_tht = np.arccos(rhh_v.dot(np.asarray([1,0,0])))
direction.orientation = Quaternion(x=np.sin(rhh_tht/2)*rhh_n[0], y=np.sin(rhh_tht/2)*rhh_n[1], z=np.sin(rhh_tht/2)*rhh_n[2], w=np.cos(rhh_tht/2))

references

四元数(Quaternion)和旋转 +欧拉角 - Jerry_Jin - 博客园

geometry_msgs/Pose Documentation

### 回答1: geometry_msgs是ROS中的一个消息类型,它包含了几何形状的信息,例如点、向量、姿态等。具体来说,geometry_msgs包含了以下消息类型: 1. Point:表示三维空间中的一个点,包含x、y、z三个分量。 2. Vector3:表示三维空间中的一个向量,包含x、y、z三个分量。 3. Quaternion:表示四元数,用于表示姿态,包含x、y、z、w四个分量。 4. Pose:表示一个物体的位置和姿态,包含position(Point类型)和orientation(Quaternion类型)两个分量。 5. Twist:表示一个物体在三维空间中的运动状态,包含linear(Vector3类型)和angular(Vector3类型)两个分量。 使用geometry_msgs可以方便地在ROS中传输几何形状相关的信息。 ### 回答2: geometry_msgs是ROS中的一个消息包,用于传递与几何相关的消息。它提供了一系列消息类型,包括点(Point)、向量(Vector3)、四元数(Quaternion)、位姿(Pose)、变换(Transform)等等。 点(Point)消息类型用于表示一个三维空间中的点,其包括x、y、z三个坐标分量。 向量(Vector3)消息类型用于表示一个三维空间中的向量,其包括x、y、z三个分量,可用于描述速度、加速度等。 四元数(Quaternion)消息类型用于表示三维空间中的旋转,它使用四个分量(x、y、z、w)来描述。四元数可用于表示物体的姿态、方向等。 位姿(Pose)消息类型用于描述物体在三维空间中的位置和姿态,包括位置信息和旋转信息。 变换(Transform)消息类型用于表示两个坐标系之间的变换关系,通常用于描述物体的运动、变换等。 除了上述常用的消息类型外,geometry_msgs还提供了一些其他的消息类型,如速度(Velocity)、加速度(Acceleration)等。 借助geometry_msgs,我们可以方便地在ROS系统中传递与几何相关的信息。比如,我们可以将机器人的位姿信息发布到一个话题上,其他节点可以订阅该话题获取机器人的位置和姿态信息。这样,各个节点之间可以方便地实现协同工作,进行路径规划、避障、导航等任务。 总而言之,geometry_msgs是ROS中的一个重要消息包,提供了丰富的几何相关消息类型,为机器人系统的开发和应用提供了便利。它使得节点之间的通信更加方便,有助于实现机器人的定位、导航、运动控制等功能。 ### 回答3: geometry_msgs是ROS(机器人操作系统)中的一个消息类型,用于传递二维和三维几何信息。它是ROS中常用的消息类型之一。 geometry_msgs中定义了一些常用的几何消息,包括Point、Quaternion、Twist、Pose等。这些消息可用于描述机器人的位置、方向、速度等。 其中,Point消息类型用于表示一个三维空间中的点,可以记录其X、Y和Z坐标。 Quaternion消息类型用于表示一个四元数,主要用于描述旋转,可记录旋转角度和轴向。 Twist消息类型表示一个刚体的速度,包括线速度(即沿着X、Y和Z轴方向的速度分量)和角速度(绕X、Y和Z轴的旋转速度)。 Pose消息类型用于表示机器人在三维空间中的位置和方向,它由一个Point消息和一个Quaternion消息组成。 geometry_msgs的使用非常广泛,特别是在机器人导航、定位和控制等领域。通过发布和订阅这些消息,机器人可以与其他ROS节点进行通信,实现相应的功能。 总的来说,geometry_msgs提供了一套用于表示和传输几何信息的标准消息类型,为ROS中的机器人和系统提供了方便和统一的数据交换方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值