The cablecam was born as a first approach to integrating many things; software, hardware design and a couple of fabrication techniques. I am amazed to see the interaction between programming and the real, physical world. This was a first attempt at creating a moving robot, with the simplification of movement along a single axis. The project was finished in late 2019.

I tried making this project mostly with what I had laying around. You can see most of the components in the parts list of this post.

Design

The design was made using Autodesk's Fusion 360 with an education license, thank you Autodesk!

During this stage, I had a couple of things in mind, the fabrication techniques, which would be FDM 3d printing and CNC machining, and the components I had available to make this.

The end design combines a lot of 3d printed parts and a couple of 3mm wood plates which hold everything in place, cut with a CNC machine.

Nuts that hold the axes in place were inspired a bit by Noel Rubin (a.k.a. Teknoelogy).

Cablecam CAD model
Cablecam CAD model

Motion is achieved using a hobby brushless motor, with a couple of gears to increase torque. The motor drives a small spur gear that turns another bigger gear which then turns two bigger gears. Some testing with various configurations was required to achieve a good speed vs acceleration ratio. I ended with a 56/24*56/24 = 5.4:1 reduction that proved to be good enough.

Fabrication

To cut the wood frame or chassis I used the CNC machine at my University, Universidad de Montevideo.

CNC machining the wood plates

Most of the 3d printed parts were printed in orange PLA with my own FDM 3d printer.

The frame is held together by the wheel axles which were made out of threaded rod.

In this video you can see the reduction mechanism moved by hand.

For the power train I used a brushless motor made for hobby drones, and an ESC. The ESC was made for multicopters so not exactly meant to work on this project. It had no reverse, so I implemented a polarity switch using 4 relays with an Arduino. So every time the robot changed direction, the relays switched polarity of two motor wires.

The batteries were made with harvested cells taken out of recycled laptop batteries.

Self assembled batteries with BMS

Camera-wise, I went with the usual Arducam, and reused a Tarot gimbal I had laying around. The gimbal is suited for use with a GoPro Hero 3, so I printed an enclosure for the Arducam and added a wide angle lens from a smartphone lens kit.

2 axis gimbal with 3d printed camera case and wide angle lens

To keep weight down I decided to use the Raspberry Pi 4 on board the Cablecam and kept the Jetson on the ground. As I was learning how to use the Jetson and exploring the pre built AI applications from NVIDIA, I decided to offload the neural network processing from the RPi to the Jetson. I had the need to build a ground station that would let me see what the camera was capturing, and the output of the neural networks, but also let me control the Cablecam manually.

Base station

I used a Seahorse SE120 case and cut a wood panel to mount a screen on the lid. Placed the Jetson inside as well as an Arduino which communicates over USB, that allows for manual control with a potentiometer.

Cablecam ready to go

To give it an extra functionality, I decided to add a GPS module that belonged to a Naza Lite Multirotor controller. Thanks to the creator(s) of the NazaDecoder project!

Communication

This was a key aspect of the project. There are 3 information streams:

  • Cablecam -> ground station (video)
  • Cablecam -> ground station (status, gps coordinates)
  • Ground station -> Cablecam (commands)

Communication was achieved between the Jetson and RPi using the wifibroadcast project. I implemented some very raw python code to send messages through UDP.

Most of the programming was made with very basic knowledge and very simple implementations that allowed it to work, but just barely enough.

Operation...

Read more »