# Motion planning geometry utility functions

(`#include <mrpt/nav/nav_plan_geometry_utils.h>`)

```// global functions

bool mrpt::nav::collision_free_dist_segment_circ_robot(
const mrpt::math::TPoint2D& p_start,
const mrpt::math::TPoint2D& p_end,
const double robot_radius,
const mrpt::math::TPoint2D& obstacle,
double& out_col_dist
);

bool mrpt::nav::collision_free_dist_arc_circ_robot(
const double arc_radius,
const double robot_radius,
const mrpt::math::TPoint2D& obstacle,
double& out_col_dist
);```

## Global Functions

```bool mrpt::nav::collision_free_dist_segment_circ_robot(
const mrpt::math::TPoint2D& p_start,
const mrpt::math::TPoint2D& p_end,
const double robot_radius,
const mrpt::math::TPoint2D& obstacle,
double& out_col_dist
)```

Computes the collision-free distance for a linear segment path between two points, for a circular robot, and a point obstacle (ox,oy).

Parameters:

 std::runtime_error If the two points are closer than an epsilon (1e-10)

Returns:

true if a collision exists, and the distance along the segment will be in out_col_dist; false otherwise.

```bool mrpt::nav::collision_free_dist_arc_circ_robot(
const double arc_radius,
const double robot_radius,
const mrpt::math::TPoint2D& obstacle,
double& out_col_dist
)```

Computes the collision-free distance for a forward path (+X) circular arc path segment from pose (0,0,0) and radius of curvature R (>0 -> +Y, <0 -> -Y), a circular robot and a point obstacle (ox,oy).

Returns:

true if a collision exists, and the distance along the path will be in out_col_dist; false otherwise.