1 / 30

Creating Architectures with Syndicate and TDL

Creating Architectures with Syndicate and TDL. Ace Project Robotics Institute, Carnegie Mellon September 12, 2007. Outline. What are the layers of Syndicate? Designing a task tree Writing in TDL to create a task tree Exploring concurrency. Syndicate. There are three layers: Planning

devaki
Download Presentation

Creating Architectures with Syndicate and TDL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

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 Just a keyword that says this is not supposed to be a “leaf” in the task tree 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; }

  23. Code for ApproachTarget Parameters to the task 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; }

  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 TurnRobotwith 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 toexecute this task afterTurnTowardsTarget 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 Multiple Robots • Multiple robots lends itself to more concurrency • Temporal constraints make an acyclic graph

More Related