|
| 1 | +--- |
| 2 | +title: micro-ROS Build System |
| 3 | +permalink: /docs/concepts/build_system/ |
| 4 | +--- |
| 5 | + |
| 6 | +micro-ROS provides two ways of building a micro-ROS application for embedded platforms: |
| 7 | +- _micro_ros_setup:_ integrates and hides the RTOS-specific build tools in few scripts provided as a ROS 2 package. |
| 8 | +_RTOS-specific integrations:_ We have integrated micro-ROS with several RTOS build tools. Click [here](/docs/concepts/build_system/external_build_systems/) to learn more. |
| 9 | + |
| 10 | +**micro_ros_setup** provides a standalone build system in the form of a ROS 2 package for use in any normal ROS 2 workspace. This tool is available in the [micro-ROS/micro_ros_setup](https://github.com/micro-ROS/micro_ros_setup) repository. |
| 11 | + |
| 12 | +The **micro_ros_setup** tool allows compiling and generating images that contain micro-ROS apps for the [supported hardware](/docs/overview/hardware/) boards and [RTOSes](/docs/concepts/rtos/). |
| 13 | + |
| 14 | +As the **micro_ros_setup** package can be installed like any other ROS 2 package, its usage will be through the ROS 2 CLI tool. Compiling, generating an image and flashing it on a board can be done just with four ROS 2 commands. A detailed description about the usage of this package can be found in the [tutorial section](/docs/tutorials/core/first_application_rtos/). |
| 15 | + |
| 16 | +### micro-ROS client |
| 17 | + |
| 18 | +Once installed, the build system tool provides some utilities that can be used in order to prepare, build, flash and use a micro-ROS application. The micro-ROS build system is a four-step procedure. In the first step, the user can create a new micro-ROS application by configuring the target hardware and RTOS: |
| 19 | + |
| 20 | +```bash |
| 21 | +# Create step |
| 22 | +ros2 run micro_ros_setup create_firmware_ws.sh [RTOS] [HARDWARE BOARD] |
| 23 | +``` |
| 24 | + |
| 25 | +It is possible to obtain a list of the supported hardware by running the command without any argument. By doing so, it is possible to see that along with the RTOSes and hardware supported by micro-ROS this build system also provides with three extra options: |
| 26 | +- By using `zephyr` as RTOS and `host` as hardware name, it is possible to obtain a Zephyr RTOS image with your micro-ROS app that runs in your host computer. |
| 27 | +- By using just `host` as RTOS, micro-ROS will build a set of [micro-ROS demo applications](https://github.com/micro-ROS/micro-ROS-demos) natively in your host machine. These applications behave just like micro-ROS apps (using the same abstraction layers and middleware implementation) and allow the user to debug and test the applications on a PC. |
| 28 | +- By using `generate_lib` as RTOS it is possible to configure the build system for generating static libraries (`.a`) and a set of headers (`include`) that can be linked in any other external tool. This option requires a valid CMake toolchain. |
| 29 | + |
| 30 | +Once the build system has created the new firmware project, it is possible to configure it using: |
| 31 | + |
| 32 | +```bash |
| 33 | +# Configure step |
| 34 | +ros2 run micro_ros_setup configure_firmware.sh [APP] [OPTIONS] |
| 35 | +``` |
| 36 | + |
| 37 | +By running this command without any argument, it will output a list of example applications valid for the selected RTOS. |
| 38 | +Common options available at this configuration step are: |
| 39 | + - `--transport` or `-t`: `udp`, `serial` or any hardware specific transport label |
| 40 | + - `--dev` or `-d`: agent string descriptor in a serial-like transport |
| 41 | + - `--ip` or `-i`: agent IP in a network-like transport |
| 42 | + - `--port` or `-p`: agent port in a network-like transport |
| 43 | + |
| 44 | + |
| 45 | +Finally, it is possible to build and flash a micro-ROS app using: |
| 46 | + |
| 47 | +```bash |
| 48 | +# Build step |
| 49 | +ros2 run micro_ros_setup build_firmware.sh |
| 50 | + |
| 51 | +# Flash step |
| 52 | +ros2 run micro_ros_setup flash_firmware.sh |
| 53 | +``` |
| 54 | + |
| 55 | +### micro-ROS agent |
| 56 | + |
| 57 | +The micro-ROS build system is also able to ease the compilation of the micro-ROS Agent in a ROS 2 workspace by using these commands: |
| 58 | + |
| 59 | +```bash |
| 60 | +# Download micro-ROS-Agent packages |
| 61 | +ros2 run micro_ros_setup create_agent_ws.sh |
| 62 | +ros2 run micro_ros_setup build_agent.sh |
| 63 | +source install/local_setup.bash |
| 64 | +ros2 run micro_ros_agent micro_ros_agent [OPTIONS] |
| 65 | +``` |
| 66 | + |
| 67 | +**Tip 1:** To learn use of the micro_ros_setup build system hands-on, please see the [core tutorials](https://micro-ros.github.io/docs/tutorials/core/first_application_rtos/). |
| 68 | + |
| 69 | +**Tip 2 :** Remember that the micro-ROS Agent can be also be used with this simple Docker command: `docker run -it --rm -v /dev:/dev --privileged --net=host microros/micro-ros-agent:foxy [OPTIONS]` |
0 commit comments