Guest User

Untitled

a guest
Jul 19th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.30 KB | None | 0 0
  1. std::string config_file = "../../../laser_odometry.ini";
  2. std::string rawlog_fname = "";
  3. std::string fname_GT = "";
  4. auto node_reg = mrpt::graphslam::deciders::CICPCriteriaNRD<mrpt::graphs::CNetworkOfPoses2DInf>{};
  5. auto edge_reg = mrpt::graphslam::deciders::CICPCriteriaERD<mrpt::graphs::CNetworkOfPoses2DInf>{};
  6. auto optimizer = mrpt::graphslam::optimizers::CLevMarqGSO<mrpt::graphs::CNetworkOfPoses2DInf>{};
  7.  
  8. auto win3d = mrpt::gui::CDisplayWindow3D{"Slam", 800, 600};
  9. auto win_observer = mrpt::graphslam::CWindowObserver{};
  10. auto win_manager = mrpt::graphslam::CWindowManager{&win3d, &win_observer};
  11.  
  12. auto engine = mrpt::graphslam::CGraphSlamEngine<mrpt::graphs::CNetworkOfPoses2DInf>{
  13. config_file, rawlog_fname, fname_GT, &win_manager, &node_reg, &edge_reg, &optimizer};
  14.  
  15. for (size_t measurement_count = 0;;) {
  16. // grab laser scan from the network, then fill it (hardcoded values for now), e.g:
  17. auto scan_ptr = mrpt::obs::CObservation2DRangeScan::Create();
  18. scan_ptr->timestamp = std::chrono::system_clock::now().time_since_epoch().count();
  19. scan_ptr->rightToLeft = true;
  20. scan_ptr->sensorLabel = "";
  21. scan_ptr->aperture = 3.14; // rad (max-min)
  22. scan_ptr->maxRange = 3.0; // m
  23. scan_ptr->sensorPose = mrpt::poses::CPose3D{};
  24.  
  25. scan_ptr->resizeScan(30);
  26. for (int i = 0; i < 30; ++i) {
  27. scan_ptr->setScanRange(i, 0.5);
  28. scan_ptr->setScanRangeValidity(i, true);
  29. }
  30.  
  31. { // Send LaserScan measurement to the slam engine
  32. auto obs_ptr = std::dynamic_pointer_cast<mrpt::obs::CObservation>(scan_ptr);
  33. engine.execGraphSlamStep(obs_ptr, measurement_count);
  34. ++measurement_count;
  35. }
  36.  
  37.  
  38. // grab odometry from the network, then fill it (hardcoded values for now), e.g:
  39. auto odometry_ptr = mrpt::obs::CObservationOdometry::Create();
  40. odometry_ptr->timestamp = std::chrono::system_clock::now().time_since_epoch().count();
  41. odometry_ptr->hasVelocities = false;
  42. odometry_ptr->odometry.x(0);
  43. odometry_ptr->odometry.y(0);
  44. odometry_ptr->odometry.phi(0);
  45.  
  46. { // Send Odometry measurement to the slam engine
  47. auto obs_ptr = std::dynamic_pointer_cast<mrpt::obs::CObservation>(odometry_ptr);
  48. engine.execGraphSlamStep(obs_ptr, measurement_count);
  49. ++measurement_count;
  50. }
  51.  
  52. // Get pose estimation from the engine
  53. auto pose = engine.getCurrentRobotPosEstimation();
  54.  
  55. }
Add Comment
Please, Sign In to add comment