Arm system model equivalency

In the past couple of years, my team has had some success making shooter mechanisms with articulation in pitch and flywheel speeds to score points. Historically, We have used hand-tuned PID controllers for pitch control and Sysid on the flywheels to keep the system consistent.

Here are some screenshots of the shooter we made for this past season. ( I would have put them in the post too, but I don’t have enough credit to add more images :person_shrugging:)

Hand-tuning PID systems has always been a bit of a hassle in my mind because it requires a good amount of experience and intuition. This has made the barrier to entry for younger students a bit higher than I think it could be.

I wondered if drawing an equivalency with a single-link arm system would be reasonable. If that were possible, my team could rip the dynamics equations from the frc controls book, specifically equation 13.22 and formulate an LQR controller for the system. That way, tuning would be a much more intuitive system that penalises errors in states and inputs. It could even be augmented to utilise an integral term on the position if steady state was an issue.

I get that the geometry is a pretty funny shape, and that would drastically impact the system’s dynamics. I was thinking about running an experiment with some of my students after our last off-season event in a couple of weeks to test its feasibility.

Has anyone in the wider FIRST ecosystem tried something similar, and what were the results if you have?

Why not do sysid for the pitch aswell?


I hadn’t thought of drawing this kind of equivalency until now. It didn’t make sense to try and shoehorn the identification of the system into something it wasn’t because I expected worse results than the current strategy. You’re right that this could be a way forward and definitely something I will experiment with.

My team hasn’t used sysid outside of drive train motors and flywheels. Its usage for anything more complex is tricky to justify in the heat of build because it utilises the command framework. We use the magicbot framework in robotpy because its a nice philosophy for robot design. They are very different paradigms to write code for. If getting better with leveraging sysid is the best way forward, then it’s just going to be something we experiment with.

SysId has an arm identification tool specifically for single-linkage arms. It includes a sinusoidal feedforward with inferred phase (kG).

It seems like I might be correct in equating this to an arm. I will try sysiding it in the coming weeks. Cheers, guys!