19
Final project presentation CS 7630 April, 27th 2015 Students : Chouaieb Nemri - Zakaria Fadli Supervisor : Prof. Cédric Pradalier

Exploration and Coverage for Autonomous Vehicles

Embed Size (px)

Citation preview

Page 1: Exploration and Coverage for Autonomous Vehicles

Final project presentation

CS 7630

April, 27th 2015

Students : Chouaieb Nemri - Zakaria Fadli

Supervisor : Prof. Cédric Pradalier

Page 2: Exploration and Coverage for Autonomous Vehicles

2

OUTLINE

Autonomous Robotics

• The big picture

• The Explorer

• The State Machine

– ...

– Docking/Undocking

– Battery

• Moving to the turtlebot

2

Page 3: Exploration and Coverage for Autonomous Vehicles

3

The big picture

What do we know ?

Page 4: Exploration and Coverage for Autonomous Vehicles

4

The big picture

What does a Robot need to be Autonomous ?

An autonomous Robot combines the elementary behaviours

we dealt with in CS 7630 to gain information about the

environment to interact with it for an extended period without

human intervention

What is the final Projects mission?

● Make the robot explore the second floor and map the wifi

signal while monitoring its laptop and base batteries’

status.

● Interrupt the mission and go to the docking station if

batteries go below a predefined threshold

Page 5: Exploration and Coverage for Autonomous Vehicles

The Explorer

What did we add to our occgrid_planner?

Page 6: Exploration and Coverage for Autonomous Vehicles

The Explorer

Exploration tradeoff - Coverage radius size

Page 7: Exploration and Coverage for Autonomous Vehicles

The State Machine

Why do we need a state machine?

● An autonomous system has different behaviours

● It should take decisions and combine behaviours based

on information collected from the environment.

● A state machine is a very suitable approach for such a

problem

Page 8: Exploration and Coverage for Autonomous Vehicles

The State Machine

A finite state machine is a mathematical abstraction used

to design algorithms. In simple terms, a state machine will

read a series of inputs. When it reads an input it will

switch to a different state. Each state specifies which

state to switch for a given input.

Different tools for state machines on ros:

SMACH TASK MANAGERSimple State

Machine Node

Page 9: Exploration and Coverage for Autonomous Vehicles

9

- One Node for the state

machine

- The State machine node is

executed synchronously on

a callback of a timer.

- Every “slave” Node launched

trough an enable signal

- Those enable signals are

stored in local variables for

every slave node of the

machine, and used as test.

- slave nodes are also

executed on timers too, but

they do not execute any

code when their enable is

off.

The State Machine - Structure

Page 10: Exploration and Coverage for Autonomous Vehicles

10

The State Machine - Implementation

// Transitions update

T1 = state_charging && (Map_UnComplete && ((

battery_laptop>batteryL_th) && ( battery_robot>batteryR_th)));

T2 = state_undocking && undocked;

T3 = state_exploring && (Map_Complete || ((

battery_laptop<batteryL_th_down) || (

battery_robot<batteryR_th_down)));

T4 = state_gohome && Home_reached;

T5 = state_docking && Docked;

// Desactivating precedent states

if (T1) state_charging=false;

if (T2) state_undocking =false;

if (T3) state_exploring=false;

if (T4) state_gohome=false;

if (T5) state_docking=false;

// Activating next states

if (T5) state_charging=true;

if (T1) state_undocking=true;

if (T2) state_exploring =true;

if (T3) state_gohome=true;

if (T4) state_docking=true;

Page 11: Exploration and Coverage for Autonomous Vehicles

11

// Output assignment

std_msgs::Bool sm_enable;

if (state_charging_prev != state_charging){

sm_enable.data=state_charging;

pub1_.publish(sm_enable);

ROS_INFO("charging switch");

}

if (state_undocking_prev != state_undocking){

sm_enable.data=state_undocking;

pub2_.publish(sm_enable);

ROS_INFO("undocking switch");

}

if (state_exploring_prev != state_exploring){

sm_enable.data=state_exploring;

pub3_.publish(sm_enable);

ROS_INFO("exploring switch");

}

if (state_gohome_prev != state_gohome){

sm_enable.data=state_gohome;

pub4_.publish(sm_enable);

ROS_INFO("gohome switch");

if (( battery_laptop<50 )&&(state_gohome)) ROS_INFO("battery down ");

}

if (state_docking_prev != state_docking){

sm_enable.data=state_docking;

pub5_.publish(sm_enable);

ROS_INFO("docking switch");

}

And all this is executed at each timestep

Page 12: Exploration and Coverage for Autonomous Vehicles

Undocking

12

● Move backward while

constantly computing

distance from the initial

point.

● Finish the task and start

exploring when a distance

threshold is reached (The

Machine state take care of

that)

Page 13: Exploration and Coverage for Autonomous Vehicles

Explorer and Go home

● The explorer publishes it exploration goals to the target

callback only when the exploration state is enabled.

● The explorer saves and publishes its position when first

executed, so it’s the position of the robot exactly when it’s

completely undocked.

● This home_goal position is published to the target .

● The target callback function is called for any of those two

goals.

● The path follower, when indicating that he reached its

goal, is conditioned by which state is active on the state

machine, to know if we reached home or just an

exploration point.

Page 14: Exploration and Coverage for Autonomous Vehicles

Battery

Simulating the battery effect

Page 15: Exploration and Coverage for Autonomous Vehicles

Docking

● When home, start rotating until the alvar marker is in the

center of the camera’s image.

● Move forward until reaching a distance threshold

● Not working! IndividualMarkerNoKinect can’t detect the

marker

Page 16: Exploration and Coverage for Autonomous Vehicles

16

The final result (video)

https://youtu.be/Q-WCuvTpAEM

Page 17: Exploration and Coverage for Autonomous Vehicles

Moving to the turtlebot

What would we have delt with ?

● Localisation would have been less stable

● Real world imperfections, noise

● Different velocity constraints / environment dimensions

● Less accurate odometry?

● Adapting launchfiles

What would we have done for wifi mapping ?

● One callback for all the signals that :

○ personnalises filenames with the signal IDs.

○ Updates each file with current_x, current_xy and signal

power when recieves a msg.

○ we would have created the maps offline using MATLAB

Page 18: Exploration and Coverage for Autonomous Vehicles

Conclusion

Final project

CS 7630

● Different tasks : Explorer, GoHome, Docking, Undocking ..

● Statemachine

● Moving to the turtlebot

● Thank you for your time and availability

● & especially for your enthusiasm

Page 19: Exploration and Coverage for Autonomous Vehicles

19

Questions ?

19

Thanks for your attention