Paper ID #14163

Design Elements of a Mobile Course Based on Student Feedback

Prof. Alisa Gilmore P.E., University of Nebraska, Lincoln

Alisa N. Gilmore, M.S.E.C.E., P.E. is an Associate Professor of Practice at the University of Nebraska - Lincoln. She has developed and teaches courses in robotics, telecommunications, circuits and controls. Page 26.460.1

c American Society for Engineering Education, 2015 Design Elements of a Mobile Robotics Course Based on Student Feedback

The use of in undergraduate classrooms has seen a boom in recent years due to the universal appeal of robots, and the applicability of systems to preparing students for career paths in computer science, robotics and intelligent systems, and as well as for teaching fundamental engineering and programming concepts in a fresh way. At our University, a novel robot platform was developed in 2008 as part of a funded outreach project, applicable to both K- 12 outreach and university level instruction. The robot platform, named the CEENBoT, became a central learning platform for instructing K-12 math and science teachers in a large project and was simultaneously adopted into the Freshman and Sophomore curriculum in the department of Computer and Electronics Engineering (CEEN), one of the key partners in the outreach project.

In the CEEN department, use of the CEENBoT was proliferated through a progression of undergraduate courses as an active learning component in teaching students fundamental computer and electrical engineering topics with a goal of providing additional hands-on engagement. Most often, this included at least one lab or project using the CEENBoT platform in each course. As part of this adoption, an existing course, Introduction to Robotics, was modified to include topics in mobile robotics and include exercises with the CEENBoT. It was offered one time. To test the effectiveness of this course, at the end of this course offering, a focus group study was conducted to gather student feedback over a wide range of discussion topics about the course. This feedback was analyzed and used to provide guidance for a future and final iteration of the course. The focus group results indicated important directions for the next iteration of the course. The results of this initial study were published and presented in a paper at the ASEE National Conference and Exposition in summer 2010.

In 2010, the final iteration of a newly titled Mobile Robotics I course and lab was created to directly address these issues. It was dedicated to mobile robotics concepts with newly designed labs and an extensive suite of custom firmware developed to make the CEENBoT useful for teaching advanced robotics topic. This paper describes the innovations that were created for this course and the subsequent student feedback that has been obtained through several years of teaching the course, including 2010, 2011, and 2013. Student feedback was obtained through an anonymous internet-based survey instrument at the end of each semester, and reviewed by the instructor after course grades were turned in. The feedback over the three years has validated the course design, and shown the effectiveness of using student focus group feedback for providing excellent direction in course refinement and creation. Finally, this paper illustrates hurdles overcome in designing a robotics course that is both effective for student learning and based upon a novel platform.

This paper is organized into the following sections: Background: The Need for a Mobile Robotics Course, Mobile Robotics Course Goals, Course Innovations, Analysis of Student Feedback, Reflections, and Conclusion. Page 26.460.2 Background: The Need for a Mobile Robotics Course

The Mobile Robotics course was developed as part of a progression of educational robotics initiatives birthed on our campus from 2005 to 2013. A brief overview of these initiatives is first given to provide the motivation and context for the creation of this course and its design elements.

Figure 1

In 2005, the idea of using robotics to increase students’ success, persistence and engagement was introduced into our department with an NSF funded project to adapt and augment the TekBoT® mobile robot platform developed at Oregon State University to the undergraduate curriculum from freshman through senior year in a vertically integrated manner. 1 By the end of this vertical articulation project spanning 2005 – 2008, the TekBot was completely integrated into the freshman year sequence, in one sophomore lab, and in one junior level experiment. 2 In this project, it was discovered that the TekBot was not well suited for the department’s upper level classes.2 As a result of this discovery, in 2008, a team of students and faculty came up with a new design for a brand new robot learning platform. The attributes of this new platform, the CEENBoT™, included greater flexibility, ability to use parts from hobby stores, more robust mechanical construction and higher reliability.2 During the same time, the department became integrally involved in a collaborative NSF ITEST funded project which sought to adapt the TekBot to the middle school level for teacher professional development.3 The project, called SPIRIT, for Silicon Prairie Initiative for Robotics in IT, employed TekBots as a fundamental strategy for problem-based instructional activities and curriculum development, and after its creation, the CEENBoT™. The work in K-12 robotics activities based on the CEENBoT™ continued with follow-on funding from an NSF Discovery K-12 grant, called SPIRIT 2.0. SPIRIT 2.0 set out to capitalize upon the creativity and ingenuity of the teachers who had been successfully trained in the SPIRIT project to develop an extensive middle school curriculum for Page 26.460.3 teaching STEM concepts. 6 The curriculum was based upon problem-based activities with the CEENBoT™, and produced over 300 free lessons and led to a large statewide K-12 robotics showcase, the Nebraska Robotics Expo.7,8 The CEENBoT™ also came to replace the TekBot in the vertical integration model in the department as well. Each entering freshman received parts to built a CEENBoT in their first CEEN course. Students owned their CEENBoT and took it with them as a learning platform throughout subsequent years of the CEEN program.

