With ROBOCAM, our primary design goal was to build a physical robot arm with a camera-affixed end effector and the ability to use that camera to track and follow a moving target based on some user-specified desired movement sequence. In other words, we aimed to create an environment in which an operator could specify some set of actions to execute (e.g. do a full rotation around subject from above, pan left and right about the subject, etc.) and when to execute them, from which the arm could automatically create a trajectory of waypoints and timestamps to travel along with respect to the tracked moving frame of the aforementioned suspect.
The ROBOCAM is built off of an existing frame of a phone stand to keep the overall cost low. In total, there are 3 servo motors responsible for actuating the arm and there are 3 additional servo motors responsible for actuating the pitch-yaw-roll rotation at the "wrist" of the ROBOCAM. A Raspberry Pi camera is fixed at the end of the wrist to provide feedback, track, and record desired targets. Using the feedback from the camera, we can create a trajectory of timestamped way points for the arm so it can properly follow our active target. Using the way points, we can solve an inverse kinematics problem to get the desired servo angles. Thus, using these servo angles, we can effectively track a desired target on the fly.
Using an open chain arm would have made solving the inverse kinematics problem a lot easier. But for the sake of making the DIY process easier, we went with an off the shelf phone arm. Since many of these commercial phone arms have closed kinematic chain parts, solving the inverse kinematics problem is a bit trickier. Fortunately, using a closed kinematic chain makes our arm more rigid. So for the sake of convenience and rigidity, we decided to go with a robotic arm with components that form a closed kinematic chain.
Because the joints and the base of the ROBOCAM is 3D printed, it would not necessary meet the durability and rigidity that is needed in real world usage. Fortunately, because ROBOCAM has two parallelogram as two of its joints, it will be more rigid and stable compared to a simple open chained robotic arm. For our inverse kinematics problem, we have derived a custom analytical solution thus the result should be more robust and efficient compared to using a numerical solver.