7#include <Eigen/Geometry>
23 trajectory(trajectory), costmap3d(costmap3d), params(params)
32 for (
const auto& p : traj)
36 Eigen::Translation3f{Eigen::Vector3f(p.x, p.y, 0.0)} *
37 Eigen::AngleAxisf{
static_cast<float>(p.theta), Eigen::Vector3f::UnitZ()};
45 std::vector<CenterPoint>
48 std::vector<CenterPoint> traj;
49 for (
const auto& gp : gtraj.
points())
52 p.
x = gp.waypoint.pose.translation().x();
53 p.
y = gp.waypoint.pose.translation().y();
54 p.
theta = gp.waypoint.pose.rotation().eulerAngles(0, 1, 2)[2];
61 Smoothing::OptimizationResult
67 std::vector<CenterPoint> traj;
68 std::vector<CenterPoint> traj_orig;
76 for (
int i = 0; i < static_cast<int>(traj.size()); ++i)
78 ARMARX_DEBUG << std::fixed << std::setprecision(3) <<
"i=" << i <<
" : x=" << traj[i].x
79 <<
" y=" << traj[i].y <<
" theta=" << traj[i].theta <<
" v=" << traj[i].v;
85 std::vector<core::GlobalTrajectoryPoint>
88 std::vector<core::GlobalTrajectoryPoint> collisionPoints;
89 for (
const auto& p : centerTrajectory.
points())
91 bool inCollision = costmap3d.isInCollision(
93 costmap3d.closestRotationFromDegrees(
94 costmap3d.rotationDegrees(
conv::to2D(p.waypoint.pose))));
99 collisionPoints.push_back(p);
103 << (collisionPoints.empty() ?
"collision-free." :
"in collision!");
104 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)