mobile robot motion control -...
TRANSCRIPT
Corso di Robotica
Prof. Davide Brugali
Università degli Studi di Bergamo
Mobile Robot Motion Control
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
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
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
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