für meine Anwendung muss ich eine feste Größe Puffer (3 Elemente) von Punktwolken erstellen.
Um dies zu tun ich die naive Art und Weise in meinem Rückruf versucht (Ich arbeite an ROS):Vektor Vektor Puffer C++
vector< vector<Point2d> > points_buffer(3); // buffer of point clouds ,fixed size = 3
void laserToWorldCallback(const icars_laser_roi::stx_points::ConstPtr& laser_points, const icars_2d_map_manager::Status::ConstPtr& car_pos){
double x_w, y_w;
double x, y;
vector<Point2d> temp;
for(int i = 0; i < laser_points->points_x.size(); i++){
// get the coordinates
x = laser_points->points_x[i];
y = laser_points->points_y[i];
// tranform the coordinates
x_w = car_pos->xGlobal + x*cos(car_pos->yaw) - y*sin(car_pos->yaw);
y_w = car_pos->yGlobal + x*sin(car_pos->yaw) + y*cos(car_pos->yaw);
temp.push_back(Point2d(x_w, y_w));
}
if(points_buffer.size() != 3){ // the buffer is not empty
points_buffer.push_back(temp);
}else{ // the buffer is empty, delete last element and push_back
// delete last element
points_buffer[0] = points_buffer[1];
points_buffer[1] = points_buffer[2];
points_buffer[3] = temp;
}
}
}
Aber so scheint mir ein wenig rau und überhaupt nicht effizient.
Könnte mir jemand eine elegantere und effizientere Art vorschlagen, was ich will? Danke
Grüße
Sie verwenden können, implementieren könnte std :: ersetzen Methode ich denke, es wird mehr coppmactly –