Robot Operating System (ROS) Weijun Huang Computer Sciences
OUTLINES What is ROS? Design goals of ROS Usage of ROS SDK Build and Install ROS Sample Project Embedded ROS
What is ROS? ROS is a framework for robotics: from drivers to state-of-the-art algorithms, with developer tools ROS was originally designed for a specific set of challenges encountered when developing large-scale service robots. Some design goals of ROS [Quigley 2009]: Peer-to-peer Multi-lingual Tools-based Thin Free and open-source
Design Goals of ROS? 1. Peer to Peer Heterogenous network situation: onboard robots (at Ethernet) communicate wirelessly (slow) with offboard machines running intensive tasks (e.g. speech recognition). Running a central data server would result in heavy traffic across the wireless link. Peer-to-peer connectivity avoids the issue (with buffering or fanout software if necessary). ROS provides a lookup mechanism name service for peer-to-peer network topology: processes can find each other at runtime
Design Goals of ROS? 2. Multi lingual (language neutral): supports four languages: C++, LISP, Octave and Python, and provides other language ports supports cross-language development, by using a so-called interface definition language (IDL) 3. Tools based This is an effort of complexity management of ROS microkernel design: a large number of tools/modules are used to build/run the ROS components
Usage of ROS SDK Downloadable from ROS.org: http://wiki.ros.org/ROS/Installation select Ubuntu, OS X, Windows, … , Let select Windows – WinRos sdk development environment: Microsoft Visual Studio What needs to build the SDK: http://wiki.ros.org/win_ros/Msvc%20Build%20Environment%20-%20Fuerte Uses Windows sdk 7.1 Compiles with cmake/nmake. Compiles in Release mode (Currently 32 bit support)
Usage of ROS SDK ROS robot software distributions: http://www.willowgarage.com/pages/software/ros-platform ROS Hydro Medusa (September, 2013) ROS Groovy (December, 2012) ROS Fuerte (April, 2012) ROS Electric (August, 2011) ROS Diamondback (March, 2011) ROS C Turtle (August, 2010) ROS Box Turtle (March, 2010)
Build and Install ROS Install the following dependencies -- Windows SDK 7.1 CMake 2.8.7 Empy 3.1 PyNose 1.1.2 PySetupTools 0.6c11 Extract the following archives to C:\opt Rosdeps : boost 1.47.0, bzip2 1.06, log4cxx 0.10 WinRos Build Script (pay attention to downloading winros.bat finally) > mkdir C:\work > cd C:\work > wget --no-check-certificate https://raw.github.com/stonier/win_ros/master/msvc/msvc_sdk/scripts/fuerte/winros.bat
Build and Install ROS > cd C:\work > winros sdk download Then the cmd prompt will guide you to finish the config, build, install Python packages: Python 2.7.2 : add C:\Python27\ and C:\Python27\Scripts to your PATH. PyWin32 217 PyYaml 3.10 PySetupTools 0.6c11 Rospkg 1.0.6 WinRos Sdk 0.1.3 - extract into C:\opt.
Sample Project Back to ROS.org: http://wiki.ros.org/ROS/Installation select robots -- PR2, Dr. Robot, Kobuki, … Let select Kobuki Tutorial for testing automatic docking: http://wiki.ros.org/kobuki/Tutorials/Testing%20Automatic%20Docking Download a sample project of Kobuki from https://github.com/yujinrobot/kobuki
Embedded ROS An embedded ROS is an interface framework that provides control & communication architectures for robots, such as multi-sensor systems [Song 2008]. It supports human-robot interaction (keyboard, mouse, menu interface, etc). Three function layers: Low level function call manager (LLFCM) menu Mid level functions layer (communication layer) High level user interface dialog control the mobile robot and display sensor status
Reference Quigley, M., et al, 2009, ROS: an open-source Robot Operating System, http://pub1.willowgarage.com/~konolige/cs225B/docs/quigley-icra2009-ros.pdf Song, T., et al, 2008, Embedded Robot Operating Systems for Human-Robot Interaction, Computer-Human Interaction: 8th Asia-Pacific Conference, Springer- Verlag Mueke & Powell, 2010, “A Distributed, Heterogeneous, Target-optimized Operating System for a Multi-robot Search and Rescue Application”, Modern Approaches in Applied Intelligence: 24th International Conference on, Springer- Verlag