RoBoard RB-100 with Dynamixel RX-28 RS485 motors

Based on DMP's Vortex processor / SoC this board is a full computer capable of running a standard Windows and Linux installation on the backpack of your robot.
9 postsPage 1 of 1
9 postsPage 1 of 1

RoBoard RB-100 with Dynamixel RX-28 RS485 motors

Post by shervin.emami » Tue Oct 20, 2009 4:47 am

Post by shervin.emami
Tue Oct 20, 2009 4:47 am

Hi, has anyone tested the RoBoard with the higher power Robotis Dynamixel 4-wire motors (like RX28 or RX-64 motors) ?

I have managed to use 28 daisy chained RX-28 and RX-64 Dynamixel motors at the same time from a PC using a USB2Dynamixel adapter and custom driver code I wrote (since the high amount of electrical noise in the robot caused any existing software I tried to crash).

But I want to use the RoBoard to access RX-28 motors directly, through the RS485 port (Com2) instead of a USB2Dynamixel adapter. Has anyone tried this? Also, it seems that the current RoBoard only provides 114 kbps baud rate for the RS232 ports, is the RS485 port also just 114kbps? I'm guessing that to control a full biped humanoid robot, I might need faster baud rates.

Cheers,
Shervin Emami.
Hi, has anyone tested the RoBoard with the higher power Robotis Dynamixel 4-wire motors (like RX28 or RX-64 motors) ?

I have managed to use 28 daisy chained RX-28 and RX-64 Dynamixel motors at the same time from a PC using a USB2Dynamixel adapter and custom driver code I wrote (since the high amount of electrical noise in the robot caused any existing software I tried to crash).

But I want to use the RoBoard to access RX-28 motors directly, through the RS485 port (Com2) instead of a USB2Dynamixel adapter. Has anyone tried this? Also, it seems that the current RoBoard only provides 114 kbps baud rate for the RS232 ports, is the RS485 port also just 114kbps? I'm guessing that to control a full biped humanoid robot, I might need faster baud rates.

Cheers,
Shervin Emami.
shervin.emami offline
Robot Builder
Robot Builder
Posts: 7
Joined: Tue Oct 20, 2009 2:55 am

Post by PedroR » Tue Oct 20, 2009 10:53 am

Post by PedroR
Tue Oct 20, 2009 10:53 am

Hi

I do not know of anyone who has already used the Roboard to control RS 485 servos.

However, theoretically it should be possible. The RS 485 port is technically similar to the ones used in Robotis servos (2 data wires only (half duplex) + Vdd & GND).

With regards to the speed, I can confirm the Roboard currently only supports speeds up to 115 200 Kbps.
This is valid for all COM ports on the board.

If you need the mobility, you may use the Roboard + USB2Dynamixel to connect to the servos. The USB port is capable of high speed communication with the USB2Dyn and therefore you can drive the servos at 1Mbps.

With regards to using the native 115 200Kbps on the built.in RS 485 port, the opinions are very divided here. For simple/basic humanoids it should be enough (look for example at Robobuilder which runs its 16 servos at 115 200).
However on a configuration with a higher number of servos you may need higher speeds if you want to be querying ALL the servos several times per second.

Pedro.
Hi

I do not know of anyone who has already used the Roboard to control RS 485 servos.

However, theoretically it should be possible. The RS 485 port is technically similar to the ones used in Robotis servos (2 data wires only (half duplex) + Vdd & GND).

With regards to the speed, I can confirm the Roboard currently only supports speeds up to 115 200 Kbps.
This is valid for all COM ports on the board.

If you need the mobility, you may use the Roboard + USB2Dynamixel to connect to the servos. The USB port is capable of high speed communication with the USB2Dyn and therefore you can drive the servos at 1Mbps.

With regards to using the native 115 200Kbps on the built.in RS 485 port, the opinions are very divided here. For simple/basic humanoids it should be enough (look for example at Robobuilder which runs its 16 servos at 115 200).
However on a configuration with a higher number of servos you may need higher speeds if you want to be querying ALL the servos several times per second.

Pedro.
PedroR offline
Savvy Roboteer
Savvy Roboteer
Posts: 1199
Joined: Mon Jun 16, 2008 11:07 pm

Re: RoBoard RB-100 with Dynamixel RX-28 RS485 motors

Post by limor » Tue Oct 20, 2009 11:36 am

Post by limor
Tue Oct 20, 2009 11:36 am

shervin.emami wrote:I have managed to use 28 daisy chained RX-28 and RX-64 Dynamixel motors at the same time from a PC using a USB2Dynamixel adapter and custom driver code I wrote (since the high amount of electrical noise in the robot caused any existing software I tried to crash).


