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.x() << pose.y() << pose.heading(); // readable access
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 Jun 10 2019 13:08:52