Hi Miguel, Thanks.
migueluli wrote:Hi Fraser, first of all congratulations for your nice work.
I'd like to ask you about the role of the CM-510 in your control scheme. I just bought a Bioloid Beginner to Comprehensive Upgrade Kit because I didn't really want to use the CM-5 controller and I found the price/servo_number ratio to be the best I could find. I'm planning on controlling the servos directly from the PC with USB2Dynamixel (probably using ROS on Ubuntu) and trying to 'hack' some kind of speed control, so I can work on differential IK methods. What I've seen so far about your work seems like a good starting point to achieve my goals, despite not being there yet.
Buying AX12 servos was a good choice I think. They have good torque and the build quality seems very good for the price. I think you will be able to achieve what you wish with them.
migueluli wrote:Do you think I can come close to the rates you're obtaining with your custom firmwares but without using the intermediate CM controller? I'm guessing that your CM controller firmware is probably in charge of splitting/joining the packets from the PC/servos to the servos/PC respectively, thus reducing latency from multiple USB write/reads on the PC. Am I right?
The CM510 controller is only in the loop for me because I am working on having IMU data at the tail of the reply packet. As far as comms are concerned it is acting as a fairly transparent bridge.
You will be pleased to know that my firmware (Axons) will work fine using just a string of AX12 servos and no controller, they work together to make a seamless reply packet containing all the position datas. You should be able to easily exceed my current rate of 100Hz over 250kbps serial. Using ROS you will probably get well over 150Hz with lower latency.
migueluli wrote:I must admit that I haven't even been able to try the standard firmware yet since I still have to buy a power supply for using the USB2Dynamixel. Maybe USB2Dynemixel SDK gives me high enough loop frequency to achieve some reasonable speed-control-like scheme (integrating speed into appropriate position commands) for the 14 servos. Do you think I should try this method?
For servo only operation I use my CM510 to power the bus, I have a special lead with the TTL signal wire cut. You have no CM510 yet so you'll need a PSU like you say. There is no harm in trying robotis firmware. You can get some pretty smooth IK stuff running by issuing synch write commands. But you will enjoy the freedom of closing the loop on a main controller, unlimited freedom to explore any control scheme you can imagine.
migueluli wrote:Also, I was thinking of adding some controller in the future, something like a RoBoard or similar, which I guess will improve the communication latency when compared to using a desktop PC and USB port. Would you suggest going for this solution right from the beginning?
As you already have a USB2Dynamixel I would suggest getting a string of AX12s hooked up to it and playing with your desktop computer first. If you wish then I can post links to C++ classes for interfacing to my firmware, they are nicely object orientated with simple interfaces exposed to the programmer. But they will need a little porting work for linux, specifically you will have to change the serialread write commands to some standard linux stuff. Then when you upgrade to a Roboard etc you can quickly slide all your existing code over.
migueluli wrote:I might be talking nonsense here, but this low level communication stuff is not really one of my strengths. I'm more of a math guy
No nosense received at my end lol, all sound questions. Low level comms are a pain to debug for anybody on a multidrop bus system like this, my perserverence was stretched to the limits in the latter stages of debug, every small code change required rebuilding and programming all 18 servos with the new code.
If you know some C then with your math knowledge you will have great fun playing with Axons, the servos will be under your full command and with some fancy math could be made to do some impressive stuff.
If you need any info on installing Axons into your servos then just let me know, The servo firmware as it stands seems very stable, I have since improved the CM510 firmware and will release a better version soon, but the AX12 firmwares will probably be left as is for a while. Also it is quite painless to change firmware from and to robotis original as you require without risk of bricking your servos.
P.S.
You can try axons using just one servo first, do not put physical limit on the servo to start with (just use a single free standing servo).
Hi Miguel, Thanks.
migueluli wrote:Hi Fraser, first of all congratulations for your nice work.
I'd like to ask you about the role of the CM-510 in your control scheme. I just bought a Bioloid Beginner to Comprehensive Upgrade Kit because I didn't really want to use the CM-5 controller and I found the price/servo_number ratio to be the best I could find. I'm planning on controlling the servos directly from the PC with USB2Dynamixel (probably using ROS on Ubuntu) and trying to 'hack' some kind of speed control, so I can work on differential IK methods. What I've seen so far about your work seems like a good starting point to achieve my goals, despite not being there yet.
Buying AX12 servos was a good choice I think. They have good torque and the build quality seems very good for the price. I think you will be able to achieve what you wish with them.
migueluli wrote:Do you think I can come close to the rates you're obtaining with your custom firmwares but without using the intermediate CM controller? I'm guessing that your CM controller firmware is probably in charge of splitting/joining the packets from the PC/servos to the servos/PC respectively, thus reducing latency from multiple USB write/reads on the PC. Am I right?
The CM510 controller is only in the loop for me because I am working on having IMU data at the tail of the reply packet. As far as comms are concerned it is acting as a fairly transparent bridge.
You will be pleased to know that my firmware (Axons) will work fine using just a string of AX12 servos and no controller, they work together to make a seamless reply packet containing all the position datas. You should be able to easily exceed my current rate of 100Hz over 250kbps serial. Using ROS you will probably get well over 150Hz with lower latency.
migueluli wrote:I must admit that I haven't even been able to try the standard firmware yet since I still have to buy a power supply for using the USB2Dynamixel. Maybe USB2Dynemixel SDK gives me high enough loop frequency to achieve some reasonable speed-control-like scheme (integrating speed into appropriate position commands) for the 14 servos. Do you think I should try this method?
For servo only operation I use my CM510 to power the bus, I have a special lead with the TTL signal wire cut. You have no CM510 yet so you'll need a PSU like you say. There is no harm in trying robotis firmware. You can get some pretty smooth IK stuff running by issuing synch write commands. But you will enjoy the freedom of closing the loop on a main controller, unlimited freedom to explore any control scheme you can imagine.
migueluli wrote:Also, I was thinking of adding some controller in the future, something like a RoBoard or similar, which I guess will improve the communication latency when compared to using a desktop PC and USB port. Would you suggest going for this solution right from the beginning?
As you already have a USB2Dynamixel I would suggest getting a string of AX12s hooked up to it and playing with your desktop computer first. If you wish then I can post links to C++ classes for interfacing to my firmware, they are nicely object orientated with simple interfaces exposed to the programmer. But they will need a little porting work for linux, specifically you will have to change the serialread write commands to some standard linux stuff. Then when you upgrade to a Roboard etc you can quickly slide all your existing code over.
migueluli wrote:I might be talking nonsense here, but this low level communication stuff is not really one of my strengths. I'm more of a math guy
No nosense received at my end lol, all sound questions. Low level comms are a pain to debug for anybody on a multidrop bus system like this, my perserverence was stretched to the limits in the latter stages of debug, every small code change required rebuilding and programming all 18 servos with the new code.
If you know some C then with your math knowledge you will have great fun playing with Axons, the servos will be under your full command and with some fancy math could be made to do some impressive stuff.
If you need any info on installing Axons into your servos then just let me know, The servo firmware as it stands seems very stable, I have since improved the CM510 firmware and will release a better version soon, but the AX12 firmwares will probably be left as is for a while. Also it is quite painless to change firmware from and to robotis original as you require without risk of bricking your servos.
P.S.
You can try axons using just one servo first, do not put physical limit on the servo to start with (just use a single free standing servo).