GoodDog Bumble v0.2 Assembly

This page will cover the 3D-printing and assembly of the GoodDog Bumble v0.2 robot.


Preparing the parts for printing

You will need to print 1 copy of each of the parts listed on this page: GitHub Link

That’s a total of 9 parts, two of which are the gigantic case top and bottom case pieces. I have printed everything on an Ultimaker 2+ using Yellow Tough PLA.

Any printer with a 20x20cm build plate should work just as well, but you should expect around 60 hours of total print time and ~500g of material necessary.

Slicing settings needed:

  • 20% gyroid infill
  • 4 walls
  • Supports are needed on some parts, but it’s doable with standard supports on a single extrusion printer.

Note: If you are using Ultimaker Cura as your slicer, then you can use the same settings we used with the files here.

Body Bottom

Supports will be needed where the caster wheel attaches, and under the motor mounts, but be sure to use "support blocker" in your slicer to suppress it everywhere else.

Body Top

Supports will be needed on the underside where the antennas and head attaches, and by the microphone mount, but be sure to use "support blocker" in your slicer to suppress it everywhere else.

Body Caster Wheel + Motor Mount

The rest of the motor mounting and caster wheel mounting parts should be printed as shown, with standard breakaway supports.

Head

All four of the head components can be printed on one plate. I recommend to print in the orientations shown for the strongest possible prints. Only the main "Camera bracket" will need supports, and just go with what your slicer recommends. It's a bit tough to remove, but this is the most complicated part in the assembly.

Fasteners

Here are the required fasteners to assemble the robot. I recommend to get a generic M3 and M4 hex cap kit so that you have a bunch of sizes to choose from and make adjustments and hacks as necessary.

# Type Size Q-TY Comment
1 Button Head Hex Drive Screw M2.5 x 5 2 Microphone mount
2 Button Head Hex Drive Screw M3 x 6 2 BaseCam PCB mount
3 Button Head Hex Drive Screw M3 x 8 2 Camera PCB
4 Button Head Hex Drive Screw M3 x 10 9 ODrive mount (4), Terminal mount (2), Head connection (3)
5 Button Head Hex Drive Screw M3 x 16   Charging plug mount
6 Button Head Hex Drive Screw M3 x 25 3 Pololu wheel mount
7 Button Head Hex Drive Screw M4 x 8 2 Camera mount
8        
9 Socket Head Screw M2.5 x 5 16 Motors mount
10 Socket Head Screw M4 x 8 2 Power supply mount
11 Socket Head Screw M4 x 16 4 Casae connection
12 Socket Head Screw M4 x 40 6 Wheels clamps
13 Hex Nut M3 4 Pololu wheel mount (3), Charging plug mount (1)
14 Hex Nut M4 10 Wheels clamps (6), Case connection (4)
15 Zip ties short for rires   16 Head clip (2), Body clip (14)
16 Zip ties long 300mm 2 Battery mount

Bottom Plate Assembly

Once you have printed all the parts, you can start assembly.

Install the battery. Use two big zip ties through the integrated clips to keep it tied down. I used a zip-tie gun set to around 40 pounds of pressure, but just make it firm without deforming the battery itself.

You can use a zip tie gun set to 40-50 pounds, or just manually attach the zip ties through the integrated mounts.

Install the Pololu caster wheel. Take the “Caster wheel base” 3D printed part, and the plastic base of the caster wheel and attach it to the matching hole at the bottom of the plate. Use M3x25 button head hex screws (a full socket cap will probably be too big), and some matching hex nuts. Once you attach the plastic base, put in the rollers into the caster wheel base, and snap in the retaining clip.

Use rounded button head M3 screws so that there is no interference with the caster ball.

Attach the motors to the motor mounts. You’ll want the flat part of the hoverboard motor shaft to go against the bottom of the plate. Screw everything in with M4x40 hex cap screws, and M4 hex nuts that go into the traps at the bottom. (Be sure to clear out all of the support material from the nut traps)

Here I have shortened the wires, and crimped wire "ferrules" to them already.

Install the DC-DC converter. This component is not strictly necessary, because the Jetson Xavier board runs on 12-20V input, and our battery is around 14V. However, I’ve noticed that there can be power spikes at a high enough level to be dangerous to the Jetson Xavier, so running it through a DC-DC converter is the safest option.

If you look in the previous picture, I added some furniture "feet" to keep the PSU more stabilized. Also, keep the cables going out through the right side, it will be easier to wire later.

Prepare your ODrive 24V edition by soldering decoupling capacitors to the motor hall effect sensor terminals. We used 22nf capacitors and followed the instructions here. Don’t skip this step, if you do, the motor control will appear to work, but randomly after a few minutes of operation, you will see the ERROR_ILLEGAL_HALL_STATE condition.

