# Building and installing for distributed systems We have structured the ROS node into separate subpackages. This allows us to build only a subset of packages from the metapackage `ifm3d-ros`. ## Building one package independently from your catkin workspace The command below allows you to selectively build only one of the existing packages in your joined catkin workspace. All the following commands can only be called on a device which already has ROS installed. ``` $ catkin_make --only-pkg-with-deps ``` To apply this to one of the ifm3d-ros subpackages, please replace `` with either one item of the following list: - `ifm3d_ros_driver` provides the core interface for receiving data for ifm 3d (O3R) cameras. - `ifm3d_ros_msgs` gathers the ifm-specific messages types and the services for configuring and triggering the camera. - `ifm3d_ros_examples` provides additional helper scripts and examples. ### Building the driver package Let's say you want to run the `ìfm3d_ros_driver` on an embedded system like the VPU itself. To make it as lightweight as possible we suggest to only build the subpackage `ifm3d_ros_driver` and its dependencies on / for the desired architecture. This will look something like the following: ``` $ catkin_make --only-pkg-with-deps ifm3d_ros_driver traversing 2 packages in topological order: -- ~~ - ifm3d_ros_msgs -- ~~ - ifm3d_ros_driver ``` ### Building the messages package Typically a secondary ROS client would only subscribe to topics of a shared ROS master for receiving data and configure the main driver. Both jobs can be achieved without having the main driver package `ifm3d_ros_driver` installed on the client system. Therefor only compile the package `ifm3d_ros_msgs`. ``` $ catkin_make --only-pkg-with-deps ifm3d_ros_msgs traversing 1 packages in topological order: -- ~~ - ifm3d_ros_msgs ``` ### Building the examples package Building the examples package by itself (with dependencies) will result in having all packages build as it requires all three. ``` $ catkin_make --only-pkg-with-deps ifm3d_ros_examples traversing 3 packages in topological order: -- ~~ - ifm3d_ros_msgs -- ~~ - ifm3d_ros_driver -- ~~ - ifm3d_ros_examples ```