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