Thanks for the input Limor I really appreciate you bringing me up to speed, I hope I can contribute some small part in time toward the first adaptive smooth moving hobby robot.
limor wrote:Robotis firmware for AX12 has
timing issues. It seems that they went overboard with all these variables and their maintenance overheads. I don't see any reason to copy their entire framework of variables. For PC closed-loop control really you need a very degenerate subset of peek/poke variables.
If I could shoehorn it all in then it would encourage lots of people to play with the realtime conrol, lots of people would not like to reprogram all their servos and lose all the robotis stuff. It would be ideal to have the closed loop stuff as an added cmd that puts the servo into a much leaner operating mode. But I will not work on this until I can achieve something that is useful fo realtime control.
[/quote]
limor wrote:having the following AX12 bus control options from a PC at reliable 100+ frames/sec (18 servos) is plenty more than what you can do with the original firmware:
- speed control + max voltage
- position control + spring effect
- voltage control
I will add these in as extra commands. First for my experiments I only need set:pwm read:postition with as fast throughput as possible.
limor wrote:btw: We already have published code that uses the CM5 as an intermediary between the PC (RoBoard) and the AX12 bus (see
here) and it works very well. 12 servos at 250 sync_read cycles/sec.
That is nice and fast, faster than I thought possible with standard AX12. I will look at the code.
limor wrote:btw2: there has been talk on the forum before regarding lantronix wiport (wifi/serial) module used with bioloid and one can not ignore the BifferBoard+wifi-dongle (especially when mentioning the FriendlyArm9 micro-2440).
thanks for the info, I will read about these.
limor wrote:btw3: there is a real problem in getting any PC to react reliably at high frame rates and compute whatever control magic it needs to compute and reply in time etc. 100 frames/sec is manageable but not 1000. maybe on a real-time operating system. certainly not on windows while it is going about its mysterious hidden services work.
Yes it seems operating systems have got further and further removed from the hardware as the years have progressed. It's terrible that a $5 16MHz microcontroller can thrash a 2GHz+ $1000 PC when it comes to writing ones and zeros to the outside world realtime. Comms would have been no problem on a machine from the 90s.
My current thoughts on getting something decent using PC are:
[1]Jitter in packets from robot to pc can be removed using timestamps and interpolation.
[2]Latencies (TX and RX) can be (hopefuly) predicted away on PC.
[3]The one thing that will be a permanent stain is jitter in packets on the PC to robot channel hence why you guys like to synch to the buffers.
limor wrote:btw4: great in-depth discussion about the subject Fraser and i-Bot
btw5: any reason not to use Kalman to predict the current position and speed? it is much less costly than ANN once the prefixes are identified for each AX12.
I use ANNs because I'm quite familiar with them. I'm not yet familiar with kalman filter, have heard talk of it in predicting for control like balancers etc. I will wiki it. What I like about ANNs is that you can just throw in extra inputs (even from different times) and they can help prediction, the ANN can pull out any correlations and useful information if present. But if the kalman can do it much faster it will be the way to go. I will probably try both in time.
Good to have this forum to discuss on! I will use this place as a kind of log book, show and tell, for my tinkering. I will also change the title a little.
Thanks for the input Limor I really appreciate you bringing me up to speed, I hope I can contribute some small part in time toward the first adaptive smooth moving hobby robot.
limor wrote:Robotis firmware for AX12 has
timing issues. It seems that they went overboard with all these variables and their maintenance overheads. I don't see any reason to copy their entire framework of variables. For PC closed-loop control really you need a very degenerate subset of peek/poke variables.
If I could shoehorn it all in then it would encourage lots of people to play with the realtime conrol, lots of people would not like to reprogram all their servos and lose all the robotis stuff. It would be ideal to have the closed loop stuff as an added cmd that puts the servo into a much leaner operating mode. But I will not work on this until I can achieve something that is useful fo realtime control.
[/quote]
limor wrote:having the following AX12 bus control options from a PC at reliable 100+ frames/sec (18 servos) is plenty more than what you can do with the original firmware:
- speed control + max voltage
- position control + spring effect
- voltage control
I will add these in as extra commands. First for my experiments I only need set:pwm read:postition with as fast throughput as possible.
limor wrote:btw: We already have published code that uses the CM5 as an intermediary between the PC (RoBoard) and the AX12 bus (see
here) and it works very well. 12 servos at 250 sync_read cycles/sec.
That is nice and fast, faster than I thought possible with standard AX12. I will look at the code.
limor wrote:btw2: there has been talk on the forum before regarding lantronix wiport (wifi/serial) module used with bioloid and one can not ignore the BifferBoard+wifi-dongle (especially when mentioning the FriendlyArm9 micro-2440).
thanks for the info, I will read about these.
limor wrote:btw3: there is a real problem in getting any PC to react reliably at high frame rates and compute whatever control magic it needs to compute and reply in time etc. 100 frames/sec is manageable but not 1000. maybe on a real-time operating system. certainly not on windows while it is going about its mysterious hidden services work.
Yes it seems operating systems have got further and further removed from the hardware as the years have progressed. It's terrible that a $5 16MHz microcontroller can thrash a 2GHz+ $1000 PC when it comes to writing ones and zeros to the outside world realtime. Comms would have been no problem on a machine from the 90s.
My current thoughts on getting something decent using PC are:
[1]Jitter in packets from robot to pc can be removed using timestamps and interpolation.
[2]Latencies (TX and RX) can be (hopefuly) predicted away on PC.
[3]The one thing that will be a permanent stain is jitter in packets on the PC to robot channel hence why you guys like to synch to the buffers.
limor wrote:btw4: great in-depth discussion about the subject Fraser and i-Bot
btw5: any reason not to use Kalman to predict the current position and speed? it is much less costly than ANN once the prefixes are identified for each AX12.
I use ANNs because I'm quite familiar with them. I'm not yet familiar with kalman filter, have heard talk of it in predicting for control like balancers etc. I will wiki it. What I like about ANNs is that you can just throw in extra inputs (even from different times) and they can help prediction, the ANN can pull out any correlations and useful information if present. But if the kalman can do it much faster it will be the way to go. I will probably try both in time.
Good to have this forum to discuss on! I will use this place as a kind of log book, show and tell, for my tinkering. I will also change the title a little.