To support the initiatives using the CEENBoT™ in K-12 settings and at the University, a series of custom Computer Interface Innovations were soon created by a team of students and faculty which transformed the CEENBoT from a primarily remote controlled platform to one which could be easily programmed for autonomous operation by users in K-16. This allowed greater functionality and provided programming interfaces suitable for elementary students all the way to University level.* 5 The CEENBoT™ platform itself also received a design revision from the original student-conceived version to further increase its robustness, battery life and to simplify control.4

As an extension of these initiatives, a technical elective sequence in robotics was proposed for the department. Introduction to Robotics, a senior level elective course, was created and first taught in 2006. It focused on kinematics and industrial manipulator robotics.

In fall 2009, Introduction to Robotics was updated to include activities with the newly re- designed CEENBoT vs. 2.2 that had begun to be used in the department’s vertical integration plan. This was an experimental course with course content that combined half manipulator robotics and half mobile robotics content.

A focus group study was conducted at the end of this course to gather extensive feedback on students’ experiences and perspectives of this mixed robotics course and on the use of the CEENBoT. The focus group results indicated important directions for the next iteration of the course, and included the following: 4

• Students felt the course seemed like two separate courses: offer a separate course in Mobile Robotics. • Students thought the CEENBoT was an improved platform over the TekBot, that it was a very worthy effort to integrate it into the CEEN program, and it motivated them to do more with robotics. • Students thought the lab exercises accompanying the course should be included as a separate laboratory credit. • Students voiced frustration that the labs seemed untested and held the view that the CEENBoT still had some “significant technical problems with it” and it needed to be more fully ready for integration into the instructional aspects of the program. This was due to the newness of the untested platform and the experimental nature of the first integration of the CEENBoT in this class with newly created labs.

Page 26.460.4 * CEENBoT™ Computer Interface Innovations include: The CEENBoT™ Application Programming Interface (API) - a custom suite of C –programming functions designed to interface with the CEENBoT, a TI Graphing Calculator Programming Interface, and CEENBoT™ Commander, a drag and drop graphical programming • Finally, some students felt the labs were difficult due to rusty C programming skills, particularly for the Electronics Engineering students, whose core courses required less embedded programming.

As a result of this experimental robotics course, 4 new labs were vetted and the first field test of the CEENBoT vs. 2.2 platform was successfully accomplished, and valuable feedback was obtained from the students from this focus group initiative. The next course, Mobile Robotics I, was created based on this feedback.

Mobile Robotics Course Goals

A new Mobile Robotics course was created in fall 2010 to offer a better learning experience for students. The goals of this new course included addressing all areas of feedback from the focus group as well as creating a cohesive set of course objectives to provide a foundation in mobile robotics. Mobile Robotics I was designed as a 4 credit hour junior elective with a 1 credit hour lab section based on the CEENBoT, and had the following course description:

This 4 credit hour special topics course will provide an introduction to the primary issues spanning the field of mobile robotics, including robotics history, components (sensors, actuators), design considerations, and control architectures. The lab will focus on the practical implementation of autonomous robot control on a real mobile robot using reactive and behavior-based methods.

Another important goal was to design the course in a way that maximized the CEENBoT™ platform to achieve a meaningful and valuable laboratory experience that also complemented and enhanced lecture topics. Freshman year, students soldered together their CEENBoTs while being introduced to basic electric circuit principles, then they learned to program the CEENBoT with microprocessor programming in assembly and an introduction to the C language. In a junior level course, they fitted the robots to play a game of laser tag. Beyond this, students did not do much more with adding sensors or intelligence to their robots. This new course would provide the advanced experiences with the CEENBoT, by adding an extensive sensor suite, applying a robotics intelligence methodology, and teaching a robust programming structure that would equip robots with the intelligence to choose between multiple goals autonomously, while supporting and illuminating lecture content. With a new focus for the course defined, there were several hurdles that had to first be overcome:

• The redesigned CEENBoT v. 2.2 had been field tested in the previous course, and still needed some bugs fixed. • There were no tools to support extensive programming of the CEENBoT’s hardware and electronics using the C programming language. This included tools to seamlessly interface with the CEENBoT’s electronics, stepper motors, servo motor ports, etc. • A robot intelligence architecture that could be implemented on a limited memory, 8 bit like the one onboard the CEENBoT that would not require an operating system, or additional processing power was needed. Page 26.460.5 • Additional labs that complemented lecture topics were needed for the lab section.

A handful of minor glitches were uncovered with the expected operation of the CEENBoT during the fall 2009 labs. These were quickly resolved during the semester by the CEENBoT development team. At the end of this semester, the instructor provided a list of technical enhancements to address in future versions. These remaining enhancements were soon implemented on the CEENBoT as version 2.21. With the technical bugs addressed, the enhanced platform, shown in Figures 2 and 3, was ready for robust integration into the new course.

