Coding the tele-op for our robot this year was a fairly straightforward process, given our lead-programmers’ previous years of experience coding onBot Java for FIRST competitions. An encoder was implemented within the lift arm, restricting the free movement of the mechanism should it be held in suspension. The inclusion of this encoder also allowed us to prevent the spool from expanding or contracting the lift arm beyond its operating boundaries. Additionally, the option to toggle “slow-mo” mode, allowing the drivers to switch easily and efficiently between the prioritization of precision or speed. Regardless, obstacles are always inevitable in the engineering process. Aside from the temporal gap which so often presents itself between the physical construction and subsequent coding of newly designed and incorporated components, a particularly unexpected constraint was our robot’s misaligned center of gravity. With a greater deal of strain being placed on the rear right motor, our robot’s ability to strafe in a linear and precise fashion was severely impaired. To compensate for this, a mathematical approach was taken whereby the power of each motor was given as the domain-specific outcome of a piecewise function. By adjusting the power of the remaining motors accordingly, linear strafing was achieved beyond our satisfaction.
Coding our robot’s autonomous this year, however, posed as something of a challenge, particularly with respect to the nature of our tele-op. Utilizing encoders placed on each of the four wheel motors initially appeared to be a task of lesser difficulty but, as would soon become apparent, we were in for a lot more than the remaining allotted time slot would allow. Encoder targets were not remaining consistent and various tangible and intangible forces persisted to interrupt the completion of our autonomous code. However, after dozens of man-hours, group brainstorms, and research, we were able to compensate for this seemingly arbitrary discontinuity - although not without sustaining considerable losses regarding our ability to further develop our autonomous to a more advanced level of operation. Regardless, we have since acquired the necessary information to move forward in the advancement of our autonomous op-mode for competitions to come.
Key algorithms:
Autonomous Programming:
Driver controlled enhancements:
The robot’s rear right motor had a significantly larger load placed on it during operation.
As a result, when strafing, the robot would move in a non-linear fashion. To compensate for this, a conditional statement that determines whether or not the intended action is strafing actively modifies the power of the remaining three motors. The outcome of this is accurate and linear movement when strafing.