Programming the UMD-CVL Erratic Robot using ROS

Related Pages:  http://www.umiacs.umd.edu/~cteo/index_ROS

In these series of tutorials, we introduce the Robot Operating System (ROS)  http://www.ros.org, an open-source meta-operating system for programming your favorite robot in C++, Python and Matlab. Essential concepts, rules and tricks will be shown. For hands-on, participants will experience writing simple example codes, calling useful functions and compiling them within the ROS environment. Codes can be tested directly on the UMD-CVL Erratic robot platform.


Session 1: ROS basics

Reference: Tutorials found in  http://www.ros.org/wiki/ROS/Tutorials. Good to try all of them, but we will focus on some of them only due to time limitations.

This session aims to get you initiated on ROS with only the minimum details. It is by no means comprehensive but is to help you navigate the ROS extensive resources in the future.

  • ROS Core concepts: repository, stacks, packages, nodes, topics, services  http://www.ros.org/wiki/ROS/Tutorials/NavigatingTheFilesystem
  • Basic file navigation/debugging commands: roscd, rosls, rosfind, rxgraph, rostopic, roswtf...
  • Setting ROS_PACKAGE_PATH and ROS_MASTER_URI for your repository work and for connecting multiple computers together in ROS.  http://www.ros.org/wiki/ROS/EnvironmentVariables and  http://www.ros.org/wiki/ROS/Tutorials/MultipleMachines
  • Making your own stack + package: standard folders to have, editing the manifest file, setting dependencies: roscreate-stack, roscreate-pkg  http://www.ros.org/wiki/ROS/Tutorials/CreatingPackage
  • Messages and Services: .msg, .srv files, rosmsg  http://www.ros.org/wiki/ROS/Tutorials/CreatingMsgAndSrv
  • Subscribers and Publishers: C++ (drawing a circle) samples [code: see cv_draw_circle.cpp], for Python [code: see face_detect_node.py]
  • Compiling your code using: rosmake and editing the CMakelist.txt: generating messages/services, linking libraries...
  • Running the code: rosrun, roslaunch
  • Final words: searching the ROS repository and API, signing up to their mailing list and asking for help
  • Hands-on: starting the robot's camera, visualize the nodes, start the compiled nodes you have written. Question: What messages are published? User image_viewer to see the results. Show in rxgraph [download the .zip file for the final created structure]

Session 2: Using ROS with hardware + software


In this session we dive into how one can access the various hardware from ROS, debug it and see outputs. We show how one can programatically access the hardware and extract useful information for further processing.

  • ROS + Hardware concepts: real drivers (Linux), driver nodes (from ROS stacks) and topics
  • Hardware list: Erratic Base, Hokuyo Laser, PG Dragonfly (x4), DP PTU-D46-17, Microsoft Kinect. ROS Drivers can be found at [see drivers_location file]
  • OpenCV 2.0: cv_bridge, image_transport, example code with PG Dragonfly [see face_detect_node.py]
  • Point Cloud Library: pcl-ros, pcl libraries, example code with Kinect [see process_kinect_range2]
  • Matlab with ROS: concepts, package structure (folders), messages, required files (xdr, cpp), example code with Kinect [TODO: link to be added]

Session 3: Using ROS with the Erratic Base


[[Alex Please Add: Simulation + actual implementation with example codes]]

Session 4: Using ROS with NLTK

Reference: NLTK website:  http://www.nltk.org

In this session, we talk about basic using of NLTK to do natural language processing.

  • Language Processing and Python
  • Accessing Text Corpora and Lexical Resources
  • Processing Raw Text
  • Categorizing and Tagging Words
  • Analyzing Sentence Structure
  • ...