Tuesday, November 17, 2009

Learning by Teaching

While in elementary school, I remember a teacher once wrote on the board:
You learn 8% of what you read,
you learn 12% of what you hear,
you learn 25% of what you write,
you learn 90% of what you teach.

The concept of learning by teaching has stuck with me throughout the years and has been re-inforced through my tutoring in high-school, joining study groups as an undergrad student, and later developing controls curriculum at Quanser. But how true the words of my teacher are I realized only as a Teaching Assistant of a controls lab at Queen's University. As a part of my Masters degree, I spent a term TA-ing a 4th year Robotics course at Queen's. The lab component of the course was based on Quanser's rotary family of experiments, which - incidentally - I had spent my first year at Quanser developing.

Even after specializing in controls during undergrad, I always say that it wasn't until my time at Quanser that I really learnt controls. It was while working on controls curriculum to pedagogically guide students through a control system experiment where I really needed to understand and learn control theory - once again, it was learning by teaching. And it was only years later, being a teaching Assistant at Queen's and actually delivering that same curriculum to the 4th year students, when my expertise truly took hold. it was also during this brief stint as a Teaching Assistant that I could benefit from the feedback provided by students - another form of learning by teaching, and bring back their comments to improve Quanser controls curriculum in general.

What I noticed during the Robotics course was that the students would benefit from more time spent playing with the experiment and trial-error type of work. However, there might not be enough time during the lab for that. What we can do instead is give that time to the students during pre-lab. The new version of Quanser's real-time control software QuaRC 2.0 has powerful visualization tools - why not to use the power of QuaRC and add a pre-lab component that would visually and dynamically represent Quanser's experiment. That way, students would get to the lab having a context and feel of the experiment and learn much more during the actual lab.

It's exciting to see how the principle of learning by teaching works for engineering team at Quanser. In our dynamic and multi-disciplinary group, every engineer brings certain expertise - to "teach" other team members, one must "learn" and understand his or her part. Working on multi-faceted projects, developing new controls experiments and refining existing labs and curriculae, we continue to improve the quality of our offerings as we are always learning by teaching.

Monday, November 16, 2009

QUARC: The QuaRC Tetralogy

In the past few months we talked about the new features and strengths of QUARC 2.0, the new version of our popular control systems design and development software. The diagram below succinctly captures QUARC’s characteristic strengths - and some of Quanser’s domains of expertise - and illustrates QUARC’s four pillars.

Namely, the QUARC tetralogy consists of:

  1. A visual programming tool, like Simulink. As a Rapid Control Prototyping (RCP) tool that provides full open-architecture, this is what QUARC fully integrates with and generates real-time code from. This visual programming tool is used as a flexible development platform and to maximize user friendliness.

  2. Multiple target Operating Systems (OS). The target OS, be it either a pseudo- or hard-real-time operating system is where the QUARC-generated code is run. Currently, QUARC models run under 32-bit Windows, Linux, QNX, and INtime (to be available soon).

    QuaRC-generated models are optimized for robust and real-time (i.e., deterministic) performance, by strictly adhering, for example, to a true multi-rate and multi-threaded design, or by taking advantage of multi-core CPUs (CPU affinity support).

  3. Hardware interfacing. QUARC allows interfacing to actual hardware in a real-time fashion by utilizing the Quanser’s HIL API and by supporting a growing number of third-party devices.

    The Quanser’s Hardware-In-the-Loop (HIL) API is a generic, card-independent, and extensible API. It is detailed in our QuaRC: Hardware-In-the-Loop (HIL) Card Support and HIL API post.

    As a complement to the HIL API, QuaRC also supports a wide variety of third-party-vendor sensors, devices, and robots, as described in our QuaRC: Third-Party Device Support article.

  4. Communication capabilities. QUARC implements a very flexible and powerful communication framework that allows for carrying out standard communication not only between QuaRC models, but also and especially between a QuaRC model and an external third-party application.

    The cornerstone of QuaRC’s communication capabilities is the Quanser’s Stream API, which is a generic, protocol-independent, and extensible communication API. Please refer to the QuaRC: Communication Capabilities and Framework article for a more detailed description.

Quanser Qball-X4 with iPod controller!

Our new Qball-X4 UAV has been flying autonomously or using a standard 4-channel joystick for some time now. We decided we wanted to fly the Qball-X4 with something a little less conventional: an iPod. Using QUARC, Quanser's real-time control software, and our stream communications API, we are able to interface an iPod and read the accelerometer measurements and user inputs directly into a Simulink model. Our Qball-X4 flight stabilization controller is also implemented in MATLAB Simulink using QuaRC, which allows the generated code to be downloaded and executed on-board the vehicle. Once we added the iPod inputs to our Qball-X4 model, it was simple to compile the controller and start flying.

The video below shows a test flight of the Qball-X4 we performed recently using the iPod's accelerometers to control the roll and pitch commands to the vehicle with one pilot, while the second pilot controls the throttle and the yaw. We are working on an iPod controller that only requires one pilot to fly the vehicle, but this test was a very interesting way to combine a new human interface with an existing vehicle controller.

Note: Qball-X4 is slated for release in spring 2010.