Skip to content
13 changes: 6 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,8 @@

To complete this workshop please arrive with:
* A basic understanding of Ubuntu Linux
* A basic understanding of Python and C++
* A laptop running either:
* [Ubuntu 18.04](https://releases.ubuntu.com/18.04) and [ROS Melodic](http://wiki.ros.org/melodic) or
* [Ubuntu 20.04](https://releases.ubuntu.com/20.04) and [ROS Noetic](http://wiki.ros.org/noetic)
* A basic understanding of Python and/or C++
* A laptop running the ROS 2 distro [Humble](https://docs.ros.org/en/humble/index.html)
* Please follow the [installation instructions here](./ros-installation.md)
* Ask a mentor if you get stuck, and we'll be happy to help
* Access to the Internet (you'll need to download 1-2 GB)
Expand All @@ -31,7 +29,7 @@ Topics:
+ Community
+ References

### Complete the [ROS Beginners Tutorials][ros-tutorials]
### Complete the [ROS Beginners Tutorials][ros-tutorials-beginner]
Topics:
+ Directory structures for Catkin workspaces
+ Creating packages
Expand All @@ -45,7 +43,7 @@ Topics:
+ Using `rviz`
+ Using `roslaunch`

### Complete the [ROS Intermediate Tutorials][ros-tutorials]
### Complete the [ROS Intermediate Tutorials][ros-tutorials-intermediate]
Topics:
+ Creating a new package by hand
+ Managing dependencies
Expand Down Expand Up @@ -204,4 +202,5 @@ source devel/setup.bash

[ros-cmakelists]: http://wiki.ros.org/catkin/CMakeLists.txt
[ros-custom-msg]: http://wiki.ros.org/ROS/Tutorials/DefiningCustomMessages
[ros-tutorials]: http://wiki.ros.org/ROS/Tutorials
[ros-tutorials-beginner]: https://docs.ros.org/en/humble/Tutorials/Beginner-CLI-Tools.html
[ros-tutorials-intermediate]: https://docs.ros.org/en/humble/Tutorials/Intermediate.html
Binary file added images/ROS_Computational_Graph.drawio.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed images/ROS_Computational_Graph.png
Binary file not shown.
Binary file added images/ROS_Filesystem_Architecture.drawio.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed images/ROS_Filesystem_Architecture.png
Binary file not shown.
8 changes: 4 additions & 4 deletions ros-installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ Follow the instructions above to create a Ubuntu Live USB Stick. Boot from the U

***WARNING*** Make sure you have a backup of your computer before attempting any dual-boot installations as it is very easy to accidentally damage or delete all data on your laptop.

There are plenty of tutorials on the internet, e.g. [here](https://medium.com/linuxforeveryone/how-to-install-ubuntu-20-04-and-dual-boot-alongside-windows-10-323a85271a73).
There are plenty of tutorials on the internet, e.g. [here](https://www.linuxtechi.com/dual-boot-ubuntu-22-04-and-windows-11/).

Summary: Boot from an Ubuntu Live USB Stick, select install and choose _"Install Ubuntu alongside Windows Boot Manager”_.

Expand All @@ -40,9 +40,9 @@ There are many Virtual Machines solutions, such as [VirtualBox](https://www.virt

<details><summary>VirtualBox Installation</summary>

Steps for installing Virtual Box 6.1.32 (as of Jan 2022):
Steps for installing Virtual Box 7.0.14 (as of Mar 2024):
1. Download and install VirtualBox for your relevant platform from https://www.virtualbox.org/wiki/Downloads
2. Install the extension to enable USB and other functionalities from https://download.virtualbox.org/virtualbox/6.1.32/Oracle_VM_VirtualBox_Extension_Pack-6.1.32.vbox-extpack
2. Install the extension to enable USB and other functionalities from https://download.virtualbox.org/virtualbox/7.0.14/Oracle_VM_VirtualBox_Extension_Pack-7.0.14.vbox-extpack
3. In Step 2, it will open up VirtualBox and ask permission to continue the installation. Continue to do so.
4. In VirtualBox, create a new VM for Ubuntu.
5. Choose the guest OS architecture: (64-bit, Ubuntu)
Expand Down Expand Up @@ -72,4 +72,4 @@ Docker provides containerisation that allows different versions of Linux to run

## Installing ROS

Once you have Ubuntu installed, follow the instructions for "Desktop - Full Install" on the ROS Wiki [here](http://wiki.ros.org/noetic/Installation/Ubuntu). Once you've installed ROS, you should install Catkin tools with `sudo apt-get install python3-catkin-tools`.
Once you have Ubuntu installed, follow the instructions for "Desktop - Full Install" on the ROS 2 Wiki [here](https://docs.ros.org/en/humble/Installation/Alternatives/Ubuntu-Install-Binary.html).
54 changes: 25 additions & 29 deletions ros-introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,21 +17,34 @@ Let's have a brief look at each of these levels.
Consists of concepts which tell how a ROS system is formed, including its
folder structure and the minimum number of files it needs to work with.

![ROS_Filesystem](./images/ROS_Filesystem_Architecture.png)

- **Useful Commands** : [`rospack`][cmd-rospack], [`catkin_create_pkg`][cmd-catkin_create_pkg], [`catkin build`][cmd-catkin-build], [`rosdep`][cmd-rosdep], [`roscd`][cmd-roscd], [`rosed`][cmd-rosed], [`roscp`][cmd-roscp], [`rosd`][cmd-rosd], [`rosls`][cmd-rosls]
- **More information**: http://wiki.ros.org/ROS/Concepts#ROS_Filesystem_Level
![ROS_Filesystem](./images/ROS_Filesystem_Architecture.drawio.png)
#### **More information**
* Tutorial for setting up a workspace: https://docs.ros.org/en/humble/Tutorials/Beginner-Client-Libraries/Creating-A-Workspace/Creating-A-Workspace.html
* Recommendations for a filesystem layout: https://docs.ros.org/en/humble/The-ROS2-Project/Contributing/Developer-Guide.html#filesystem-layout


### Computational Graph

Provides information about how various components in a ROS project come
together to perform an action. Primarily, this level tells us how ROS sets up
and handles the communication between various processes.
Provides information about how various components in a ROS project come together to perform an action.
Primarily, this level tells us how ROS sets up and handles the communication between various processes.

![ROS Computational Graph](./images/ROS_Computational_Graph.drawio.png)

#### More information
* Understanding **nodes**: https://docs.ros.org/en/humble/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Nodes/Understanding-ROS2-Nodes.html
* Understanding **topics**: https://docs.ros.org/en/humble/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Topics/Understanding-ROS2-Topics.html
* Understanding **services**: https://docs.ros.org/en/humble/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Services/Understanding-ROS2-Services.html
* Understanding **messages**: https://docs.ros.org/en/humble/Concepts/Basic/About-Interfaces.html#messages
* Understanding **parameters**: https://docs.ros.org/en/humble/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Parameters/Understanding-ROS2-Parameters.html
* Understanding **actions**: https://docs.ros.org/en/humble/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Actions/Understanding-ROS2-Actions.html
* Recording and reading from **bag** files: https://docs.ros.org/en/humble/Tutorials/Beginner-CLI-Tools/Recording-And-Playing-Back-Data/Recording-And-Playing-Back-Data.html

![ROS Computational Graph](./images/ROS_Computational_Graph.png)

- **Useful Commands** : [`roscore`][cmd-roscore], [`rosnode`][cmd-rosnode], [`rostopic`][cmd-rostopic], [`rosrun`][cmd-rosrun], [`rosservice`][cmd-rosservice], [`rosmsg`][cmd-rosmsg], [`rosbag`][cmd-rosbag]
- **More information**: http://wiki.ros.org/ROS/Concepts#ROS_Computation_Graph_Level
### Useful Commands
* [`ros2`][cmd-ros2]: CLI tool that performs common ROS 2 actions. <br>
https://github.com/ubuntu-robotics/ros2_cheats_sheet/blob/master/cli/cli_cheats_sheet.pdf
* [`colcon`][cmd-colcon]: CLI tool used for building and testing ROS workspaces (supersedes `catkin`). <br>
https://github.com/ubuntu-robotics/ros2_cheats_sheet/blob/master/colcon/colcon_cheats_sheet.pdf

### Community

Expand All @@ -58,22 +71,5 @@ ROS community to contribute via documentation updates, tutorials, etc. (http://w
- James Madison University Robotics Lab : [ROS Kinetic Cheatsheet](https://w3.cs.jmu.edu/spragunr/CS354/handouts/ROSCheatsheet.pdf)


[cmd-rospack]: http://wiki.ros.org/rospack?distro=noetic
[cmd-catkin_create_pkg]: http://wiki.ros.org/catkin/commands/catkin_create_pkg
[cmd-catkin-build]: https://catkin-tools.readthedocs.io/en/latest/installing.html
[cmd-rosdep]: http://wiki.ros.org/rosdep
[cmd-roscd]: http://wiki.ros.org/rosbash?distro=noetic#roscd
[cmd-rosed]: http://wiki.ros.org/rosbash?distro=noetic#rosed
[cmd-roscp]: http://wiki.ros.org/rosbash?distro=noetic#roscp
[cmd-rosd]: http://wiki.ros.org/rosbash?distro=noetic#rosd
[cmd-rosls]: http://wiki.ros.org/rosbash?distro=noetic#rosls

[cmd-roscore]: http://wiki.ros.org/roscore
[cmd-rosnode]: http://wiki.ros.org/rosnode?distro=noetic
[cmd-rostopic]: http://wiki.ros.org/rostopic?distro=noetic
[cmd-rosrun]: http://wiki.ros.org/rosbash?distro=noetic#rosrun
[cmd-rosservice]: http://wiki.ros.org/rosservice?distro=noetic
[cmd-rosmsg]: http://wiki.ros.org/rosmsg?distro=noetic
[cmd-rosbag]: http://wiki.ros.org/rosbag?distro=noetic


[cmd-ros2]: https://github.com/ros2/ros2cli/tree/humble
[cmd-colcon]: https://github.com/colcon/colcon-core