Development of a platform for teaching basic programming using mobile robots

Mobile robotics is being used in different education contexts, such as basic, middle, and high-level education. A literature review showed that 197 papers have been published in this area of knowledge over the past 10 years. Nowadays, Latin America faces a serious problem due to the low student enrollment in engineering programs, where, depending on the country, the ratio of graduate engineers can be 1 per 4500 to 1 per 10 000 people. In Colombia, the SPADIES program of the Ministry of Education affirms that the lack of motivation and interaction with real artifacts relating theory and practice is an important aspect for dropout. In this paper, a platform composed by a set of programmable mobile robots, and a WEB-responsive software tool for programming at different levels of knowledge was implemented. The set of mobile robots included sensors such as proximity, trajectory, light, inertial, and vision; also, communication and user interaction tools, such as Bluetooth and colored LEDs-ring, and a mechanical support for an erasable marker were included. The WEB-responsive tool supports graphical programming for novice; Python programming, for middle; and ANSI-C, for advanced learners. This platform consolidates a hands-on tool to introduce students to STEM concepts. Results are reported in the context of platform functionality, using all three programming environments, and beta tests with real users.


I. IntroductIon
Robotics is a valuable learning resource that allows students building their own concepts on science, technology, engineering, and math (STEM).The main goal of using robotics on education is learning STEM concepts through hands-on learning activities [4], and in this way encouraging team work within a multi-disciplinary environment.In the past few years, robotics on education has become an interesting research topic; for instance, [1] and [5] reported 197 different scientific works on this area over the past 10 years.These studies showed that robotics on education is an important tool to improve the learning process, not only at secondary level, but in Universities as well.Nowadays, Latin America faces a serious problem of student enrollment in engineering programs [2].In Colombia, according to the Ministry of Education [3], there is 1 engineering student per 1864 people, and only 5 % of the students enrolled in engineering programs finish their studies.Furthermore, according to the Desertion Prevention System for High Education (SPADIES) program, one of main causes of dropout of engineering students in first semesters is the lack of interaction with real learning artifacts.
Currently, many mobile robotic platforms are available for engineering education.A summary of those more representative platforms is shown in Table 1.In this table, we compare the used development environment, the supported programming languages, the operative system, the level of knowledge required to deal with the mobile robot, and the type of licensing that is essential to guarantee long-term use of the learning platform.Observing Table 1, most platforms strictly constraint the type of users able to deal with the mobile robot, i.e. basic, advanced or intermediate.In addition, most of them have commercial licenses, which could limit their use.Advanced robotic platforms normally have a slow learning process; however, basic robotic platforms have a limited life cycle, which is an important observation made in the Mobile Robotics Seed Bed developed by the Perception and Intelligent Systems research group [6].The Finch [15], and UVBots1 [19,20] bring to the users important properties such as multiplatform support, platform programming using various languages, and GNU licensing.Nowadays, STEM concepts, and specifically basic programming concepts, are also learnt using WEB applications, and on-line mini-courses.For instance, CODE [21] is a mini-course of 20 hours where learners acquire the fundamental concepts of computer science using animations, and popular movies or game characters for kids; depending of the learner knowledge level there are many available mini-courses to choose.
App Inventor [22] is an innovative programming environment for beginners app developers; it uses dragand-drop blocks to create simple apps for Android SO.
It is worth noting that all these software applications are oriented only two one user profile, and they do not support an increasing level of knowledge complexity.This paper proposes a hands-on platform composed by a set of programmable mobile robots, and a WEBresponsive development environment; both of them support increasing level of complexity, which allow to include learners with any knowledge on mobile robotics or programming, multiplatform support, and GNU licensing.The main goal of this platform is to provide a mobile robot as a real artifact to learn STEM concepts at early semesters of engineering programs.

II. Platform descrIPtIon
The proposed platform (Fig. 1a) is composed by eight mobile robots and a WEB-responsive application that can be programmed considering three levels of complexity, depending on the learner expertise.The mobile robots support Bluetooth communication, but they are programmed using a PC through a serial link.The WEB-responsive application used to program the mobile robots runs into a PC or Laptop.
The three levels of complexity offer to learner three programming environment interfaces: graphical (basic level), Python (intermediate level), and C (advanced level).Within all levels of complexity, learners are able to use all the perception, motion, communication, and interaction tools from the mobile robots.

