2363 summer project: vision aiming testbed

For the past couple years we’ve used the limelight camera to steer our drivetrain at vision targets. Some of our students are enthusiastic about using a vision aimed turret style shooter. This summer we built a testbed which can be used for development and testing of the control systems necessary to drive such a system. It uses actuators, sensors, and controller which would reasonably be used on a competition bot.


The testbed was designed to allow for an evolutionary development path towards a competition solution. The development path looks like this:

  1. Develop control code which can aim a laser pointer at a vision target and maintain target lock while the base is moving and spinning across the floor.
  2. Replace the laser with a projectile shooter. Augment the tracking code with logic which enables accurate scoring of projectiles while the base is in motion.
  3. Transplant the hardware onto an FRC drivetrain and demonstrate vision based scoring on the fly.
  4. Adapt the turret and shooter design to work with actual competition gamepieces.

We are releasing the CAD of the pan/tilt mechanism so other teams may build one, if they so desire. It’s a great project for teams operating under coronavirus meeting restrictions. The CAD was done by students using Onshape, with mentoring and design reviews performed using Zoom. Most all parts are 3D printed. The drive base is a modified furniture dolly. A couple mentors made the few metal fabricated parts (pivot shaft and base tube), at a socially distanced meetup at the robot shop. The testbed is small enough for backseat transport. It was handed over to programming students so they could do the coding at home.

Battery: https://smile.amazon.com/gp/product/B07X7MD2JK/
Power distribution: https://smile.amazon.com/gp/product/B07KQD9V3G/
Laser pointer: https://smile.amazon.com/gp/product/B01BPYEAKA/


We have an update with some extremely preliminary results.

For this video there’s a custom written PID loop running on the Robo Rio using the “angle” measurement reported by the limelight as the sensor. There was a timing issue causing the calculated D term to be unstable, so the controller is only using the P and I terms. With no electrical damping it was not possible to increase either P or I very high before the controller went unstable, so this is a fairly lightly controlled system. During motion, the P struggles to get the spot back to center, and after stopping, the weak I term “hunts” for position. Given these limitations, it does surprisingly well at holding lock on the vision target, especially after stopping.

Because of the slow update rate of the sensor data from the camera, there are timing issues when trying to calculate the D and I terms. Our next step is to run the PID loops on the Sparks themselves, using the built in position sensors in the brushless motors. This should enable tighter control over the axes. Then, the camera will be used to adjust the target position of the PIDs on the sparks.

For a control scheme which is quite non-optimal, I’m pretty pleased with the preliminary performance.


This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.