一、机器人中的坐标变换理论
参考:《机器学导论》
二、小海龟跟随实验
-
$ sudo apt-get install ros-noetic-turtle-tf
安装对应版本的tf功能包 -
$ roslaunch turtle_tf turtle_tf_demo.launch
启动launch文件 -
$ rosrun turtlesim turtle_teleop_key
使用键盘控制海龟运动,可以看到另一只海龟会跟随键盘所控制的这只海龟运动 -
$ rosrun tf view_frames
运行view_frames工具
此处遭遇报错:
Listening to /tf for 5.0 seconds
Done Listening
b'dot - graphviz version 2.43.0 (0)\n'
Traceback (most recent call last):
File "/opt/ros/noetic/lib/tf/view_frames", line 119, in <module>
generate(dot_graph)
File "/opt/ros/noetic/lib/tf/view_frames", line 89, in generate
m = r.search(vstr)
TypeError: cannot use a string pattern on a bytes-like object
解决方案:
$ sudo gedit /opt/ros/noetic/lib/tf/view_frames
将第89行改成m = r.search(vstr.decode('utf-8'))
生成的坐标信息pdf文件默认保存在主目录下,其中,world坐标表示世界坐标系(原点是仿真器左下角的(0,0)点),其余两只海龟都是一个坐标系(原点是海龟本身位置)
-
$ rosrun tf tf_echo turtle1 turtle2
使用另一个工具实时显示两海龟之间的位置关系
- Translation: [0.000, 0.000, 0.000] ##表示所控制海龟当前坐标系的x,y,z方向上的平移量
- Rotation: in Quaternion [0.000, 0.000, 0.737, 0.676] ##Rotation表示怎样的旋转可以变换到海龟当前坐标系,Quaternion即四元数表示,radian即弧度制表示,degree即角度制表示
in RPY (radian) [0.000, -0.000, 1.657]
in RPY (degree) [0.000, -0.000, 94.949]
-
$ rosrun rviz rviz -d `rospack find turtle_tf` /rviz/turtle_rviz.rviz
使用另一个工具rviz查看两只海龟之间的位置关系(启动后将Fixed Frame改成world,点击左下角Add,添加TF工具后点击OK,具体操作在视频P17 16’30’’)