CENG4480 Lecture 08: Kalman Filter Bei Yu byu@cse.cuhk.edu.hk - - PDF document

ceng4480 lecture 08 kalman filter
SMART_READER_LITE
LIVE PREVIEW

CENG4480 Lecture 08: Kalman Filter Bei Yu byu@cse.cuhk.edu.hk - - PDF document

CENG4480 Lecture 08: Kalman Filter Bei Yu byu@cse.cuhk.edu.hk (Latest update: November 18, 2019) Fall 2019 1 / 26 Overview Introduction Complementary Filter Kalman Filter Software 2 / 26 Overview Introduction Complementary Filter


slide-1
SLIDE 1

CENG4480 Lecture 08: Kalman Filter

Bei Yu

byu@cse.cuhk.edu.hk

(Latest update: November 18, 2019) Fall 2019

1 / 26

slide-2
SLIDE 2

Overview

Introduction Complementary Filter Kalman Filter Software

2 / 26

slide-3
SLIDE 3

Overview

Introduction Complementary Filter Kalman Filter Software

3 / 26

slide-4
SLIDE 4

Self Balance Vehicle / Robot

◮ http://www.segway.com/ ◮ http://wowwee.com/mip/

3 / 26

The WowWee MiP Robot paired with WowWee’s free app creates a consumer robot with lots of potential. Relatively small in size, the WowWee MiP Robo is only 7 inches tall and has no feet. It is black and white in design with a round head and emoticon eyes. It might remind you of Disney’s Wall-E. The WowWee MiP Robot can balance and move quite well, similar to a Segway. The connection is extremely easy. To connect MiP to your mobile device you simply need to download the app. Once opened the MiP’s ID will appear on the screen and you choose how you want to control the robot.

slide-5
SLIDE 5

Basic Idea

Motion against the tilt angle, so it can stand upright.

4 / 26

slide-6
SLIDE 6

IMU Board

http://www.hotmcu.com/imu-10dof-l3g4200dadxl345hmc5883lbmp180-p-190.html

◮ L3G4200D: gyroscope, measure angular rate (relative value) ◮ ADXL345: accelerometer, measure acceleration

5 / 26

slide-7
SLIDE 7

Overview

Introduction Complementary Filter Kalman Filter Software

6 / 26

slide-8
SLIDE 8

Complementary Filter

X reads slightly negative

g

X reads slightly positive. X now sees some gravity.

Accelerometer

◮ Give accurate reading of tilt angle ◮ Slower to respond than Gyro’s ◮ prone to vibration/noise

Gyro reads positive. Gyro reads negative.

Gyroscope

◮ response faster ◮ but has drift over time

6 / 26

slide-9
SLIDE 9

Complementary Filter (cont.)

◮ Since

Gyroscope

High frequency

Accelerometer

Low frequency

◮ Combine two sensors to find output

7 / 26

slide-10
SLIDE 10

Complementary Filter (cont.)

Mapping Sensors

Y X

Angle Angular Velocity

Complementary Filter

Numeric Integration Low-Pass Filter High-Pass Filter Σ

Read_acc(); Read_gyro(); Ayz=atan2(RwAcc[1],RwAcc[2])*180/PI; //angle by accelerometer Ayz-=offset; //adjust to correct Angy = 0.98*(Angy+GyroIN[0]*interval/1000)+0.02*Ayz; //complement filter

8 / 26

slide-11
SLIDE 11

Overview

Introduction Complementary Filter Kalman Filter Software

9 / 26

slide-12
SLIDE 12

Rudolf Kalman (1930 – 2016)

◮ Born in Budapest, Hungary ◮ BS in 1953 and MS in 1954 from MIT electrical engineering ◮ PhD in 1957 from Columbia University. ◮ Famous for his co-invention of the Kalman filter – widely used in control systems to

extract a signal from a series of incomplete and noisy measurements.

◮ Convince NASA Ames Research Center 1960 ◮ Kalman filter was used during Apollo program

9 / 26

He was a professor at Stanford University from 1964 until 1971, and then at the University of Florida from 1971 until 1992

slide-13
SLIDE 13

Problem Example 1

Self-Driving Car Location Problem

10 / 26

slide-14
SLIDE 14

Problem Example 1

Self-Driving Car Location Problem

10 / 26

slide-15
SLIDE 15

Problem Example 1

Self-Driving Car Location Problem

10 / 26

slide-16
SLIDE 16

Exercise: Analyse Kalman Gain

What is Kalman Gain Kk, if measurement noise R is very small? What if R is very big?

11 / 26

