Madrid, October 2020

micro-ROS and MoveIt

We are glad to announce that micro-ROS and MoveIt 2 have been integrated into in a nice and brand new demo, leveraging the great potential of both!

MoveIt 2 is a user-friendly and open-source platform for robotics manipulation and kinematic planification over the low-level framework provided by ROS 2, created and maintained by PickNik.

The demo aims at showing how a virtual robotic arm manipulated by MoveIt can be moved according to the change in orientation in real space of a board running micro-ROS. With such a demonstration, we bring micro-ROS to a whole different level: thanks to MoveIt’s kinematic planification talent, an app running on a microcontroller is straightforwardly enabled to be integrated into complex algorithms and ROS 2 workflows.

The demo is abridged in a short video, where we provide a thorough explanation of how both micro-ROS and MoveIt 2 work, in addition to accounting for the detailed demo workflow. As the selected case of use is partly virtual and partly performed in real space, the final result is displayed with the ROS visualization tool Rviz.

The board that we use for this demo to host the micro-ROS Client is a STM32L4 Development IoT kit, running the Zephyr Real-Time Operating System (RTOS). The chip mounted on the board is a 32-bits microcontroller with 1 MB flash and 128 KB RAM memory. This is the hardware piece that is actually running the RTOS and the micro-ROS app. The board offers several peripherals to communicate the microchip with the external world, and in this demo we make use of a serial port to communicate it with the system running the Agent, which is a Linux computer. It also exposes a lot of sensors. For this specific demo, we make use of a 6-DoF Inertial Measurement Unit (LSM6DSL), composed of an accelerometer and a gyroscope, and a 3-DoF magnetometer (LIS3MDL). The combination of these sensors measures the specific force, angular velocity and relative orientation of the board with respect to a fixed reference frame, that are then merged into a pose, or attitude quaternion, by a sensor fusion algorithm.

The micro-ROS client is in charge of fetching the opportunely fused measurements provided by the sensors, converting them into topics understandable by the ROS 2 world, and finally sending them through serial transport to the micro-ROS agent. Once the agent receives the pose collected by the IMU of the board, it sends it in the form of a ROS 2 topic to the ROS 2 world. Once this topic is in the global data space, the data can be consumed by ROS 2 nodes and applications built on top of the ROS 2 user API.

In this demo, both Rviz and MoveIt 2 receive the data packaged as a pose quaternion. Rviz uses the data directly to represent the position and orientation of the board in its graphical interface. MoveIt 2, in addition, receives a topic each time a user button dedicated to triggering the publication to the ROS world is pressed, which activates the program’s retrieval of the last pose message received. This is then used to calculate the movement that the virtual arm has to perform to reach out to the board, according to its kinematic algorithms. The resulting movement is integrated into Rviz and represented by means of the virtual panda robotic arm, a standard tool used by MoveIt for tutorials and graphic interfaces.

In the video below, the arm can be seen to calculate the movement when the user button is pressed, in the form of a ghost-like image, and then performing the movement to reach out to the arrow representing the board.
Find the dedicated repo here with instructions on how to reproduce the demo.


For any questions please contact This email address is being protected from spambots. You need JavaScript enabled to view it.