If you don't mind, please share your driver code. This issue with the noise is something we haven't heard of before and I'm sure also Robotis will be interested to know about it for future reference.
shervin.emami wrote:I have managed to use 28 daisy chained RX-28 and RX-64 Dynamixel motors at the same time from a PC using a USB2Dynamixel adapter and custom driver code I wrote (since the high amount of electrical noise in the robot caused any existing software I tried to crash).


If you don't mind, please share your driver code. This issue with the noise is something we haven't heard of before and I'm sure also Robotis will be interested to know about it for future reference.
limor offline
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 1845
Joined: Mon Oct 11, 2004 1:00 am
Location: London, UK

Post by shervin.emami » Tue Oct 20, 2009 12:25 pm

Post by shervin.emami
Tue Oct 20, 2009 12:25 pm

Hi Limor,

Yeah I will post it soon on my website, I actually planned on releasing it as an open-source library but my employer at the time wouldn't have allowed it. Hopefully I'll have time to post it next week with a basic description of the noise problem.

But basically I was using it in the middle-east where the electricity in the lab wasn't grounded to earth, so there ended up being so much electrical noise that I could rarely use any existing software without it crashing the software or even temporarily damaging some of the motors. I was getting really strange problems, like even when I was trying to read from 1 motor connected to a CM-5 board or USB2Dynamixel, it would usually cause the Robotis tools to freeze and same to all the ones I found off internet.

Sometimes it would work perfectly for 5 minutes, but usually it would just randomly work for 10 seconds then not work for 30 seconds, etc. Eventually I realised it was because of electrical noise in the cables, and since it's really hard to get much electrical supplies in the middle of the desert, I ended up just writing code that works well enough even if there's a lot of electrical noise. The code I wrote is for using the USB2Dynamixels library, but I assume it can be ported to other devices without too much trouble.

I think anyone trying to use larger Dynamixel motors & robots will experience similar problems, unless if they have decent quality motor cables and well grounded electricity (or using batteries). I was using almost 30 of the bigger Robotis Dynamixel servo motors (a combination of RX-28 and RX-64 motors) to control the arms, fingers and neck of a life-sized humanoid robot (http://www.shervinemami.co.cc/), so it's obviously more likely to get noise problems, but sometimes I was even experiencing it when just 1 motor was connected!

Another important tip is that you should make sure that you don't have a cable plugged into the last motor of your daisy-chain and not plugged into anything else, because this will act as an antenna and add lots more electrical noise.
Hi Limor,

Yeah I will post it soon on my website, I actually planned on releasing it as an open-source library but my employer at the time wouldn't have allowed it. Hopefully I'll have time to post it next week with a basic description of the noise problem.

But basically I was using it in the middle-east where the electricity in the lab wasn't grounded to earth, so there ended up being so much electrical noise that I could rarely use any existing software without it crashing the software or even temporarily damaging some of the motors. I was getting really strange problems, like even when I was trying to read from 1 motor connected to a CM-5 board or USB2Dynamixel, it would usually cause the Robotis tools to freeze and same to all the ones I found off internet.

Sometimes it would work perfectly for 5 minutes, but usually it would just randomly work for 10 seconds then not work for 30 seconds, etc. Eventually I realised it was because of electrical noise in the cables, and since it's really hard to get much electrical supplies in the middle of the desert, I ended up just writing code that works well enough even if there's a lot of electrical noise. The code I wrote is for using the USB2Dynamixels library, but I assume it can be ported to other devices without too much trouble.

I think anyone trying to use larger Dynamixel motors & robots will experience similar problems, unless if they have decent quality motor cables and well grounded electricity (or using batteries). I was using almost 30 of the bigger Robotis Dynamixel servo motors (a combination of RX-28 and RX-64 motors) to control the arms, fingers and neck of a life-sized humanoid robot (http://www.shervinemami.co.cc/), so it's obviously more likely to get noise problems, but sometimes I was even experiencing it when just 1 motor was connected!

Another important tip is that you should make sure that you don't have a cable plugged into the last motor of your daisy-chain and not plugged into anything else, because this will act as an antenna and add lots more electrical noise.
shervin.emami offline
Robot Builder
Robot Builder
Posts: 7
Joined: Tue Oct 20, 2009 2:55 am

Post by shervin.emami » Tue Oct 27, 2009 5:27 pm

Post by shervin.emami
Tue Oct 27, 2009 5:27 pm

Hey guys,
I put the source code for my USB2Dynamixel library on my website, as well as some other useful info I found about Dynamixel motors.
http://www.shervinemami.co.cc/dynamixels.html

I think its a real shame that Dynamixel motors don't give better sensor feedback (such as fast measurements of speed and torque/current), because if they did they would be useful for so many advanced robotics projects!

Cheers,
Shervin.
Hey guys,
I put the source code for my USB2Dynamixel library on my website, as well as some other useful info I found about Dynamixel motors.
http://www.shervinemami.co.cc/dynamixels.html

I think its a real shame that Dynamixel motors don't give better sensor feedback (such as fast measurements of speed and torque/current), because if they did they would be useful for so many advanced robotics projects!

Cheers,
Shervin.
shervin.emami offline
Robot Builder
Robot Builder
Posts: 7
Joined: Tue Oct 20, 2009 2:55 am

Post by limor » Tue Oct 27, 2009 8:36 pm

Post by limor
Tue Oct 27, 2009 8:36 pm

Great writeup with lots of valuable interesting information.

BTW: I was involved in some research related to Bioloid that also included measuring lots of parameters related to AX12 protocol timings.
Check out the site and the Master Thesis PDF file here: http://humanoids.dem.ist.utl.pt/
Great writeup with lots of valuable interesting information.

BTW: I was involved in some research related to Bioloid that also included measuring lots of parameters related to AX12 protocol timings.
Check out the site and the Master Thesis PDF file here: http://humanoids.dem.ist.utl.pt/
limor offline
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 1845
Joined: Mon Oct 11, 2004 1:00 am
Location: London, UK

Post by shervin.emami » Wed Oct 28, 2009 4:41 am

Post by shervin.emami
Wed Oct 28, 2009 4:41 am

Wow, thats pretty impressive stuff :-) Are you still trying to get your robot to do the gymnastics?

Cheers,
Shervin.
Wow, thats pretty impressive stuff :-) Are you still trying to get your robot to do the gymnastics?

