https://github.com/micro-ROS/micro_ros_raspberrypi_pico_sdk
Raspberry Pi Pico (RP2040) and micro-ROS integration
https://github.com/micro-ROS/micro_ros_raspberrypi_pico_sdk
Last synced: 6 months ago
JSON representation
Raspberry Pi Pico (RP2040) and micro-ROS integration
- Host: GitHub
- URL: https://github.com/micro-ROS/micro_ros_raspberrypi_pico_sdk
- Owner: micro-ROS
- License: apache-2.0
- Fork: true (lukicdarkoo/pico-micro-ros)
- Created: 2021-02-03T10:48:21.000Z (almost 5 years ago)
- Default Branch: kilted
- Last Pushed: 2025-06-27T06:17:40.000Z (6 months ago)
- Last Synced: 2025-06-27T07:30:18.659Z (6 months ago)
- Language: C
- Homepage:
- Size: 118 MB
- Stars: 203
- Watchers: 5
- Forks: 67
- Open Issues: 20
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.rst
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
- awesome-micro-ros-projects - microROS Raspberry Pi Pico Integration - 2024 (Libraries and Platforms)
README


# micro-ROS module for Raspberry Pi Pico SDK
[](https://opensource.org/licenses/Apache-2.0)
## Getting Started
Here is a quick way to compile the example given in this repository.
### Dependencies
micro-ROS precompiled library is compiled using `arm-none-eabi-gcc` [9.3.1](https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2020q2/gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2), a compatible version is expected when building the micro-ROS project.
You can specify a compiler path with the following command:
```bash
# Configure environment
echo "export PICO_TOOLCHAIN_PATH=..." >> ~/.bashrc
source ~/.bashrc
```
### 1. Install Pico SDK
First, make sure the Pico SDK is properly installed and configured:
```bash
# Install dependencies
sudo apt install cmake g++ gcc-arm-none-eabi doxygen libnewlib-arm-none-eabi git python3
git clone --recurse-submodules https://github.com/raspberrypi/pico-sdk.git $HOME/pico-sdk
# Configure environment
echo "export PICO_SDK_PATH=$HOME/pico-sdk" >> ~/.bashrc
source ~/.bashrc
```
### 2. Compile Example
Once the Pico SDK is ready, compile the example:
```bash
cd micro_ros_raspberrypi_pico_sdk
mkdir build
cd build
cmake ..
make
```
To flash, hold the boot button, plug the USB and run:
```
cp pico_micro_ros_example.uf2 /media/$USER/RPI-RP2
```
### 3. Start Micro-ROS Agent
Micro-ROS follows the client-server architecture, so you need to start the Micro-ROS Agent.
You can do so using the [micro-ros-agent Snap](https://snapcraft.io/micro-ros-agent) (follow the link for installation details):
```bash
micro-ros-agent serial --dev /dev/ttyACM0 -b 115200
```
or using the [micro-ros-agent Docker](https://hub.docker.com/r/microros/micro-ros-agent):
```bash
docker run -it --rm -v /dev:/dev --privileged --net=host microros/micro-ros-agent:kilted serial --dev /dev/ttyACM0 -b 115200
```
## What files are relevant?
- `pico_uart_transport.c`: Contains the board specific implementation of the serial transport (no change needed).
- `CMakeLists.txt`: CMake file.
- `pico_micro_ros_example.c`: The actual ROS 2 publisher.
## How to build the precompiled library
Micro-ROS is precompiled for Raspberry Pi Pico in [`libmicroros`](libmicroros).
If you want to compile it by yourself:
```bash
docker pull microros/micro_ros_static_library_builder:kilted
docker run -it --rm -v $(pwd):/project microros/micro_ros_static_library_builder:kilted
```
Note that folders added to `microros_static_library/library_generation/extra_packages` and entries added to `microros_static_library/library_generation/extra_packages/extra_packages.repos` will be taken into account by this build system.
## How to use Pico SDK?
Here is a Raspberry Pi Pico C/C++ SDK documentation:
https://datasheets.raspberrypi.org/pico/raspberry-pi-pico-c-sdk.pdf
## 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](LICENSE) file for details.
For a list of other open-source components included in this repository,
see the file [3rd-party-licenses.txt](3rd-party-licenses.txt).
## Known Issues/Limitations
There are no known limitations.