Turning software engineers into Makers
17 June 2016
For the last few months, I was employed part time at the University of Gothenburg and helped to introduce the maker culture into an undergraduate Software Engineering course. But, let’s take it from the beginning…
In spring term of 2015, I approached the Software Engineering & Management program manager, professor Imed Hammouda, to discuss the possibility of enabling at most two groups of students to work on a robotic miniature vehicle platform that I had created instead of their standard course setting, which involved the creation of an Automotive Grade Android (AGA) application. One student group was interested and they created Alice, the path following vehicle.
Fast forward some months later, November 2015 and that platform had evolved a lot. It had become, at a large extent, hardware-agnostic and its default setup even included a custom PCB, the Smartcar shield, compatible with the Arduino development boards. Smartcar: The open source, vehicular, educational platform was born.
The Smartcar, is a vehicular educational platform, which enables the user to develop various robotic applications in an affordable, pedagogic and easy way. It is intended for persons with basic programming knowledge and little to no experience of electronics, mechanics or robotics. More experienced users, should also find this approach convenient, due to its open source nature, high level API and object oriented design. The standard setup includes an Arduino shield, 4 DC brushed motors and a gyroscope, based on the L3G4200D chip.
The platform is independent from the shield or specific hardware. Its most important feature is that it supports multiple ways of steering and throttling. It is possible to steer the vehicle by rotating the wheels on each side at a different speed, like a tank, but also by using a servo motor instead. Moreover, another option is to use a brushed DC motor for steering, a setup that is very common in cheap RC cars. Finally, aside of the default brushed DC motors, you can also use an electronic speed controller (ESC) in order to drive the vehicle, using the very same library.
The platform is completely open source. Software wise, it is consisted of an Arduino library (GPLv3) which can be acquired either through its GitHub repository or the Library Manager feature of Arduino IDE. As a matter of fact, if it is downloaded via the IDE which is the suggested way, then the user gets notifications whenever there is an update. Users can always have the latest version seamlessly, without needing to check the repository for updates and pull. It is also accompanied by extensive documentation and a plethora of examples.
The most significant advantage of the library on a software level, is that it does not make assumptions on the hardware setup of your vehicle. For example, the Chalmers and Gothenburg University team that competed in the 2016 Carolo Cup competition in Germany, used a car that utilized the very same library despite sporting an ESC for throttling an a Servo motor for steering. Furthermore, the library is extendable, so the user can can create their own classes and use them instead of the ones offered by the library. For example, take a look at the Smartcar MPU6050 implementation, that extends the “HeadingSensor” class and can be used instead of the default gyroscope.
Hardware wise, the platform is equally open. In the same repository, you will find from the Eagle CAD files for the Arduino shield to even the 2D and 3D models of the plastic chassis, if you don’t feel like ordering them from AliExpress or Ebay. The Arduino shield, includes a chip (L293D) to drive the motors, mounting holes for a GY-50 gyroscope module (based on the L3G4200D chip), as well as terminals for the battery and the motors. Alternatively, if you do not want to bother with CAD software, you can just click and buy the PCB from OSH Park or Seeed studio. Assembling them should be straight forward and all of the necessary components are very easy to source.
So, back to November 2015, I approach yet again the program manager, asking him whether there is interest to have one to two teams use the Smartcar platform in the DIT524 Systems development project course (15 ECTS). He responds “Why two? All of them should use it! Is that OK with you?” It goes without saying that I could not miss this opportunity to get my software and hardware used and tested, by a class of approximately 80 students. The said class of students during one of the two 3-hour workshops on Arduino I offered, can be seen below, taking a kahoot.it interactive quiz! :)
Of course, we first had to convince the ones responsible for the course, Ivica Crnkovic and Emil Alegroth. To my great relief, they were as enthusiastic as I was, so we went for it. The various components were ordered domestically but did not arrive until one week before the course started, so I spent half of that week doing nothing else but assembling the cars. It was tiring but I have still not regretted it.
Some additional components were ordered, i.e. ultrasonic and infrared sensors, Bluetooth modules, continuous rotation servos, wires, breadboards and more. They were given to students as, what I like to call, care packages. What a better way to dive into the Maker world?
Of course, a simple miniature vehicle, controllable via Bluetooth and sensors was not enough for our devious students, so we had to additionally order a bunch of Raspberry Pi’s and cameras. Luckily, stretching the budget was not a big issue for our program manager! :)
And thus the journey began! The students had to develop a system, around the platform, adopting various agile methods during this procedure. The main theme of the project ideas, involved a client that controlled the vehicle wirelessly and received some kind of feedback from the car. The first year undergraduate Software Engineers, demonstrated a great deal of creativity and innovation! They created applications for every major mobile OS out there, allowing the user to control the vehicle while getting visual feedback from a camera. Some of them, did not just control their cars with a simple joystick, but with their voice or… their minds, utilizing an EEG sensor. Others, decided to engage with the technically challenging task of mapping the environment and used from OpenCV, Kinect, LIDAR to simply an ultrasonic sensor mounted on a servo. One of the teams, implemented a line following feature using the Smartcar and a PID controller, while another utilized a Google cardboard to give the user a first person view from their rover! I might have even forgotten something, which I would like to apologize in advance, but I was admittedly overwhelmed by the various novelties the students produced. I am also omitting a lot of details which differentiated the various projects from each other due to space limitation, but hopefully I will be forgiven for that as well.
In total 13 products were built, giving the students the chance to come in contact with a wide variety of technologies and acquiring valuable experience both from a technical and a process perspective. Judging from their feedback and enthusiasm, I could say that this initiative, to introduce a “Maker element” as part of the university curriculum, was highly successful and greatly facilitated learning.
At the end of the term, the students participated in two demonstrations of their products. The first, which was compulsory, consisted of a presentation to the professors and the class. Next, with funding by the university, we were able to book a large room, at the Lindholmen Conference Center, to organize an open event. We called it ”Exhibition of cyber-physical systems” and was published through the Embedded @ Gothenburg Meetup.
This was a voluntary event where all of the teams intended to participate but due to last minute technical problems, 11 out of 13 were able to make it. The students exhibited, some of them very competently and with a great zeal to say the least, their work to the embedded systems professionals and enthusiasts of Gothenburg. They received feedback, heard new ideas and made some interesting connections with the industry. You can check out more photos from the event here.
Personally, it was a very positive experience and I hope everyone else involved feels the same. I got valuable know-how in regards to tutoring a large class, organizing a course and providing technical support to the products that I have developed. To my satisfaction and excitement, it is the intention of the course administration to repeat the course under the same setting next year. Here, I should specially thank professor Ivica Crnkovic for his genuine interest and commitment in this initiative.
As the projects are too many to be detailed one by one, I will not do that here but I honestly hope the students will take pride in their work and publish their creations. Not just the code or a video but documentation, usage manuals, instructions on how to build etc. Some of the teams have uploaded videos of their work in Youtube, so check them out and find more information about them. If a team has published something (e.g. video, instructable, tutorial etc) I have missed, please contact me and I will gladly list it below.