ecl_mobile_robot Documentation

### ecl_mobile_robot

Contains transforms (e.g. differential drive inverse kinematics) for the various types of mobile robot platforms.

# Embedded Control Library

```    Various representations and transforms relevant to mobile robot
platforms.
```

```    Include the following at the top of any translation unit which
requires this library:
```
// The error interfaces
using ecl::Pose;

You will also need to link to -lecl_mobile_robot.

# Usage

## Pose

```            This is the classical definition for a mobile robot's state in
a 2D world - [ x, y, heading ].

This class provides a convenient c++ container style interface
as well as a few mathematical operators for calculating
relative poses (differentials).
```
Pose pose1, pose2;
pose1 << 0,0,Math::pi/2; // comma initialisation
std::cout << pose << pose << pose; // vector style access
Pose pose3 = pose1 + pose2; // pose + relative pose
pose1 += pose2; // pose1 + relative pose
pose3 = pose1 - pose2; // calculates pose2 rel pose1

## DifferentialDrive

```            Currently there is only the diff drive kinematics class. This
provides functions for forward and inverse kinematics on a
differential drive type robot.
```
DifferentialDrive::Kinematics kinematics(0.1,0.5,0.05); // fixed axis length, centre offset, wheel radius
Pose dpose = kinematics.forward(0.2, 0.1); // left and right wheel angle updates -> differential pose
Vector2d wheel_vels = kinematics.inverse(0.1, 0.05); // linear/angular velocites -> left/right wheel angular rates
Vector2d vels = Kinematics::Inverse(pose1,pose2); // orig and final pose -> linear/angular platform velocities

# Unit Tests

```    - src/sample/pose.cpp
```

# ChangeLog

```    - <b>May 10</b> : extended and fully road-tested pose and differential drive interfaces.
- <b>Jan 10</b> : added transforms used by the iclebo mobile platform (diff drive).```

ecl_mobile_robot
Author(s): Daniel Stonier
autogenerated on Mon Feb 28 2022 22:18:56