My friend and I have been having trouble setting up some AX-12A servo motors. I finally got one to work a week or so ago, but we are no longer able to communicate with them.
DYNAMIXEL Actuator: AX-12A
Controller: OpenRB-150 (originally tested with an ESP-32, Arduino Uno, and OpenCM9.0.4)
PC: x64 Windows 10 Laptop, also tested with a Macbook (model/architecture unknown)
Power Supply: Bench power supply @11.1VDC, 12VDC, also tested with 11.1VDC LiPo batteries
Background & Initial Issue Description
We inherited a project from some older members of our college robotics club without any documentation regarding the state of the electrical and motor control subsystems. We were going to use my Windows laptop and an ESP32 or Arduino Uno to control the Dynamixel AX-12A servos, but we were unable to get the servos to work and I realized that the serial standards were not directly compatible. We knew that a OpenCM9.0.4 board had been used in the past, I tried one that had been lying around, but I had trouble installing the drivers and I was unable to get my laptop to recognize it. We then bought the OpenRB-150, as it is affordable and seems to be newer/better supported.
Current Issue Description
I was able to connect to and control the servos from Dynamixel Wizard 2.0 and then I disabled the test setup at the end of the meeting. When I tried to test it again a week later, it wouldn’t work. My laptop could communicate with the OpenRB-150, but both Dynamixel Wizard 2.0 and the Arduino could not see the AX-12A. Dynamixel Wizard could not detect any of our other servos either. Any help would be greatly appreciated.
I haven’t tried reinstalling the software yet. Edit: The the official Dynamixel2Arduiono scan_dynamixel code cannot find the servos either.
I haven’t called Robotis support yet.
I just realized that in the photo of the working test, the OpenRB-150 red is lit, indicating that the motors are powered while it is not in the broken test’s photo. I’m not sure if that is the issue though because I remember checking and the AX-12A was receiving 12VDC. Edit: This does not appear to be the issue.
The simplest suggestion that might resolve this issue is to reupload the DYNAMIXEL2USB example code to the OpenRB and perform a firmware reset on your DYNAMIXELs. This should take care of any possible misconfiguration or firmware corruption that might have caused the issue.
Thank you for your response. I could not find anything labeled as “DYNAMIXEL2USB example code”, but I tried uploading the official Dynamixel2Arduiono scan_dynamixel code. Unfortunately, the program reported that it couldn’t find the motor and Dynamixal Wizard 2.0 is still unable to locate it as well.
PS Sorry for the delay replied, we only meet about once a week and we approaching the end of the quarter.
Edit- Additional observations:
My laptop can communicate with the OpenRB-150
When the OpenRB-150 is providing power to the servos, hot-plugging one in will cause the red status light on the servos to briefly turn on.
I found several more servos to try and neither worked.
If you reupload that sketch, then following the firmware reset process in DYNAMIXEL Wizard will allow us to determine if this is a simple firmware corruption issue, or if your AX servos may require RMA repairs.
Unfortunately, that did not work either. It’s seems rather odd that we managed to break all of our Dynamixel servos and several older controllers (maybe) though (Several servos were working before, and there are 3 others that were already broken from before I inherited the project).
It’s possible that the issue may be with the OpenRB-150 unit, rather than with the DYNAMIXEL servos. Do you have access to a U2D2 or other serial device that you may be able to use to test DYNAMIXEL communication?
The OpenRB-150 is only a few weeks old. I do not have any other serial devices except for some Arduino based boards, but it is my understanding that they don’t play nice with half-duplex serial, unless I could set one up to send the blink command without listening for a response. I also have a Raspberry Pi, which has the same problem.
During your recent tests, has the OpenRB-150 unit that you were using had any components heat up to the touch or anything else out of the ordinary?
It seems more likely to me that the failure is with the OpenRB-150 than with all of your connected servos. You mentioned that you have access to a RaspberryPi, so you may be able to test your DYNAMIXEL communication using the UART on that according to the method used in this post.
Hopefully that can confirm if you are able to communicate with the servos themselves without the OpenRB.
It also occurs to me that we have oscilloscopes and I could try inspect what’s being sent or maybe try to simulate sending commands with a signal generator, but I’m not very familiar with the EE equipment.
Yes, you will need a level shifter to safely test this connection to the RPi’s UART. I don’t think the RPi is 5v tolerant at all on the GPIO pins.
Using the signal generator is a good option as well. Here’s the packet structure to toggle the LED on servo ID1 (built from memory, but I’m pretty sure it’s correct): xFF 0xFF 0xFD 0x00 0x01 0x06 0x00 0x03 0x41 0x00 0x01 0xCC 0xE6
If you can send that over the serial line and get the LED to turn on that will confirm that the servo itself works at least?
In a previous project (a Mobile Manipulator based on AX-12A with the OpenRB-150) whereas I had to power the DXLs separately at 12 V and the OpenRB-150 at 5V which is then controlling the AX-12A as normal - see this post:
[Re: roboteer - Input Voltage Concern]
I will look into this more, but I don’t think it is the problem as the AX-12A does receive power and its LED blinks when plugged in. Also, the OpenRB-150 is not that old, so it’s probably not the beta version.
Thanks for the suggestion though!
PS Sorry for being inactive, the transition from Fall to Summer quarter was a bit hectic for me and I stopped working on the project for a bit. I am currently talking to someone who will help me with debugging the electrical/physical stuff.
That is indeed very similar to my problem, thanks for linking your post. Unfortunately I have not had much time to work on it (Sorry for not replying previously) and I have not fixed it yet. I’m planning to work on it more soon and I will let you know if I get closer to a solution.
I have since contacted the company and sent the problem to RMA. I have already received a reply, however it has not really satisfied me. They claim that the two boards have a short circuit problem. Honestly, this doesn’t really make sense to me as the boards are working fine as I described in my previous post. All the functions of the boards are working except the communication with the motors. So I find it hard to imagine a short circuit problem, especially with two different boards. But I can’t prove otherwise either.
In addition, they made me an offer to repair the boards. Unfortunately, the delivery costs are so high that it is not profitable for me. At the moment I am working with the Dynamixel Shield. This requires a little more effort to upload the code and read the data, but basically everything works as it should. If everything else works and I still have time, I am considering buying a third OpenRB-150 board.
If I take this step, I will definitely let you know if the problem has occurred again.
I had some initial trouble where sending a single ping or adding a pause between pings results in nothing being captured, but it seems to be working better now and I was able to send commands such as LED on, as well as the commands to spin the motors.
Annotated waveform (WRITE LED On)
PS Sorry for not getting back to you sooner, summer happened and things were a bit hectic for awhile.