Sim.I.am is a mobile robot simulator designed to allow students to bridge the gap between theory and practice in control theory. It enables students to design controllers for a mobile robot, test these controllers in a simulator, and then deploy these controllers on an actual robotic platform: the Khepera III mobile robot (and others). This mobile robot (and its virtual analog in the simulator) is a differential-drive mobile platform with distance sensing IR sensors, wheel encoders, and WiFi connectivity. The simulator allows students to use the IR sensors and wheel encoders as feedback in their controllers, and control the mobile robot via input signals to the left and right wheels of the robot. The key feature of the simulator is that it allow students to design and implement controllers in MATLAB, test these in simulation, and then deploy it on the real robot without ever having to implement code outside of MATLAB. The focus stays on the design of the controllers instead of implementation details that often derail the learning experience.
Sim.I.am provided the core of the experience for students enrolled in ECE4555. As part of an inverted classroom experience, students would spend the beginning of the week learning a control theory concept through the MOOC course, Control of Mobile Robots. For example, students would learn the mathematical formulation of a go-to-goal controller, which can drive a differential-drive robot from point A to point B. The first step required students to implement the go-to-goal controller in the simulator. While the simulator is a somewhat idealized version of the real world, it provides the students with a sufficient tool to test whether their controllers are behaving correctly. If a controller did not work in the simulator, it almost assuredly would not work on the real robot. The second step required students to deploy their go-to-goal controller on a real mobile robot. Rather than port their controller from MATLAB to C, the simulator provides a network interface (TCP/IP) that simply links the inputs/outputs from the student’s controllers to the real robot instead of the simulated robot. This approach allows students to focus their attention on adapting their control design to the real robot, rather than worry about porting their controller to C.
Jean-Pierre de la Croix