1 Creating Architectures with Syndicate and TDL Ace Project Robotics Institute, Carnegie Mellon September 12, 2007.

Slides:



Advertisements
Similar presentations
Robofest 2005 Introduction to Programming RIS 2.0 RCX Code.
Advertisements

Procedures and Functions. What are they? They are both blocks of code that can be reused to perform specific task. However there is a difference: Function-
Zeros and End Behavior Objective: Be able to find zeros and end behavior of a graph. TS: Making decisions after reflection and review.
Lecture 2 Calling and Defining Methods in Java. Introduction ●Calling and defining methods ●Declaring and defining a class ●Instances of a class ●The.
Brad Hamner Robotics Institute – Carnegie Mellon University April 8, 2008.
Brent Dingle Marco A. Morales Texas A&M University, Spring 2002
Vex 1.0 © 2005 Carnegie Mellon Robotics Academy Inc. Programming in easyC.
Human-in-the-Loop Control of an Assistive Robot Arm Katherine Tsui and Holly Yanco University of Massachusetts, Lowell.
An Intro to Robots and Computer Programming
A Robust Layered Control System for a Mobile Robot Rodney A. Brooks Presenter: Michael Vidal.
© 2006 Carnegie Mellon Robotics Academy Designed for use with the LEGO MINDSTORMS ® Education NXT Software and Base Set #9797 Sentry System One-Way Communication.
1 Rosetta and Gazebo: Simulating Robots A CE Project Robotics Institute, Carnegie Mellon September 12, 2007.
Repeating Blocks of Code (updated 9/20/05 7:35pm) Reference NQC Tutorial pp 9-12.
On Three-Layer Architecture Erann Gat Jet Propulsion Laboratory California Institute of Technology Presentation by: Ekkasit Tiamkaew Date: 09/09/04.
Cambodia-India Entrepreneurship Development Centre - : :.... :-:-
01-Intro-Object-Oriented-Prog-Alice1 Barb Ericson Georgia Institute of Technology Aug 2009 Introduction to Object-Oriented Programming in Alice.
Applied Control Systems Robotics & Robotic Control
Week 10 Today 1.Homework presentations and critique. 2.Review digital and analog inputs. 3.DIY - jumpers, soldering etc.
Using Data Active Server Pages Objectives In this chapter, you will: Learn about variables and constants Explore application and session variables Learn.
Mobile Robot Control Architectures “A Robust Layered Control System for a Mobile Robot” -- Brooks 1986 “On Three-Layer Architectures” -- Gat 1998? Presented.
Managing A Self- Advocacy Organization Part 1. Intro  Hello!  Julia Bascom  Director of Programs for ASAN.
RC Car Thomas Chau, Ben Sack, Peter Tsonev. Overview Goal: to build a smart RC car that corrects itself using sensors. Objective: testing our run at high.
Why do robots need to move?
Anees Elhammali Michael Malluck John Parsons Namrata Sopory
Robotica Lecture 3. 2 Robot Control Robot control is the mean by which the sensing and action of a robot are coordinated The infinitely many possible.
1 Ch. 7 Recursion similar to iteration in that you repeatedly do a little bit of the task and then “loop” again and work on a smaller piece - eventually.
Introduction to Programming ICS2O Findlay. Learning Goals  We will learn  The definitions of a computer, program and programming language.  The different.
INTERMEDIATE PROGRAMMING LESSON By: Droids Robotics My Blocks Overview Step-by-Step Visual Guide to Creating a My Block with Inputs with Outputs.
Python and REST Kevin Hibma. What is REST? Why REST? REST stands for Representational State Transfer. (It is sometimes spelled "ReST".) It relies on a.
Method Overriding Remember inheritance: when a child class inherits methods, variables, etc from a parent class. Example: public class Dictionary extends.
Robotica Lecture 3. 2 Robot Control Robot control is the mean by which the sensing and action of a robot are coordinated The infinitely many possible.
Architecture for Autonomous Assembly 1 Reid Simmons Robotics Institute Carnegie Mellon University.
A Language for Task-Level Executives Reid Simmons David Apfelbaum Carnegie Mellon University.
Vex Robotics Programming Options. To start you off and give you a safe "home base" to return to while you explore, a few key programs are already included.
Boundary Assertion in Behavior-Based Robotics Stephen Cohorn - Dept. of Math, Physics & Engineering, Tarleton State University Mentor: Dr. Mircea Agapie.
Functions. Functions are named blocks of code. Functions allow complex programs to be broken down into smaller, simpler tasks. Functions allow commonly.
Robotics Robotics History Robotics Technology Types of Robots.
1/43 Andries van Dam  /15/15 Lecture 2 Calling and Defining Methods in Java.
Karel J. Robot Tool for learning OOP (Lecture covers Ch. 1 and 2)
University of Windsor School of Computer Science Topics in Artificial Intelligence Fall 2008 Sept 11, 2008.
1 Design and Integration: Part 2. 2 Plus Delta Feedback Reading and lecture repeat Ambiguous questions on quizzes Attendance quizzes Boring white lecture.
Structured Control for Autonomous Robots Reid G. Simmons Carnegie Mellon University Uday Rajanna.
IBM Service Oriented Modeling and Architecture TM (SOMA) Licensed Materials - Property of IBM © Copyright IBM Corporation All rights reserved. Introduction.
Data Structure for Behavior-Based Machine Learning/Path Planning Zachary Dawson A: Humanoids 5/7/13.
Software Development. Software Development Loop Design  Programmers need a solid foundation before they start coding anything  Understand the task.
CSE 332: Design Patterns Review: Design Pattern Structure A design pattern has a name –So when someone says “Adapter” you know what they mean –So you can.
Technologies for Mobile Manufacturing Sanjiv Singh/Reid Simmons Robotics Institute Carnegie Mellon University February 2008.
Mike Graves Summer 2005 University of Texas at Dallas Implicit Invocation: The Task Control Architecture Mike Graves CS6362 Term Paper Dr. Lawrence Chung.
Autonomy for General Assembly Reid Simmons Research Professor Robotics Institute Carnegie Mellon University.
SCJ and EV3 Robots Leadership Election. Background Safety Critical Java – A safety critical programming model in Java EV3 mindstorms Lego Robot – A robot.
Review of Previous Classes Declaring Variables - var myVar:DataType = value Data Types – Number, uint, String, Boolean Functions – parameters, return.
Laboratory 2 Group 19 The Group of Destiny. User Interface - Debugging Objectives:  Display: Sensor data (telemetry) – including IR sensors, status of.
SPECIAL NOTE The customer on arrival at the post office is supposed to approach the counter for payment after that, he goes to writing duty for allocation.
Execution (Control Systems) Tactical Strategic Knowledge Mission Specs Path Generator (Splining) Control Rules Past Features Past Maneuvers Physics Model.
Deriving Consistency from LEGOs What we have learned in 6 years of FLL by Austin and Travis Schuh © 2005 Austin and Travis Schuh, all rights reserved.
Functionality of objects through observation and Interaction Ruzena Bajcsy based on Luca Bogoni’s Ph.D thesis April 2016.
Week#3 Software Quality Engineering.
With. Project Overview  Introduction to Factory Automation Numerical Control  Build an autonomous robotic solution  Testing an autonomous robot build.
AP CSP: Creating Functions & Top-Down Design
Deriving Consistency from LEGOs
Program the robotic arm
Autonomous Robot Platform
Review If you want to display a floating-point number in a particular format use The DecimalFormat Class printf A loop is… a control structure that causes.
Looping and Random Numbers
Project – Feedback Process
An Introduction to VEX IQ Programming with Modkit
Design of the Control Strategy
Subsuption Architecture
Market-based Dynamic Task Allocation in Mobile Surveillance Systems
Presentation transcript:

1 Creating Architectures with Syndicate and TDL Ace Project Robotics Institute, Carnegie Mellon September 12, 2007

2 Outline What are the layers of Syndicate? Designing a task tree Writing in TDL to create a task tree Exploring concurrency

3 Syndicate There are three layers:  Planning  Executive  Behavioral But what are the layers? What do they do?

4 Syndicate Layers: Behavioral Made up of “blocks”  Each block is a small thread/function/process  Represent hardware capabilities or repeatable behaviors  “Stateless”: relies on current data; no knowledge of past or future Communicate with sensors Send commands to robots and get feedback Communicate data to other blocks

5 Syndicate Layers: Executive Made up of “tasks”  Each task is concerned with achieving a single goal  Tasks can be arranged temporally Spawn subtasks Enable and connect blocks in the behavioral layer to achieve the task  Enable  tell a block to start running  Connect  tell blocks to send data to other blocks Monitor blocks for failure Provide failure recovery

6 Syndicate Layers: Planning Has knowledge of robots’ mission Receives feedback from system Decides what tasks to spawn to achieve mission  And on which robots  These tasks form a “task tree”

7 Syndicate for the Ace Project: Some Examples Behavioral layer  Block to talk to fiducial tracker  Block to command base and get pos. feedback  Block to command arm and get pos. feedback Executive layer  Task to pick up plug  Task to move robot to task board  Task to dock plug No planning layer!

8 Where is the planning layer? Planning layer creates task trees online  Based on knowledge of the system  Example: New task to be done. Planner knows which robots are available/capable to achieve it. Spawn the task on the desired robot. Our tasks are straightforward  Number and type of robots is known We hard-code our own task tree  One super-task spawns the main tree

9 Example: Docking a Plug Let’s start with a simplified version of our scenario We have one robot It needs to pick up a plug and then dock it

10 Docking a Plug Our main task is RetrieveAndDock Break it down:  Go up to the stanchion where the plug is  Pick up the plug  Go to the task board  Dock the plug

11 Docking a Plug: Task Tree

