Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions _docs/tutorials/advanced/benchmarking/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ redirect_from:
- /benchmarking/
---

<img src="https://img.shields.io/badge/Applies_to-all_current_distros-green" style="display:inline"/>

- [Benchmarking an applicastion with the TFA Shadow-builder](#benchmarking-an-applicastion-with-the-tfa-shadow-builder)
- [Prerequisites](#prerequisites)
- [TFA Plugin](#tfa-plugin)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ title: Creating custom static micro-ROS library
permalink: /docs/tutorials/advanced/create_custom_static_library/
---

<img src="https://img.shields.io/badge/Applies_to-all_current_distros-green" style="display:inline"/>

This tutorial aims at providing step-by-step guidance for those users interested in compiling micro-ROS as a standalone library in order to integrate it in custom development tools.

This tutorial starts in a previously created micro-ROS environment. Check the first steps of [**First micro-ROS application on an RTOS**](../../core/first_application_rtos/) for instructions on how to create a micro-ROS environment for embedded platforms.
Expand Down
2 changes: 2 additions & 0 deletions _docs/tutorials/advanced/create_custom_transports/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ title: Creating custom micro-ROS transports
permalink: /docs/tutorials/advanced/create_custom_transports/
---

<img src="https://img.shields.io/badge/Applies_to-all_current_distros-green" style="display:inline"/>

This tutorial aims at providing step-by-step guidance for those users interested in creating micro-ROS custom transports, instead of using the ones provided by default in the micro-ROS tools set.

This tutorial starts from a previously created micro-ROS environment. Check the first steps of [**First micro-ROS application on an RTOS**](../../core/first_application_rtos/) for instructions on how to create a micro-ROS environment for embedded platforms.
Expand Down
2 changes: 2 additions & 0 deletions _docs/tutorials/advanced/create_dds_entities_by_ref/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ permalink: /docs/tutorials/advanced/create_dds_entities_by_ref/
---


<img src="https://img.shields.io/badge/Applies_to-all_current_distros-green" style="display:inline"/>

This tutorial explains the procedure for creating micro-ROS entities using fully configurable QoS settings. The micro-ROS default middleware (Micro XRCE-DDS Client) allows the user to take two different approaches for creating ROS 2 (DDS) entities in the micro-ROS Agent (Please check the [architecture section](https://micro-ros.github.io/docs/overview/) for detailed information):
- By XML (the default option in micro-ROS RMW)
- By reference
Expand Down
2 changes: 2 additions & 0 deletions _docs/tutorials/advanced/create_new_type/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ title: How to include a custom ROS message in micro-ROS
permalink: /docs/tutorials/advanced/create_new_type/
---

<img src="https://img.shields.io/badge/Applies_to-all_current_distros-green" style="display:inline"/>

This tutorial starts in a previously created micro-ROS environment. Check [**First micro-ROS application on an RTOS**](../../core/first_application_rtos/) for instructions about how to create a micro-ROS environment for embedded platforms.

Once your micro-ROS workspace is created, go to `firmware/mcu_ws` and run the package creating command:
Expand Down
2 changes: 2 additions & 0 deletions _docs/tutorials/advanced/handling_type_memory/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ title: Handling messages memory in micro-ROS
permalink: /docs/tutorials/advanced/handling_type_memory/
---

<img src="https://img.shields.io/badge/Applies_to-all_current_distros-green" style="display:inline"/>

This page aims to explain how to handle messages and types memory in micro-ROS.

First of all, since the micro-ROS user is in an embedded C99 environment, it is important to be aware of what messages and ROS 2 types are being used in order to handle memory correctly.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ title: Middleware Configuration
permalink: /docs/tutorials/advanced/microxrcedds_rmw_configuration/
---

<img src="https://img.shields.io/badge/Applies_to-all_current_distros-green" style="display:inline"/>

micro-ROS targets microcontroller, devices with low memory resources.
With that in mind, micro-ROS try to address the memory management issue prioritizing the use of static memory instead of dynamic memory and optimizing the memory footprint of the applications.
This, of course, has a cost that the users must agree to pay, a precompile tunning.
Expand Down
2 changes: 2 additions & 0 deletions _docs/tutorials/advanced/tracing/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ redirect_from:
- /tracing/
---

<img src="https://img.shields.io/badge/Applies_to-all_current_distros-green" style="display:inline"/>

- [Introduction](#introduction)
- [Setup](#setup)
- [Simple tracing example](#simple-tracing-example)
Expand Down
2 changes: 1 addition & 1 deletion _docs/tutorials/core/first_application_linux/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: First micro-ROS Application on Linux
permalink: /docs/tutorials/core/first_application_linux/
---

## Target platform
<img src="https://img.shields.io/badge/Written_for-Foxy-green" style="display:inline"/> <img src="https://img.shields.io/badge/Tested_on-Galactic-green" style="display:inline"/> <img src="https://img.shields.io/badge/Tested_on-Rolling-green" style="display:inline"/>

In this tutorial, you’ll learn the use of micro-ROS with Linux by testing a Ping Pong application.
In the follow-up tutorial [*First micro-ROS application on an RTOS*](/docs/tutorials/core/first_application_rtos/),
Expand Down
2 changes: 1 addition & 1 deletion _docs/tutorials/core/first_application_rtos/freertos.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ redirect_from:
- /docs/tutorials/advanced/freertos/freertos_getting_started/
---

## Target platform
<img src="https://img.shields.io/badge/Tested_on-Foxy-green" style="display:inline"/> <img src="https://img.shields.io/badge/Tested_on-Galactic-green" style="display:inline"/> <img src="https://img.shields.io/badge/Tested_on-Rolling-green" style="display:inline"/>

In this tutorial, you'll learn the use of micro-ROS with FreeRTOS by testing a Ping Pong application.
{% include first_application_common/target_hardware.md %}
Expand Down
2 changes: 1 addition & 1 deletion _docs/tutorials/core/first_application_rtos/nuttx.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ redirect_from:
- /docs/tutorials/advanced/nuttx/nuttx_getting_started/
---

## Target platform
<img src="https://img.shields.io/badge/Tested_on-Foxy-green" style="display:inline"/>

In this tutorial, you'll learn the use of micro-ROS with NuttX by testing a Ping Pong application.
{% include first_application_common/target_hardware.md %}
Expand Down
2 changes: 1 addition & 1 deletion _docs/tutorials/core/first_application_rtos/zephyr.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ redirect_from:
- /docs/tutorials/advanced/zephyr/zephyr_getting_started/
---

## Target platform
<img src="https://img.shields.io/badge/Tested_on-Foxy-green" style="display:inline"/> <img src="https://img.shields.io/badge/Tested_on-Galactic-green" style="display:inline"/> <img src="https://img.shields.io/badge/Tested_on-Rolling-green" style="display:inline"/>

In this tutorial, you'll learn the use of micro-ROS with Zephyr by testing a Ping Pong application.
{% include first_application_common/target_hardware.md %}
Expand Down
2 changes: 2 additions & 0 deletions _docs/tutorials/core/programming_rcl_rclc/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ title: Programming with rcl and rclc
permalink: /docs/tutorials/core/programming_rcl_rclc/
---

<img src="https://img.shields.io/badge/Written_for-Foxy-green" style="display:inline"/> <img src="https://img.shields.io/badge/Tested_on-Galactic-green" style="display:inline"/> <img src="https://img.shields.io/badge/Tested_on-Rolling-green" style="display:inline"/>

In this tutorial, you'll learn the basics of the micro-ROS C API. The major concepts (publishers, subscriptions, services,timers, ...) are identical with ROS 2. They even rely on the *same* implementation, as the micro-ROS C API is based on the ROS 2 client support library (rcl), enriched with a set of convenience functions by the package [rclc](https://github.com/ros2/rclc/). That is, rclc does not add a new layer of types on top of rcl (like rclcpp and rclpy do) but only provides functions that ease the programming with the rcl types. New types are introduced only for concepts that are missing in rcl, such as the concept of an executor.

* [Creating a node](#node)
Expand Down
7 changes: 6 additions & 1 deletion _docs/tutorials/core/teensy_with_arduino/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,15 @@ title: Teensy with Arduino
permalink: /docs/tutorials/core/teensy_with_arduino/
---

## Target platform
<img src="https://img.shields.io/badge/Written_for-Foxy-green" style="display:inline"/>

In this tutorial you will learn how to connect Teensy with micro-ROS and ROS 2.
You will also learn how to install micro-ROS agent in Linux systems to communicate with
Teensy-based Arduino board using Arduino IDE. This tutorial will also cover a
simple publisher topic published from teensy and subscribed using ROS 2 interface.

## Target platform

To start with, we will need a host computer with either having a native
Ubuntu 20.04 installed ROS 2 Foxy or using a docker version of the freshly build ROS 2 Foxy
from this link. Now let us also look at the connection diagram which will help us
Expand All @@ -18,6 +20,7 @@ understand the full picture better.
![Illustration of Connection diagram of Teensy 3.2 with Host PC running ros2 and micro-ros-agent](Teensy_micro_ros_connection.png)

## Installing ROS 2 and micro-ROS in the host computer:

Note: These first few steps are the same as in the micro-ROS installation page as in this link

For this tutorial you have to install ROS 2 Foxy Fitzroy on your Ubuntu 20.04 LTS computer.
Expand Down Expand Up @@ -193,3 +196,5 @@ If we listen to the topic we will see something like this:
![Illustration of ros2 topic showing data](topic_show.png)

The integer msg data increasing in each cycle.

_Note: This tutorial was first published by the author [Manzur Murshid](https://github.com/shazib2t) on https://manzurmurshid.medium.com/how-to-connect-teensy-3-2-with-micro-ros-and-ros2-foxy-6c8f99c9b66a._
2 changes: 1 addition & 1 deletion _docs/tutorials/core/zephyr_emulator/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: Zephyr Emulator
permalink: /docs/tutorials/core/zephyr_emulator/
---

## Target platform
<img src="https://img.shields.io/badge/Tested_on-Foxy-green" style="display:inline"/>

In this tutorial, you'll learn the use of micro-ROS with a **[Zephyr RTOS](https://www.zephyrproject.org/)**
emulator (also known as [Native POSIX](https://docs.zephyrproject.org/latest/boards/posix/native_posix/doc/index.html))
Expand Down
2 changes: 2 additions & 0 deletions _docs/tutorials/demos/crazyflie_demo/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,7 @@ redirect_from:
- /crazyflie_demo/
---

<img src="https://img.shields.io/badge/Tested_on-Foxy-green" style="display:inline"/>

{% capture my_include %}{% include crazyflie_demo/README.md %}{% endcapture %}
{{ my_include | markdownify }}
2 changes: 2 additions & 0 deletions _docs/tutorials/demos/demobox_demo/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,7 @@ redirect_from:
- /demobox_demo/
---

<img src="https://img.shields.io/badge/Tested_on-Foxy-green" style="display:inline"/>

{% capture my_include %}{% include demobox_demo/README.md %}{% endcapture %}
{{ my_include | markdownify }}
2 changes: 2 additions & 0 deletions _docs/tutorials/demos/kobuki_demo/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ redirect_from:
- /kobuki_demo/
---

<img src="https://img.shields.io/badge/Tested_on-Dashing-yellow" style="display:inline"/>

The micro-ROS Kobuki Demo illustrates the use of micro-ROS on the Kobuki platform, which is the mobile base of the well-known Turtlebot 2 research robot.

The basic idea and working principle of this demo is as follows: Instead of a laptop running ROS, the Kobuki is equipped with a STM32F4 microcontroller only. This STM32F4 runs the micro-ROS stack and a port of the [thin_kobuki driver](https://github.com/Lab-RoCoCo/thin_drivers), which interacts with the robot's firmware (which runs on a built-in microcontroller). The STM32F4 communicates the sensor data via DDS-XRCE to a remote laptop running a standard ROS 2 stack, the micro-ROS agent and rviz. At the same time, using the other direction of communication, the Kobuki can be remote-controlled.
Expand Down
2 changes: 2 additions & 0 deletions _docs/tutorials/demos/moveit2_demo/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,7 @@ layout: docs_noheader
permalink: /docs/tutorials/demos/moveit2_demo/
---

<img src="https://img.shields.io/badge/Tested_on-Foxy-green" style="display:inline"/>

{% capture my_include %}{% include moveit2_demo/README.md %}{% endcapture %}
{{ my_include | markdownify }}
2 changes: 2 additions & 0 deletions _docs/tutorials/demos/openmanipulator_demo/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,7 @@ layout: docs_noheader
permalink: /docs/tutorials/demos/openmanipulator_demo/
---

<img src="https://img.shields.io/badge/Written_for-Dashing-yellow" style="display:inline"/>

{% capture my_include %}{% include openmanipulator_demo/README.md %}{% endcapture %}
{{ my_include | markdownify }}
2 changes: 2 additions & 0 deletions _docs/tutorials/demos/thumper_demo/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,7 @@ redirect_from:
- /thumper_demo/
---

<img src="https://img.shields.io/badge/Written_for-Foxy-green" style="display:inline"/>

{% capture my_include %}{% include thumper_demo/README.md %}{% endcapture %}
{{ my_include | markdownify }}
2 changes: 2 additions & 0 deletions _docs/tutorials/demos/tof_demo/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,7 @@ layout: docs_noheader
permalink: /docs/tutorials/demos/tof_demo/
---

<img src="https://img.shields.io/badge/Tested_on-Foxy-green" style="display:inline"/>

{% capture my_include %}{% include sensors_demo/README.md %}{% endcapture %}
{{ my_include | markdownify }}
14 changes: 7 additions & 7 deletions _docs/tutorials/old/6lowpan/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,19 @@ title: 6LoWPAN Guide
permalink: /docs/tutorials/old/6lowpan/
---

**Disclaimer: this tutorial is currently unmantained**
<img src="https://img.shields.io/badge/Disclaimer-This_tutorial_is_unmaintained-red" style="display:inline"/>

In this guide, we will show how to use micro-ROS over 6LoWPAN communication.

# What is 6LoWPAN?
## What is 6LoWPAN?

6LoWPAN is an acronym o IPv6 over Low-Power Wireless Personal Area Networks.
This communication protocol allows wireless communication over IEEE 802.15.4 based networks using IPv6. Some of the main advantages are:
- Easy to route from radio devices to the Internet, thanks to the usage of the IP packets.
- Easy to use on UDP and TCP server/clients.
- A protocol designed for low power and constrained devices, perfect or micro-ROS remote sensors.

# Needed hardware
## Needed hardware

At present, 6LoWPAN is only available for the NuttX RTOS.
In order to implement the steps highlighted in this guide, you need the following devices:
Expand All @@ -29,11 +29,11 @@ In order to implement the steps highlighted in this guide, you need the followin
You can find a guide of how to setup the micro-ROS-bridge_RPI at its [repository](https://github.com/micro-ROS/micro-ROS-bridge_RPI/blob/new_bridge_tools/Readme.md).
In the micro-ROS-bridge-RPI guide, you can find everything that you need to set-up this device base.

# Configure the board
## Configure the board

The configuration of the board is divided into two parts: hardware and software set-up.

## Hardware set-up
### Hardware set-up

First we are going to connect the PmodRF2 radio.

Expand All @@ -52,15 +52,15 @@ To ease the set-up process, you can use the [RPi pinout](https://pinout.xyz/#) a

The last step is to connect a mini-USB cable to the OTG2 USB port (this USB port next to the Ethernet port).

## Software set-up
### Software set-up

To create and flash the firmware, we are going to use the micro-ROS build system.
You can find the instructions at the micro_ros_setup's [README](https://github.com/micro-ROS/micro_ros_setup/blob/dashing/micro_ros_setup/README.md).
For this particular guide, it is necessary to use the branch `dashing` and the configuration profile `uros_6lowpan`.

Once you follow all the instructions in the build system and flash the board, everything is ready.

# How to use it?
## How to use it?

- Turn on the Olimex board and open the NSH console on a terminal.
- Check if all the applications are ready by typing `?` on the console. It should return the following:
Expand Down
6 changes: 1 addition & 5 deletions _docs/tutorials/old/add_microros_config/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,7 @@ title: Micro-ROS configuration for NuttX
permalink: /docs/tutorials/old/add_microros_config/
---

**Disclaimer: this tutorial is currently unmantained**

| RTOS | ROS2 Version |
|:-----:|:------------:|
| NuttX | Dashing |
<img src="https://img.shields.io/badge/Disclaimer-This_tutorial_is_unmaintained-red" style="display:inline"/> <img src="https://img.shields.io/badge/Written_for-Dashing-yellow" style="display:inline"/>

In this tutorial, we will see how to set a basic Micro-ROS configuration for NuttX over serial communication. Since this guide is only focused on setting the configuration, you should check the tutorial linked here before: [First micro-ROS Application on an RTOS](https://micro-ros.github.io/docs/tutorials/core/first_application_rtos/)

Expand Down
2 changes: 1 addition & 1 deletion _docs/tutorials/old/debugging/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ permalink: /docs/tutorials/old/debugging/
author: Ingo Lütkebohle (merged by Tomasz Kołcon)
---

**Disclaimer: this tutorial is currently unmantained**
<img src="https://img.shields.io/badge/Disclaimer-This_tutorial_is_unmaintained-red" style="display:inline"/>

This tutorial consists of two parts: First, debugging a NuttX target with GDB and OpenOCD. This part covers tool installation and debugging via command line. Second, debugging with Visual Studio Code, i.e. using a modern IDE.

Expand Down
20 changes: 9 additions & 11 deletions _docs/tutorials/old/microros_nuttx_bsp/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,21 @@ title: Adding Micro-ROS to a NuttX board configuration
permalink: /docs/tutorials/old/microros_nuttx_bsp/
---

# Introduction
<img src="https://img.shields.io/badge/Disclaimer-This_tutorial_is_unmaintained-red" style="display:inline"/>

**If you want to use Micro-ROS on a board that is not yet supported, this tutorial is for you.**
**If you want to use Micro-ROS on a board that is not yet supported, this tutorial is for you!** However, we can only explain what you have to do on a board which is supported by NuttX already, that is, a board that has a board configuration. Writing a completely new board support package and configuration is beyond the scope of what the Micro-ROS project can teach.

However, we can only explain what you have to do on a board which is supported by NuttX already, that is, a board that has a board configuration. Writing a completely new board support package and configuration is beyond the scope of what the Micro-ROS project can teach.

## Caveats
### Caveats

1. The instructions in this tutorial have been tested on Linux only and since they use Linux shell commands, they will probably not work on Windows.
1. We have only ever used ARM-based boards. Boards using different microcontrollers might needs a different approach.
1. Our approach to adding C++ atomic swap instructions is problematic and needs further work, but it'll get you started.

## Basics
### Basics

Compiling Micro-ROS for NuttX requires that the Board Configuration has a few C++ settings enabled. This tutorial explains what has to be added to an existing NuttX board configuration.

## Background: NuttX Board Configurations
### Background: NuttX Board Configurations

**Note** This section is just for background, you don't need to create a board configuration yourself!

Expand All @@ -29,7 +27,7 @@ Therefore, the RTOS needs to be told which peripherals are used on a given board

This is what we call the "board *configuration*". It differs from the so-called "Board Support *Package* (BSP)" which would contain the drivers for the micro-controller and its peripherals.

## Directory Structure
### Directory Structure

In NuttX up to version 7.x (which Micro-ROS currently uses), the configurations are stored in the `configs/` subdirectory.

Expand All @@ -39,7 +37,7 @@ Within the board base directory, there are two things:
1) Board configuration directories, specifically `include`, `scripts`, and `src`.
2) Predefined NuttX *build configurations*. These directories only have a `defconfig` file in them, and they are the directories you can pass to `scripts/configure.sh`.

# Adding Micro-ROS support
## Adding Micro-ROS support

To add Micro-ROS build support, have two to 2 things:

Expand All @@ -48,7 +46,7 @@ To add Micro-ROS build support, have two to 2 things:

A good example of the necessary modifications can be found in commit [26917196](https://github.com/micro-ROS/NuttX/commit/26917196e744b22433e699af71da1fcb86a96623).

## Enabling the right C++ settings
### Enabling the right C++ settings

All the compiler configuration is found in `scripts/Make.defs`.

Expand Down Expand Up @@ -80,7 +78,7 @@ EXTRA_LIBPATHS = -L "${shell dirname "$(LIBSUPXX)"}"
EXTRA_LIBS = -lsupc++
```

## Add C++ atomics builtins
### Add C++ atomics builtins

C++11 and up requires that the toolchain provides atomic swap operations. These are hardware specific and in the toolchain version we currently use, they are not yet available for ARM. Therefore, we add a compatibility file called `libatomic.c`

Expand Down
2 changes: 1 addition & 1 deletion _docs/tutorials/old/nsh/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: NSH console over UART & USB
permalink: /docs/tutorials/old/nsh/
---

**Disclaimer: this tutorial is currently unmantained**
<img src="https://img.shields.io/badge/Disclaimer-This_tutorial_is_unmaintained-red" style="display:inline"/>

| RTOS | Board compatible |
| :---: | :---------------: |
Expand Down