当前位置: 首页>>代码示例>>C++>>正文


C++ Vector3::distance方法代码示例

本文整理汇总了C++中tf::Vector3::distance方法的典型用法代码示例。如果您正苦于以下问题:C++ Vector3::distance方法的具体用法?C++ Vector3::distance怎么用?C++ Vector3::distance使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在tf::Vector3的用法示例。


在下文中一共展示了Vector3::distance方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: DistanceFromLineSegment

 double DistanceFromLineSegment(
     const tf::Vector3& line_start,
     const tf::Vector3& line_end,
     const tf::Vector3& point)
 {    
   return point.distance(ProjectToLineSegment(line_start, line_end, point));
 }
开发者ID:kylerlaird,项目名称:tractobots,代码行数:7,代码来源:geometry_util.cpp

示例2: jumped

bool Hand_filter::jumped(const tf::Vector3& p_current,const tf::Vector3& p_previous, const float threashold) const{
    if(p_current.distance(p_previous) < threashold){
        return false;
    }else{
        return true;
    }
}
开发者ID:gpldecha,项目名称:sensor_models,代码行数:7,代码来源:hand_filter.cpp

示例3: farthestPoint

int farthestPoint(const tf::Vector3& point, const std::vector<tf::Vector3>& hand_positions)
{
  double dist, max_distant = 0;
  size_t index = 0;
  for (size_t i = 0; i < hand_positions.size(); i++)
  {
    dist = point.distance(hand_positions[i]);
    if (dist > max_distant)
    {
      max_distant = dist;
      index = i;
    }
  }
  return index;
}
开发者ID:hiveground-ros-package,项目名称:hiveground_image_pipeline,代码行数:15,代码来源:pcl_hand_arm_detector.cpp

示例4: update

void Jumps::update(tf::Vector3& origin,tf::Quaternion& orientation){

    if(bFirst){

        origin_buffer.push_back(origin);
        orientation_buffer.push_back(orientation);

        if(origin_buffer.size() == origin_buffer.capacity()){
            bFirst = false;
            ROS_INFO("====== jump filter full ======");
        }

    }else{

        origin_tmp      = origin_buffer[origin_buffer.size()-1];
        orientation_tmp = orientation_buffer[orientation_buffer.size()-1];

        if(bDebug){
            std::cout<< "=== jum debug === " << std::endl;
            std::cout<< "p    : " << origin.x() << "\t" << origin.y() << "\t" << origin.z() << std::endl;
            std::cout<< "p_tmp: " << origin_tmp.x() << "\t" << origin_tmp.y() << "\t" << origin_tmp.z() << std::endl;
            std::cout<< "p_dis: " << origin.distance(origin_tmp) << std::endl;

            std::cout<< "q    : " << orientation.x() << "\t" << orientation.y() << "\t" << orientation.z() <<  "\t" << orientation.w() << std::endl;
            std::cout<< "q_tmp: " << orientation_tmp.x() << "\t" << orientation_tmp.y() << "\t" << orientation_tmp.z() << "\t" << orientation_tmp.w() << std::endl;
            std::cout<< "q_dis: " << dist(orientation,orientation_tmp) << std::endl;
        }

        /// Position jump
        if(jumped(origin,origin_tmp,origin_threashold)){
            ROS_INFO("position jumped !");
            origin = origin_tmp;
           // exit(0);
        }else{
            origin_buffer.push_back(origin);
        }

        /// Orientation jump
        if(jumped(orientation,orientation_tmp,orientation_threashold)){
            ROS_INFO("orientation jumped !");
            orientation = orientation_tmp;
            //exit(0);
        }else{
            orientation_buffer.push_back(orientation);
        }
    }
}
开发者ID:gpldecha,项目名称:optitrack_rviz,代码行数:47,代码来源:filter.cpp

示例5: navCB

  void navCB(const ardrone_autonomy::NavdataConstPtr& nav_msg)
  {
    if (last_stamp > nav_msg->header.stamp)
      got_first_nav = false;

    if (!got_first_nav)
    {
      // clear markers
      markers.init();

      // clear ekf
      kalman_filter.initFilter();

      // clear rest
      lastMarkerPos = tf::Vector3(0, 0, 0);
      sumRelPos = tf::Vector3(0, 0, 0);
      numRelPos = 0;
      lastPos1t = -1;
      lastPos95t = 1;
      lastPublished = ros::Time::now();

      // init
      got_first_nav = true;
      last_stamp = nav_msg->header.stamp;
      last_yaw = nav_msg->rotZ;

      return;
    }

    // calc time diff
    double dt_s = (nav_msg->header.stamp - last_stamp).toNSec() / (1000.0 * 1000.0 * 1000.0);
    last_stamp = nav_msg->header.stamp;

    // calc dx, dy
    // transforme to "our" drone CO
    float dx = -dt_s * nav_msg->vy / 1000; // in m/s
    float dy = dt_s * nav_msg->vx / 1000; // in m/s

    // predict EKF
    Eigen::Vector3f odometry;
    odometry(0) = dx; // local position update
    odometry(1) = dy; // local position update
    odometry(2) = (nav_msg->rotZ - last_yaw) / 180 * M_PI; // treat absolute value as incremental update

    last_yaw = nav_msg->rotZ;

    // update pose of robot according to odometry measurement
    // this also increases the uncertainty of the filter
    kalman_filter.predictionStep(odometry);

    float vx_global = cos(kalman_filter.state(2)) * odometry(0) - sin(kalman_filter.state(2)) * odometry(1);
    float vy_global = sin(kalman_filter.state(2)) * odometry(0) + cos(kalman_filter.state(2)) * odometry(1);

    tf::Vector3 pos = tf::Vector3(kalman_filter.state[0], kalman_filter.state[1], nav_msg->altd / 1000.0);

    visnav_project::State s;
    s.header = nav_msg->header;
    s.x = pos.x();
    s.y = pos.y();
    s.z = pos.z();
    s.vx = vx_global;
    s.vy = vy_global;
    s.yaw = kalman_filter.state[2];
    pub_pose.publish(s);

    // only publish at 30hz....
    if ((ros::Time::now() - lastPublished).toSec() > 0.01)
    {

      // add to ekf_marker
      ekf_marker.addFilterState(kalman_filter.state, kalman_filter.sigma, nav_msg->altd / 1000.0);

      // make pos
      tf::Vector3 pos = tf::Vector3(kalman_filter.state[0], kalman_filter.state[1], nav_msg->altd / 1000.0);
      tf::Transform transform;
      transform.setOrigin(pos);
      transform.setRotation(tf::Quaternion(0, 0, M_PI / 2 + kalman_filter.state[2]));

      // add to marker array?
      if (lastMarkerPos.distance(pos) > 0.1)
      {
        //markers.addMarkerPose(tf::StampedTransform(transform, nav_msg->header.stamp, "/world", "/ardrone"));
        lastMarkerPos = pos;
      }

      // publish
      ekf_marker.publish_last_n_states(1);
      markers.publish_markers();

      lastPublished = ros::Time::now();
    }
  }
开发者ID:hazirbas,项目名称:VisNav13_Project,代码行数:92,代码来源:main.cpp


注:本文中的tf::Vector3::distance方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。