Contents
- What is ROS
- Versions and Platform
- How ROS Works - Computation Graph
- File System - Package
- How to Initialize and Build Packages
- How to Run
- Frequently Used Packages
- Multiple Resources
- Demos
- References
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.
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