Homework 3 - Robot Operating System (ROS)
Due Monday, September 29, 2014
NOTE: This assignment, like others in this class, is due at the
beginning of the class period. This means that if you are
even a minute late, you lose 20%. If you are worried about
potentially being late, turn in your homework ahead of time.
Do this by submitting them to me during office hours or by sliding it
under my office door. Do not send assignments to me through email or
leave them in my departmental mail box.
As discussed in class, we will be using the Robot Operating System (ROS)
in the course this semester. ROS has numerous features to aid users in the
development of their robot software. However, these features take some
time to learn. The point of this homework is to take you through some
tutorial exercises to help you learn some of the basic features of ROS.
Note, however, that you will not be programming any robots in this
homework.
The assignment.
Work through the ROS tutorials, completing the following exercises as
you go. (Note that you may use the CSN computers in DEH 115 to complete
this assignment or you may use your own computer. If you choose to use
your own computer, you will need to install ROS Hydro (following the ROS Hydro Installation
Instructions) before completing these exercises (or use a virtual
machine such as the one
prepared by Nootrix.)
As you complete these exercises and add items to your completed
assignment, number them to correspond to the numbering below (e.g., the
modified run commands file will be answer 1.1, the return value of "echo
$ROS_PACKAGE_PATH" would be answer 3.1). Note that not all exercises will
result in answers being added to your completed assignment.
- Set up your environment such that the correct ROS run commands are
sourced in your run commands (.*rc) file by your shell on startup. If
you are using bash under Ubuntu, with a standard install, you may follow
the directions in Step 1.6 of the ROS Hydro
installation instructions for Ubuntu directly. Otherwise, you
will need to adapt these instructions slightly.
- Add your modified run commands file to your completed
assignment.
- Work through the tutorial on installing and configuring your ROS environment following the option for catkin.
- Add the output of "export | grep ROS" to your completed
assignment.
- Add the output of "catkin_make" to your completed assignment.
- Work through the tutorial on navigating the ROS filesystem following the option for catkin. (Note that on all remaining tutorials for which there are options for catkin or rosbuild, you should follow the catkin option.)
- Add the output of "echo $ROS_PACKAGE_PATH" to your completed
assignment.
- Work through the tutorial
on creating a ROS package. (Note that when you enter "rospack
depends1 beginner_tutorials" you may get the following error message:
"[rospack] Error: the rosdep view is empty: call 'sudo rosdep init' and
'rosdep update'." If you get this message on the CSN machines, check to
see if the file "/etc/ros/rosdep/sources.list.d/20-default.list" exists.
If so, you do not have to carry out 'sudo rosdep init' but you do have to
carry out 'rosdep update'. If
"/etc/ros/rosdep/sources.list.d/20-default.list" does not exist on the
machine you are using, then ROS has not been properly installed on that
machine — please contact me and CSN system admin Jonathan Mullen
and let us know the name of the machine you were using so that ROS can be
properly installed on it.)
- Add your customized final package.xml file to your completed
assignment.
- Work through the tutorial of building a ROS package.
- Add the output of "catkin_make" to your completed
assignment.
- Work through the
tutorial on understanding ROS nodes. (On the CSN Linux boxes you
may skip Step 1.1 Prerequisites because the simulator has already been
installed.)
- Do a screen capture of the window that appears when you enter
"rosrun turtlesim turtlesim_node" and add this to your completed
assignment.
- Add the output of "rosnode list" (after renaming) to your completed
assignment.
- Work through the
tutorial on understanding ROS topics. (Again, on the CSN Linux
boxes you may skip the installation steps as rqt_graph has already been
installed.)
- Do a screen capture of the window that appears when you enter
"rqt_graph" in Step 1.2.1 and add this to your completed
assignment.
- Do a screen capture of the rqt_plot window after you select to plot
"/turtle1/pose/x" and "/turtle1/pose/y" and add this to your completed
assignment.
- Work through the tutorial on understanding ROS services and parameters.
- Do a screen capture of the TurtleSim window when you enter
"rosparam set background_r 150" and "rosservice call clear" and add
this to your completed assignment.
- Work through the tutorial on using rqt_console and roslaunch.
- Do a screen capture of your rqt_console window when you enter
"rosrun turtlesim turtlesim_node" and add this to your completed
assignment.
- Do a screen capture of your rqt_logger_level window when you enter
"rosrun turtlesim turtlesim_node" and add this to your completed
assignment.
- Do a screen capture of your rqt_graph window when you enter
"roslaunch beginner_tutorials turtlemimic.launch" and "rostopic pub
/turtlesim1/turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0,
0.0]' '[0.0, 0.0, -1.8]'" and add this to your completed
assignment.
- Work through the tutorial on using rosed.
- Work through the tutorial on creating a ROS msg and srv.
- Work through the tutorial on writing a simple publisher and subscriber in C++.
- Work through the tutorial on examining the simple publisher and subscriber.
- Work through the tutorial on writing a service and client node in C++.
- Work through the tutorial on examining the simple service and client.
- Add the output of "rosrun beginner_tutorials add_two_ints_client 1
3" to your completed assignment.
- Work through the tutorial on recording and playing back data.
- Add the contents of the bagfile created with "rosbag record -O
subset /turtle1/command_velocity /turtle1/pose" to your completed
assignment.
- Work through the tutorial on troubleshooting with roswtf.
- Add the output of "roscd" and "roswtf" in Step 1.2 to your
completed assignment.
- Work through the tutorial on navigating the wiki.
What to turn in.
Turn in both an electronic copy (via D2L) and a hard copy of this
assignment.