Example RTD Planner Implementation of ARMOUR

ArmourPlanner and these related components define the ARMOUR planner as described by Michaux et. al. in https://arxiv.org/abs/2301.13308. This planner requires the use of the matching robust controller. Currently a kinematics-only minimal version of this is implemented.

The Base ARMOUR Planner

class armour.ArmourPlanner.ArmourPlanner(trajOptProps: TrajOptProps, robot: ArmourAgentInfo, **options)[source]

Bases: RtdPlanner, Options

static defaultoptions() dict[source]

Abstract static method which needs to be implemented to provide the default options for any given class. Should return a dict

planTrajectory(robotState: EntityState, worldState: WorldState, waypoint) tuple[rtd.planner.trajectory.Trajectory.Trajectory, dict][source]

Then on each waypoint, we call for a trajectory plan: Use RTD to solve for a trajectory and return either the parameters or invalid signal (continue).

Loops over each RtdTrajOpt instance (thus, each trajectory type) with the given RobotState, WorldState, Waypoint, and initial guess.

From the results, selects the best valid Trajectory, otherwise return an invalid trajectory which will throw when attempting to set the new trajectory, ensuring the old one continues

Reachable Set Generation

Generation of reachable sets are implemented as constraint generating classes, with the following classes generating instances for the constraints.

JRSGenerator

JointReachableSetsOnline This does the online computation of joint reachable sets.

JLSGenerator

FOGenerator

ForwardOccupancy This acts as a generator for a single instance of a ForwardReachableSet, and return FOInstance

IRSGenerator

InputReachableSet This generates the upper and lower bound reachable sets on the input, and creates an IRSInstance object

JRSInstance

This is just an individual instance of an original ARMTD JRS

JLSInstance

This is just an individual instance of joint limit set set from armour

FOInstance

JLSInstance This is just an individual instance of joint limit set set from armour

IRSInstance

This is just an individual instance of input reachable set from armour

Trajectory Types and Factory

ZeroHoldArmTrajectory

PiecewiseArmTrajectory

The original ArmTD trajectory with piecewise accelerations

BernsteinArmTrajectory

ArmTrajectoryFactory