slide-17
SLIDE 17

Problem Example 2

Angle Measurement System xt = Atxt−1 + Btut + wt ◮ xt: state in time t ◮ At: state transition matrix from time t − 1 to time t ◮ ut: input parameter vector at time t ◮ Bt: control input matrix – apply the effort of ut ◮ wt: process noise, wt ∼ N(0, Qt)∗

∗wt assumes zero mean multivariate normal distribution, covariance matrix Qt

12 / 26

slide-18
SLIDE 18

Problem Example 2 (Update on Oct. 29, 2018)

Angle Measurement System xt = Atxt−1 + Btut + wt ◮ xt = [xt, ˙ xt]⊤: xt is current angle, while ˙ xt is current rate ◮ At = 1 ∆t 1

  • ◮ Bt = [(∆t)2

2 , ∆t]⊤ ◮ ut = ∆ ˙ xt

13 / 26

slide-19
SLIDE 19

Problem Example 2

System Measurement zt = Cxt + vt ◮ zt: measurement vector ◮ C: transformation matrix mapping state vector to measurement ◮ vt: measurement noise, vt ∼ N(0, Rt)†

†wt assumes zero mean multivariate normal distribution, covariance matrix Rt

14 / 26

slide-20
SLIDE 20

Exercise

In angle measurement lab, what is the transformation matrix C?

zt = Cxt + vt

15 / 26

[1, 0]

slide-21
SLIDE 21

Model with Uncertainty

◮ Model the measurement w. uncertainty (due to noise wt) ◮ Pk: covariance matrix of estimation xt ◮ On how much we trust our estimated value – the smaller the more we trust

note: here Fk = Ak

16 / 26

slide-22
SLIDE 22

Fuse Gaussian Distributions

17 / 26

slide-23
SLIDE 23

Fuse Gaussian Distributions

17 / 26

slide-24
SLIDE 24

Exercise

Given two Gaussian functions y1(r; µ1, σ1) and y2(r; µ2, σ2), prove the product of these two Gaussian functions are still Gaussian.

y1(r; µ1, σ1) = 1

  • 2πσ2

1

e

− (r−µ1)2

2σ2 1

y2(r; µ2, σ2) = 1

  • 2πσ2

2

e

− (r−µ2)2

2σ2 2

18 / 26

slide-25
SLIDE 25

Step 1: Prediction x−

t =Atxt−1 + Btut

(1)

P−

t =AtPt−1A⊤ t + Qt

(2)

19 / 26

slide-26
SLIDE 26

Step 1: Prediction x−

t =Atxt−1 + Btut

(1)

P−

t =AtPt−1A⊤ t + Qt

(2)

Step 2: Measurement Update xt = x−

t + Kt(zt − Cx− t )

(3)

Pt = P−

t − KtCP− t

(4)

Kt = P−

t C⊤(CP− t C⊤ + Rt)−1

(5)

19 / 26

slide-27
SLIDE 27

Basic Concepts

20 / 26

slide-28
SLIDE 28

More Applications: Robot Localization

21 / 26

slide-29
SLIDE 29

More Applications: Path Tracking

22 / 26

slide-30
SLIDE 30

More Applications: Object Tracking

23 / 26

slide-31
SLIDE 31

Overview

Introduction Complementary Filter Kalman Filter Software

24 / 26

slide-32
SLIDE 32

C Implementation

// Kalman filter module float Q_angle = 0.001; float Q_gyro = 0.003; float R_angle = 0.03; float x_angle = 0; float x_bias = 0; float P_00 = 0, P_01 = 0, P_10 = 0, P_11 = 0; float dt, y, S; float K_0, K_1;

◮ Q: ◮ R: ◮ P:

24 / 26

slide-33
SLIDE 33

C Implementation (cont.)

float kalmanCalculate(float newAngle, float newRate,int looptime) { dt = float(looptime)/1000; x_angle += dt * (newRate - x_bias); P_00 += dt * (P_10 + P_01) + Q_angle * dt; P_01 += dt * P_11; P_10 += dt * P_11; P_11 += Q_gyro * dt; y = newAngle - x_angle; S = P_00 + R_angle; K_0 = P_00 / S; K_1 = P_10 / S; x_angle += K_0 * y; x_bias += K_1 * y; P_00 -= K_0 * P_00; P_01 -= K_0 * P_01; P_10 -= K_1 * P_00; P_11 -= K_1 * P_01; return x_angle; }

25 / 26

slide-34
SLIDE 34

Summary

◮ Complementary Filter ◮ Kalman Filter

26 / 26