Example Package on how to handle ROS2 Publishers & Subscribers, used for the Exploration Rover Lecture, Institute for Space Systems, University Stuttgart. Germany
Go to file
winterhalderp 91bac99e0f all non-ros-files moved to folder and linked correctly 2021-04-19 16:18:50 +02:00
non-ros-files Update 'non-ros-files/workshopinstall.sh' 2021-04-19 15:54:03 +02:00
src pubsub_v2 2021-03-09 22:12:06 +01:00
README.md all non-ros-files moved to folder and linked correctly 2021-04-19 16:18:50 +02:00

README.md

pubsub - Publisher & Subscriber Package

Minimal Publisher & Subscriber Template for ROS2.

Created for ROS Workshop 2020  
Course Roverentwicklung für Explorationsaufgaben  
Institute for Space Systems  
University of Stuttgart.

Class Code created by Patrick Winterhalder,
IRS, University of Stuttgart.

Workshop Prerequisites

In order to run ROS2 you must install Ubuntu 20.04 LTS on a capable machine (preferrably desktop/laptop) first.

For a successful workshop you must conduct this installation on your desktop machine or this installation on your Raspberry Pi. 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 Visual Studio Code using the Ubuntu Software Installer
  • Install Git (no account required yet)
  • Install ROS2 (choose "desktop" on PC or "base" on Raspberry Pi, this eliminates all GUI tools from the installation, e.g. rviz and rqt).
    • Also install argcomplete
    • No need for ROS 1 bridge or RMW implementations
    • Install and update rosdep

After successfully installing ROS2 you should get to know it by working through the "Beginner: CLI Tools" tutorial. This will teach you how to configure your ROS 2 environment and you will learn about:

  • Source setup files (understand Underlay & Overlay)
  • Configure .bashrc file (shell startup script), a good example is here, line 50-95)
  • Add all colcon workspaces to the shell startup script
  • Check environment variables (check for correct installation)
  • Configure ROS_DOMAIN_ID (DDS Network Number)
  • Work through the tutorials covering turtlesim, rqt, topics, services, actions

Install Instructions

The following steps describe how you can create a local copy of this repository containing ROS2 publisher and subscriber class templates.

  • Move to your colcon workspace cd <workspace_path> (eg. cd ~/colcon_ws)
  • 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!)
  • Build workspace: colcon build , Note: Only the files inside /src/ are of importance.
  • Remember to run source ~/<workspace_path>/install/local_setup.sh after every build.
    In order to avoid this repetitive command, add line 22-32 from .bashrc to your shell startup script. 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.

Workshop Content

In this workshop you will:

  • Create a new colcon workspace
  • Create a new package inside your newly created colcon workspace
    • ros2 pkg create --build-type [ament_cmake, ament-python] <package_name>
  • Build your colcon workspace, this means making it a functional ROS2 workspace from which you can start nodes:
    • First move to your workspace root: cd ~/<workspace_path>
    • Run colcon build --symlink-install
  • Add your workspace overlay to the shell startup script for sourcing everytime you open a new console:
    • Add this to the end of .bashrc (sudo nano .bashrc)
    • In this template 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.

Presentation

The workshop's content is covered in this presentation.