To address the remaining needs of the Mobile Robotics I course, several important course design elements were created.

Sony Playstation® remote connector Programmable speaker SPI ports UART Serial port 128 x 32 programmable Graphical LCD ATmega324P Programmable display LEDs and pushbutton switches 5 servo ports I/O Expandibi lity

Figure 2 – CEENBoT™ Controller Board

CEENBoT™ Version 2.2 and 2.21 included: improved power management, longer battery life, and a streamlined microcontroller board 2. Other features include a 128 x 32 programmable graphical LCD display, 5 servo motor control ports, I/O expandability for additional sensors, a programmable speaker, 3 programmable LEDs, and 3 programmable control switches.

Page 26.460.6 CEENBoT ™

Figure 3 – CEENBoT™ vs. 2.21

Course Innovations

To address the remaining needs of the Mobile Robotics course, a number of developments occurred to support the unique application of this custom robot platform that had been successfully applied in K-12 STEM learning environments to equip it for teaching robotics at the University level. The course innovations created for this course included: (a) the development of a suite of 7 robotics labs designed for the CEENBoT, (b) the creation of an extensive C- programming library to interface with the CEENBoT’s electronics, and (c) the creation of a behavior-based control programming structure to equip the CEENBoT with an intelligence control architecture on the robot’s limited memory 8 bit microcontroller. These will each be addressed in turn.†

First, a suite of 7 labs was custom-developed for the course around the CEENBoT. In the lab, students implemented reactive and behavior-based control techniques to achieve autonomous control objectives with the CEENBoT. Six sensors in addition to the onboard IR proximity sensors were installed and integrated onto the robot in the lab with robust performance results. The sensors that were added to the CEENBoT included (at a total cost of $75 per robot): 2 light sensors constructed by students using photocells ($5), 1 ultrasonic sensor ($30), 1 DC servomotor and mounting bracket for the ultrasonic sensor ($30), and 2 analog infrared line sensors ($10). The labs developed for the course were as follows: 1. Assembling the CEENBoT™

† The robotics labs were developed by the author with the assistance of the course T.A., Jose Santos. The CEENBoT Page 26.460.7 API was developed in its entirety by Jose Santos. The behavior-based program concept was devised by the author and implemented by Mr. Santos. 2. Dead Reckoning: Autonomous Locomotion using Odometry 3. Obstacle Avoidance with IR Sensors 4. Light Sensing with Photoresistors: a. Part 1: Braitenberg’s Vehicles (Reactive) b. Part 2: Light Homing Behavior-based Methods 5. Obstacle Avoidance with Ultrasonic Sensors 6. Wall Following with Feedback Control 7. Line Following with Feedback Control

The first 4 labs were done as individual assignments to encourage each student’s acumen with programming the hardware. The remaining labs were done in teams of two to allow students to collaborate and work together on more advanced goals. When possible, teams consisted of an electronics engineering student paired with a computer engineering student. Examples of student projects are shown below. Wall Following with PID control:

Light Sensing: Braitenberg’s Vehicles: Page 26.460.8

Line Following:

Secondly, an Application Programming Interface (API) for C programming was created as a custom suite of C functions designed for interfacing with the CEENBoT’s hardware. This was used in lab as a building block for student programming exercises. This was essential in that it allowed students to interface with the robot’s hardware, including its stepper motors, while allowing students to focus on higher level programming objectives. CEENBoT-API allowed users to immediately focus on robot programming objectives and considerably diminish the learning curve required for low-level bare-metal programming on a new robot platform. 5 The provision of this API did not preclude students from writing their own low level code, however, given the focus of the course on making robots intelligent, use of the API facilitated their focus on this higher goal.

Support for student C programming acumen was provided by the CEENBoT API “Getting Started” guide and a more in-depth 130 page “Programmer’s Reference Manual” that contains descriptions of all available functions and code examples. A review of advanced C programming tools was given in lecture.

Lastly, a behavior-based control (BBC) skeleton C program was designed as the final major innovation and was provided to students as a framework for constructing modular BBC programs. The motivation for its creation was to give students the ability to have the robot address multiple goals at once (such as seek a goal and avoid obstacles). The robot needed to make intelligent decisions about its actions based on sensor inputs and goals. Instead of doing this with an organic method of coding that can difficult to debug, scale, and append, it was important to provide an effective modular structure to the robot intelligence students implemented. This was made possible by implementing a behavior-based robot control architecture. Other robot control architectures such as deliberative and hybrid require a planning and world modeling component. The limited memory 8-bit microcontroller that existed on the CEENBoT would not support such, but behavior-based control presented an opportunity.

