=====DASL 107: Introduction to ROS===== **Author:** Keitaro Nishimura Email: \\ **Date Last modified on:** 07/09/18 \\ **Keywords:** ROS 1, ROS 2, Class, Introduction \\ {{ courses:ros.png?400 }} \\ This course is designed to introduce ROS (Robot Operating System) to students with little to no background on Ubuntu and a basic understanding of CPP code. This course is by no means comprehensive and is meant as a crash course to introduce basic and useful concepts in ROS to students to help with their projects within the lab. Please refer to other [[http://wiki.ros.org/ROS/Tutorials|ROS tutorials]] for a more comprehensive understanding. Each class is about 1hr long taught over 8 classes every other day. HW is due before the next class unless students have some reason that they can prove to the instructor. \\ Paper that outlines what ROS is more in-depth and is a recommended read. \\ {{courses:ros:icraoss09-ros.pdf|ROS: an open-source Robot Operating System}} \\ ===Notes on Course as of 07/09/18=== As of the date noted above this course has only been taught once. I will list a number of things that I would do differently if I were to teach this course again. I hope that anyone who teaches this course in the future can benefit from these points and will add to this list as they learn how to better teach this course as well. - 1 hr is too short. A 2 hr class with the first 1~1.5 hr lecture and the rest a "lab" would have been better. In the "lab" students would try to re-create any examples used in class to solidify anything learned in class. - It seems for the most part students started the HW the day it was due so it may be possible to do this class 5 times a week to shorten the time it takes to complete this course. - At first, I wanted to cover a large amount of topics like, basic ROS concepts, Gazebo, and version control software but I found that I was cramming too much information. focusing on just ROS concepts and making sure that everyone understands would have been better. - It seems that when I taught ROS services students got it confused with ROS messages and tried to use them interchangeably, I should have spent more time explaining how they are different. ====Lecture Notes==== ===Class 1=== {{courses::ros::week1_ver2.pptx|PPT}} {{courses::ros::week1_ver2.pdf|PDF}} ===Class 2=== {{courses::ros::ros_2.pptx|PPT}} {{courses::ros::ros_2.pdf|PDF}} ===Class 3=== {{courses::ros::ros_3v2.pptx|PPT}} {{courses::ros::ros_3v2.pdf|PDF}} ===Class 4=== {{courses::ros::ros_4.pptx|PPT}} {{courses::ros::ros_4.pdf|PDF}} {{courses::ros::publisher.odt|Publisher Example Code}} {{courses::ros::subscriber.odt|Subscriber Example Code}} {{courses::ros::multi-key.odt|Example Solution for HW 2}} ===Class 5=== {{courses::ros::ros_5.pptx|PPT}} {{courses::ros::ros_5.pdf|PDF}} {{courses::ros::test.launch.odt|Launch File Example Code}} ===Class 6=== {{courses::ros::ros_6_1_.pptx|PPT}} {{courses::ros::ros_6_1_.pdf|PDF}} {{courses::ros::client.odt|Service Client Example Code}} {{courses::ros::server.odt|Service Server Example Code}} ===Class 7=== {{courses::ros::ros_7.pptx|PPT}} {{courses::ros::ros_7.pdf|PDF}} {{courses::ros::multi-key.odt|Multiple Publishers Example Code}} ===Class 8=== {{courses::ros::ros_8.pptx|PPT}} {{courses:ros:ros_8.pdf|PDF}}