ROS: Introduction, Usage, and Demos

Jan 15, 2016

Contents

What is ROS

ROS is short for ‘Robot Operating System’. Simply speaking, it is rather a framework for

  • Standardized programs packaging (C++, Python)

  • Standardized data abstraction

which bring the goodness of

  • hardware abstraction

  • standardized communication

Versions and Platform

The first version of ROS was released in 2007, after which it is updated with about one version for one year.

The latest versions (in the end of 2015) are

  • Indigo, for Ubuntu 13.10 - 14.10, recommended for stability

  • Jade, for Ubuntu 14.04 - 15.04, recommended for lasted sofeware

There are also versions ARM-based boards.

For a new hand user, installing Indigo in Ubuntu 14.04 LTS is recommmended.

How ROS Works - Computation Graph

Every node runs separately, communicate based on

  • topics (subscriber vs publisher), or

  • services (service vs service client)

as shown in Figure 1.

lXbyG9.jpg

File System - Package

The simplest structure of a ros package:

my_package/
	CMakeLists.txt
	package.xml

Typical structure of a package:

my_package/
	src/
		1.cpp
		2.cpp
		main.cpp
	include/
		1.h
		2.h
	config/
		camModel.yaml
	CMakeLists.txt
	package.xml

Packages should be put in a catkin workspace like:

ws_folder/
	src/
		CMakeLists.txt
		package_1/
			CMakeLists.txt
			package.xml
		...
		package_n/
			CMakeLists.txt
			package.xml

How to Initialize and Build Packages

Create a workspace for catkin:

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
cd ..
catkin_make

After building, the workspace looks like

ws_folder/
	devel/
	build/
	src/
		CMakeLists.txt
		package_1/
			CMakeLists.txt
			package.xml
		...
		package_n/
			CMakeLists.txt
			package.xml

Create a catkin package:

catkin_create_pkg <package_name> [depend1] [depend2] [depend3]

e.g.

catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

How to Run

Common commands:

roscore = ros+core : master (provides name service for ROS) + rosout (stdout/stderr) +
parameter server (parameter server will be introduced later) 

rosnode = ros+node : ROS tool to get information about a node. 

rosrun = ros+run : runs a node from a given package. 

roslaunch starts nodes as defined in a launch file. 

Frequently Used Packages

  • tf

    • Frame transform management
  • image_transport, cv_bridge

    • Image data management
  • rviz

    • Visualization

Multiple Resources

  • Robots

    • Nao

    • ABB Robotics

    • TurbleBot

    • DJI Matrice 100

  • Sensors

    • Hokuyo Scanning

    • PointGrey FlyCapture2

    • OptiTrack

    • Xsens

  • Algorithms

Demos

  • Publish and subscribe image stream

  • SVO

  • ORB-SLAM

  • VO on AGV

References

wiki.ros.org

License (CC) BY-NC-SA | Subscribe RSS | Email hi@fzheng.me