I recommend some inexpensive ceramic capacitor kit from Amazon. Just solder on to the A, B, and Z terminals to ground on each motor sensor input. There is some Kapton tape in the picture to help prevent shorts.

Mount the ODrive to the mounting posts at the front of the robot. I use M3x10 button head screws, they work perfectly for this application.

You can use this USB C to Micro-B cable which has the perfect length and connectors for this size of robot.

Route the USB cable on the top side of the board, so there is less potential for EMI.

Build the Terminal Block

The handiest way to attach relatively high current wiring in a safe and easy manner is with “Anderson PowerPole” brand connectors. You can get this board built and shipped with jlcpcb.com for around $15, and it’s very handy for future projects.

Instructions:

  1. Download the Gerber Files
  2. Go to jlcpcb.com and order it. You should expect to pay around $2, plus $10 shipping. No special PCB characteristics are required.
  3. Assemble the board, you’ll need 10x PCB Anderson Connectors, and 2x connector tabs
  4. You can get an inexpensive Power Pole crimper and a couple connectors from PowerWerx.
Assembled, it should look something like this.

Attach the Terminal Block

It goes in the front. Put the power input / switch connectors closer to the side as shown to simplify the wiring later.

Wire your Motors and ODrive

Shorten up the 3 big power wires from your motors as much as you think is prudent, and attach some wire ferrules to the end. Ferrules are important, because they will effectively turn the multi-strand wire in the motor wires back to single strand which is very easy to screw into the terminal blocks on the ODrive. It will also help prevent a single strand of wire getting loose and causing a short-circuit.

I used this wire ferrule crimper which was very cheap on Amazon and probably include more crimps than most mortal humans will ever use.

I also added some ferrite cores to the motor wires, before attaching them to the ODrive board. This helps reduce EMI.

The other 5-stranded wires are used to send the hall effect encoder signal from the motor to the ODrive controller. This lets you run the motor efficiently at very low speeds, and also have some understanding of how many turns of the wheel have been made for odometry.

My favorite solution here is to use Molex SL connectors. They are size-compatible with what are known as “Dupont connectors” (those 0.1inch pitch connectors that you use to assemble Arduino circuits, etc). However, they are more reliable, and you can more easily find proper crimpers.

Check out this guide on proper crimping and some additional explanation of crimp connections.

Keep the wires as short as you reasonably can for the least amount of EMI. Long wires basically act like big antennas, and their signal can couple to other wiring inside of the robot. This is because a lot of current is getting switched on and off rapidly to drive the motors.

Build around an 8 inch cable to connect the ODrive (wire ferrules to go into the green block labelled + and -) and the terminal block which distributes power.

Use some good crimpers to make this a solid cable.

Quick checkup, at this point you should have the following things done

  • 14V LiFePO4 battery installed
  • Hoverboard motors mounted
  • Caster wheel mounted
  • DC-to-DC Converter installed, wiring not yet created
  • ODrive 24V edition mounted
  • Power distribution board soldered up, and mounted
  • Power connected to the ODrive as shown
  • Each of the motor power leads connected to the ODrive
  • Each of the motor encoders connected to the ODrive

Finish wiring the bottom case assembly

Reference of what things should be looking like at this point.

Next, using 14 or 16 AWG wire, make a cable that will connect the battery to the power distribution board.

I used these XT60 Pigtails from Amazon, and the crimped 30Amp Anderson PowerPole connectors to the other side as shown.

These are 14AWG wires, with the Power Pole 30 connectors on the other end.

Take the Red and Black leads off of the DC-to-DC converter, and crimp on some 30 Amp Anderson PowerPole connectors to them.

Plug that into the power distribution board.

These are 14AWG wires, with the Power Pole 30 connectors on the other end.

Take the Yellow and Black leads from the DC-to-DC converter, these are going to go into the Jetson Xavier AGX board. This board takes a 2.5mm ID, 5.5mm OD Plug, which may be a bit bigger than the 2.1x5.5mm plugs which are most common in electronics projects.

The best way I found to accomplish this was using this cable assembly from Digi-key, which already has a right-angle connector on it.

The easiest way to attach these two wires is with some heat shrinking “butt splice” connectors.

I like these official Molex Perma Seal ones, which are also available very cheaply from Waytek Wire with matching crimpers.

You can get some clones of these Perma Seal products on Amazon, for a bit less money. However, I have found that they are somewhat unreliable. If you do the crimp, and it works (you tug on the wires and they don’t come apart), then you are fine. But maybe 30% of the time, something will go wrong in the crimping process, and you’ll have to restrip the wire and try again. The Molex brand ones, with official crimp tool, work 100% of the time for me.

Be sure to add a ferrite core to the end of the wire where it will attach to the Jetson Dev Kit.

Add a ferrite core for better resilience to EMI.

At this point, you are done with the bottom part of the case!


Assembling the power switch

We’ve gotten ourselves a nice little rocker power switch so now it’s time to attach it.

