44 bool collisionFree =
true;
47 for (std::size_t i = 0; i <
trajectory.points().size(); ++i)
49 const auto& p =
trajectory.points()[i].waypoint.pose.translation();
50 if (isInCollision(p.x(), p.y()))
52 collisionFree =
false;
55 ARMARX_INFO <<
"[TrajectoryChecker2D] Collision at waypoint " << i <<
" : ("
56 << p.x() <<
", " << p.y() <<
")";
62 constexpr float segmentResolution = 50.0f;
63 for (std::size_t i = 0; i + 1 <
trajectory.points().size(); ++i)
65 const auto& p1 =
trajectory.points()[i].waypoint.pose.translation();
66 const auto& p2 =
trajectory.points()[i + 1].waypoint.pose.translation();
68 const float dx = p2.x() - p1.x();
69 const float dy = p2.y() - p1.y();
70 const float dist = std::hypot(dx, dy);
71 int numSamples =
static_cast<int>(std::ceil(dist / segmentResolution));
75 for (
int s = 1; s < numSamples; ++s)
77 const float t =
static_cast<float>(s) / numSamples;
78 const float x = p1.x() + t * dx;
79 const float y = p1.y() + t * dy;
80 if (isInCollision(
x, y))
82 collisionFree =
false;
85 ARMARX_INFO <<
"[TrajectoryChecker2D] Collision on segment " << i <<
"-"
86 << (i + 1) <<
" at t=" << t;