私はポイントクラウドの固定サイズのバッファ(3要素)を作成する必要があります。
は、私は(私はROSに取り組んでいる)私のコールバックで素朴な方法を試してみましたこれを行うには:ベクトルバッファのベクトル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;
}
}
}
しかし、この方法は私には少し荒いようではなく、効率的ですべて。
誰かが私にしたいと思うよりエレガントで効率的な方法を提案するかもしれませんか? ありがとうございます
よろしくお願いします
を実装することができた位置にある要素にアクセスすることであろうstd :: replace method私はそれがもっとcopmpactlyになると思います –