Cheers,
Shervin.
shervin.emami offline
Robot Builder
Robot Builder
Posts: 7
Joined: Tue Oct 20, 2009 2:55 am

Re: RoBoard RB-100 with Dynamixel RX-28 RS485 motors

Post by roboard » Thu Oct 29, 2009 6:20 am

Post by roboard
Thu Oct 29, 2009 6:20 am

shervin.emami wrote:Hi, has anyone tested the RoBoard with the higher power Robotis Dynamixel 4-wire motors (like RX28 or RX-64 motors) ?


We have tested RoBoard COM2 with RX-28; the RX-28 works fine. But the maximum baudrate of COM2 is only 115200bps, slower than USB2Dynamixel.
shervin.emami wrote:Hi, has anyone tested the RoBoard with the higher power Robotis Dynamixel 4-wire motors (like RX28 or RX-64 motors) ?


We have tested RoBoard COM2 with RX-28; the RX-28 works fine. But the maximum baudrate of COM2 is only 115200bps, slower than USB2Dynamixel.
roboard offline
Savvy Roboteer
Savvy Roboteer
Posts: 302
Joined: Fri Jul 03, 2009 4:44 am

Post by shervin.emami » Thu Oct 29, 2009 7:19 am

Post by shervin.emami
Thu Oct 29, 2009 7:19 am

Thanks Roboard for confirming that it will work.

Now that I think about it, Dynamixel motors use 9 bits of serial data per byte and usually 7 bytes per command, so it takes roughly 0.5ms to send a command to the motor at 115,200 bps, compared to roughly 0.1ms when using a 1Mbps baud rate. So I think an extra 0.4ms delay per command may be tolerable for most robots.

This would add up to about 10ms delay when you have 20 motors, in addition to the other delays you would have (such as 1-16ms delays in the USB driver, plus atleast 1ms delay in the operating system, plus 0-0.5ms return delay in the Dynamixel).

Maybe someone else can correct me if I'm wrong, but it sounds like the fastest feedback control that a robot with 20 motors can achieve with the correct settings is 42ms at 1Mbps (20 * (1+1+0.1)ms delay) or 50ms at 115kbps (20 * (1+1+0.5)ms delay). This is 24 frames per second at 1Mbps or 20 frames per second at 115,200bps.

Cheers,
Shervin.
Thanks Roboard for confirming that it will work.

Now that I think about it, Dynamixel motors use 9 bits of serial data per byte and usually 7 bytes per command, so it takes roughly 0.5ms to send a command to the motor at 115,200 bps, compared to roughly 0.1ms when using a 1Mbps baud rate. So I think an extra 0.4ms delay per command may be tolerable for most robots.

This would add up to about 10ms delay when you have 20 motors, in addition to the other delays you would have (such as 1-16ms delays in the USB driver, plus atleast 1ms delay in the operating system, plus 0-0.5ms return delay in the Dynamixel).

Maybe someone else can correct me if I'm wrong, but it sounds like the fastest feedback control that a robot with 20 motors can achieve with the correct settings is 42ms at 1Mbps (20 * (1+1+0.1)ms delay) or 50ms at 115kbps (20 * (1+1+0.5)ms delay). This is 24 frames per second at 1Mbps or 20 frames per second at 115,200bps.

Cheers,
Shervin.
shervin.emami offline
Robot Builder
Robot Builder
Posts: 7
Joined: Tue Oct 20, 2009 2:55 am


9 postsPage 1 of 1
9 postsPage 1 of 1
cron