Introducing 

Prezi AI.

Your new presentation assistant.

Refine, enhance, and tailor your content, source relevant images, and edit visuals quicker than ever before.

Loading…
Transcript

Action Pilot

How does it work?

Two kind of moves

Combining moves

Describe the robot to the model builder

How?

  • Number of wheels
  • Size of the wheels
  • The gear train
  • Position of the wheels
  • Orientation of the wheels
  • The encoders

Linear moves can be combined with angular moves.

A holonomic robot can spin while driving in a straight line

Linear move

(x,y)

Angular move

(a)

Two ways to describe the robot

Holonomic move

X

Y

A

Using polar coordinates

Using Cartesian coordinates

A combined move is called an action

The model builder generates kinematic models

Kinematics

Kinematics are used to calculate motor speed from robot speed and back

Pose

The Kinematic model

The inverse kinematic model

The kinematic model translates robot speed into wheel speed.

The kinematic model is represented in a matrix.

The inverse kinematic model translates changes in motor position into changes in robot position.

The inverse kinematic model is represented as a matrix

Odometry

Use the motor encoders to calculate displacement

A pose is the robots position ad orientation in a space.

  • Position is the location (x, y) of the robot in respect to the origin
  • Orientation is the angle (a) of the robot in respect to the reference frame

Move classes

The odometer class maintains a Pose

Functions

  • Combine moves to actions
  • Stack actions in action queue
  • Execute actions
  • Mixes actions when in blend mode

it runs in its own thread and queries the motor encoders at a regular interval to

calculate displacement and to update pose

Blend actions

Get moves from governing class

Stack actions in action queue

Execute action

actionPilot.addAction ( line , rotate )

Mix a finishing action into the next action to get smooth movement of the robot

while ( action.isbusy() ) {

speed = action.getSpeed(time)

chassis.setSpeed(speed)

}

{

( line , rotate ),

(arc ),

( line, aim ),

( goto )

}

weight = getWeight( time )

currentSpeed = weight * currentAction.getSpeed( time )

nextSpeed = (1 - weight) * nextAction.getSpeed( time )

speed = currentSpeed + nextSpeed

Define speed at a given moment

Only when blendMode is enabled

Distance to target

Geometrical primitives

Move based on geometric function.

Line, Arc, Rotation, Sinus, etc.

Move is based on reaching a goal.

GoTo, Follow, TurnTo, etc.

These moves are non adaptive

  • Time span of the move is known a beforehand
  • Speed at any moment during the move is know beforehand

Adaptive

  • It is not know how long the move takes to finish
  • Speed changes as the position of the robot or the goal changes

Action Pilot

Executes actions

How to move?

What is the robot like?

Where is the robot?

Object Model

Learn more about creating dynamic, engaging presentations with Prezi