|
Team Möbius implemented several innovative design ideas throughout the semester:
- Graphical User Interface helped us to easily setup for gameplay and analyze our code.
- Extended Kalman Filter allowed our robots to "see in the dark" for a few seconds while the vision system failed.
- Obstacle avoidance allowed us to avoid collisions with other robots.
- Dynamic control and adaptive PID values provided more precise control over robot movements.
- Artificial intelligence: a weighted matrix and real-time observations allowed our robots to
make strategic decisions in gameplay, including switching of the robots' roles.
- Compact, low-profile robot body provided a stable platform that allowed for quick movement. The unique
tail design gave our robots another way to handle the ball while still meeting the strict specifications for
concavity.
The two-wheel platform, although simpler to implement than the omnidirectional systems, has some drawbacks:
- More difficult to gain possession of the ball.
- Harder to setup for a goal kick.
Future recommendations:
- Rather than assign a specific area of the project to one person, it is better that everyone work on several aspects
together so that there is more general understanding between team members.
- Make sure to find and correct problematic bugs early (such as faulty vision systems, semi-left-hand coordinate systems,
non-SI units, etc.).
- Perform rigorous testing so that problems and imperfections that have not been accounted for
may be identified and resolved. Implementing a diagnostic "play" would be very beneficial. For example, this play could
command both robots to traverse a square on the field, turn to specific angles, etc., and could be run before every
match or tournament as a quick check on PID values and other possible errors.
|

Team Mobius: Derek Wright, Spencer Haycock, Chad Harper, Michael Duersch, and Luke Kunz.
|
Documents:
-
Product Specifications
Concept Generation and Selection
Team Schedule
Team Schedule - Pert chart
Design Review 1
Design Review 2
Design Review 3
Code:
-
Complete Source Code (.gz)
ai.hh/ai.cc The artificial intelligence module is based on a weighted matrix that effectively weights the importance of several plays based on real-time observations of the playing field. The plays are commanded based on which robot is closer to the ball. The "master" robot is generally deemed the more offensive player while the "slave" is deemed the more defensive one. Role-switching occurs when the "slave" robot becomes closer to the ball, becoming the "master."
plays.cc Two plays objects are instantiated (by the AI), corresponding to our two robots. This object-oriented approach effectively controlled each robot independently and allowed for easy role-switching. The plays class computed waypoints and managed several skills to track each robot through its play.
skills.cc The skills class implemented key routines to control the robots using PID values, filtering, and linear system theory. We created separate classes for both the Kinematic and Dynamic feedback linearization models. Within these models we implemented path planning and path generation routines which used our obstacle avoidance algorithm to properly alter our desired path in order to avoid robots, walls, and even the ball, when desired. This proved to be very effective; however, we had to dramatically limit the extent to which we avoided because most teams did not employ avoidance routines for their team (or so it seemed).
utilities.cc Our utilities include various filters and state-prediction functions. Our ball predictor worked quite well and even took into account inelastic wall collisions. Several implementations of a basic Kalman filter are located here, as well as the working version of our extended Kalman filter.
myrobot.cpp
main.cpp
Movies & Pictures:
-
Avoid and Score (.mpg)
Avoid and Return (.mpg, slowed down)
Line Defense (.mpg)
|

One of the robots without its cap.

The Graphical User Interface.
|