利用listener监听者监听可以获取任意两个TF坐标系之间的位置关系

利用listener监听者监听可以获取任意两个TF坐标系之间的位置关系

  • 代码实例:

    tf::TransformListener listener;//创建监听者
    tf::StampedTransform transform;//创建一个对象用来保存位置关系
        try{
          listener.lookupTransform(frame_id,  ns,
                                   ros::Time(0), transform);//frame_id和ns可以为任意两个无直接关系的坐标系
        }
        catch (tf::TransformException ex){
          ROS_ERROR("%s",ex.what());
          ros::Duration(1.0).sleep();
        }
    //从transform中获取坐标点位
     	point.x = transform.getOrigin().x();
        point.y = transform.getOrigin().y();
        point.z = transform.getOrigin().z();

  • target_frame,这里理解为 数据应转换到的frame, 也就是 tf 的 frame_id ;source_frame ,这里理解为 数据来源的frame, 也就是 tf 的 child_frame_id

  • 源代码:

void lookupTransform(const std::string& target_frame, 
                     const std::string& source_frame,
                     const ros::Time& time, 
                     StampedTransform& transform) const;
  • ros::Time(0),这里时间使用ros::Time(0)获取最新的变化,不使用ros::Time::now()因为程序运行会有延迟无法得到最新时刻的数据。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值