A. Mobile robots hardware description
Each one of the eight UVBots2 was equally designed from a hardware and firmware point of view.This section briefly describes hardware modules, such as motion, perception, and communication.The UVBots2 hardware block diagram is shown in Figure 1b.The UVBots2 mobile robot has the following hardware requirements: a power system with a 12V at 1800mAh battery pack, a differential motion system with position sensing, a perception system including proximity, light, inertial, and vision sensors, Bluetooth communication, user interaction system composed by eight colored LEDs, and a CPU running FreeRTOS 7.4.2[23].
The differential kinematics model assumed for each robot is shown in (1).The DC motor model assumed was lineal with K = 5.81 and t = 221.2ms,then a PI controller was designed considering the following requirements: a steady-state time of 750ms, no overshooting, and a natural system frequency of 5.33 rad/s.The PI controller designed is shown in ( 2). ( Where, V R and W R are the lineal and rotational robot velocities, c is the wheel radius, b is the wheel distance, w r and w l are the rotational wheel speeds.The UVBots2 perception system is composed by the following modules: proximity sensing, light intensity measurements, inertial measurement, and vision (Fig. 1c); these systems are briefly described as follows: Proximity perception is implemented using four bumpers, and six GP1UD28YK infrared receivers; Light intensity perception is implemented with four photocells; Inertial measurements are performed by a MiniIMU9v3 IMU with 9 DOF; and Vision perception is implemented using the PixyCam CMU5.
Human-robot interaction is an important aspect to know what the robot is doing at any moment.UVBots2 has two different types of feedback for learners: first, basic audio systems implemented using a buzzer, and second a set of eight colored LEDs (Fig. 1c).Also, UVBotsV2.0robots are able to communicate to each other using Bluetooth by means of a HC-05 module, which can be configured as master or slave.However, to perform the PC-Robot communication, a RS232 link is needed.

III. ProgrammIng envIronment
The programming environment was designed using WEB-responsive technology from the DJango framework [24].This environment supports three different programming interfaces: basic, intermediate, and advanced.The basic level uses a graphical interface, which is designed for learners with basic knowledge on programming and robotics; the intermediate level uses Python programming language because it is easy to use and understand; and the advanced level uses ANSI-C programming language.
The software development process for this project was carried out using eXtreme Programming methodology [25].The software functional requirements for the developed modules are described as follows (Fig. 2 Graphical Programming Module: Learners can start programming using drag-and-drop operations from the programming blocks available on the left side.These blocks are added downwards into the main routine; however, robot sensor blocks are added horizontally, and they create an independent execution thread.All learner graphical programs are stored in XML files.Among these files, the most important stored data are user and program data, main and sensor routine blocks, block attributes, and C code to implement the functionality of each block; the latter is implemented using Python dictionaries.In this work, three different dictionaries were created: first, to translate block programming to C; second, block programming to Python; and third, Python programming to C.

Python Programming Module:
In this module, learners can start programming using all built-in functions available for the UVBots2.Here, learners must consider two main routines: "tareaPrincipal" (mainTask), and "tareaEventosSensores" (taskSensorEvents).The former is used to introduce all Python sentences corresponding to the main execution thread, while the latter is used to introduce all Python sentences of the UVBots2 sensors.
Programming Module: The interface of this module, which is aimed at advanced learners, shows two C program templates: the "tareaPrincipal.c"or mainTask, and the "tareaEventos.c" or eventTask.In the same way as the previous module, they are used to store C code related with the main program, and C code related with the robot sensors.The FreeRTOS RT was used to program all UVBots2 functionalities.

III. test and results
To validate the proposed platform, two kinds of tests were performed.First, three individual integration tests, ranging from basic to advance programming, were conducted in order to show the main UVBots2 functionalities at different levels of learner knowledge; and second, beta tests were performed on real users.
ANSI C programming environment, and implemented a behavior based programming application [26].The robot homing behavior is very important in robotics, it allows mobile robots to return to the recharging stations, and to go to specific goals in the environment.In this work, the robot goal is the more illuminated region in Figure 3c, which is placed on the right, while avoiding obstacles.The set of behaviors supported by the UVBots2 are shown on the left side of Figure 3c.
All the behaviors motion commands are coordinated using a weighted sum, each weight represents the behavior importance within the behavior stack.We employed the Avoid Object, and the Go to the Light behaviors in the test.
The beta test was performed by 10 students of Electronic Engineering at the Universidad del Valle.The students had neither information about the programming environment nor the mobile robot.All the information to perform this test was consolidated into a PDF document, which contained two challenges: one, using the graphical programming environment, and another, the C programming environment.At the end of these tests, a survey took place, and the questions and resulting statistics are shown as follows: 1. How do you evaluate your experience with the GUI? 50 % answered "Fun" and "Innovative", and 50 % answered "Intuitive" 2. In general, is the application slow to load its content?90 % answered "No", and 10 % "Yes".
6. Were the blocks easy to delete from your graphical program?60 % answered "Easy", and 40 % answered "Difficult".

Iv. conclusIons
In this work, we presented the UVBots2 platform that includes a programming environment, and a set of eight mobile robots having three levels of knowledge.Recent works such as the Thymio II [14], the Finch [15], and the Edison [17] mobile robot platforms are examples of how different levels of knowledge, and programming languages provide high flexibility in the learning process.In the same context, UVBotsV2.0platform provides longer-term learning experiences than other commercial platforms as Mindstorms EV3.
In addition, UVBotsV2.0platform can be used by users with advanced knowledge of programming and robotics, as well as by novice users.This capability allows users to use the UVBotsV2.0platform in an incremental way, and they can notice their progress on programming skills depending on the type of programming language used.
Finally, considering the current governmental efforts in developing novel educational strategies [27] and the experiences in the Robotics Seedbed [6] the hands-on platform presented in this work represent an interesting option to bring children and young people to science, technology, engineering, and math.references

fIg. 1 .
fIg. 1. a) Hands-on platform conceptual diagram.b) Hardware block diagram.c) UVBots2 mobile robot and Placement of the perception system and coordinate frame.

table 1
State of the art Summary of mobile roboticS platformS for education and reSearch [14]ntly, platforms such as Pob-Bot[12], Thymio 2[14], , basic programming, robotics, or STEM concepts can be learnt.The development environment was implemented considering the following properties: use of WEB-responsive technologies, platform independence, ability to translate block based programs to Python, or ANSI C code, and from Python programs to ANSI C using dictionaries, and the possibility of saving, editing, downloading, and executing programs using the mobile robot.Finally, this development environment considers the user previous knowledge on programming and robotics, since it offers an increasing complexity learning methodology.