Giter Site home page Giter Site logo

micro_ros_arduino's Introduction

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. Anyways, users can rebuild its own precompiled libraries in order to modify micro-ROS parameters, for example customizing prebuild meta file.

Supported boards

Supported boards are:

Board Min version State Details Prebuild meta
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.19 Supported Based on custom board colcon.meta
Teensy 4.0 v1.8.5 Not tested Based on Teensyduino colcon.meta
Teensy 4.1 v1.8.5 Supported Based on Teensyduino colcon.meta
Teensy 3.2/3.1 v1.8.5 Supported Based on Teensyduino colcon_lowmem.meta
Teensy 3.5 v1.8.5 Not tested Based on Teensyduino colcon_lowmem.meta
Teensy 3.6 v1.8.5 Supported Based on Teensyduino 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 Prebuild meta
Arduino Due - @lukicdarkoo colcon_verylowmem.meta
Arduino Zero - @lukicdarkoo colcon_verylowmem.meta
Kakute F7 - @amfern colcon.meta
STM32-E407 - @dominikn colcon.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 proyect 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:galactic serial --dev [YOUR BOARD PORT] -v6

PlatformIO

For boards supported by micro-ROS, all you have to do to add the library to your project is including the following lines in the existing platformio.ini file:

[env:<YOUR_BOARD>]

...
lib_deps =
    https://github.com/micro-ROS/micro_ros_arduino

build_flags =
    -L ./.pio/libdeps/<YOUR_BOARD>/micro_ros_arduino/src/<BOARD_ARCHITECTURE>/
    -l microros
    -D <TARGET_DEFINITION>

Now to proceed with the PlatformIO workflow:

pio lib install # Install dependencies
pio run # Build the firmware
pio run --target upload # Flash the firmware

An example of a micro-ROS application using PlatformIO is available here.

How to build the precompiled library

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

Note that 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.

Patch Arduino board for support precompiled libraries

Patch Teensyduino

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

export ARDUINO_PATH=[Your Arduino + Teensiduino path]
cd $ARDUINO_PATH/hardware/teensy/avr/
curl https://raw.githubusercontent.com/micro-ROS/micro_ros_arduino/galactic/extras/patching_boards/platform_teensy.txt > platform.txt

Patch SAMD

Go inside your Arduino + Teensyduino 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/galactic/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 mechanims. 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

micro_ros_arduino's People

Contributors

github-actions[bot] avatar pablogs9 avatar acuadros95 avatar mergify[bot] avatar dominikn avatar grassjelly avatar servetcoskun avatar amfern avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.