97 std::unique_ptr<armarx::navigation::global_planning::GlobalPlannerParams>
99 instantiateGlobalPlannerParams(globalPlannerParams, params);
105 std::lock_guard g{*properties_.safetyGuardParamsMutex};
106 if (properties_.safetyGuardParams !=
nullptr)
108 safetyGuardParams = *properties_.safetyGuardParams;
112 params.safetyGuardIgnoredRegions |
113 ranges::views::transform(
114 [](
const core::arondto::BoundingBox2D& bbDto) -> Eigen::AlignedBox2f
116 Eigen::AlignedBox2f bbBo;
125 generalParams = properties_.defaultGeneralConfig;
128 if (params.enableRampingStart.has_value())
130 generalParams.enableRampingStart = params.enableRampingStart.value();
132 if (params.enableRampingEnd.has_value())
134 generalParams.enableRampingEnd = params.enableRampingEnd.value();
136 if (params.enableRampingCorners.has_value())
138 generalParams.enableRampingCorners = params.enableRampingCorners.value();
140 if (params.rampLength.has_value())
142 generalParams.rampLength = params.rampLength.value();
144 if (params.cornerVelocity.has_value())
146 generalParams.cornerVelocity = params.cornerVelocity.value();
148 if (params.boundaryVelocity.has_value())
150 generalParams.boundaryVelocity = params.boundaryVelocity.value();
152 if (params.cornerLimit.has_value())
154 generalParams.cornerLimit = params.cornerLimit.value();
158 params.inCollisionDistanceThresholdForRecovery;
160 << generalParams.inCollisionDistanceThresholdForRecovery <<
" mm";
162 generalParams.navigateCloseAsPossible = params.navigateCloseAsPossible;
164 << (generalParams.navigateCloseAsPossible ?
"enabled" :
"disabled");
166 if (generalParams.enableRampingStart or generalParams.enableRampingEnd or
167 generalParams.enableRampingCorners)
169 ARMARX_INFO <<
"Velocity ramping is enabled (start=" << generalParams.enableRampingStart
170 <<
"; end=" << generalParams.enableRampingEnd
171 <<
"; corners=" << generalParams.enableRampingCorners
172 <<
"; rampLength=" << generalParams.rampLength
173 <<
"; cornerVelocity=" << generalParams.cornerVelocity
174 <<
"; boundaryVelocity=" << generalParams.boundaryVelocity
175 <<
"; cornerLimit=" << generalParams.cornerLimit <<
").";
178 if (params.velocityLimitLinear.has_value())
180 generalParams.maxVel.linear = params.velocityLimitLinear.value();
182 if (params.velocityLimitAngular.has_value())
184 generalParams.maxVel.angular = params.velocityLimitAngular.value();
187 ARMARX_INFO <<
"Configuring navigator to respect the velocity limits:";
188 ARMARX_INFO <<
"linear: " << generalParams.maxVel.linear;
189 ARMARX_INFO <<
"angular: " << generalParams.maxVel.angular;
196 if (params.enableLocalPlanning)
201 if (params.enableSafetyGuard)
207 if (params.goalReachedThresholds.has_value())
210 goalReachedCfg.
posTh = params.goalReachedThresholds->posTh;
211 goalReachedCfg.
oriTh = params.goalReachedThresholds->oriTh;
212 goalReachedCfg.
linearVelTh = params.goalReachedThresholds->linearVelTh;
213 goalReachedCfg.
angularVelTh = params.goalReachedThresholds->angularVelTh;
216 ARMARX_INFO <<
"Goal reached config override: posTh=" << goalReachedCfg.
posTh
217 <<
"mm, oriTh=" << goalReachedCfg.
oriTh <<
"rad, linearVelTh="
218 << goalReachedCfg.
linearVelTh <<
"mm/s, angularVelTh="
226 memorySubscriber.reset();
229 memorySubscriber.emplace(
id, srv_->memoryNameSystem);
233 iceNavigator = srv_->iceNavigatorFactory.createConfig(cfg,
id);
236 .navigator = iceNavigator.get(), .subscriber = &memorySubscriber.value()});
248 arondto::NavigatingSkillParams defaultParameters;
250 defaultParameters.enableRampingStart = std::nullopt;
251 defaultParameters.enableRampingEnd = std::nullopt;
252 defaultParameters.enableRampingCorners = std::nullopt;
253 defaultParameters.rampLength = std::nullopt;
254 defaultParameters.cornerVelocity = std::nullopt;
255 defaultParameters.boundaryVelocity = std::nullopt;
256 defaultParameters.cornerLimit = std::nullopt;
258 defaultParameters.inCollisionDistanceThresholdForRecovery = 150.0F;
260 defaultParameters.navigateCloseAsPossible =
false;
262 defaultParameters.enableLocalPlanning =
false;
263 defaultParameters.enableSafetyGuard =
true;
264 defaultParameters.safetyGuardIgnoredRegions =
265 std::vector<armarx::navigation::core::arondto::BoundingBox2D>();
266 defaultParameters.velocityLimitAngular = std::nullopt;
267 defaultParameters.velocityLimitLinear = std::nullopt;
268 defaultParameters.globalPlanningAlgorithm = arondto::GlobalPlanningAlgorithm::SPFA;
269 defaultParameters.p2pCheckCollisionsAlongTrajectory =
false;
272 defaultParameters.goalReachedThresholds = std::nullopt;
274 return defaultParameters;