Digby II: Electric Boogaloo
I learned a lot from building the first version of this robot and I decided to give it another try, with a couple of changes.
Through an incredibly fourtunate series of events, I ended up finding a Velodyne VLP-19 3D lidar module (which retails for over $4000) in the tech recyling. It was a little beat up and had its cable cut, but with a little bit of soldering and some help from Wireshark, i was able to get the lidar up and running with Velodyn’s visualization software.
For a long time, I had no real use for this lidar other than walking around with it and recordign point clouds, but now that I was rebuilding Digby (the robot), I knew the perfect place for it.
And so Digby II’s purpose was found. The new Digby would have no manipulators or anything of the sort, but would simply be a carrier for this very expensive lidar (and the set of expensive mecanum wheels I never got to use). I could then use ROS to run some kind of 3D SLAM for mapping or autonomous navigation, and get some insight into how these lidars are used on autonomous cars.
I learned from the first robot that wheelbase/frame stiffness was very important for good performance with mecanum drive. To achieve this, and at the same time keep the frame as light as possible, I built the frame using these composite boards, which are made up of a sheet of PVC sandwiched between two sheets of very thin aluminum. Each board is about 1/8″ thick and I bolted two together to get a strong 1/4″ panel.
As a side note, these originally used to be some sort of posterboard, with graphics or text printed on one side. I found a whole lot of them thrown away at some point and after using them for a couple of things, they quickly became one of my favorite materials to work with. It cuts cleanly and very easily, and is ridiculously stiff and light.
I cut a 12″x 12″ section and drilled holes using the hole pattern from the first robot in order to attach the motor mounts. The new wheelbase is smaller and ensures even weight distribution on the wheels.
I put the new mecanum wheels on the robot and quickly populated it with some of the electronics required to run the robot. This includes:
- Nvidia Jetson Tk1
- Arduino Mega w/ Sensor Shield (for convenient plug points)
- Buck converter for LIDAR and Jetson (12V)
- 2x Dual 10A motor controllers
- Power Distribution Block and Power Switch
- 4S Battery (mounted on underside)
All of these were either found or salvaged from the previous version of this robot.
The battery itself was a trashed 6600mAh 4S Li-ion Alienware laptop battery that was. I simply cracked it open, added and XT60 plug and balance leads, and closed it back up.
I cut four short sections of aluminum angle to make standoffs and to the top of those I attached another 12″ x 12″ square of the composite board. On top of this I mounted the lidar and routed its cables back down where they could connect to power and the computers Ethernet port.
Software (The Hard Part)
At this point, with the hardware, electronics, and wiring done, it was time to get the software up and running.
I quickly realized that since the Jetson TK1 ran Ubuntu 14.4 on a very old ARM32 processor, I would not be able to install the newest version of ROS notr could I simply upgrade to the latest Ubuntu version. On top of this it was having a really hard time detecting USB devices like the Arduino, which was necessary to control the motors.
So, for the time being I removed the Jetson and just connected an RC receiver to the arduino, so I could control the robot manually using my transmitter. In his configuration the robot would not be able to do much other than drive around and do cool tricks, but it proved that the mecanum wheels worked well enough to be used on an autonomous platform.
Here’s the code for that:
And a quick video of the movement.
To run ROS though, I still needed an actual computer. The smallest one I had on hand was an Alienware Alpha. This computer was, back in its heyday, sold as a SteamBox, so it was a pretty decent computer for this application-i3-4130T CPU, 8GB RAM, and a dedicated GTX 680M GPU. Understandably though, it did draw quite a bit of power.
I wired up 2 6250mAh 3S LiPo batteries in series to make a 24v 6S battery that I could step down with a buck converter to the 20v the computer needed. The buck converter was a little on the small side though so the computer’s current draw was kind of redlining the little guy, but I stuck a little heat sink on it and it worked well enough to keep going.
Project Still in Progress! Check back later to see more…