This is a video to show you guys how good the Kangaroo/Sabertooth motor controller combo is!
Dave, this video starts by showing the ramp-up - full speed - ramp-down algorithm that I coded on the PIC microcontroller, you will see how GET_POS is read and controls the ramping up/down. The ramp-up and ramp down rates can easily be change via a variable. When I get my V4, I will port the algorithm over to an EZ-B script for those that want it.
The second part is to show you folks how important encoders are, here you can see the incredible synchronising that the Kangaroo's auto-tune PID has. I have sent it precision movement (distance) commands for hours with barely no loss of motor synchronisation which means that you can build a robot that will accurately move in a straight line and move/turn to the exact distances that they have been previously programmed/taught. I use this for accurate room mapping and having pre-learnt routines which enable my robots to move from one room to another or to a particular room location.
Once you get everything running together this setup works great with EZB. My complaint was there is no native speed ramping in position mode. The startup and stop is very quick and the bigger the robot the more unhuman it looks. Plug & Play? Not even close but not to bad once you get everything working together.
mdeming1 see my post #10.
Hi Dave, got ahead of the thread there, sorry.
re: ramping. There are two sections on ramping in the manual:
http://www.dimensionengineering.com/software/DEScribe/html/
I'm sure you saw them but just in case. Have you tried playing with the speed "screw" on the kangaroo itself?
edit: I wonder if splitting the encoder wires between the v3 and kangaroo or having one encoder to each would be a workaround.
Matt
@mdeming1... Matt, Matt... wishful thinking but the V3 can't read serial no matter how you wire it... You need to use another way... As mentioned before, Dave I think used a POT and Tony used a PIC micro to get the Kangaroo set up
The Serial communication on the V3 is one way only, which is send only.
The only other method would be to use some kind of I2C to Serial bridging set up. I don't even know if such a thing exists.
It depends what you want it to do.
Feedback input is connected to the Kangaroo X2 as are any limit switches you want to fit. These are required so the Kangaroo knows how fast and how far a motor is moving. This is all taken care of on the Kangaroo.
If you need ARC to know this information too then you need bi-directional serial or use some feedback devices on the EZ-B. As far as I can see this is not a requirement it may just be useful for movement.
It's certainly never been looked at as plug and play since it isn't natively supported by ARC so will need scripts, scripts which may end up being long and complex in some circumstances. However, it will work with the EZ-B sending only, at least the commands to tell it what to do will. The commands to retrieve information from it such as speed or distance etc. will not work with the V3.
It's very likely that you could use an Arduino to bridge the gap and control it through the Arduino via the I2C however this will involve a lot of Arduino coding too. Since the Arduino can receive the data you could connect the Arduino to the EZ-B V3 via I2C, send I2C commands to the Ardunio to control the Kangaroo which then controls the Sabertooth. Not ideal, very long winded but it should work.
You might consider Sparkfun and see if it might meet your needs.
Dave, I am running the Kangaroo in Position Control mode (DIP 3 on) and also in Mixed mode (DIP 4 off). I control the speed by the "s" (speed) command and use this in my ramping routines. The position mode is good for me as I want very accurate movement from location to location for the robot moving around its environment.
My PIC micro (shown) has an I2C bus interface and can be controlled by a V3 as the I2C from the V3 is bi-directional and the PIC then handles the bi-directional serial to the Kangaroo. But now with the V4, you will not need this as the V4 can talk directly to the Kangaroo via its bi-directional serial port.
I am doing things differently though with the EZ;1 and EZ:2 robots, as I do not want the V4 to be "bogged down" by lower order system functions like locomotion, head control etc. I want the V4 just to issue a command to (say) the locomotion PIC such as "move to kitchen", then the PIC will run the relevant "move_to" pre-learnt routine to take the robot from its current position to the target position is say another room. The PIC also handles all the collision avoidance data coming from my narrow band sonar array (as photo below) and motor stall detectors. It only reports back to the V4 when either it had attained its target position of failed to because of an obstruction etc. By taking the heat off the V4 it enables it to get on with other important functions like vision etc.
If you look at my PIC board, the 8pin IC is an 64K x 8 (512Kbit) EEPROM this holds all the pre-learnt movements and locations library with the positional nodes held in DWORD (4 byte) arrays.