The 3D rope camera was the first full stack project during our studies. The task was to build a robot that can move a camera via controls on a website.
We have constructed a 3-axis roped camera, which uses a motor in each corner of a frame to wind and unwind strings accordingly, moving the camera to the desired location.
ConceptThe idea was to calculate the respective desired cord lengths from the coordinates of the point controlled in the interface. To save us a reference run when starting the robot, we measured the cord lengths in the completely unwound form, so that the robot always starts in this position with valid start values.
The position of the camera is the tip of an imaginary pyramid and the ropes are the side lengths. From the given base area of the pyramid (i.e., the base area of the frame), desired side lengths can thus be calculated and controlled.
mobile media
second semester 2020
team with
Tara Monheim,
Marius Schairer
my focus
30% concept,
10% making 3D models,
25% Arduino code,
35% hardware
second semester 2020
team with
Tara Monheim,
Marius Schairer
my focus
30% concept,
10% making 3D models,
25% Arduino code,
35% hardware
Implementation and components
A simple html interface sends data via Socket.io to a node.js backend running on a Raspberry Pi Zero mounted on the frame of the robot. This communicates the target coordinate via a serial port to an Arduino Uno, which then calculates the desired rope lengths and thus controls the stepper motors at the corners of the frame.
To power the camera, we added another motor above the center of the frame, which always rolls a spool with an USB cable up and down enough to just reach the free-hanging camera case. To allow a constant power connection on the spinning coil, we opted for a USB to AUX adapter, since the AUX connection can rotate a full 360 degrees without losing conductivity.
A simple html interface sends data via Socket.io to a node.js backend running on a Raspberry Pi Zero mounted on the frame of the robot. This communicates the target coordinate via a serial port to an Arduino Uno, which then calculates the desired rope lengths and thus controls the stepper motors at the corners of the frame.
To power the camera, we added another motor above the center of the frame, which always rolls a spool with an USB cable up and down enough to just reach the free-hanging camera case. To allow a constant power connection on the spinning coil, we opted for a USB to AUX adapter, since the AUX connection can rotate a full 360 degrees without losing conductivity.
The motors at the corners of the frame are each equipped with a spool on which the cord can be wound. The spool is connected to the motor by a case to stabilize it and secure it to the frame. The case also guides the cord coming from the spool through an eyelet, which contains a soft piece of PVC tubing to prevent the cord from rubbing against the rough ABS plastic of the 3D print.
The camera case hangs from four strings coming from the motors at the corners of the frame. Inside is another Raspberry Pi Zero, which streams the camera image from the Raspberry Pi Cam mounted below to the interface.
My first task was to plan the project together with the team. On the one hand, we had to solve essential aspects, such as the formula for calculating the rope lengths, and on the other hand, we had to overcome small hurdles, such as the power supply for the camera. In the further course of the project I designed the 3D models for our required components and wrote the Arduino code to control the robot. I also helped build the hardware and fixed many of the problems that arose during implementation.