110 generalConfig.
maxVel.
linear = this->params_.maxLinearVelocity;
120 .distanceToObstaclesCostmap = std::nullopt,
121 .orientationAwareCostmap = {},
123 scene.
staticScene->distanceToObstaclesCostmap.emplace(distanceField_);
141 if (plan.has_value())
143 globalTrajectory_ = plan->trajectory;
146 .linearVelocity = Eigen::Vector2f::Zero(),
154 const auto goal =
conv::to2D(globalTrajectory_.poses().back());
158 if (plan.has_value())
160 globalTrajectory_ = plan->trajectory;
163 .linearVelocity = Eigen::Vector2f::Zero(),
175 const auto duration = updateTime - human_.detectionTime;
178 human_.pose.translation() += duration.toSecondsDouble() * human_.linearVelocity;
180 const auto projection =
181 globalTrajectory_.getProjection(
conv::to3D(human_.pose.translation()),
184 human_.pose =
conv::to2D(projection.projection.waypoint.pose);
186 const auto wpBefore = projection.wayPointBefore.waypoint.pose.translation();
187 const auto wpAfter = projection.wayPointAfter.waypoint.pose.translation();
189 human_.linearVelocity =
190 (wpAfter - wpBefore).head<2>().normalized() * projection.projection.velocity;
192 human_.linearVelocity =
193 human_.linearVelocity.normalized() * std::clamp(human_.linearVelocity.norm(),
194 params_.minLinearVelocity,
195 params_.maxLinearVelocity);
197 human_.detectionTime = updateTime;