Behavior based control of robots was made famous by Rodney Brooks when he created the Page 26.460.9 Subsumption Architecture in the 1980’s at MIT. This paradigm for controlling robots was revolutionary in its treatment of the three robot primitives - sense, plan, and act, which up until that time involved a heavy planning and world modeling component. Behavior based control programs did not rely on planning, but they separated the robot’s brain into modular behaviors that were triggered by sensor inputs. The output of the behaviors sent commands to the actuators, and these commands could be suppressed by other behaviors. The simplest manner in which to choose which behavior the robot executes at any time is to list behaviors in an order of priority. The behaviors cooperate in that any behavior can be executed at any time, if the right sensor conditions exist, based upon a fixed priority order. In this way, cooperative multitasking and fixed priority arbitration are implemented.

A BBC skeleton program was created to provide this modular framework for students to write their own behavior-based control programs, without which over half of the course topics could not have been that implemented in the lab. The program created modular robot control programs that were easy to debug, modify, add and remove robot functionality.

The creation of a BBC structure for the CEENBoT allowed for the realization of an intelligent robot control structure on a limited memory, single microcontroller controlled robot. In addition, the code made use of some advanced C language constructs, including structures, pointers and custom types, which students were required to understand and use, thus enhancing their exposure to C programming tools. A snapshot of the skeleton C program is included in the Appendix.

The students first studied how this code worked and used it for the remainder of the course to control their robots by adding their own sections of code for sensing and behaviors. For example, a new sensor was added; students wired the sensor into the microcontroller and wrote the necessary code to read and condition the sensor data. Students then created code for each new robot behavior. The behaviors created in the lab included: escape (using IR sensors), avoid (using an ultrasonic sensor), wall following, line following and homing in on a light. Each behavior requires an appropriate sensor to trigger the activation of the behavior, a component to control what the robot should do based on the sensor data, and computing the appropriate commands for the left and right wheel motors for robot actions.

Analysis of Student Feedback

The mobile robotics course was first taught with these three enhancements in fall semester of 2010. At the end of this semester, a voluntary survey instrument was administered to gather anonymous feedback using Survey Monkey, a free online survey provider. A link to the survey was emailed to students during the last two weeks of the semester by the department secretary. To provide motivation to complete the survey, bonus points were awarded to all students based on the percentage of overall survey participation. Students completed the survey in their own time outside of class. The department secretary delivered the results of the survey to the author after course grades were turned in. The only other information given to the author was the number of students completing the survey, not the student identities. The survey consisted of ten questions: 6 questions were related to the course and course elements, 3 questions were related to the use of the CEENBoT and offerings in the program, and one final comment question. The six survey questions related to the course and course elements are listed in the Appendix and are Page 26.460.10 analyzed in this report. Overwhelmingly positive student feedback was derived from the fall 2010 student survey. The use of the instructional elements (the CEENBoT API, the BBC skeleton program, and the CEENBoT-based labs) was rated very high in facilitating student motivation, learning, sharpening C programming skills, providing personal engagement and a sense of satisfaction.

Student comments included:

• “This was one of the best laid out and organized classes that I’ve experienced in the CEEN department in four years. The work done to develop the labs and the API is spectacular and the way the course is presented helps really promote understanding of the course topics”. • “The later labs became somewhat challenging, and were actually great for teaching some of the feedback control systems.” • “The labs were perfect references for the course work we were currently engaged in.” • “The labs supplemented material learned in the classroom much better than other courses I have taken.” • “It improves your knowledge in C.” • “The CEENBoT API is very well written. It makes programming the (CEENBoT) easy and allows students to focus on the actual logic of the robot’s actions”. • “Using the CEENBoTs made it a lot easier to understand new concepts.” • “The lab section of the class was interesting, fun and made the students think.”

The same survey was administered in two subsequent offerings of the course. The complete results of the three years of data for 2010, 2011 and 2013 are shown in the Appendix. Highlights of this data, averaged over all 3 semesters, includes the following:

• The most common motivations for taking the robotics course were that students: o Needed a technical elective and this one fit (81.8%) o Had an interest in mechanics and electronic control of machines (77%) o Had an interest in automation and industrial applications (49.2%)

• On a scale of 1 to 5 (5 representing strongly agree), students most valued working with the CEENBoT in terms of their experience in this class because it: o Provided personal satisfaction in completing assignments (4.09) o Provided a means for learning concepts on the syllabus (4.07) o Provided personal engagement in assignments (4.07)

• On a scale of 1 to 5, students most valued working with the BBC Skeleton code in this class because it: o Sharpened relevant C-programming skills (4.2) o Provided a means for learning concepts on the syllabus (4.09) Page 26.460.11 o Provided a source of motivation or increased their interest level in class (3.87)

• On a scale of 1 to 5, students most valued working with the CEENBoT API in this class because it: o Provided a means for learning concepts on the syllabus (3.82) o Provided personal engagement in assignments (3.69) o Provided personal satisfaction in completing assignments (3.68)

• On a scale of 1 to 5, students reported that the labs in the course impacted their motivation and confidence for their capstone design project or career most in the following ways: o Increased self-directed learning skills (3.76) o Provided motivation for performing well in project tasks and responsibilities (3.67) o Influenced confidence that the design project or career is within their abilities (3.5)

