3.1. ROS2 Workspace

Attention

The following workspace structure is recommended in general, but is mandatory for shared devices (i.e. every device that is not your own computer, like Raspberry Pis or lab computers) to avoid confusion.

We use ros2 as depicted in Listing 3.1 as development workspace and ros2_underlay shown in Listing 3.2 for larger manually compiled non-development packages that take a lot of time to compile/recompile.

Listing 3.1 Development Workspace
~/ros2
├── build
│   └── ...
├── install
│   └── ...
├── log
│   └── ...
└── src
   ├── hippo_core                   # required for every ros2 workspace
   ├── hippo_simulation             # not needed for Raspberry Pi setups
   ├── qualisys_bridge              # only needed for the computer running the qualisys bridge
   ├── rapid_trajectories           # example for your custom development ros packages
   ├── rapid_trajectories_msgs      # exampale for your corresponding custom msg package
   └── ...
Listing 3.2 Underlay Workspace
~/ros2_underlay
├── build
│   └── ...
├── install
│   └── ...
├── log
│   └── ...
└── src
   ├── apriltag_ros
   └── px4_msgs                     # Takes very long to build! Even if built already.

Having them in a separate workspace reduces compilation time for the development workspace. Typical packages for ros2_underlay are plot_juggler, px4_msgs, apriltag_ros and everything that is not going to be modified regularily.