For a successful workshop you must conduct [this installation on your desktop machine](https://egit.irs.uni-stuttgart.de/RoverLehre/ROS2_pubsub/src/branch/master/non-ros-files/workshopinstall.sh) or [this installation on your Raspberry Pi](https://egit.irs.uni-stuttgart.de/RoverLehre/ROS2_pubsub/src/branch/master/non-ros-files/rpi_install.bash). Go through the commands of these *.bash file line by line and check if every commands finishes without errors! Following these .bash files should do the following:
* Install [ROS2](https://index.ros.org/doc/ros2/Installation/Foxy/Linux-Install-Debians/) (choose "desktop" on PC or "base" on Raspberry Pi, this eliminates all GUI tools from the installation, e.g. rviz and rqt).
After successfully installing ROS2 you should get to know it by working through the ["Beginner: CLI Tools"](https://index.ros.org/doc/ros2/Tutorials/) tutorial. This will teach you how to [configure your ROS 2 environment](https://index.ros.org/doc/ros2/Tutorials/Configuring-ROS2-Environment/) and you will learn about:
* How to configure the .bashrc file (shell startup script), a good example is [here](https://egit.irs.uni-stuttgart.de/RoverLehre/ROS2_pubsub/src/branch/master/non-ros-files/bashrc_overlay.bash))
* Clone this repository: `git clone https://egit.irs.uni-stuttgart.de/RoverLehre/ROS2_pubsub.git .` (include `.` at the end of the command in oder to copy everything to this locations!)
In order to avoid this repetitive command, add line 23-27 from [_.bashrc_](https://egit.irs.uni-stuttgart.de/RoverLehre/ROS2_pubsub/src/branch/master/non-ros-files/bashrc_overlay.bash) to your shell startup script for every overlay you want to source. This script runs everytime you start a new console, thus loading your overlays automatically. This is very handy if you are working with multiple _colcon_ workspaces (overlays) simultaneously.
* Add your workspace overlay to the shell startup script for sourcing everytime you open a new console:
* Add [this](https://egit.irs.uni-stuttgart.de/RoverLehre/ROS2_pubsub/src/branch/master/non-ros-files/bashrc_addons.bash) to the end of .bashrc (`sudo nano .bashrc`)
* In [this template](https://egit.irs.uni-stuttgart.de/RoverLehre/ROS2_pubsub/src/branch/master/non-ros-files/bashrc_addons.bash) find all instances of "`~/ws_overlay_foxy`" and replace it with the path to your own _colcon_ workspace (replace `~/` with `$HOME` for representing the home directory variable in bash scripts)
* Create a custom ROS message (*.msg) in order to define custom topics to exchange information between nodes by following [these instructions](https://egit.irs.uni-stuttgart.de/RoverLehre/ROS2_pubsub/src/branch/master/non-ros-files/instructions_custom_topics.md).
The workshop's content is covered in [this presentation](https://egit.irs.uni-stuttgart.de/RoverLehre/ROS2_pubsub/src/branch/master/non-ros-files/ws-05-ros-workshop%20%281%29.pdf).