ros c++ src code

ros src code

tf 订阅转换:
  初始化,一个transform:
  tf::Transform map_to_odom_;  
  map_to_odom_(tf::Transform(tf::createQuaternionFromRPY( 0, 0, 0 ), tf::Point(0, 0, 0 )));

  tf::TransformListener tf_;
  float max_duration_buffer = 0.2;
  tf_(ros::Duration(max_duration_buffer);
  laser_frame_ = "scan";
  // Get the laser's pose, relative to base.
  tf::Stamped<tf::Pose> ident;
  tf::Stamped<tf::Transform> laser_pose;
  ident.setIdentity();
  ident.frame_id_ = laser_frame_;
  ident.stamp_ = scan.header.stamp;
  try
  {
    tf_.transformPose("base_link", ident, laser_pose);
  }
  catch(tf::TransformException e)
  {
    ROS_WARN("Failed to compute laser pose, aborting initialization (%s)",
             e.what());
    return false;
  }
  double yaw = tf::getYaw(odom_pose.getRotation());
  double x = odom_pose.getOrigin().x();
  double y = odom_pose.getOrigin().y();


  // create a point 1m above the laser position and transform it into the laser-frame
  tf::Vector3 v;
  v.setValue(0, 0, 1 + laser_pose.getOrigin().z());
  tf::Stamped<tf::Vector3> up(v, scan.header.stamp,
                                      base_frame_);
  try
  {
    tf_.transformPoint(laser_frame_, up, up);
    ROS_DEBUG("Z-Axis in sensor frame: %.3f", up.z());
  }
  catch(tf::TransformException& e)
  {
    ROS_WARN("Unable to determine orientation of laser: %s",
             e.what());
  }

猜你喜欢

转载自www.cnblogs.com/heimazaifei/p/12554623.html