117 const ::std::string&,
118 const ::armarx::LaserScan&,
119 const ::armarx::TimestampBasePtr&,
120 const ::Ice::Current&)
override;
171 void setupMappingAdapter();
174 std::unique_ptr<cartographer_adapter::CartographerAdapter> mappingAdapter;
178 std::unique_ptr<cartographer_adapter::ArVizDrawer> arvizDrawer;
181 std::unique_ptr<MappingRemoteGui> mappingRemoteGui;
182 std::unique_ptr<LocalizationRemoteGui> localizationRemoteGui;
191 bool mapCreated{
false};
199 RemoteGuiInterfacePrx remoteGui;
210 armarx::data::PackagePath mapPath{.package =
"PriorKnowledgeData",
211 .path =
"maps/cartographer"};
213 std::string mapStorageSubDir;
215 armarx::data::PackagePath mapToLoad{.package =
"PriorKnowledgeData",
216 .path =
"maps/cartographer/..."};
218 armarx::data::PackagePath cartographerConfigPath{.package =
219 "armarx_localization_and_mapping",
220 .path =
"cartographer/config/"};
223 bool enableVisualization =
true;
224 bool enableMappingVisualization =
true;
228 int odomQueryPeriodMs = 20;
229 int occupancyGridMemoryUpdatePeriodMs = 1000;
231 bool useNativeOdometryTimestamps =
true;
232 bool useNativeLaserscannerTimestamps =
true;
234 std::string laserScanners;
238 float global_localization_min_score = 0.5;
241 float obstacleRadius = 500;
243 float occupiedThreshold = 0.55;
247 Throttler throttlerLaserScansMemoryWriter{10.F};
248 Throttler throttlerOccupancyGridMemoryWriter{10.F};
250 Throttler throttlerArviz{10.F};
252 std::unique_ptr<cartographer_adapter::ArVizDrawerMapBuilder> arVizDrawerMapBuilder;
254 std::optional<FrequencyReporter> laserDataReporter;
255 std::optional<FrequencyReporter> odomDataReporter;
256 std::optional<FrequencyReporter> slamResultReporter;
263 std::experimental::observer_ptr<armem::client::plugins::ReaderWriterPlugin<
264 armem::vision::occupancy_grid::client::Writer>>
265 occupancyGridWriterPlugin;
267 std::experimental::observer_ptr<
268 armem::client::plugins::ReaderWriterPlugin<navigation::memory::client::costmap::Writer>>
271 std::experimental::observer_ptr<
272 armem::client::plugins::ReaderWriterPlugin<armem::robot_state::RobotReader>>
275 Eigen::Isometry3f world_T_map = Eigen::Isometry3f::Identity();
276 std::optional<Eigen::Isometry3f> map_T_robot = std::nullopt;
278 std::atomic_bool receivingData{
false};
281 std::optional<Eigen::Isometry3f> globalPose()
const;
290 int64_t lastTimestamp = 0;
291 std::atomic_bool robotIsMoving =
false;
293 plugins::HeartbeatComponentPlugin* heartbeatPlugin =
nullptr;