ROS Rviz可视化Tango Pose数据

时间:2016-03-12 17:43:46

标签: opengl quaternions ros google-project-tango coordinate-transformation

我们修改了sample code for the C API,因此Tango姿势数据(位置(x,y,z)和四元数(x,y,z,w))将作为PoseStamped ROS消息发布。

我们正在尝试使用Rviz可视化姿势。姿势数据似乎需要一些变换,因为当我们移动时,Rviz箭头的旋转与Tango的行为不匹配。

我们在示例代码中意识到,在Tango屏幕上进行可视化之前,the pose data is transformed into a 4x4 Pose matrix(函数PoseData::GetExtrinsicsAppliedOpenGLWorldFrame),然后通过表示坐标框架变化的各种矩阵左右相乘(例如) ,Tango到OpenGL)。

理想情况下,我们可以在发布姿势数据以进行可视化之前对其进行类似的转换。但是,我们必须将姿势数据保持在(x,y,z)和四元数(x,y,z,w)格式,以便将其发布到PoseStamped消息中,并且我们看不到要应用的转换。

我们已经查看了Tango coordinate systems conventions,但Tango开发人员建议我们应用的转换仅适用于Pose矩阵格式的姿势数据。我们还尝试应用Ologic in their code应用的转换无效。

有没有人对如何在不改变格式的情况下转换Tango姿势数据有任何建议,以便在Rviz OpenGL界面上进行正确的可视化?

2 个答案:

答案 0 :(得分:0)

如果是OpenGL约定,你基本上需要在姿势数据的左侧进行转换。 c ++运动跟踪示例有一行执行此操作here。您可以忽略旋转部分,但只需应用以下代码:

glm::mat4 opengl_world_T_opengl_camera = tango_gl::conversions::opengl_world_T_tango_world() * start_service_T_deivce;

答案 1 :(得分:0)

我知道这是一个迟到的答案,但它可以帮助其他人。 如果你想用Rviz可视化任何数据,我假设你想使用ros。那么也许最好的方法是使用rasjava库来做你的Tango安卓应用。这对我来说很有用。我只需要在探戈设备上使用poseStamp,odometry和tf publisher,然后用rviz显示主题。更重要的是,它是保持实时性的最佳方式之一。

此外,有两种学习如何使用rosjava的好方法:

https://github.com/ologic/Tango

https://github.com/rosjava/android_core/tree/master