Live Robot Hack Session
DJ Sures

DJ's Test Bots (TurtleBot 3, and K-8)

14 people have subscribed to this event

I will be upgrading my test robots with single-board computers (SBCs). I'll be adding the Intel Up Board and Rock Pi/x to each of the robots. The TurtleBot 3 and the tank (known as K-8).

Oh man, give me a roomba any day. Terrible platform, so fragile and with toy motors. It should have some kind of hinge system for easy access.
What do you think of the d435i? Any advantages over Lidar at this point?
Happy Easter!
I’m not sure if I want to continue with that platform base. I might modify the chassis to put ax-12 dynamixel servos to replace the plastic motors. Or add a kangaroo/sabertooth to the existing motors and encoders. 

the d435 is great. Better than a lidar for false positives. Sucks it’s discontinued and impossible to buy:(

adding support for something that no one else can use sucks to swallow lol
User-inserted image

I added a sabertooth with kangaroo connected to the encoders. I’ll test it tomorrow. But I’m guessing it’ll fix the trajectory issue. 

i also added an amplifier on the speaker 
User-inserted image
Great live hack. Shame I missed it live (Family is important).  I often wonder if people not in this space understand just how exhilarating it is when the robot finally moves.
Haha - except it moved crooked LOL

I hope this sabertooth & kangaroo combo fixes that. Otherwise, I'll replace those motors with Dynamixel servos
#6   — Edited
Ugh i've been fighting with Sabertooth + Kangaroo all day. Seriously, almost a full day of just trying to make the kangaroo work. 

The kangaroo manual has soooo many inconsistencies. Not to include that the Sabertooth manual is the absolute worst - i don't know how their manuals haven't been updated in so many years.

Dip Switch Nitemare
The biggest issue I found is attempting to understand the dip switch settings. There's no simple diagram that just says "here's the switches and here's what each one does". Instead, you have to scan the document and read paragraphs where you might catch a sentence that says "Dip switch #2 does this".... WOW who wrote these manuals? They're written like a novel...

So I'm not sure what the sabertooth dip switch settings are supposed to be because they're referenced opposite of each other in two places...
User-inserted image

User-inserted image

OH but then I realized that in the second diagram, the little orange circle is the switch position - which took me hours to notice that I interpreted it in reverse as any other human would. Because the larger part should be the switch position because that is why you're using the document?! 

I finally got the Describe software to work, which you have to use the beta version because the regular one will NOT connect. And there's a firmware update? That's cool and neat to see. Took about 20 tries with timeouts lasting many minutes... So that was a fun hour trying to update. 

User-inserted image

Oh, and still no working Sabertooth + kangaroo yet
#7   — Edited
More dimension engineering sabertooth + kangaroo inconsistencies in their manuals. And boy, I really can't get over how the manual is written. It really is written like a story and not by a technical writer at all.

This one involves the Sabertooth baud rate. Both the kangaroo and sabertooth talk via serial to each other. The kangaroo needs to know the baud rate that the sabertooth is set for. The kangaroo manual says the Sabertooth dip switches should be this to be 9600. 
User-inserted image

But the sabertooth manual says those dip switch settings is actually 2400
User-inserted image

And in the DEScribe software, the sabertooth setting is 9600
User-inserted image

I have no idea what is actually correct because I still can't get the two talking. And I keep getting an error flashing 4 times on the kangaroo of "invalid mode" so not sure what is going on there either. The DEScribe software is terribly documented. Seriously poorly documented. Check out this example...

User-inserted image

So reverse is used with single-direction mode. And single direction mode says it is used with reverse.... Talk about a recursive loop? What is going on here
Wow - I have been persistent to get this to work and it's been extremely frustrating. The poor documentation and instructions lead me to have low confidence in reliability. Now I'm unsure why errors occur because I'm not quite certain how any of it works.

I'm still fighting to use it - but I do not believe the outcome is going to match what I'm expecting. My outcome is to have the controller use the left and right wheel encoders to maintain trajectory. Meaning, I want to instruct the robot to move straight forward and it does so. I'd also like to have it slowly turn 10 degrees to the right, and it does so. This would be similar to how the iRobot Roomba operates.

However, I do not believe the sabertooth's velocity speed mode offers this functionality. 

I'll give it another shot tomorrow, but I'm guessing the solution will be some custom arduino code. The good news is that if i end up creating a PID based motor driver in the arduino with the EZB firmware, it'll be useful for other projects.
#9   — Edited
Wow, what a nightmare. I feel your pain. The manuals suck. 

A couple thoughts; 

# When you use a Kangaroo attached to a Sabertooth there are two sets of dip switches that need to be set. The ones on the Sabertooth are set so the two boards can talk to each other. In think In reality the Kangaroo will only talk to the Sabertooth. It seems to me that the Sabertooth becomes the slave to the Roo. 

# When you use a Kangaroo attached to a Sabertooth set the dip switches on the Sabertooth as instructed in the manual, Then forget about the Sabertooth. 99% of the time you will never have to do anything again to the Sabertooth. 

# When you use a Kangaroo attached to a Sabertooth set the dip switches on the Sabertooth to:
Switches 1 & 2= Off
Switches 3,4,5,6= On
This will set the proper baud rates and other setting so the Kangaroo and Sabertooth can talk to each other. At this point the Roo will be able to totally control the Sabertooth. 

# I've never had to change the baud rate for either board in the DeScribe software. Dip Switch control is the default. However if for some reason you need to change this and other settings that the dips control there is a box to check in the software that will override the dips. 

# The dips on the Kangaroo change the operating modes and options. I've attached that diagram from the Kangaroo manual showing them:

User-inserted image

# @DJ, I assume that you are controlling the robot with the joystick control in ARC. I think to achieve the control you want you need to set dips to 1=on, 2=on, 3=off, 4=off. This would give you Digital input, Encoder feedback, velocity control and mixed mode that would be like a tank control.  

After all this the device to be controlled needs to be set up 100% and working. Once that is certain then the Roo/ST can be attached and hopefully an Auto Tune can be successfully done.  

You can also attach the input control wires to accept an RC controller. I did not use a Kangaroo for this on my robot's RC drive. Just a lone Sabertooth. DE says adding a Roo makes driving a robot much better when using RC control but I have not tried it. My large RC controlled robot runs nice and smooth with only a ST attached without the additional Kangaroo. 

Again, I agree that the manual is very hard to read. Information is given in terms that is not very intuitive. Almost like the developer assumes you should already know this stuff. Also needed info is scattered around the manual. I found it was important to read through the entire manual to make sure I found the needed information or needed step. Example is how to attach the Roo to the ST and set the proper ST dip switches. That information at the end of the manual! 

Here's some links to the Kangaroo and DeScribe manuals just in case you need them:
Kangaroo X2 Manual
DeScribe Manual
It was a fun show. Thanks for doing this live hack.