5#include <Eigen/Geometry>
18 trajectory(trajectory), params(params), costmap3d(costmap3d)
27 for (
const auto& p : traj)
31 Eigen::Translation3f{Eigen::Vector3f(p.x, p.y, 0.0)} *
32 Eigen::AngleAxisf{
static_cast<float>(p.theta), Eigen::Vector3f::UnitZ()};
40 std::vector<CenterPoint>
43 std::vector<CenterPoint> traj;
44 for (
const auto& gp : gtraj.
points())
47 p.
x = gp.waypoint.pose.translation().x();
48 p.
y = gp.waypoint.pose.translation().y();
49 p.
theta = gp.waypoint.pose.rotation().eulerAngles(0, 1, 2)[2];
56 Smoothing::OptimizationResult
62 std::vector<CenterPoint> traj;
63 std::vector<CenterPoint> traj_orig;
71 for (
int i = 0; i < static_cast<int>(traj.size()); ++i)
73 ARMARX_DEBUG << std::fixed << std::setprecision(3) <<
"i=" << i <<
" : x=" << traj[i].x
74 <<
" y=" << traj[i].y <<
" theta=" << traj[i].theta <<
" v=" << traj[i].v;
80 std::vector<core::GlobalTrajectoryPoint>
83 std::vector<core::GlobalTrajectoryPoint> collisionPoints;
84 for (
const auto& p : centerTrajectory.
points())
86 bool inCollision = costmap3d.isInCollision(
88 costmap3d.closestRotationFromDegrees(
89 costmap3d.rotationDegrees(
conv::to2D(p.waypoint.pose))));
94 collisionPoints.push_back(p);
98 << (collisionPoints.empty() ?
"collision-free." :
"in collision!");
99 return collisionPoints;
Smoothing(const core::GlobalTrajectory &trajectory, const Costmap3D &costmap3d, const Params ¶ms)
io::SmoothingParams Params
std::vector< core::GlobalTrajectoryPoint > checkCenterTrajectory(core::GlobalTrajectory ¢erTrajectory) const
OptimizationResult optimize()
const std::vector< GlobalTrajectoryPoint > & points() const
std::vector< GlobalTrajectoryPoint > & mutablePoints()
#define ARMARX_INFO
The normal logging level.
#define ARMARX_DEBUG
The logging level for output that is only interesting while debugging.
This file is part of ArmarX.
std::vector< CenterPoint > toCenterTrajectory(const armarx::navigation::core::GlobalTrajectory >raj)
armarx::navigation::core::GlobalTrajectory toGlobalTrajectory(const std::vector< CenterPoint > &traj)
void optimizeTrajectoryCeres(std::vector< CenterPoint > &traj, const Costmap3DWrapper &costmap_wrapper, const std::vector< CenterPoint > &traj_original, const io::SmoothingParams &opts)
std::vector< Eigen::Vector2f > to2D(const std::vector< Eigen::Vector3f > &v)