• Stars
    star
    437
  • Rank 99,641 (Top 2 %)
  • Language
    C
  • License
    Apache License 2.0
  • Created about 4 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

micro-ROS library for Arduino

banner banner

micro-ROS for Arduino

This is a micro-ROS library for baremetal projects based on Arduino IDE or Arduino CLI.

As the build process for ROS 2 and micro-ROS is based on custom meta-build system tools and CMake, this library is provided as a precompiled library. However, users can rebuild their own precompiled libraries in order to modify the micro-ROS configuration or RMW parameters by customizing the respective .meta file.

Supported boards

Supported boards are:

Board Min version State Details .meta file
Arduino Portenta H7 M7 Core v1.8.5 Supported Official Arduino support colcon.meta
Arduino Nano RP2040 Connect v1.8.5 Supported Official Arduino support colcon_verylowmem.meta
OpenCR v1.4.16 Supported Based on custom board colcon.meta
Teensy 4.0 v1.8.5 Not tested Based on Teensyduino (1.58.x) colcon.meta
Teensy 4.1 v1.8.5 Supported Based on Teensyduino (1.58.x) colcon.meta
Teensy 3.2/3.1 v1.8.5 Supported Based on Teensyduino (1.58.x) colcon_lowmem.meta
Teensy 3.5 v1.8.5 Not tested Based on Teensyduino (1.58.x) colcon_lowmem.meta
Teensy 3.6 v1.8.5 Supported Based on Teensyduino (1.58.x) colcon_lowmem.meta
ESP32 Dev Module v1.8.5 Supported Arduino core for the ESP32 (v2.0.2) colcon.meta

Community contributed boards are:

Board Min version Contributor Details .meta file
Arduino Due - @lukicdarkoo colcon_verylowmem.meta
Arduino Zero - @lukicdarkoo colcon_verylowmem.meta
Kakute F7 - @amfern colcon.meta
STM32-E407 - @dominikn colcon.meta
Wio Terminal - @maehara-keisuke colcon.meta
Raspberry Pi Pico - @maehara-keisuke with ESP-AT colcon_verylowmem.meta
Seeed Studio XIAO SAMD21 - @maehara-keisuke with ESP-AT colcon_verylowmem.meta
Seeed Studio XIAO RP2040 - @maehara-keisuke with ESP-AT colcon_verylowmem.meta

You can find the available precompiled ROS 2 types for messages and services in available_ros2_types.

How to use the precompiled library

Arduino IDE

Go to link to release section and download the last release of micro-ROS library for Arduino.

Include it in your project using Sketch -> Include library -> Add .ZIP Library...

You can test micro-ROS examples located in this repo examples folder.

Remember that is possible to use a micro-ROS Agent just with this docker command:

# Serial micro-ROS Agent
docker run -it --rm -v /dev:/dev --privileged --net=host microros/micro-ros-agent:iron serial --dev [YOUR BOARD PORT] -v6

PlatformIO

PlatformIO support for this repository has been deprecated in favor of its own build system: micro_ros_platformio

How to build the precompiled library

If you need to add custom packages or types, or customize any internal parameter of the micro-ROS stack, you will need to recompile this library from source code:

docker pull microros/micro_ros_static_library_builder:iron
docker run -it --rm -v $(pwd):/project --env MICROROS_LIBRARY_FOLDER=extras microros/micro_ros_static_library_builder:iron

Optionally a specific single target can be built using the -p <LIBRARY_TARGET> argument like this:

docker run -it --rm -v $(pwd):/project --env MICROROS_LIBRARY_FOLDER=extras microros/micro_ros_static_library_builder:iron -p <LIBRARY_TARGET>

Available targets LIBRARY_TARGETS are available on the top of the extras/library_generation/library_generation.sh file

Folders added to extras/library_generation/extra_packages and entries added to extras/library_generation/extra_packages/extra_packages.repos will be taken into account by this build system. This should be used for example when adding custom messages types or custom micro-ROS packages.

You can configure many parameters of the library by editing the respective .meta file in the extras/library_generation/ directory.

Patch Arduino board for support precompiled libraries

Patch Teensyduino

Go inside your Arduino + Teensyduino installation and replace platform.txt:

export TEENSYDUINO_VERSION=[Your Teensyduino library version, e.g: 1.58.0]
export ARDUINO_PATH=[Your Arduino + Teensyduino path]
cd $ARDUINO_PATH/hardware/avr/$TEENSYDUINO_VERSION/
curl https://raw.githubusercontent.com/micro-ROS/micro_ros_arduino/iron/extras/patching_boards/platform_teensy.txt > platform.txt

The patch applies the changes detailed on the first two sections of this post: Solution for adding support for pre-compiled Libraries

Patch SAM

Go inside your Arduino installation and replace platform.txt:

export ARDUINO_PATH=[Your Arduino path]
cd $ARDUINO_PATH/hardware/sam/1.6.12/
curl https://raw.githubusercontent.com/micro-ROS/micro_ros_arduino/iron/extras/patching_boards/platform_arduinocore_sam.txt > platform.txt

Purpose of the Project

This software is not ready for production use. It has neither been developed nor tested for a specific use case. However, the license conditions of the applicable Open Source licenses allow you to adapt the software to your needs. Before using it in a safety relevant setting, make sure that the software fulfills your requirements and adjust it according to any applicable safety standards, e.g., ISO 26262.