Open answer responses over all 3 semesters revealed a range of student thoughts and perspectives. The majority of the individual responses affirmed the course design and elements, but there was also constructive feedback. While most comments were expressed only once or twice, a compilation of the most frequently expressed comments is shown below. A full list of all responses to the open answer questions is included in the Appendix.

• What improvements would you like to see in how the CEENBoT, CEENBoT API, or BBC Skeleton C-program was used in this class? o 7 out of 37 responses (19 %) said no improvements were necessary; all of these elements were done very well. o 5 out of 37 (13%) indicated students should not use code developed by someone else, expressed a desire to learn how to create an API for low level programming or create their own a behavior-based skeleton code in C. o 4 out of 37 (11%) felt the skeleton program should be rewritten or refined with a better coding style. o 4 out of 37 (11%) indicated a desire to have more functionality added to the CEENBoT, such as video processing, GPS, and radio.

• What general improvements would you like to see in this class? o 3 out of 31 responses (9.6%) indicated a desire to have a robot arm incorporated. o 3 out of 31 responses (9.6 %) highlighted improvements were needed in lecture content and delivery to expand upon material beyond the slides. o 3 out of 31 responses (9.6%) noted problems with the CEENBoT hardware, a need for an upgrade or to reduce debugging time. Page 26.460.12 o 3 out of 31 responses (9.6%) indicated that while the course required a lot of work, there was a need to make the work more technically challenging. • What are the strengths of this class? o 5 out of 33 responses (15 %) said it gave a very good understanding of mobile robotics and they learned a lot. o 4 out of 33 responses (12%) noted hands-on experiences.

All three years illustrate that the course design proved a success in how it applied the CEENBoT to mobile robotics topics while providing a high level of satisfaction in the learning experience for students. The survey responses also pointed to future enhancements that can be addressed in the course. Future course enhancements include methods to improve lecture engagement, helping students who desire to create their own low-level code instead of using the API and/or skeleton code still achieve the higher level goals of the course, and the addition of useful functionality for advancing robotics applications with the CEENBoT. ‡

Reflection

Was it worth it? Were there benefits of developing this course around a brand new platform vs. using one of the many existing robotic platforms available? While there are many robotics platforms commercially available, 5 the motivation in this development was to use one platform for many advances that were taking place in K-16 involving members of the same team who served distinct user communities. The benefits of this work included achieving a lower cost flexible platform (under $300 cost with open source, free programming tools) that is applicable to K-12 outreach and university level courses with rapid customization of the robot from user groups’ feedback, and its vertical articulation application. A strong, diverse community of users – at the department level, in cross campus collaboration with our resident college of education, outreach to metropolitan area schools, teachers and students in the state, along with collaboration on robotics education with other ECE departments around the country provided a unique synergy of development efforts. A great momentum developed around one platform. As a result, one platform can be introduced as early as elementary, that can offer with the same hardware upper level university students challenging experiments and a platform for deeper learning in robotics. As a primary example, the annual K-12 outreach event, the Nebraska Robotics Expo, involves an average of 400 elementary, middle and high school students competing in events that are judged and are mentored by college students who use same robot platform at the college level. This offers a competitive advantage for serving constituents of a land grant institution with a homegrown robot that has proven its effectiveness.

Conclusion

The feedback over the three years has validated the course design, and shown the effectiveness of using student focus group feedback for providing excellent direction in course refinement and creation. Several design hurdles had to be overcome in designing a robotics course that was both Page 26.460.13

‡ Currently under development is the incorporation of an intelligent robotics camera sensor called the Pixy, which will enable color-blob sensing for applications such as navigation and mapping using vision. effective for student learning and based upon a novel mobile robot platform. This work proved worth the additional effort due to the unique collaborations and synergies in K-16 that exist around the course’s central platform.

Bibliography

1. Chen, Grandgenett, “Vertical Integration of the TekBot Learning Platform into Computer and Electronics Engineering Programs”, NSF CCLI A&I Award #0511639. 2. Chen, B., Grandgenett, N.F., (2008). Project Report: Vertical Integration of the TekBot Learning Platform into Computer and Electronics Engineering Programs. A final evaluation report for the National Science Foundation. 3. Gilmore, Chen, and Grandgenett, “Using Robotics to Equip K-12 Teachers: The Silicon Prairie Initiative for Robotics in Information Technology”, ASEE 2009 4. Gilmore, Detloff, “Assessing Senior Student Experiences with a Novel Mobile Robotics Learning Platform in a Computer and Electronics Engineering Program”, ASEE 2010 5. Gilmore, Santos, and Mills, “Computer Interface Innovations for an ECE Mobile Robotics Platform Applicable to K-12 and University Students”, ASEE 2011-2200 6. Chen, B., Grandgenett, N., Ostler, E., “Silicon Prairie Initiative for Robotics in Information Technology, 2.0”, NSF Discovery Research K12 Program (DRK12) Award #0733228. 7. Nebraska Loves Public Schools, “Robots Take Over the Classroom” a video of the Nebraska Robotics Expo, February 2013. Accessed February 2, 2015 from http://nelovesps.org/story/robots-take-over-the- classroom/. 8. SPIRIT 2.0 Education website. Accessed February 2, 2015 from http://ceen.unomaha.edu/TekBots/SPIRIT2/.

