【古月居ROS21讲】17 机器人中的坐标变化
坐标变换
参考书籍《机器人学导论》
机器人学导论都会用两章的章节来描述平移的变换和旋转 来变化
在ros当中这个理论相当的重要 ,相当的基础
机器人中的坐标变化
- 机器人摄像头坐标系和底盘坐标系关系变化,在ros 中tf功能包可以通过功能包完成查询等操作
- tf功能包具有时间属性,会保存10秒钟之内的所有坐标的变化
- 帮助我们去实现机器人中比较繁杂的功能和实现
- TF的坐标系可以通过查询得到
TF功能包能干什么?
TF坐标变换如何实现?
TF机器人中的坐标变换
移动机器人案例:建模时会给底盘的中心点做坐标变换,有x方向,有y方向
底盘有激光雷达,激光雷达到墙之间的距离可以检测到相对应之间的距离
可以轻松得出平移关系
、这里我们检测出来得到的激光雷达到墙的距离
而我们往往需要得到的的小车到墙之间的距离
这时我们就可以通过tf功能包去得到 他
实际的海龟案例
这里我们可以通过一个实际的海龟案例来分析这个场景
首先是 我们使用键盘控制中间的海龟移动 ,另一只海龟以跟随的方式跟随这中间的海龟移动
实际操作代码
安装tf功能包:
sudo apt-get install ros-melodic-turtle-tf
- 运行指令
ros 是启动 一个launch文件 ,lanunch是启动一个脚本文件 ,启动很多节点的
roslaunch turtle_tf turtle_tf_demo.launch
- 运行海龟的键盘控制节点
rosrun turtlesim turtle_teleop_key
运行之后可以看到 通过键盘控制海龟跟随
- 可以看到海龟还会抄近道
实现原理
当面ros环境下
首先我们运行rosrun view
rosrun tf view_frames
view可视化工具 结合tf 可以监听所有坐标系关系 还会生成pdf文件 ,默认放到你的主文件下的
就是这样一个pdf文件
在当前海龟仿真器中的 全值坐标系
分别位于两只海龟之上,一共有三个位置中的坐标系。
这两个坐标系相对于坐标的关系是在平移之间上是重叠
所以这个坐标系是一个变换关系
动态描述
rosrun tf tf_echo turtle1 turtle2
可以动态观察到坐标的数据变换
数据分析
- Rotation: in Quaternion [-0.000, -0.000, 0.559, 0.829]
in RPY (radian) [-0.000, -0.000, 1.186]
in RPY (degree) [-0.000, -0.000, 67.959] - Rotation: in Quaternion 是通过四元数来描述的
- in RPY (radian) 是通过弧度来描述的
- in RPY (degree) 是通过角度来描述的
可视化工具
RVIZ 三维可视化工具
首先安装 rviz工具包
sudo apt-get install ros-melodic-rviz
然后运行rviz 跟踪海龟脚本
rosrun rviz rviz -d `rospack find turtle_tf`/rviz/turtle_rviz.rviz
这里记得要切换 成word
记得添加tf
可以看到在键盘上操控海龟可以看到海龟仿真器运行3D仿真的效果图了