You are looking for a nice servo motor to use for your robotics project ?
At Niryo we have tested some of the servo motors you can buy online, and we found that one kind of motor is definitely superior to the others. Those are the Dynamixel motors, created by the company Robotis. We are ourselves using them on our robot.
We’ll explain you here what are the core features of those motors, and how to actually use them for your robotics project.
Here’s a list of nice features you get from Dynamixel motors :
- Change mode control : you can use a closed-loop position control with the “joint mode” (max 320-360°) or switch to “wheel mode”, and then the motor can spin infinitely with a velocity control.
- Get some useful feedback : position, velocity, load, temperature, voltage, and so on. With those feedback you can always know what is the state of the motor, and create your own closed-loop algorithm on top of that.
- Error feedback : which each command (read, write), the motor will send you back a bunch of information. Among them you can see if there is any error with the data you sent, or if there is an internal error, an overload, overheat, …
- PID control : just give the values, and the Dynamixel motor will use PID as a main control method.
- LED : That’s not directly related to the servomotor, but it allows you to check errors easily (for example, the LED will blink when there is an overheat), and make your robot look nicer !
- Control multiple motors by just chaining them. That way you have only one bus to communicate with all your motors, and you can dramatically reduce the number of cables on your robots.
Which Dynamixel motor to use for your robotics project
Well, if you search online, you can find many different Dynamixel servomotors, with very different capacities and prices.
If you are starting with Dynamixel, we either recommend you to choose XL-320 or AX-12 motors. Those are the 2 most common motors, you will find a lot of help on the Internet for using them. Their capacity are likely to be enough for your robotics project – at least for testing if you have a bigger project.
How to use Dynamixel servomotors
As a Dynamixel servomotor has an internal microcontroller, you need to communicate with it to give it some commands, and read some data.
The motors use a TTL serial half-duplex communication.
To control a Dynamixel motor, you can just use a USB2Dynamixel module, which allows you to easily connect your Dynamixel bus to your computer (or Raspberry Pi) via USB, and thus not have to worry about how communication works.
If you want to use only a microcontroller (on an Arduino board for example), you can directly use UART pins (with a half-duplex setup).
After your motors are connected, you will need to send some instructions to them to move your robot, and get some feedback.
Different ways of programming Dynamixel motors exist, for every level :
- Graphical software
- Dynamixel SDK for developers.
- Or directly send packets to the Dynamixel bus, by following the right communication protocol (Protocol 1.0 for AX-12 and Protocol 2.0 for XL-320) (+ link protocols)
You can also chain multiple motors to use only one bus and thus reduce the number of cables. But then… How to know how to communicate with a specific servo ?
Each motor has an ID (you can change it easily), so basically you just need to specify the ID of the servo you want to communicate with, when you send your data !
Example of a robotics project using Dynamixel servomotors
At Niryo we are currently using Dynamixel XL-320 servomotors on our robot, which enables us to :
- Get smooth trajectories compared to some other standard servomotors.
- Increase axis range to more than 180°.
- Get some useful feedback to improve some functionalities. For example, we can ask a gripper to move to a “close” position, and stop forcing when it grabs an object (with load feedback). This way we prevent the motor from breaking or suffering from overheat.
- Use LEDs to give some signals to the user : robot ready, initialization phase, problem detected, …
Dynamixel servomotors are among the best servo motors for robotics projects, as we saw they have way more features than standard servo motors.
So if you want to start your own project, you should consider testing one of them, that will save you some time, and allow you to focus on higher level functionalities !
You can also get more info about Niryo One here, and see some cool videos about how it’s working. We’ll post new photos and videos about how we use Dynamixel motors on Niryo One soon.