THIS IS JUST AN OUTLINE FOR A WORK IN PROGRESS
Overview
- What is ROS 
- Design (peer-to-peer distributed, favors greater computation power over multiple computers)
 - Comparisons to other frameworks
 - Important of BSD + Open Source
 - Compatibility with other frameworks
 - Not Realtime
 
 - Client libraries 
- roscpp
 - rospy
 - Experimental client libraries 
- roslisp
 - rosoct
 - rosjava
 
 
 - Three levels of ROS: filesystem, computation graph, community
 - Filesystem Level 
- Packages 
- Packages have dependencies Types of dependencies: dependencies on Packages, dependencies on thirdparty (rosdep).
 - Manifests
 - Tools 
- rospack
 - roscreate-pkg
 - roscd
 
 
 - Stacks
 - Message definitions 
- versioning
 
 - Service definitions 
- versioning
 
 - Build System 
- Based on CMake 
- CMake macros
 - Exporting cmake macros
 
 - Tools 
- make vs. rosmake
 
 
 - Based on CMake 
 
 - Packages 
 - Computation Graph Level 
- Nodes 
- Tools 
- rosnode
 
 - client libraries 
- rospy.init_node()
 - roscpp node handle
 
 
 - Tools 
 - Services 
- Tools    
- rosservice
 
 - client libraries 
rospy.ServiceProxy
- roscpp Service
 
 
 - Tools    
 - Topics 
- Transports 
- TCPROS
 - UDPROS
 
 - Tools        
- rostopic
 - rxplot
 
 - client libraries 
- pub/sub examples in both
 - UDP Example with roscpp
 - No UDP example with rospy
 
 
 - Transports 
 - Bags 
- Tools 
- rosrecord
 - rosplay
 
 - Client libraries 
- rosrecord.py
 
 
 - Tools 
 - The Graph 
- The ROS Core 
- Master
 - Parameter Server 
- rosparam
 
 - rosout 
- rxconsole
 - log files
 
 
 - roslaunch
 - run_id
 
 - The ROS Core 
 
 - Nodes 
 - Community Level 
- Repository 
- Repos 
- ROS
 - ros-pkg
 - wg-ros-pkg
 
 - Tools 
- roslocate
 
 
 - Repos 
 - Mailing lists
 - ROS Wiki
 - Bug tracker
 - Blog
 
 - Repository 
 
Using ROS
- Getting comfortable with the command line 
- roscreate-pkg foo
 create MyMsg.msg
- edit CMakeLists.txt file
 - run rosmake, as well as make
 - run roscore
 run rxgraph &
- run rostopic list
 - run rostopic pub my_topic foo/MyMsg 1 -r 10
 - run rostopic list
 - run rostopic hz foo/MyMsg
 - run rostopic echo foo/MyMsg
 - run rostopic pub my_topic2 foo/MyMsg 10 -r 10
 - run rostopic list
 - run rxplot my_topic my_topic2
 - run rosrecord my_topic
 - run rostopic echo -b bag
 - run rosplay bag
 - roswtf?
 
 - Writing Nodes 
- Simple talker/listener 
- roscpp example
 - rospy example 
- Advanced initialization of message args (just args, keywords args, etc...)
 
 - rosnode ping
 - rosnode info
 
 - Passing in extra data to your listener (listener with user data tutorial)
 - Wrap up your nodes in roslaunch 
- Create talker/listener launch file 
- rosnode list
 
 - Pass in parameter 
- rosparam list
 
 - Pass in lots of parameters 
- rosparam list
 - rosparam dump?
 
 
 - Create talker/listener launch file 
 - Services 
- Edit talker to provide a service
 - Edit listener to call a service
 
 
 - Simple talker/listener 
 
Intermediate topics
- Listener callbacks
 - Throttling
 - Muxing
 - rosmake a launch file
 - rebagging
 
Advanced Topics
- Connection headers
 - Message synchronization?
 - Persistent service connections 
- Better performance, but less robust to changes in computation graph
 
 - Migrating messages
 - Dynamic subscription in rospy