Appendix

Behavior-based control (BBC) skeleton C-program

// Behavior-Based Control Skeleton code. // Desc: Provides a C program structure that emulates multi-tasking and // modularity for Behavior-based control with easy scalability. // Supplied for: Students of Mobile Robotics I, Fall 2010. // University of Nebraska - Lincoln // Alisa N. Gilmoe, Instructor, Course Developer. Jose Santos, T.A.

// BETA version 1.00 Updated 10/15/10. Page 26.460.14

#include "capi324v221.h"

// ------Defines: #define DEG_90 150 /* Number of steps for a 90-degree (in place) turn. typedef enum ROBOT_STATE_TYPE {

STARTUP = 0, // 'Startup' state -- initial state upon RESET. EXPLORING, // 'Exploring' state -- the robot is 'roaming around'. AVOIDING // 'Avoiding' state -- the robot is avoiding a collision. } ROBOT_STATE;

// Desc: Structure encapsulates a 'motor' action, it contains parameters that // controls the motors 'down the line', and information depicting the // current state of the robot. The function 'action' doesn't care what // state the robot is in. The 'act()' function looks at this variable // to determine if it has already issued this command so that it doesn't // continuously re-issue the same command needlessly if a motion command // is already in effect. typedef struct MOTOR_ACTION_TYPE {

ROBOT_STATE state; // Holds the current STATE of the robot. STEPPER_DIR dir_L; // DIRECTION for LEFT motor. STEPPER_DIR dir_R; // DIRECTION for RIGHT motor. unsigned short int speed_L; // SPEED for LEFT motor. unsigned short int speed_R; // SPEED for RIGHT motor. unsigned short int accel_L; // ACCELERATION for LEFT motor.

unsigned short int accel_R; // ACCELERATION for RIGHT motor. } MOTOR_ACTION; . . .

// ------CBOT Main: void CBOT_main( void ) {

… // Reset the current motor action.

__RESET_ACTION( action );

// Nofify program is about to start.

LCD_printf( "Starting...\n" );

// Wait 3 seconds or so. Page 26.460.15

TMRSRVC_delay( TMR_SECS( 3 ) );

// Clear the screen and enter the arbitration loop.

LCD_clear();

// Enter the 'arbitration' while() loop -- it is important that NONE

// of the behavior functions listed in the arbitration loop BLOCK!

// Behaviors are listed in increasing order of priority, with the last

// behavior having the greatest priority (because it has the last 'say'

// regarding motor action (or any action)). while( 1 )

{

// Sense must always happen first.

// (IR sense happens every 125ms).

IR_sense( &sensor_data, 125 );

// Behaviors.

explore( &action );

// Note that 'avoidance' relies on sensor data to determine

// whether or not 'avoidance' is necessary.

IR_avoid( &action, &sensor_data );

// Perform the action of highest priority.

act( &action );

Page 26.460.16 // Real-time display info, should happen last, if possible (

// except for 'ballistic' behaviors). Technically this is sort of

// 'optional' as it does not constitute a 'behavior'.

info_display( &action );

} // end while()

} // end CBOT_main()

Mobile Robotics Survey

3 End of Semester Survey for semester Question Mobile Robotics I Fall 2010 Fall 2011 Fall 2013 Average Number of students in the class vs. 14 out of 15 8 out of 17 12 out of 12 34 out of number of students who completed (93%) (47%) (100%) 44 (77%) the survey: completed completed completed completed Motivations for taking the robotics 1 course. Check all that apply: a technical elective was needed and this one fit 78.60% 100% 66.7% 81.8% seemed like it would not be demanding on my time and skill level 42.90% 37.5% 8.3% 29.6% an interest in mechanics and electronic control of machines 64.30% 75% 91.7% 77.0% an interest in automation and industrial applications 14.30% 75% 58.3% 49.2% intriqued by previous experiences with the TekBot 14.30% 12.5% 8.3% 11.7% Page 26.460.17