The switch just snaps into the rectangular opening on the top case.

Build yourself two power leads that will go between the switch and the power distribution board. You want around 8 inches or so, to give yourself room to open the case later, without being excessively long to introduce EMI.

Most power switches that you find are going to be using so called “quick connect” 0.25inch spade connectors. It’s a pretty standard part that you’ll see on a lot of electronics, and it can handle 30 amps or so pretty reliably, plenty for our application.

I went all out with these insulated, heat shrinking, spade connectors. You can find cheaper ones, basically any 0.25inch “quick disconnect” spade crimp terminals will work.

The switch leads should look like this, once you crimp them, and apply a heat gun on the heat-shrink insulation.

If that looks good, then you should be able to plug in your battery, the switch leads, and hit the power switch! You should see a green light on the ODrive board at this point.

Almost everything in the bottom case is attached in this photo. Just plug the battery connector into the socket on the left side of the power distribution board.

Installing the Wifi / Bluetooth antennas

On the bottom of your Jetson board, attach a PCI-E Wifi module. I recommend to use an Intel 8265, which is very well tested and works well with the Jetson ecosystem. It’s going to use a really tiny “U.FL IPX4” connector, and the robot body will have two antennas, one for the Wifi and one for the Bluetooth.

The antenna connectors that I used came with a hex nut, a lock nut, and a spring washer. Be sure to use all three of these on the top part of the case, so that your connections don’t get loose over time.

Push the connector through the holes in the top part of the case, the hex nuts should catch the plastic, and you can use a wrench to tighten it up.

Installing the Microphone

Take your Adafruit SPH0645LM4H breakout board, and solder on a connector as in the picture. You’ll then use some M2.5x5 screws to attach the microphone to the case. Be sure that the port of the microphone is pointing outwards.

I used a Molex SL 6 pin header so that you can have a nice clear connection with polarity between this board and the Jetson Xavier.

I used a 6 pin Molex SL header, as shown in the picture.

Install the Gimbal Head

  • Follow the Gimbal Electronics instructions to install and wire up the gimbal camera head.

Wire up Xavier Expansion Port

You’ll need to connect two devices to the 40-pin expansion port on the Jetson Xavier.

  1. UART RX/TX for the SimpleBGC
  2. I2S Microphone SPH0645LM4H breakout board
Jetson GPIO description, source: jetsonhacks.com
Wiring diagram for Simple BGC Tiny Rev C.
Connector Pin # Connector Label Device Connection
1 3V3 SEL on Microphone 2
2 5V0  
3 SDA1  
4 5V0  
5 SCL1  
6 GND  
7 GPIO_GCLK  
8 TXD0 USART1_RX on SimpleBGC
9 GND GND on SimpleBGC
10 RXD0 USART1_TX on SimpleBGC
11 GPIO_GEN0  
12 GPIO_GEN1 BCLK on Microphone
13 GPIO_GEN2  
14 GND  
15 GPIO_GEN3  
16 GPIO_GEN4  
17 3V3 3V on Microphone
18 GPIO_GEN5  
19 SPI_MOSI  
20 GND GND on Microphone
21 SPIO_MISO  
22 GPIO_GEN6  
23 SPI_SCLK  
24 SPI_CE0_N  
25 GND  
26 SPI_CE1_N  
27 ID_SD  
28 ID_SC  
29 GPIO5  
30 GND  
31 GPIO6  
32 GPIO12  
33 GPIO13  
34 GND  
35 GPIO19 LRCL on Microphone
36 GPIO16  
37 GPIO26  
38 GPIO20 DOUT on Microphone
39 GND SEL on Microphone 1
40 GPIO21  

I made the connections with a set of Molex SL crimpers as before.

There are some great resources on the Jetson Hacks website, including more information and diagrams on the 40-pin connections. Jetson Hacks 40 pin header docs

Remember, that once you make the connections, you’ll still need to provision everything.

Install the Jetson Xavier

The actual Jetson Xavier dev kit should slot in nicely at the back of the robot. Plug in the power connection, the 40-pin header connections, the wifi antennas, the camera USB, and the USB connection to the ODrive.

One last thing: install a nice big micro SD card to store the ROS bag files which the robot will record while it’s operating.

Seal up the case and install bumpers

Once everything is ready and tested, you can use 4 M4x40 hex nuts to seal up the case. There is a spot for a trapped nut on the bottom of the case, and the nuts come in from the top.

Make sure that your wiring is tight and secure, and that there are no bulges sticking out through the case. It should really be a snug easy fit, but it can be finnicky if your wiring is too large or rats-nesty.

I used some of this Neoprene foam stripping around the case to give the robot some padding in case it bumps into anything. As an added benefit, it keeps the trapped nuts in place, so you don’t have to worry about them falling out if you ever need to open the case.

The bumpers are a must if you are going to use it indoors.