ROS 学习应用篇(七)ROS中的坐标变换管理之tf初探
坐标变化是机器人中很重要的内容,但是要是概括下来无非就是旋转和平移矩阵。
小海龟跟随实验
做的是两个小海龟之间的跟随,其实就相当于视觉设备和本体设备见有一定的位置差在ros平台下tf坐标变化的实验
首先安装海龟tf变换包
新开终端输入
sudo apt-get install ros-noetic-turtle-tf
我是 ubuntu20.04 所以是noetic其他版本的ubuntu对应的ros版本号去本专栏《ros一键安装(全)》中查看
用launch包启动 ,后面会陆续学到怎么封装launch文件
roslaunch turtle_tf turtle_tf_demo.launch
报错如下:
是因为在其目录中找的是python的编译器,但是ROS安装是安装的是python3.8(这里以noetic)所以他的编译器的名称是python3,而不是python所以在运行的时候就会报错。
解决方案:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1
再次输入
roslaunch turtle_tf turtle_tf_demo.launchh
这回能看到两只小海龟了
启动海龟键盘控制节点
rosrun turtlesim turtle_teleop_key
小海龟一直在跟随。
启动tf里面的一个可视化工具
rosrun tf view_frames
报错如下:
错误提示89和119行有问题,按照他提示的路径修改低89行代码如下,这也是Python版本不兼容造成的,因为是python3.8有很多包和库会不一样,需要做出修改,这种时候学会查看错误提示就很重要了。
文件只读所以输入
sudo vim (拖拽文件到终端就会自动输入文件)
回车
点击esc按键
输入:wq
(英文状态下输入)
即可保存并退出
重新输入
rosrun tf view_frames
编译成功的结果如下
自动保存的frames.pdf在当前目录下。
上面这个图是两个节点与跟坐标系三个坐标系间的关系
那么可以通过一下代码查看两两坐标系间对应的变换
rosrun tf tf_echo turtle1 turtle2
可以看到这张图中有平移矩阵和旋转矩阵。
同理查看世界坐标系word 和海龟1间变换关系的代码如下:
rosrun tf tf_echo turtle1 world
接下里就是rivz的学习段了
rviz 启动
rosrun rviz rviz -d 'rospack find turtle_tf'/rviz/turtle_rviz/rviz
% 初步分析这行代码的意思是rviz到搜索turtlr_tf文件下的rviz/turtle_rviz.rviz
打开rviz可视化窗口后
fixed Frame改成world 原来的是map但是我们并没有地图。
添加tf
弹出窗口点击tf→ok