desire to make the TekBot or CEENBoT better mechanically 42.90% 25% 25.0% 31.0% interest in programming the TekBot or CEENBoT 7.10% 50% 41.7% 32.9% other: 7.1% 12.5% 8.3% 9.3% What is your opinion on the value of working with the CEENBoT in terms of your experience in this class? 5=Strongly Agree, 4= Agree, 3=Neutral, 2=Disagree, 2 1=Strongly Disagree 3.95 4.07 3.79 3.94 a means for learning concepts on the syllabus? 4.29 3.75 4.17 4.07 providing a source of motivation or increasing my interest level in the class? 4 4.13 3.83 3.99 sharpening relevant C- programming skills? 3.86 4.25 3.75 3.95 gaining industry-relevant hands-on experience? 3.43 3.5 3.42 3.45 providing personal engagement in assignments? 4 4.38 3.83 4.07 providing personal satisfaction in completing an assignment? 4.14 4.38 3.75 4.09 What is your opinion on the value of working with the Behavior Based Control Skeleton Program in terms of your experience in this class? 5=Strongly Agree, 4= Agree, 3=Neutral, 2=Disagree, 3 1=Strongly Disagree 3.97 3.67 3.97 3.87 a means for learning concepts on the syllabus? 4.29 3.75 4.25 4.10 providing a source of motivation or increasing my interest level in the class? 3.86 3.75 4 3.87 sharpening relevant C-programming skills? 4.29 4.13 4.25 4.22 gaining industry-relevant hands-on experience? 3.71 3.5 3.83 3.68 providing personal engagement in Page 26.460.18 assignments? 3.79 3.5 3.83 3.71

providing personal satisfaction in completing an assignment? 3.86 3.38 3.67 3.64 What is your opinion on the value of working with the CEENBoT API in terms of your experience in this class? 5=Strongly Agree, 4= Agree, 3=Neutral, 2=Disagree, 4 1=Strongly Disagree 3.73 3.73 3.50 3.65 a means for learning concepts on the syllabus? 4 3.88 3.58 3.82 providing a source of motivation or increasing my interest level in the class? 3.64 3.88 3.5 3.67 sharpening relevant C-programming skills? 3.64 3.88 3.5 3.67 gaining industry-relevant hands-on experience? 3.43 3.38 3.33 3.38 providing personal engagement in assignments? 3.86 3.63 3.58 3.69 providing personal satisfaction in completing an assignment? 3.79 3.75 3.5 3.68

Please answer the following questions: Listed on a separate 5 OPEN ANSWER page a. What improvements would you like to see in how the CEENBoT, the CEENBoT API or BBC Skeleton C-program were used in this class? b. What general improvements would you like to see in this class or the Robotics offerings in general in CEEN? c. What do you view as the strengths of this class or the Robotics offerings in general in CEEN?

Page 26.460.19 Have the robotics labs in this class impacted your motivation and confidence in preparation for the capstone design project or for your career after graduation? 5=Strongly Agree, 4= Agree, 3=Neutral, 2=Disagree, 1=Strongly 6 Disagree 3.42 3.41 3.92 3.58 Has the robotics course or the CEENBoT positively influenced your Senior Capstone project topic or the direction of your intended career path? 3.21 3.13 3.83 3.39 influenced confidence that the design project or desired career is within your abilities? 3.29 3.38 3.83 3.5 increased self-directed learning skills? 3.71 3.5 4.08 3.76 provided motivation for performaing well in project tasks and responsibilities? 3.46 3.63 3.92 3.67 Final Comments: OPEN Listed on a separate 10 ANSWER page

1. Questions 7-9 omitted above because they were about the use of the CEENBoT in the program, interest in future study/courses in robotics, and did not pertain to Notes: course elements 2. Lower participation in Fall 2011 due to delay for IRB approval process, students answered 3 months after end of class.

Page 26.460.20

End of Semester Survey for Mobile Robotics I 3 semester Question Open Answer Responses Fall 2010 Fall 2011 Fall 2013 total a. What improvements would you like to see in how the CEENBoT, the # of # of # of CEENBoT API or BBC Skeleton C- # of student student student student 5.a. program were used in this class? responses responses responses responses A look into what the API calls actually do. 1 1 None, it looks good to me/ it all seemed fine / all of these things were done well for a first level robotics course. 2 4 1 7 Support for charging the robot without the default firmware. 2 2 I thought it was well done. Sometimes it seemed like the API made it too easy. 1 1 2 I think having an upper-level programming prerequisite class would be helpful. 1 1 An index on the API / table of contents with hyberlinks to sections. 2 2 The skeleton code introduced rather quickly, some of it was confusing. 1 1 Have a mountable prototype board. 1 1 The skeleton program should be rewritten with better coding style / felt cluttered. 3 1 4 The API was difficult to setup in AVR studio and needs to be more portable. 1 1 The skeleton code introduced rather quickly, some of it was confusing. 1 1

Have a mountable prototype board. 1 1 The skeleton program should be rewritten with better coding style / felt cluttered. 3 1 4 The API was difficult to setup in AVR studio and needs to be more portable. 1 1

Add more gadgets to the CEENBoT: Page 26.460.21 video processing, GPS, radio etc. 1 3 4

