目录本系列教程作者:小鱼
公众号:鱼香ROS
QQ交流群:139707339
教学视频地址:小鱼的B站
完整文档地址:鱼香ROS官网
版权声明:如非允许禁止转载与商业用途。
- 《动手学机器人学》第一节:数学基础–矩阵
- 《动手学机器人学》第二节:MiniConda、JupyterNotebook与ROS2
- 《动手学机器人学》第三节:动手学数学基础,使用NumPy *** 作矩阵
- 《动手学机器人学》第四节(上):位姿描述
- 《动手学机器人学》第四节(下):一文搞懂坐标变换
- 《动手学机器人学》第五节(上):动手学空间姿态描述与变换
- 《动手学机器人学》第五节(中):使用ROS2的TF2进行坐标变换
- 《动手学机器人学》第五节(下):使用Python *** 作TF
- 更新中…欢迎关注小鱼公众号鱼香ROS,第一时间获取更新
大家好,我是小鱼,上一节我们学习了使用TF2,本节课我们尝试使用Python进行坐标变换的广播和监听。
4.python *** 作tf2坐标变换运行前面安装的jupyter,我们尝试使用代码来 *** 作tf
在开始之前,我们总结下TF相关的 *** 作有哪些?
- 广播(TransformBroadcaster):将坐标系鱼坐标系之间的位姿态关系发布出去
- 监听(TransformListener):获取坐标系和坐标之间的位姿关系
- TF(坐标变换TransformStamped)帧:广播出去的一组数据可以称作一个TF帧,包含父坐标系名称、子坐标系名称,父坐标系和子坐标系之间的关系
接着我们就可以编写代码来实现上面对TF帧的发布和监听。
4.1 坐标变换广播在进行坐标变换广播前,我们根据两个坐标系之间的关系是否会随着时间变化分出以下两种情况:
- 坐标系之间的关系不随时间推移而改变,称之为静态坐标变换,需要使用静态广播发布器(StaticTransformBroadcaster)发布。比如:机器人的两个轮子之间关系,可以认为随时间的变换其相对位置不变。
- 坐标系之间的关系随时间的推移而改变,称之为(动态)坐标变换,使用广播发布器(TransformBroadcaster)发布坐标关系。比如机器人在世界坐标系中的位置,因为机器人会动。
我们依然使用手眼系统为例,尝试使用广播发布器来发布坐标系之间的关系。
在手眼系统中,机械臂基座和相机坐标系之间的位置是固定不变的,我们可以通过静态广播发布器来发布,而相机坐标系下工件的位置是实时识别得到的,其值会随时间变换,故我们用广播发布器来发布。
在jupyter中输入并运行以下程序,使用方式就像ros2的话题发布,只不过不需要指名发布的话题(发布到系统的TF树上)。
原程序地址:tf2_static_tf_publish.ipynb
这里四元数的值需要通过在线的坐标转换获取,选择角度,绕x轴旋转180,上面就是对应的四元数,x,y,z,w为1,0,0,0
最后通过坐标监听工具可以查找出B和C之间的关系:
4.1.2 广播发布器注意这里输出的At time 0.0 代表任意时刻
接着我们来使用广播发布器发布C和工具P之间的关系平移:x:2 y:1 z:2 旋转:qx:0 qy:0 qz:0 qw:1
只需要将上面的静态广播发布器改为广播发布器,但需要注意的是,发布坐标变换时要以一定的频率实时发布,这样当我们获取坐标时才能获取到当前时刻的坐标(有点不好理解,就是坐标关系和时间有关系)。
原程序地址:tf2_tf_publish.ipynb
同样也可以使用命令行获取到C和P之间关系。
也可以通过命令行获取到B和P之间关系,完成手眼转换
4.2 坐标变换监听注意这里的结果中的时间:At time 1637494822.281105208.代表具体的某一个时刻,不同时刻坐标之间的平移和旋转可以不同
所谓坐标变换监听就是通过监听整个系统的坐标变换关系.
通过TransformListener即可获取到整个tf系统中窗口大小为10s的坐标关系,并且我们创建了一个buffer,TransformListener会把收到的坐标关系放入buffer中,我们后面就可以通过buffer的lookup_transform()函数获取到坐标之间的关系。
可以看到最终打印的结果和我们上面用命令行和numpy计算结果一致。原程序地址:tf2_tf_listener.ipynb
技术交流&&问题求助:
- 微信公众号及交流群:鱼香ROS
- 小鱼微信:AiIotRobot
- QQ交流群:139707339
- 版权保护:已加入“维权骑士”(rightknights.com)的版权保护计划
我是小鱼,机器人领域资深玩家,现深圳某独脚兽机器人算法工程师一枚
初中学习编程,高中开始接触机器人,大学期间打机器人相关比赛实现月入2W+(比赛奖金)
目前在输出机器人学习指南、论文注解、工作经验,欢迎大家关注小鱼,一起交流技术,学习机器人
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)