Class EdgeKinematicsCarlike

Inheritance Relationships

Base Type

Class Documentation

class EdgeKinematicsCarlike : public hateb_local_planner::BaseTebBinaryEdge<2, double, VertexPose, VertexPose>

Edge defining the cost function for satisfying the non-holonomic kinematics of a carlike mobile robot.

The edge depends on two vertices \( \mathbf{s}_i, \mathbf{s}_{ip1} \) and minimizes a geometric interpretation of the non-holonomic constraint:

  • C. Rösmann et al.: Trajectory modification considering dynamic constraints of autonomous robots, ROBOTIK, 2012.

The definition is identically to the one of the differential drive robot. Additionally, this edge incorporates a minimum turning radius that is required by carlike robots. The turning radius is defined by \( r=v/omega \).

The weight

can be set using setInformation(): Matrix element 1,1: (Choose a very high value: ~1000).

The second equation enforces a minimum turning radius. The

weight

can be set using setInformation(): Matrix element 2,2.

The dimension of the error / cost vector is 3: the first component represents the nonholonomic constraint cost, the second one backward-drive cost and the third one the minimum turning radius

See also

TebOptimalPlanner::AddEdgesKinematics, EdgeKinematicsDiffDrive

Remark

Bounding the turning radius from below is not affected by the penalty_epsilon parameter, the user might add an extra margin to the min_turning_radius param.

Remark

Do not forget to call setHATebConfig()

Public Functions

inline EdgeKinematicsCarlike()

Construct edge.

inline void computeError() override

Actual cost function.