mobile robot motion control -...

28
Corso di Robotica Prof. Davide Brugali Università degli Studi di Bergamo Mobile Robot Motion Control

Upload: doandiep

Post on 16-Feb-2019

218 views

Category:

Documents


1 download

TRANSCRIPT

Corso di Robotica

Prof. Davide Brugali

Università degli Studi di Bergamo

Mobile Robot Motion Control

Pose Controller

Corso di Robotica

Prof. Davide Brugali

Università degli Studi di Bergamo

Pose Controller

3 Robotica - UNIBG - Prof. Brugali

Pose Controller

y

x

Twist

Command : Twist [V, w]

Measure : Odometry [Ox, Oy , q, Vx, Vy, w]

Ox

Oy

q Rover

Driver

Twist

Odometry

Pose controller

Wheel speed

Robotica - UNIBG - Prof. Brugali 4

Pose

Differential Drive Target Follower

x

y

y

x

Odometry

Y

Odometry

X

Twist

Target Target

Y

Target

X

WL

WR

x

y

Robotica - UNIBG - Prof. Brugali 5

Differential Drive Target Follower

y

x

Odometry

Y

Odometry

X

Twist

Target

Y

Target

X

Target

x

y

Robotica - UNIBG - Prof. Brugali 6

Dy

Differential Drive Kinematic Pose Control

Coordinates transformation into polar coordinates

with its origin at goal position:

Robotica - UNIBG - Prof. Brugali 7

Dy

Differential Drive Kinematic Pose Control

System description, in the new polar coordinates

for

forward direction

Robotica - UNIBG - Prof. Brugali 8

Dy

Differential Drive Kinematic Pose Control

System description, in the new polar coordinates

backward direction

for

Robotica - UNIBG - Prof. Brugali 9

Differential Drive Kinematic Pose Control

It can be shown, that with

the feedback controlled system

will drive the robot to

The control signal v has always constant sign, the direction of movement is kept

positive or negative during movement

It can further be shown, that the closed loop control system is locally exponentially

stable if

000 ,,,,

0 ; 0 ; 0

kkkk

Robotica - UNIBG - Prof. Brugali 10

Differential Drive Kinematic Pose Control

Robotica - UNIBG - Prof. Brugali 11

Ominidirectional Target Follower

Robotica - UNIBG - Prof. Brugali 12

Ominidirectional Target Follower

x

y

y

x

Odometry

Y

Odometry

X

Twist

Target Target

Y

Target

X

x

y

{ Vx

Vy

wz

Robotica - UNIBG - Prof. Brugali 13

Ominidirectional Target Follower

y

x

Odometry

Y

Odometry

X

Twist

Target Target

Y

Target

X

x

y

{ Vx

Vy

wz

Robotica - UNIBG - Prof. Brugali 14

Ominidirectional Target Follower

y

x

Odometry

Y

Odometry

X

Twist

Target Target

Y

Target

X

x

y

{ Vx

Vy

wz

Robotica - UNIBG - Prof. Brugali 15

Ominidirectional Target Follower

y

x

Odometry

Y

Odometry

X

Twist

Target Target

Y

Target

X

x

y

{ Vx

Vy

wz

Robotica - UNIBG - Prof. Brugali 16

Trajectory Following

Corso di Robotica

Prof. Davide Brugali

Università degli Studi di Bergamo

Trajectory Following

The objective of a kinematic controller is to

follow a trajectory described by its position

and/or velocity profiles as function of time.

path divided in motion segments of clearly

defined shape:

straight lines and segments of a circle.

Limitations:

Kinematics controllers are not considering the

dynamics of the system

y I

x I

g o a l

Robotica - UNIBG - Prof. Brugali 18

Trajectory data structure

19

LINEAR

WayPoint

WayPoint

WayPoint

WayPoint

CIRCULAR

LINEAR

ROTATION

X

Y

Robotica - UNIBG - Prof. Brugali

Trajectory data structure

20

cruise_v

X

Y

arrival_v

Robotica - UNIBG - Prof. Brugali

Velocity ramp generator

21 Robotica - UNIBG - Prof. Brugali

Trajectory Interpolator

22

target

WayPoint

X

Y

start

WayPoint

Robotica - UNIBG - Prof. Brugali

Trajectory interpolator

23

X

Y

X

Y

θ X

X Y

Y

Robotica - UNIBG - Prof. Brugali

Architettura software del nodo

TrajectoryFollower

Corso di Robotica

Prof. Davide Brugali

Università degli Studi di Bergamo

Trajectory Follower

25

La classe TrajectoryFollower memorizza la posizione corrente e la traiettoria corrente.

Itera la sequenza di waypoint che compongono la traiettoria e verifica che il robot sia arrivato alla fine della traiettoria.

Per ogni segmento di traiettoria che congiunge due waypoint consecutivi, inizializza il PoseController e gli delega il calcolo del twist.

TrajectoryFollower

setOdometry()

setTrajectory ()

getTwist()

PoseController

setOdometry()

setSegment ()

getTwist()

Robotica - UNIBG - Prof. Brugali

PoseController

26

Per ogni modello cinematico di robot mobile occorre implementare

uno specifico PoseController

TrajectoryFollower

setOdometry()

setTrajectory ()

getTwist()

PoseController

setOdometry()

setSegment ()

getTwist()

PoseControllerH

olonomic

PoseControllerD

ifferential

getTwist() getTwist()

Robotica - UNIBG - Prof. Brugali

TrajectoryInterpolator

27

Per ogni tipo di segmento di traiettoria occorre implementare uno

specifico TrajectoryInterpolator

Trajectory

Interpolator

nextTargetPose ()

Circular

Interpolator

Linear

Interpolator

nextTargetPose () nextTargetPose ()

PoseController

setOdometry()

setSegment ()

getTwist()

Robotica - UNIBG - Prof. Brugali

RampGenerator

28

Il RampGenerator calcola la velocità target in funzione della distanza

dal prossimo waypoint

Trajectory

Interpolator

nextTargetPose ()

Circular

Interpolator

Linear

Interpolator

nextTargetPose () nextTargetPose ()

PoseController

setOdometry()

setSegment ()

getTwist()

RampGenerator

computeVelocity ()

Robotica - UNIBG - Prof. Brugali