从tf获取机器人位置

    tf::Stamped<tf::Pose> ident;
    tf::Stamped<tf::Transform> robot_pose;
    ident.setIdentity();
    ident.frame_id_ = "base_link";
    ident.stamp_ = scan->header.stamp; //ros::Time::now();
    try
    {
        tf_.transformPose("map", ident, robot_pose);
//        float dx = std::abs(robot_pose.getOrigin().x() - last_pose_.x);
//        float dy = std::abs(robot_pose.getOrigin().y() - last_pose_.y);
//        float dthe = std::abs(tf::getYaw(robot_pose.getRotation()) - last_pose_.theta);
//        tf::Quaternion q = tf::createQuaternionFromYaw(last_pose_.theta);

        myout<<ndt_x<<" " <<robot_pose.getOrigin().x()<<" "<<ndt_y<<" "<<robot_pose.getOrigin().y()<<" "<< pose_z<<" "<<robot_pose.getOrigin().z() <<std::endl;
        pose_z = pose_z + 0.00001;
    }
    catch(tf::TransformException e)
    {
        ROS_WARN("Failed to compute robot pose from tf, aborting initialization (%s)", e.what());
    }

 

 

geometry_msgs::Pose current_pose_ros;
  tf::StampedTransform transform;
  try {
        tf_.lookupTransform("/map","/base_link", ros::Time(0), transform);
    } catch (std::exception e ) {
        ROS_ERROR("move base cannot get robot pose!");
        return;
  }
  geometry_msgs::TransformStamped transform_pose;
  tf::transformStampedTFToMsg(transform, transform_pose);
  current_pose_ros.position.x = transform.getOrigin().x();
  current_pose_ros.position.y = transform.getOrigin().y();
  current_pose_ros.position.z = 0.0;
  current_pose_ros.orientation=transform_pose.transform.rotation;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值