License

This repository is open-sourced under the Apache-2.0 license. See the LICENSE file for details.

For a list of other open-source components included in this repository, see the file 3rd-party-licenses.txt.

Known Issues/Limitations

  • When using provided precompiled libraries, users should take into account the already configured static memory pools in middleware layers. More info here.
  • micro-ROS transports should be refactored in order to provide a pluggable mechanisms. Only USB serial transports are provided.
  • Teensyduino support files have to be patched in order to use precompiled libraries.
  • To solve Python errors on ESP32 compilation: apt install python-is-python3 && pip3 install pyserial

More Repositories

1

micro_ros_setup

Support macros for building micro-ROS-based firmware.
Shell
365
star
2

micro_ros_espidf_component

micro-ROS ESP32 IDF component and sample code
C
254
star
3

micro_ros_platformio

micro-ROS library for Platform.IO
Python
209
star
4

micro_ros_stm32cubemx_utils

A set of utilities for integrating micro-ROS in a STM32CubeMX project
C
163
star
5

micro-ROS.github.io

A platform for seamless integration of resource constrained devices in the ROS ecosystem.
SCSS
110
star
6

micro-ROS-Agent

ROS 2 package using Micro XRCE-DDS Agent.
C++
101
star
7

NuttX

Official micro-ROS RTOS
C
88
star
8

micro-ROS-demos

Sample code using rclc and rclcpp implementations.
C
84
star
9

freertos_apps

Sample applications for FreeRTOS + micro-ROS
C
81
star
10

micro_ros_zephyr_module

micro-ROS Zephyr module and sample code
C
54
star
11

docker

Docker-related material to setup, configure and develop with micro-ROS hardware.
Dockerfile
49
star
12

system_modes

System modes for ROS 2 and micro-ROS
C++
43
star
13

rmw_microxrcedds

RMW implementation using Micro XRCE-DDS middleware.
C
35
star
14

micro-ROS_moveit2_demo

Provides a demo of micro-ROS and MoveIt2 based on ST Disco L475 IOT01 board IMU sensors.
C++
22
star
15

zephyr_apps

Sample applications for Zephyr + micro-ROS
C
19
star
16

micro_ros_mbed

micro-ROS mbed sample code
Makefile
18
star
17

micro-ROS_crazyflie_demo

Provides a demo of micro-ROS based on a Crazyflie.
Python
18
star
18

micro-ROS_openmanipulator_demo

Provides a demo of micro-ROS based on ROBOTIS OpenManipulator, Olimex STM32 E407 and VL53L1X ToF sensor.
C++
14
star
19

micro-ROS_kobuki_demo

Provides a demo of micro-ROS based on a Kobuki and an Olimex STM32-E407 board.
Python
14
star
20

rmw_embeddedrtps

RMW implementation for EmbeddedRTPS middleware
C++
13
star
21

micro-ROS_sensors_demo

Provides a demo of micro-ROS based on ST Disco L475 IOT01 board.
Shell
12
star
22

micro_ros_nuttx_app

An standalone micro-ROS app for Nuttx
Makefile
11
star
23

nuttx_apps

C
10
star
24

micro_ros_azure_rtos_app

micro-ROS app for Azure RTOS
C
8
star
25

micro_ros_utilities

General utilities for easing the usage of micro-ROS on different platforms
C
8
star
26

micro_ros_diagnostics

Diagnostics framework for micro-ROS
C
8
star
27

micro-ROS-bridge_RPI

Shell
7
star
28

micro_ros_rtthread_component

Python
7
star
29

micro_ros_msgs

Collection of ROS 2 message definitions used throughout the implementation of micro-ROS, both in the agent and client endpoints.
CMake
6
star
30

micro_ros_renesas2estudio_component

A set of utilities for integrating micro-ROS in a Renesas e2 studio project
C
6
star
31

micro-ROS_warehouse_demo

Python
5
star
32

rosidl_typesupport_microxrcedds

Type support for Micro XRCE-DDS
EmberScript
4
star
33

micro_ros_renesas_testbench

micro-ROS hardware in the loop testing
C
4
star
34

micro_ros_tivac_launchpad_app

micro-ROS app for TI Tiva C Series TM4C123GXL LaunchPad
C
4
star
35

micro_ros_vitis_component

Shell
4
star
36

micro_ros_renesas_demos

Demo code for Renesas e2 studio
C
4
star
37

benchmarking

A sets a tools and framework to develop embedded system benchmarks
C
4
star
38

benchmarking_shadow-builder

Repositiory containing the shadow-builder benchmarking tool
C++
3
star
39

executor_testbench

Executor modul for rcl with customizable scheduling semantics
C
2
star
40

raspbian_apps

C
2
star
41

micro-ROS_thumper_demo

A 6 wheel mobile robot contraller over 6LoWPAN and micro-ROS
Shell
2
star
42

micro-ROS-rtt

Micro-ROS Round-Trip Tests
C++
1
star
43

benchmarking-results

Benchmarking results
HTML
1
star
44

micro-ROS_demobox_demo

The demo box is a portable suitcase demonstration, showing advantage of using micro-ROS over ROS2 by showing power measurement and bootup time.
Shell
1
star
45

.github

micro-ROS GitHub Organization-wide files
1
star