功能简介
将nav_msgs::odometry类型数据转换到nav_msgs::path,从而方便在rviz上查看。
例如将t265的定位信息放到rviz上进行可视化观看(类似官方那个realsense-viewer的视觉效果)。
待会附上github链接,方便不能复制的小伙伴
代码全文
这应该是功能最简版代码了,一共没几行还有注释,你们直接复制过去直接用,避免重复造轮子吧,应该也不存在看不懂什么的了。
#include<stdio.h>
#include<ros/ros.h>
#include<nav_msgs/Path.h>
#include<nav_msgs/Odometry.h>
ros::Publisher path_pub; //发布path的节点
ros::Subscriber odom_sub; //接收odometry的节点
nav_msgs::Path path; //发布的路径
bool init_flag=1; //path初始化标记位
void odomCallback(const nav_msgs::Odometry::ConstPtr& odom){
if(init_flag){
path.header=odom->header;
init_flag=0;
}
geometry_msgs::PoseStamped pose_stamped_this;
pose_stamped_this.header=odom->header;
pose_stamped_this.pose=odom->pose.pose;
path.poses.push_back(pose_stamped_this);
path_pub.publish(path);
}
int main (int argc, char **argv)
{
ros::init (argc, argv, "odometry2path");
ros::NodeHandle nh;
// 记得在此处更改odometry消息topic名称 //
odom_sub = nh.subscribe<nav_msgs::Odometry>("/camera/odom/sample", 10, odomCallback);
path_pub = nh.advertise<nav_msgs::Path>("/path",10, true);
ros::spin();
// ros::Rate loop_rate(50);
// loop_rate.sleep();
return 0;
}
rviz文件效果预览图
懒得每次都订阅topic和改坐标系了,就保存了rviz的配置。效果图如下,喜欢的可以拿去偷懒。