12 GoTowardsPlug Want the robot to go towards the stanchion and put itself in position to get the plug Spawn additional subtasks  Turn towards the stanchion  Drive to the stanchion  Turn to face the stanchion

13 Updated Task Tree

14 PickUpPlug Plug is in a fixed position Assign waypoints relative to that position  As robot’s end-effector goes to those waypoints, it picks up plug Run one visual servo task for each waypoint

15 Filling in the Task Tree

16 Filling in the Task Tree

17 Filling in the Task Tree EstimatePoses and MoveArmAndBase run concurrently on our single robot

18 Shape of the Task Tree We’ve grouped some tasks into supertasks Sometimes this is for repeatability and reuse  Like grouping many VisualServo tasks into one VisuallyServoToWaypoints task Sometimes this is for aesthetics  Like grouping turn/move/turn into one GoTowardsStanchion task

19 Shape of the Task Tree This tree is fundamentally the same as the previous one, but is harder to read and understand

20 Example: Coding in TDL Assume these tasks exist:  MoveRobotForward (x meters)  TurnRobot (y degrees) Let’s code the new task ApproachTarget We’ll use this task twice: Approaching the stanchion Approaching the task board

21 Code for ApproachTarget Goal ApproachTarget (double firstAngle, double moveDist, double secondAngle) { TurnTowardsTarget : spawn TurnRobot (firstAngle); MoveTowardsTarget: spawn MoveRobot (moveDist) WITH SERIAL TurnTowardsTarget; TurnToFaceTarget: spawn TurnRobot (secondAngle) WITH SERIAL MoveTowardsTarget; }

22 Code for ApproachTarget Goal ApproachTarget (double firstAngle, double moveDist, double secondAngle) { TurnTowardsTarget : spawn TurnRobot (firstAngle); MoveTowardsTarget: spawn MoveRobot (moveDist) WITH SERIAL TurnTowardsTarget; TurnToFaceTarget: spawn TurnRobot (secondAngle) WITH SERIAL MoveTowardsTarget; } Just a keyword that says this is not supposed to be a “leaf” in the task tree

23 Code for ApproachTarget Goal ApproachTarget (double firstAngle, double moveDist, double secondAngle) { TurnTowardsTarget : spawn TurnRobot (firstAngle); MoveTowardsTarget: spawn MoveRobot (moveDist) WITH SERIAL TurnTowardsTarget; TurnToFaceTarget: spawn TurnRobot (secondAngle) WITH SERIAL MoveTowardsTarget; } Parameters to the task

24 Code for ApproachTarget Goal ApproachTarget (double firstAngle, double moveDist, double secondAngle) { TurnTowardsTarget : spawn TurnRobot (firstAngle); MoveTowardsTarget: spawn MoveRobot (moveDist) WITH SERIAL TurnTowardsTarget; TurnToFaceTarget: spawn TurnRobot (secondAngle) WITH SERIAL MoveTowardsTarget; } Notice how we call TurnRobot with different parameters in different task instances

25 Code for ApproachTarget Goal ApproachTarget (double firstAngle, double moveDist, double secondAngle) { TurnTowardsTarget : spawn TurnRobot (firstAngle); MoveTowardsTarget: spawn MoveRobot (moveDist) WITH SERIAL TurnTowardsTarget; TurnToFaceTarget: spawn TurnRobot (secondAngle) WITH SERIAL MoveTowardsTarget; } In the tree, this is the task name, but this is the actual function being executed

26 Code for ApproachTarget Goal ApproachTarget (double firstAngle, double moveDist, double secondAngle) { TurnTowardsTarget : spawn TurnRobot (firstAngle); MoveTowardsTarget: spawn MoveRobot (moveDist) WITH SERIAL TurnTowardsTarget; TurnToFaceTarget: spawn TurnRobot (secondAngle) WITH SERIAL MoveTowardsTarget; } Tells the system to execute this task after TurnTowardsTarget completes

27 Code for ApproachTarget Goal ApproachTarget (double firstAngle, double moveDist, double secondAngle) { TurnTowardsTarget : spawn TurnRobot (firstAngle); MoveTowardsTarget: spawn MoveRobot (moveDist) WITH SERIAL TurnTowardsTarget; TurnToFaceTarget: spawn TurnRobot (secondAngle) WITH SERIAL MoveTowardsTarget; } Any questions?

28 Coding in TDL Now let’s use ApproachTarget This code: ApproachTaskBoard: spawn ApproachTarget (30, 2, -30) WITH SERIAL PickUpPlug; Creates this task tree:

29 Serial or Concurrent? We have one robot, so a lot of our tasks are serial with each other  Like turn/move/turn However, the robot has multiple sensors and controllable pieces We could have some tasks run concurrently  Read positions from VisTracker while moving arm towards the task board  Move the arm to a safe configuration while moving the base away from the stanchion

30 More Complicated Task Trees: Example with Concurrence Multiple robots lends itself to more concurrency Temporal constraints make an acyclic graph