BBC makes sense to use, but could be a smaller focus, maybe one day topic 1 1 Add sensor modules that "plug n play" into the CEENBoT..make the implementation of them simpler and faster, giving more labs/time to do more 1 1 Allow students to write their own code, rather than relying on someone else's code / learn how to create an API and skeleton code of my own. 1 4 5 API is very incomplete, a lot of things that is possible to do with the CEENBoT is not clarified in the API 1 1

A better CMU camera lab 1 1 Everything seemed a little rigid. Maybe allow for some creativity. 1 1 CEEN curricululm should have students capable of doing more lower level programming. API and BBC worked too well, maybe more suitable for sophomores. 1 1

37

b. What general improvements would you like to see in this class or the Robotics offerings in general in 5.b. CEEN? Include more than just the CEENBoT. 1 1 Reduction in the work level. 1 1 We didn't get much out of lectures / materials presented in class mostly straight from the book with little expansion. 2 1 3 More time to work on particular lab assignments. 1 1

I would like a mobile robotics 2 class with more in depth behaviors. 1 2 3 Page 26.460.22 I would like to see a robot arm incorporated. 1 1 1 3

Have implementation before quizzes, have more program specific questions (on quizzes) 1 1 Less reading assignments. 1 1 The robotics timeline homework assignment seemed like a waste of time. 1 1 Add more innovating creative activities to experiment with the CEENBoT/robotics. 1 1 Discontinue use of CEENBoT or upgrade it. Lack of hardware quality hampered learning and motivation. Lab fees way too high for not being allowed to keep any hardware. A better (robot) base without all the debugging. 3 3 Class is too general and needs to focus on current and future applications, less on history. 2 2 Most students had a problem with the history ..(but) for me history was important because it intrigued me with the program. 2 2 Working closer to the hardware of the CEENBoTs. 1 1 I would like the students to make their own improvments on the API when it comes to new sensors. 1 1 Getting familiar with the programming sooner 1 1 Make the class more challenging, it requires a lot of work but not all of it is technical. 3 3 An easier way to build the light sensors would help immensely. 1 1 More C coding. 1 1 31

5.c. c. What do you view as the strengths of this class or the Robotics offerings in Page 26.460.23 general in CEEN? I would like to see the BBC skeleton 1 1 code used more. I really thought that part of the class was very interesting. The CEENNBoT API is great. It is 1 1 2 easy to use and documentation is provided. The labs supplemented material learned in the classroom much better than other classes I have taken. The later labs became somewhat 1 1 2 challenging and were actually great for teaching some of the feedback control systems. The class gave a good basic 1 4 5 understanding of mobile robotics. I learned a lot. The labs were perfect references for the 1 1 2 course work we were engaged in. Learning to aquire sensor data is very 1 1 useful. It improves your knowledge in C. 1 1 It's a solid introduction into robotics, 1 1 but very very basic. Creativity and utlizing the API well to 1 1 accomplish the assigned tasks. Hands-on experience 2 1 1 4 Good use of lab time / lab well 1 1 2 structured Using the CEENBoT made it easier to 1 1 2 understand new concepts This was the only class I've taken that 1 1 2 teaches cooperative multitasking. Getting a real-world introduction to 1 1 Robotic/mechatronic control systems. The focus on current robotics was 1 1 interesting Robotics is an exciting field and the 1 1 2 CEENBoT could be adapted for a wide variety of applications. It's a very specific niche of 1 1 engineering, but it has good learning experiences for those not looking to go Page 26.460.24 into robotics. Working with C language that is 1 1 controlling hardware. It is a big difference between robot programming and computer programming Both lecture and lab sections were 1 1 organized very well. However, some lectures re-iterated a lot of what was mentioned in a previous one. 33 10 Final Comments This class was challenging for me and 1 1 has increase(d) my potential in programming. The CEENBoT API is very well 1 1 2 written. It makes programming the bot easy. It allows students to focus on the actual logic of the robot's actions. I feel like the (text) assumes too little 1 1 of the reader… there might be other books out there which have a little more to offer, while being as brief. Overall I feel that this class was a good 1 1 2 introduction to mobile robotics. I was hoping for more focus on hardware, but am still satisfied by what I learned in this class. I think the CEENBoT is a kind of a 1 1 waste of money for how much we use it right now. I think it should be used in more classes through all four years. I also think more robotics classes should be offered. This was one of the best laid out and 1 1 organized courses that I've experienced in the CEEN Department's programs in four years. The work done to develop the labs and the API is spectacular and the way the course is presented helps really promote understanding of the course topics

The lab section of the class was 1 1 Page 26.460.25 interesting, fun and made the students think. A lot of value is placed on PID, 1 1 students should be given the opportunity to use any control mechanism after proving themselves capable with PID. The CMUCam lab was very fun. The 1 1 servo motor should have been implemented more. For the most part the difficulty of the 1 1 labs was just right. They were challenging and it felt rewarding when a task was working properly. It would be nice if there were a way to implement more challenging ideas in the lecture. The (robotics) minor is a great idea. 1 1

Page 26.460.26