117 const ::std::string&,
118 const ::armarx::LaserScan&,
119 const ::armarx::TimestampBasePtr&,
120 const ::Ice::Current&)
override;
171 void setupMappingAdapter();
176 void storeOccupancyGridAndCostmapInMemory();
179 std::unique_ptr<cartographer_adapter::CartographerAdapter> mappingAdapter;
183 std::unique_ptr<cartographer_adapter::ArVizDrawer> arvizDrawer;
186 std::unique_ptr<MappingRemoteGui> mappingRemoteGui;
187 std::unique_ptr<LocalizationRemoteGui> localizationRemoteGui;
196 bool mapCreated{
false};
204 RemoteGuiInterfacePrx remoteGui;
215 armarx::data::PackagePath mapPath{.package =
"PriorKnowledgeData",
216 .path =
"maps/cartographer"};
218 std::string mapStorageSubDir;
220 armarx::data::PackagePath mapToLoad{.package =
"PriorKnowledgeData",
221 .path =
"maps/cartographer/..."};
223 armarx::data::PackagePath cartographerConfigPath{.package =
224 "armarx_localization_and_mapping",
225 .path =
"cartographer/config/"};
228 bool enableVisualization =
true;
229 bool enableMappingVisualization =
true;
233 int odomQueryPeriodMs = 20;
234 int occupancyGridMemoryUpdatePeriodMs = 1000;
236 bool useNativeOdometryTimestamps =
true;
237 bool useNativeLaserscannerTimestamps =
true;
239 std::string laserScanners;
243 float global_localization_min_score = 0.5;
246 float obstacleRadius = 500;
248 float occupiedThreshold = 0.55;
252 Throttler throttlerLaserScansMemoryWriter{10.F};
253 Throttler throttlerOccupancyGridMemoryWriter{10.F};
255 Throttler throttlerArviz{10.F};
257 std::unique_ptr<cartographer_adapter::ArVizDrawerMapBuilder> arVizDrawerMapBuilder;
259 std::optional<FrequencyReporter> laserDataReporter;
260 std::optional<FrequencyReporter> odomDataReporter;
261 std::optional<FrequencyReporter> slamResultReporter;
268 std::experimental::observer_ptr<armem::client::plugins::ReaderWriterPlugin<
269 armem::vision::occupancy_grid::client::Writer>>
270 occupancyGridWriterPlugin;
272 std::experimental::observer_ptr<
273 armem::client::plugins::ReaderWriterPlugin<navigation::memory::client::costmap::Writer>>
276 std::experimental::observer_ptr<
277 armem::client::plugins::ReaderWriterPlugin<armem::robot_state::RobotReader>>
280 Eigen::Isometry3f world_T_map = Eigen::Isometry3f::Identity();
281 std::optional<Eigen::Isometry3f> map_T_robot = std::nullopt;
283 std::atomic_bool receivingData{
false};
286 std::optional<Eigen::Isometry3f> globalPose()
const;
295 int64_t lastTimestamp = 0;
296 std::atomic_bool robotIsMoving =
false;
298 plugins::HeartbeatComponentPlugin* heartbeatPlugin =
nullptr;