本文整理汇总了C++中Trajectory::getPointsSize方法的典型用法代码示例。如果您正苦于以下问题:C++ Trajectory::getPointsSize方法的具体用法?C++ Trajectory::getPointsSize怎么用?C++ Trajectory::getPointsSize使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Trajectory
的用法示例。
在下文中一共展示了Trajectory::getPointsSize方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: scoreTrajectory
/**
* return a score for trajectory traj
*/
virtual double scoreTrajectory(Trajectory &traj)
{
if(traj.getPointsSize()==0)
return 0.0;
double px, py, pth;
traj.getPoint(0, px, py, pth);
double dist_to_goal = hypot(px-goal_x_, py-goal_y_);
if(dist_to_goal < .2){
return 0.0;
}
double start_diff;
if(!getAngleDiff(px,py,pth,&start_diff))
return -4.0;
if(fabs(start_diff) < max_trans_angle_){
return 0.0;
}
if(fabs(traj.xv_) > 0.0 || fabs(traj.yv_) > 0.0)
return -3.0;
else if( sign(start_diff) != sign(traj.thetav_) )
return -2.0;
traj.getPoint(traj.getPointsSize()-1, px, py, pth);
double end_diff;
if(!getAngleDiff(px,py,pth,&end_diff))
return -1.0;
return fabs(end_diff);
}
示例2: visualize_trajectory
void CalibrateAction::visualize_trajectory(Trajectory &traj)
{
// publishing to rviz
geometry_msgs::PoseArray poses;
for(unsigned int i=0; i<traj.getPointsSize();i++)
{
geometry_msgs::Pose temp_pose;
double x_, y_,th_;
traj.getPoint(i, x_, y_, th_);
tf::quaternionTFToMsg(tf::createQuaternionFromYaw(th_),temp_pose.orientation);
temp_pose.position.x = x_;
temp_pose.position.y = y_;
poses.poses.push_back(temp_pose);
//ROS_INFO("Pose: x: %f y: %f th: %f", x_, y_, th_);
}
geometry_msgs::Pose temp_pose, temp_pose2;
double x_, y_,th_;
traj.getPoint(0, x_, y_, th_);
tf::quaternionTFToMsg(tf::createQuaternionFromYaw(th_),temp_pose.orientation);
temp_pose.position.x = x_;
temp_pose.position.y = y_;
traj.getEndpoint(x_, y_, th_);
tf::quaternionTFToMsg(tf::createQuaternionFromYaw(th_),temp_pose2.orientation);
temp_pose2.position.x = x_;
temp_pose2.position.y = y_;
//ROS_INFO("Visualize trajectory with %i points. First Point (%2.1f,%2.1f), last Point (%2.1f,%2.1f)", traj.getPointsSize(),temp_pose.position.x,temp_pose.position.y,temp_pose2.position.x,temp_pose2.position.y);
poses.header.frame_id = cost_map->getGlobalFrameID();;
estTraj_pub.publish(poses);
}
示例3: scoreTrajectory
double ObstacleCostFunction::scoreTrajectory(Trajectory &traj) {
double cost = 0;
double scale = getScalingFactor(traj, scaling_speed_, max_trans_vel_, max_scaling_factor_);
double px, py, pth;
if (footprint_spec_.size() == 0) {
// Bug, should never happen
ROS_ERROR("Footprint spec is empty, maybe missing call to setFootprint?");
return -9;
}
for (unsigned int i = 0; i < traj.getPointsSize(); ++i) {
traj.getPoint(i, px, py, pth);
double f_cost = footprintCost(px, py, pth,
scale, footprint_spec_,
costmap_, world_model_);
if(f_cost < 0){
return f_cost;
}
if(sum_scores_)
cost += f_cost;
else
cost = f_cost;
}
return cost;
}
示例4: scoreTrajectory
double PathOrientationCostFunction::scoreTrajectory(Trajectory &traj) {
if(traj.getPointsSize()==0)
return 0.0;
double px, py, pth;
traj.getPoint(traj.getPointsSize()-1, px, py, pth);
unsigned int cell_x, cell_y;
//we won't allow trajectories that go off the map... shouldn't happen that often anyways
if ( ! costmap_->worldToMap(px, py, cell_x, cell_y)) {
//we're off the map
ROS_WARN("Off Map %f, %f", px, py);
return -4.0;
}
unsigned int path_index = map_(cell_x, cell_y).index;
if(path_index>=yaws_.size())
return 0.0;
double diff = fabs(angles::shortest_angular_distance(pth, yaws_[path_index]));
if(diff > max_trans_angle_ && (traj.xv_ > 0.0 || traj.yv_ > 0.0))
return -1.0;
else
return diff;
}
示例5: checkTrajectory
bool CalibrateAction::checkTrajectory(Trajectory& traj)
{
unsigned int size = traj.getPointsSize();
float smallest_dist = INFINITY;
bool isValid;
for(unsigned int i = 0; i< size;i++)
{
geometry_msgs::Pose tempPose;
tf::Pose tfPose;
traj.getPoint(i,tempPose.position.x, tempPose.position.y, tempPose.orientation.z);
tf::poseMsgToTF(tempPose, tfPose);
float dist = getDistanceAtPose(tfPose, &isValid);
// to be able to inform about closest distance
if (dist < smallest_dist)
{
smallest_dist = dist;
}
if ((dist < traj_dist_threshold) && (dist != -INFINITY) && (dist != INFINITY)) // prevent negative infinity value from crashing us
{
ROS_INFO("Critical distance was %f at point %i, point valid: %i", dist, i, isValid);
return false;
}
}
//ROS_INFO("Trajectory check successful, smallest distance was: %f", smallest_dist);
return true;
/*
unsigned int size = traj.getPointsSize();
float smallest_dist = INFINITY;
for(unsigned int i = 0; i< size;i++)
{
geometry_msgs::Pose testPose;
traj.getPoint(i,testPose.position.x, testPose.position.y, testPose.orientation.z);
float dist = voronoi_.getDistance(testPose.position.x, testPose.position.y); // get closest distance from trajectory point to an obstacle
dist *= costmap_.getResolution(); // distance now in meters
if (dist < smallest_dist)
{
smallest_dist = dist;
}
if ((dist < traj_dist_threshold) && (dist != -INFINITY) && (dist != INFINITY)) // prevent negative infinity value from crashing us
{
ROS_INFO("Critical distance was %f at point %i", dist, i);
return false;
}
}
*/
}
示例6: scoreTrajectory
double MapGridCostFunction::scoreTrajectory(Trajectory &traj) {
double cost = 0.0;
if (aggregationType_ == Product) {
cost = 1.0;
}
double px, py, pth;
double grid_dist;
for (unsigned int i = 0; i < traj.getPointsSize(); ++i) {
traj.getPoint(i, px, py, pth);
grid_dist = scoreCell(px, py, pth);
if(stop_on_failure_){
if (grid_dist == map_.obstacleCosts()) {
return -3.0;
} else if (grid_dist == map_.unreachableCellCosts()) {
return -2.0;
}
}
switch( aggregationType_ ) {
case Last:
cost = grid_dist;
break;
case Sum:
cost += grid_dist;
break;
case Product:
if (cost > 0) {
cost *= grid_dist;
}
break;
}
}
double factor = costmap_->getResolution() * 0.5;
return cost * factor;
}