User Tools

Site Tools


teaching:se-kiba:plan-based-assignment

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
teaching:se-kiba:plan-based-assignment [2013/05/23 16:11] – [Installing the CRAM system] winklerteaching:se-kiba:plan-based-assignment [2016/05/19 09:19] (current) – external edit 127.0.0.1
Line 26: Line 26:
   source ~/.bashrc   source ~/.bashrc
  
-===== CRAM Installation and Basics ===== 
  
  
-==== Starting with a standard use-case: Pick and Place ==== 
-Once you have the system installed, you can check it's functionality by following [[https://ai.uni-bremen.de/wiki/software/cram/tutorials/pick-and-place-primer|this]] tutorial on pick and place. The important part here is that the CRAM system launches successfully and that you get a basic understanding of the terms used in conjunction with it (e.g. what is the REPL, what is Emacs, how to write simple Lisp commands).. 
  
-==== Going further ==== +===== Assignment ===== 
-Your task in the seminar will be to create two ROS packages that communicate with each other using the ROS messaging backend. A simplified simulator version will be used as you will concentrate on the communication and data handling aspects of controlling cognitive agents through ROS interface via CRAM.+To successfully pass this assignment, you must write a ROS node that communicates with a TurtleSim simulation and sends target poses to it.
  
-{{ http://www.ros.org/wiki/tf/Tutorials/Introduction%20to%20tf?action=AttachFile&do=get&target=turtle_tf_drive.png?direct&300 |}}+This includes doing the following: 
 +  * Write a .launch-file for starting the turtlesim_node node in the turtlesim package (this will automatically start the roscore master node if none is active) 
 +  * Write a main function that starts the ROS node and connects it to the ROS master. 
 +  * Go through a list of cities (*cities*, as defined in the assignment template) and make sure the turtle reaches all of these city coordinates (use a reasonably small threshold around the target city to check if it reached the target spot). 
 +    * For this, you will need to write a controller in Lisp as you can only command the turtle velocity. 
 +    * Change the background of the turtle visualization every time you reach a city to a random color 
 +    * Output a message containing the city name every time you visit a city and start out to a new one using for example <code>(roslisp:ros-info (seminar high-level) "Going to city ~a" city-name-string)</code> with city-name-string being the city name. 
 +  * Once all spots were visited, go back to the initial position. 
 +  * Implement an interface for the /turtle1/color_sensor topic similar to the one reading the current turtle pose. Inside the controller loop, check this color value (currently under the turtle) and see if it is crossing one of it's former lines. If that is the case, increment a (global) counter and after the whole journey is over, output the number of times the turtle crossed it's own path. 
 + 
 +To change the background color, inspect the /clear ROS service. 
 +The parameters can be set using the 
 +<code> 
 +(roslisp:set-param key value) 
 +</code> 
 +call. Afterwards, you have to call the /clear service. You can do this in Lisp using the roslisp call-service function: 
 +<code> 
 +(roslisp:call-service service type) 
 +</code> 
 +with respective service-name and -type. 
 + 
 +Document the code you write (preferably in the GitHub Wiki) and add documentation strings to the implemented funtions. 
 + 
 +For details concerning the TurtleSim package, consult the manual: [[http://www.ros.org/wiki/turtlesim|TurtleSim manual page]]. 
 +For details about the assignment, look at the README.md file also shown in the GitHub main page for the repository: [[https://github.com/ai-seminar/group-highlevel]]
 ===== Side Notes ===== ===== Side Notes =====
 In order to get a better understanding of Lisp (and for reference purposes), the following links can support you while getting the grips of it: In order to get a better understanding of Lisp (and for reference purposes), the following links can support you while getting the grips of it:
   * [[http://www.gigamonkeys.com/book/|Practical Common Lisp]]: A good tutorial for Lisp beginners (and advanced users, as it covers a lot of material)   * [[http://www.gigamonkeys.com/book/|Practical Common Lisp]]: A good tutorial for Lisp beginners (and advanced users, as it covers a lot of material)
   * [[http://www.lispworks.com/documentation/HyperSpec/Front/|Common Lisp HyperSpec]]: A reference index explaining lisp commands and features (manpages-like)   * [[http://www.lispworks.com/documentation/HyperSpec/Front/|Common Lisp HyperSpec]]: A reference index explaining lisp commands and features (manpages-like)
 +  * [[http://www.ros.org/wiki/roslisp/Tutorials/BasicUsage|Basic roslisp usage]]: How to do basic ROS related things using roslisp
teaching/se-kiba/plan-based-assignment.1369325485.txt.gz · Last modified: 2016/05/19 09:18 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki