随笔 - 53  文章 - 0  评论 - 5  阅读 - 5797

2024.10.2 坐标变化 + 背包问题剩下的题

项目

学习

ros坐标变化

总结

有关ros坐标变换

坐标变换的背景:考虑这么一个场景,地面基地在用无人机跟拍一只鸟,那么现在无人机和基地分别构成了两个坐标系,那么基地想要知道鸟相对于基地的坐标要怎么做?
ROS中引入了 tf 这个包来做变换。
其中平移变换用tfs.transform.translation部分的内容:

tfs.header.stamp = ros::Time::now();
    tfs.header.frame_id = "base_link";  // 被参考的那个
    tfs.child_frame_id = "laser";
    tfs.transform.translation.x = 0.2;
    tfs.transform.translation.y = 0.0;
    tfs.transform.translation.z = 0.5;

而旋转变换用的是tfs.transform.rotation部分来描述:

tf2::Quaternion qtn;  // 可以自动将欧拉角(仰角等)转化为四元数
    qtn.setRPY(0, 0, 0);  // 欧拉角单位是弧度
    tfs.transform.rotation.x = qtn.getX();
    tfs.transform.rotation.y = qtn.getY();
    tfs.transform.rotation.z = qtn.getZ();
    tfs.transform.rotation.w = qtn.getW();

这里会将欧拉角转换为四元数,是为了避免一个叫做万向节死锁的问题,也就是欧拉角有时候会出现转向复杂无法表示的情况,但是四元数避免了这个问题。

tf中传递坐标消息用的是自己封装的geometry_msg消息,不是普通的msg类型的消息,它还将话题封装为/tf,只需要传入父坐标系,子坐标系,两个坐标系的变换关系(这是可以实时得到的)以及某个点相对于其中一个参考系得坐标就可以得到这个点相对于另一个参考系的坐标。

posted on   Laurance  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示