Reachy now runs ROS!

Simon Le Goff
pollen-robotics
Published in
5 min readNov 17, 2020

--

We released the first version of Reachy at last year’s CES. Remember? That was before most of us even knew COVID existed. If you don’t know who Reachy is, it’s an open-source robot we designed for interacting with people and manipulating objects. To illustrate this, we made it play tic-tac-toe at CES and it was quite a success. But that’s actually not what we will talk about in this post.

Reachy comes with its own SDK written in Python. It is designed with one goal in mind: to let you quickly get started. It enables our users to make the robot move in less than five minutes with just a few lines of code. That works great for simple applications or learning Robotics and AI. But, when ones want to create more advanced applications with 3D visualisation, path planning, advanced objects manipulation, navigation and so on, it usually requires to use a more complex architecture.

So we decided to make Reachy run ROS.

No, not him…

If you are reading this, you probably already know what ROS is. But just in case, here is how they describe it on their webpage:

The Robot Operating System (ROS) is a set of software libraries and tools that help you build robot applications. From drivers to state-of-the-art algorithms, and with powerful developer tools, ROS has what you need for your next robotics project. And it’s all open source.

You can find many other resources online if you want to get more information. For instance, you can check ROS website or this great post.

Why ROS?

So why ROS? We believe that ROS offers a great complementary approach to our existing SDK. Here are a few of the main reasons:

  • Developing complex robotics applications often requires to tackle many hard problems (eg. navigation, manipulation, sensor fusion, security, etc.). No-one, except maybe the GAFAM, can afford rebuilding everything from scratch. ROS is decentralized and provides ways to help you re-use some of their existing services, so you can focus on what is most important for your app. Standardisation is a key for robotics development. As roboticists, we all know how much time and effort is lost reinventing the wheel or trying to make it compile. ROS offers a common ground.
  • Many researchers, teachers and developers have already developed part of their code using ROS. We wanted to provide a simple and clean way for them to integrate and test their app on Reachy.
  • Last but not least, ROS is open source at ❤️. So is Reachy, both software and hardware. And we think that this is critical to rely and build upon open-source, if we want to not only develop a robot, but the robotics field as a whole. Open-source and dev tools-style products are creating a bottom-up adoption pattern with developers being at the center. Almost all important frameworks for AI are now open source, so is most of the network server, etc. We truly believe it should go the same way for robotics.

Of course, ROS also has drawbacks. I mean, who doesn’t?

For some applications, ROS is clearly an overkill. A simpler framework would work and be easier to setup. For some others, it will be too heavy to run on low-cost hardware or too CPU intensive to allow for real-time control, etc. At Pollen Robotics, we truly believe that there is not a single tool/framework that suits every need. We provide a set of tools so each user can choose what works best for him.

How?

We all know that many robots are providing bridges to ROS but without really pushing the integration deeper. We want to do the thing right. We let you use all standard ROS tools with Reachy. With a focus on manipulation, as this is why Reachy has been designed for in the first place.

So, in more details, what do we provide?

Reachy description package

This package contains the relationship between all links and joints of the robot, including their joint limit properties as loaded from the URDF. It is used by all visualisation and trajectory planning tools in ROS.

We also provide inertial and mass values. The collision model is defined with simpler shapes as cylinders, so you can achieve accurate and fast simulation Of course, 3D models of the robot’s parts are also present.

Reachy moveit package

MoveIt is a motion planning framework, it runs on top of ROS and provides functionality to make manipulation easier. MoveIt is able to compute trajectories between a series of points, forward and inverse kinematics and plan complex trajectories while avoiding collisions.

Within this package, you will find all the configuration files needed to start using MoveIt with Reachy and plan complex trajectories. A xacro file has also been written to define which groups are used depending on the version of reachy you use: Advanced, Expressive or Basic.

Complex trajectory planning via MoveIt.

It’s already available!

Want to try out Reachy with ROS yourself?

Just follow the steps on our GitHub and get started!

https://github.com/pollen-robotics/reachy_moveit_config

As of now we use the Noetic version of ROS1 but don’t worry, ROS2 compatibility is in progress 😎.

That’s all folks!

P.S. Special thanks to Yoan who helped us develop all of this.

About me

Passionate about AI and Computer Vision, I work as a R&D Engineer at Pollen Robotics.

About Pollen Robotics

We build accessible and open-source technology for the real world.

For new technology to have a positive impact, transparency and cooperation matter. Back in 2013, we started with Poppy, the first 3D printed open-source humanoid robot and since then, we have been dedicated to creating open-source, open science and open data products. We work with scientists, artists and innovators to explore usages and make the robotics revolution an opportunity for everyone.

Website: https://www.pollen-robotics.com/
Github: https://github.com/pollen-robotics/
Youtube channel: https://www.youtube.com/c/pollenrobotics

--

--