Teaching Assistant: Roi Yehoshua

Slides:



Advertisements
Similar presentations
Rockwell Arena Simulation Software
Advertisements

Semantics Static semantics Dynamic semantics attribute grammars
Lecture 8: Three-Level Architectures CS 344R: Robotics Benjamin Kuipers.
Chapter 2: Modularization
1 Chapter 6: Extending classes and Inheritance. 2 Basics of Inheritance One of the basic objectives of Inheritance is code reuse If you want to extend.
CS0004: Introduction to Programming Repetition – Do Loops.
Teaching Assistant: Roi Yehoshua
Client Side Programming Using Java Applet Outcomes: You will be expected to know: – Java Applets and HTML file; –bytecode and platform independent programs;
Integrated Development Environments. Today We Will: Go over more advanced functionality of Eclipse. Break up into teams to work on presentation and final.
Tutorial 6 & 7 Symbol Table
Fall 2007CS 2251 Programming Tools Eclipse JUnit Testing make and ant.
Repetition Statements repeat block of code until a condition is satisfied also called loops Java supports 3 kinds of loops: while statement – repeats a.
CSI 101 Elements of Computing Spring 2009 Lecture #2 Development Life Cycle of a Computer Application Monday January 26th, 2009.
Teaching Assistant: Roi Yehoshua
Design Verification Design Profiler Course 8. All materials updated on: September 30, Design Profiler Design Profiler is a tool integrated within.
Presented by Brian Griffin On behalf of Manu Goel Mohit Goel Nov 12 th, 2014 Building a dynamic GUI, configurable at runtime by backend tool.
University of Southern California Center for Systems and Software Engineering Rational Software Modeler Tutorial Pongtip Aroonvatanaporn.
1 CSC103: Introduction to Computer and Programming Lecture No 26.
Multi-Robot Systems with ROS Lesson 1
 Cloud computing  Workflow  Workflow lifecycle  Workflow design  Workflow tools : xcp, eucalyptus, open nebula.
Christopher Jeffers August 2012
Imperative Programming
Reusable Code For Your Appx Processes Presented By: Gary Rogers.
Introduction to ABAP and SAP Structure
Computing IV Visual C Introduction with OpenCV Example Xinwen Fu.
Teaching Assistant: Roi Yehoshua
RM2D Let’s write our FIRST basic SPIN program!. The Labs that follow in this Module are designed to teach the following; Turn an LED on – assigning I/O.
Client Scripting1 Internet Systems Design. Client Scripting2 n “A scripting language is a programming language that is used to manipulate, customize,
Artificial Intelligence in Game Design Behavior Trees.
Drupal Commerce Better than Uber Andrew Root: druroot.
Tot 15 LTPDA Graphic User Interface summary and status N. Tateo 26/06/2007.
Introduction to Eclipse CSC 216 Lecture 3 Ed Gehringer Using (with permission) slides developed by— Dwight Deugo Nesa Matic
Interfaces to External EDA Tools Debussy Denali SWIFT™ Course 12.
Oracle 10g Database Administrator: Implementation and Administration Chapter 2 Tools and Architecture.
An Introduction to Front-end Web Development Tom Perkins.
Interpretation Environments and Evaluation. CS 354 Spring Translation Stages Lexical analysis (scanning) Parsing –Recognizing –Building parse tree.
9/2/ CS171 -Math & Computer Science Department at Emory University.
CPS120: Introduction to Computer Science Decision Making in Programs.
Operating System What is an Operating System? A program that acts as an intermediary between a user of a computer and the computer hardware. An operating.
Technical Presentation
7 1 User-Defined Functions CGI/Perl Programming By Diane Zak.
Chapter 3 Functions, Events, and Control Structures JavaScript, Third Edition.
C++ Programming Basic Learning Prepared By The Smartpath Information systems
Fall 2004EE 3563 Digital Systems Design EE 3563 VHSIC Hardware Description Language  Required Reading: –These Slides –VHDL Tutorial  Very High Speed.
Interactive Workflows Branislav Šimo, Ondrej Habala, Ladislav Hluchý Institute of Informatics, Slovak Academy of Sciences.
Celluloid An interactive media sequencing language.
Teaching Assistant: Roi Yehoshua
CPS120 Introduction to Computer Science Iteration (Looping)
Teaching Assistant: Roi Yehoshua
Functions  A Function is a self contained block of one or more statements or a sub program which is designed for a particular task is called functions.
Source Level Debugging of Parallel Programs Roland Wismüller LRR-TUM, TU München Germany.
Chapter – 8 Software Tools.
Text TCS INTERNAL Oracle PL/SQL – Introduction. TCS INTERNAL PL SQL Introduction PLSQL means Procedural Language extension of SQL. PLSQL is a database.
Teaching Assistant: Roi Yehoshua
Active-HDL Server Farm Course 11. All materials updated on: September 30, 2004 Outline 1.Introduction 2.Advantages 3.Requirements 4.Installation 5.Architecture.
Chapter 2 Build Your First Project A Step-by-Step Approach 2 Exploring Microsoft Visual Basic 6.0 Copyright © 1999 Prentice-Hall, Inc. By Carlotta Eaton.
Chapter 4: Threads Modified by Dr. Neerja Mhaskar for CS 3SH3.
Node.js Modules Header Mastering Node.js, Part 2 Eric W. Greene
Definition CASE tools are software systems that are intended to provide automated support for routine activities in the software process such as editing.
Lecture 1: Introduction to JAVA
Compilation and Debugging
Compilation and Debugging
WORKSHOP 3 GSE IMPORT.
Scripts & Functions Scripts and functions are contained in .m-files
Multi-Robot Systems with ROS Lesson 10
Multi-Robot Systems with ROS Lesson 2
Computer Simulation of Networks
LTPDA Graphic User Interface summary and status
Cordova & Cordova Plugin Installation and Management
Presentation transcript:

Teaching Assistant: Roi Yehoshua

Decision making in ROS CogniTAO installation TAO plans definition (C)2015 Roi Yehoshua

The goal of this package is to implement light- weight, generic and extendable tools for writing, executing, debugging and monitoring decision making models through ROS standard tools Decision making package is being actively developed by Cogniteam Cogniteam – For single robot – it is a public package – For multi robot – needs a commercial license (C)2015 Roi Yehoshua

We will start with the single robot case Create a new catkin workspace called dmw Check out and compile decision making packages (C)2015 Roi Yehoshua $ cd ~/dmw/src $ git clone $ cd.. $ catkin_make $ cd ~/dmw/src $ git clone $ cd.. $ catkin_make

If you have changed the ROS_PACKAGE_PATH variable in.bashrc, make sure its definition is at the end of the file: (C)2015 Roi Yehoshua # ROS setup source /opt/ros/hydro/setup.bash source ~/catkin_ws/devel/setup.bash source /home/roiyeho/dmw/install/setup.bash source /home/roiyeho/dmw/devel/setup.bash export ROS_PACKAGE_PATH=~/ros/stacks:${ROS_PACKAGE_PATH} export EDITOR='gedit' # ROS setup source /opt/ros/hydro/setup.bash source ~/catkin_ws/devel/setup.bash source /home/roiyeho/dmw/install/setup.bash source /home/roiyeho/dmw/devel/setup.bash export ROS_PACKAGE_PATH=~/ros/stacks:${ROS_PACKAGE_PATH} export EDITOR='gedit'

Under the ~/dmw/src you will find two folders with code examples – decision_making_examples – for single robot – dm_teamwork_examples – for multi robots You can launch any of the examples using the standard roslaunch command For example, to launch the Wandering Robot FSM example, type: (C)2015 Roi Yehoshua $ roslaunch decision_making_examples fsm_wandering.launch

(C)2015 Roi Yehoshua

Once the model is running, its visualization is displayed using the Decision Making rqt plugin (C)2015 Roi Yehoshua

The decision making system supports different types of models: – FSM – Finite State Machines FSM – HSM – Hierarchical FSM HSM – Behavior Trees Behavior Trees – CogniTAO – implementation of BDI architecture CogniTAO In this course we will focus on CogniTAO (C)2015 Roi Yehoshua

