I’m excited to share this project with you and the ROS community. First I want to thank all of the ROS maintainers and developers for their amazing job. Without ROS I’m not sure we would’ve been able to create such a robot in a short time.
Quick story: after our studies (engineer school) we quickly noticed that industrial robots are way too expensive and complicated for schools and universities. So we decided to create an educational accessible robot that will be easy-to-use. We have successfully finished a Kickstarter campaign in early 2017 (for this campaign I also posted on ROS discourse), and then continued the development of the robot.
Now, after 2 years of development and beta tests, we are now ready and Niryo One has been officially launched in September! You can now order the robot directly on our website.
Niryo One is a 3D printed 6 axis robotic arm powered by ROS. We have decided to release all the STL files for 3D printing and (what’s most interesting here) all the ROS packages that we developed for the robot.
You can find the ROS code here on github. The code is actually running on a Raspberry Pi 3 board inside the robot. We are using Xubuntu for RPi. For now we work on Ubuntu 16.04 and ROS Kinetic, and plan to switch to Ubuntu 18/Melodic for late 2018/early 2019.
Here are some ROS features and packages that we use:
- Moveit! for motion planning
- ros_control with a FollowJointTrajectory controller. For the hardware interface part of ros_control, we have developed a CAN bus driver, and a Dynamixel driver compatible with XL-320 and XL-430 models
- rosbridge_suite to communicate with non-ROS environment. This is particularly useful for us to connect the desktop application using the roslibjs library
- joy for Xbox control
So, we basically use all the ROS Industrial stack on this robot.
There is a simulation mode so you can just install the packages on your computer and see the robot in Rviz. The README on the github repo provides a tuto to install the full Niryo One ROS stack. Also, a gazebo integration will be released for the end of the year.
Some additional developer interfaces:
- Python API. The goal of this API is to hide ROS so that developers can directly give commands with Python.
- Modbus/TCP server.
- MCP2515 ROS library (SPI-CAN bus interface) for Raspberry Pi
As a side project we also have developed an open source Matlab/ROS application for Niryo One. The goal of the app is to compare the theoretical trajectory given by Moveit! with the real trajectory (listening to the /joint_state topic, directly with the data coming from the motors real position)
For the end user, there is an available desktop application (Windows/Linux/MacOS) that we named Niryo One Studio. The goal of this app is to simplify the programmation of the robot, so that everyone can use it. We have included the Blockly library (developed by Google) so you can use block programming + move the robot with your hands thanks to the learning mode. Under the hood, the Blockly XML is translated to Python code. This Python code is using the Python API that I described before.
This app can be used with both the real robot and the simulation mode running on your computer.
Some additional info about the mechanical/electronic structure:
- The robot is entirely 3D printed (about 60h printing time)
- First 3 axis are powered by a stepper motor with a custom Arduino board. We can get the position of the motor to make a close loop control
- Axis 4 and 5 are powered by Dynamixel XL-430 (I’ve seen it’s the same motors used on the Turtlebot 3 Burger)
- Axis 6 + grippers are powered by Dynamixel XL-320 motors. We have developed multiple tools that you can all plug at the end of the arm.
- There is a panel connector at the back of the robot, with some pins connected to the Raspberry Pi GPIOs. So you can use those pins to easily communicate with the outside (see this tutorial on how to control multiple Niryo One robots with an Arduino board)
You can also find a complete documentation on our website here. This doc includes:
- Assembly guide (+soon maintenance guide)
- Updating software tutorial
- Debugging the robot
- User manual
- Developer tutorials
- Maker tutorials
If you’re interested in Niryo One (for a ROS development project, or to teach robotics), feel free to check it out on our website, where you can also get more info (tech specs, tutorials, etc).
Thanks for reading this! That was quite a long post I confess.
I’d be happy to answer to all your questions and get your feedback