Pascale works in the MathWorks Paris office and helped coordinate a student competition: the Mission on Mars Robot Challenge. The goal was to design an algorithm that would drive a rover to points of interest as quickly as possible while avoiding obstacles. And while it would have been fun to land a fleet of rovers on the Martian surface, the finals were held in Lyon in a terrain mockup.
Of course before you test in the field, the prudent thing to do is to fine-tune your design in simulation first. MathWorks provided competitors with a starter model in Simulink. As I would expect from any of my coworkers, this model is very well organized and follows many modeling best practices. All the files are managed as a Simulink Project, which makes it easy to share and get others using it quickly. Once you load the project and open the main model, this is what you discover:
The model is comprised on a subsystem that models the rover's control system, dynamics, and sensors. A separate subsystem scores the rover's performance. These subsystems served as a foundation that enabled competition teams to improve on the third subsystem: InputProcessing. In effect, this was the guidance algorithm to the rover's software.
The guidance algorithm for the rover is managed by a Stateflow chart, which contains a state machine that defines the pathing logic. If you're unfamiliar with state machines, we produced a tech talk series on the subject that's worth checking out (I hear the presenter is phenomenal). In a nutshell, state machines are a useful way of expressing a system with different modes of operation that you switch between. When you use Stateflow to design your state machine, you can visualize the mode switching as you simulate:
While this looks pretty, the state machine employs an intentionally poor algorithm. This is a sample of a simulated three-minute attempt to locate all points of interest (marked as circles). The rover doesn't know where the circles are; it has to scan for them with a camera whose range of visibility is shown with the blue trapezoid.
As you can see in the animation, there's no strategy employed to systematically sweep through the field and find points of interest. The rover randomly spins around, moves forward on occasion, and (if it's lucky) finds a circle. Even when that happens, it sometimes loses track of what it detected. The animation shows a case were it identified a point but then drove right past it. The end result of the three minutes is unimpressive. The rover wastes a lot of time covering the same ground and ultimately misses one of the six points of interest.
Think you could design a better algorithm? Well that was the point of the competition. And even though the challenge is over, this is still a fun model to play around with.
Let us know what you think here or leave a comment for Pascale.
To leave a comment, please click here to sign in to your MathWorks Account or create a new one.