如何在ROS系统中在地图上获取小车的点位信息
1打开仿真环境
首先找到工作空间下的gazebo下三simulation.launch文件,这个文件里包含的是地图环境和机器人模型,在工作空间的根目录下,运行以下命令。
roslaunch 功能包中对应的gazebo包 simlution.launch
出现gazebo窗口
2找到机器人点位的话题名称
新建终端,输入 rostopic list ,会出现一系列的话题名称,odom为机器人的点位信息名称(大多数情况是odom,也有可能不是odom,自己根据对应文档更换),我的话题名称为/tianracer_01/odom,先找出来。
3键盘控制改变点位信息
再在自己的工作空间的gazebo模块下的scripts文件夹下找到keyboard_teleop.py文件,这个就是键盘控制文件,在工作空间的根目录下输入
rosrun 功能包中对应的gazebo包 keyboard_teleop.py
会出现tk窗口,把tk窗口放在gazebo窗口的上层就可以控制wsad控制下车走到你想获取点位信息的位置上,(把keyboard_teleop.py文件的speed速度调小一点方便控制,点左右ad时小车停止)
4获取点位信息
在控制小车走到目标位置是停下,打开一个新的终端,在主目录下就可以,输入rostopic echo /tianracer_01/odom(我本地的话题名称换成你自己的),会反馈出来如下信息,x,y,z是三维坐标,x,y,z,w是旋转角度方向的参数。
twist消息包含了以下信息:
linear:这是一个三维向量,表示机器人在三个坐标轴方向上的线速度(单位可以是米/秒或者其他你所使用的单位)。例如,如果机器人正在向前移动,这个向量的 x 分量可能是正数,而 y 和 z 分量可能是零。
angular:这也是一个三维向量,表示机器人在三个旋转轴(通常是绕 x、y 和 z 轴)上的角速度。单位通常是弧度/秒或者其他角度单位。
之前自己找的时候没有现成的教程,在此分享一下我的学习经验,如有错误请各位大佬指出杭一在这里谢过了。