ros_navigaiton③ ——里程计信息&基座控制器

1.官方链接

https://wiki.ros.org/cn/navigation/Tutorials/RobotSetup/Odom

2.主要学习内容
了解里程计的数据形式,并且写发布里程计的话题。

nav_msgs/Odometry  格式
Header header
string child_frame_id
geometry_msgs/PoseWithCovariance pose
geometry_msgs/TwistWithCovariance twist

3.学习过程记录
1)要添加依赖包在packag.xml

  nav_msgs
  nav_msgs
  nav_msgs

2)我刚刚调了半天bug 发现是自己把

#include

错拼成了odemetry,然后说一直找不到库,我还以为是我的cmakeList和package.xml错了
3)看看结果
在这里插入图片描述我把cpp文件中的x方向的速度改为0.1,y方向速度改为0.2,水平角速度为0.3
显示的odom如下,从中可以看出两个信息
①twist为速度 有三个平移速度和一个四元数角速度;pose为位置 三个位置 一个四元数姿态
②看到确实四元数只有zw在变化 我觉得是用th算出quat时默认俯仰角和翻滚角为0
ros_navigaiton③ ——里程计信息&基座控制器_第1张图片
4)最后一个问题就是tf是干吗的
我尝试了一下,我发现我把关于tf部分的代码注释上也没有什么区别
(我觉得这是对的,他不应该出现)

 //tf::TransformBroadcaster odom_broadcaster;// 定义一个tf广播者
 // odom_broadcaster.sendTransform(odom_trans);//广播的定义在L11

5)最后的部分是基座控制器
但是这个没有官方教程

导航功能包集假定它可以通过话题"cmd_vel"发布geometry_msgs/Twist类型的消息,这个消息基于机器人的基座坐标系,它传递的是运动命令。这意味着必须有一个节点订阅"cmd_vel"话题,
将该话题上的速度命令(vx, vy, vtheta转换为电机命令(cmd_vel.linear.x, cmd_vel.linear.y,
cmd_vel.angular.z)发送给移动基座。以下列出部分支持基座控制器的平台以及可用的驱动:

你可能感兴趣的:(自动驾驶)