CogniTAO (Think As One) is an implementation of the BDI architecture for both single robot missions and for multiple robots working in teams CogniTAO Main features: – Simulate entities that can execute complex missions in dynamic environments, where it is impossible to foresee all possible decisions – Coupling between the decision-making and the world modeling components – Mixing goal-oriented and reactive control, according to the principals of BDI (C)2015 Roi Yehoshua

Defines the current Task to be performed, contains Start and Stop conditions, and is coupled with corresponding Plans through Allocation and Next protocols

(C)2015 Roi Yehoshua A TAO is a level of a number of Plans and their corresponding "Sons", "Allocations", and "Next" protocols A deeper level of sub-plans creates another TAO Each TAO defines its starting plan via the TAO_START_PLAN tag

(C)2015 Roi Yehoshua Boolean conditions defined inside each "Task” Start conditions are validated before the plan is selected for running Stop conditions are validated throughout the entire running time of the plan The start and stop conditions are usually based on the world model (more on this later)

(C)2015 Roi Yehoshua The Next Protocol takes place when a current plan ends, and essentially chooses one next plan to be performed It has the possibility to loop its own plan (i.e. 'return' back and re-run the plan) Built-in Next protocols: – NextFirstReady You can also create your own Next protocols

(C)2015 Roi Yehoshua The Allocation Protocol takes place in a running plan, and essentially chooses (or divides) a sub-plan that will be performed It does not have the possibility to loop the given plan node If all children of an Allocation Protocol 'die' (i.e. there is no additional child that continues to its own Next protocol) then the father 'dies' Built-in Allocation protocols: – AllocFirstReady

(C)2015 Roi Yehoshua In teams, all members of the team correspond to the same Next protocol, while Allocation divides the team into sub-groups that correspond to the same Next protocols respectively

(C)2015 Roi Yehoshua TAOs are defined in a.cpp file using the following syntax: TAO(TAO_NAME) { TAO_PLANS { PLAN_1, PLAN_2,... } TAO_START_PLAN(PLAN_NAME); TAO_BGN { PLANS } TAO_END } TAO(TAO_NAME) { TAO_PLANS { PLAN_1, PLAN_2,... } TAO_START_PLAN(PLAN_NAME); TAO_BGN { PLANS } TAO_END }

(C)2015 Roi Yehoshua To reference another TAO before defining it, use the following declaration: TAO_HEADER(TAO_NAME);

(C)2015 Roi Yehoshua TAO_PLAN(PLAN_NAME) { TAO_START_CONDITION TAO_ALLOCATION TAO_CALL_TASK(TaskName) TAO_STOP_CONDITION TAO_NEXT TAO_CLEANUP_BGN { TAO_CALL_TASK(TaskName) } TAO_CLEANUP_END } TAO_PLAN(PLAN_NAME) { TAO_START_CONDITION TAO_ALLOCATION TAO_CALL_TASK(TaskName) TAO_STOP_CONDITION TAO_NEXT TAO_CLEANUP_BGN { TAO_CALL_TASK(TaskName) } TAO_CLEANUP_END } Must be located inside a TAO_BGN-TAO_END block All task calls after TAO_ALLOCATION section run in parallel as the plan begins Tasks called upon plan execution After STOP_CONDITION is satisfied, apply PROTOCOL to select next plan for execution Optional exit actions Allocate sub-plans Validated before plan is selected for running Validated all the time while the plan is running

(C)2015 Roi Yehoshua TAO_ALLOCATE syntax: Each sub-plan is a start plan of a selected TAO If there are no sub-plans to allocate, then use the tag TAO_ALLOCATE_EMPTY TAO_ALLOCATE(PROTOCOL) { TAO_SUBPLAN(TAO_1), TAO_SUBPLAN(TAO_2),... } TAO_ALLOCATE(PROTOCOL) { TAO_SUBPLAN(TAO_1), TAO_SUBPLAN(TAO_2),... }

(C)2015 Roi Yehoshua TAO_NEXT syntax: If there are no next plans to execute, then use the tag TAO_NEXT_EMPTY TAO_NEXT(PROTOCOL) { TAO_NEXT_PLAN(PLAN_1), TAO_NEXT_PLAN(PLAN_2),... } TAO_NEXT(PROTOCOL) { TAO_NEXT_PLAN(PLAN_1), TAO_NEXT_PLAN(PLAN_2),... }