Computer Science 444: Embedded / Robotic Programming
Unit 0: Orientation
In this unit I will cover some essential information that you will need to meet the course outcomes and complete this course with success. I will discuss expectations, both those that you should have of me and your tutor, and those that I have of you. I will also discuss the Arduino prototyping platform that you will be using for the exercises in this course.
This course takes place in two locations: the Moodle course site where you are now and the Landing. On the Moodle course site you will find the following:
- the units of the study guide
- the COMP 444 General Discussion Forum where students and instructors share general information about course procedures and materials
- The Assignments section where you submit completed work and check for tutor evaluation and feedback.
- The Help section with links to pages that support you as a learner at AU
On the Landing, you will find the following:
- COMP 444 Group on the Landing. Go here to create your weblog / diary (which can be set to your desired level of privacy), add bookmarks, and take part in course-related discussion with other students on topics relevant to this course. Many of those topics and specific topic questions will be found in the learning materials as directed by the study guide. Additional topics and questions may be posted by me or the tutors.
- Robotics Group on the Landing. Go here to take part in discussions about robotics in general as well as general-interest Arduino topics.
- Programming & Problem Solving Group on the Landing. Go here to find and offer help with programming and other problems.
As a student in this course you are expected to participate in the forum discussions and to follow your tutor and classmates on the Landing to ensure that you are notified of discussion posts. You should also remain subscribed to the COMP 444 General Discussion Forum.
Learning Outcomes
Upon successful completion of the course, you will be able to
- discuss robots in general, including the history and features of robots.
- describe robotic features including affectors, actuators, and control processes.
- discuss robotic control mechanisms including feedback, architectures, deliberative, reactive, hybrid, behaviour-based, and coordination.
- discuss emergent behaviour and distinguish this from normal robotic behaviour.
- discuss robot learning in the context of current robots.
- design and create robots to perform tasks from simple movement to complex interactions with the world.
- explore robotic concepts with hands-on experiments using the Arduino and the SparkFun Inventor’s kit.
- articulate design decisions and create a diary describing learning experiences that form a portfolio of competence.
What I Expect of You
COMP 444 is a senior-level course in an undergraduate program offered by Athabasca University.
I have high expectations of you. You should be curious and willing to seek out information besides the provided textbook and learning materials. You should be willing to discuss what you discover in the COMP 444 Landing group with the tutor and with other students. You should be willing to create and maintain a weblog / diary of your work in this course—especially as your marks do depend on this as your profile of competence.
You should also be willing to ask questions in the forums or email your tutor at any time. If you see a question on a discussion forum and you know the answer, you should post a reply.
What You Can Expect of Me and Your Tutor
Your tutor is a professional who enjoys the learning experience. Your tutor wants to see you succeed and is willing to be a partner in that success.
Questions regarding the learning material should be posted on COMP 444 General Discussion Forum in the Moodle course site, where other students, your tutor or the course coordinator may reply. Personal questions should be directed to your tutor or the course coordinator.
There are policies and standards that specify how you may contact us and how soon you should expect a reply. We take those standards seriously.
Learning Happens in This Course – YOU Are in Control
This course is like other undergraduate courses at Athabasca University in that it is an unpaced course. This means that you have registered for a 6-month contract. During that 6 months, you are in total control. The study guide presents a list of readings and activities that you must perform to successfully complete this course. The course site is laid out in a suggested 16-week progression, but you control your own schedule.
The readings follow the textbook for this course, but all other materials are available on the Web. There is no set reference for the robotic activities—the entire Internet is at your disposal. The Web is full of thousands of pages of robotic material, from building instructions to thesis dissertations on the value of robotics in the classroom. Rather than being constrained by a specific set of build instructions or one “right” way to solve any of the robotic building activities in this course, you should embrace the freedom to explore the Internet for ideas. The instructor’s weblog found in the COMP 444 Group on the Landing is merely a starting point for each activity.
First Things First
First things first. In this course, I am going to have you read the entire textbook as you progress through the units in this course. This is for a few reasons:
- First, because this is an excellent text on robotics. It introduces you to all the core concepts, from locomotion to actuators, vision, and control. It is well written and quite enjoyable to read. I don’t always read textbooks from cover to cover, but I did with this one as it is so very well written.
- Also, it is a short textbook, at just over 300 pages including the index. This is because it does not immerse the reader in endless details, but rather captures the essence of each topic, leaving advanced explorations to the reader with excellent references for further reading.
- The author provides a companion workbook to accompany the textbook. This workbook proposes numerous exercises for the student to engage in active learning with the robotic tools. Unfortunately for us, the author chose to use a substantially different robotic platform for her course and thus for the workbook. However, the general concepts and many exercises can be adapted for our Arduino, but many cannot. The units of the COMP 444 study guide will serve you well as we explore portions of this workbook. Unfortunately at the time this course was developed, the workbook has not yet been completed in the advanced chapters.
The workbook is freely available online from Sourceforge, which is a well-known and respected repository of open-source projects.
The text workbook uses the iRobot learning platform for the exercises. The iRobot is manufactured by the company that created the Roomba robotic vacuum cleaner. In fact, the iRobot platform is basically a Roomba without the vacuum components. Three versions of the iRobot platform are mentioned in the workbook, depending on which programmer and which compiler environment is used. The iRobot, while a capable platform, was not chosen for this course for several reasons. First, it is quite expensive at approximately $300 for just the iRobot. The programmer (hardware) and software come at an additional cost. Finally, all sensors and acutators (motors) must be purchased separately and in some cases created from scratch by soldering together electronic components—something far beyond the scope of this course.
Instead this course chooses the Arduino development platform and the SparkFun Inventor’s Kit, again for several reasons. First and foremost, a lower expenditure will purchase a complete SparkFun Inventor’s Kit including an Arduino development platform. The Inventor’s Kit includes numerous components required in robotic exploration and experiments, as well as an excellent tutorial and programming guide. The Arduino is an extremely popular platform for many robotic platforms and experiments, with thousands of projects and web resources available.
This course comprises two components – robotic theory as discussed in the textbook and thus the readings, and robotic practice as experienced in the exercises and assignments. The text represents a survey of modern robotics theory and practice, from first principles to state-of-the-art research. Many of the advanced topics are beyond the scope of this course and are frequently the topics of current doctoral and post-doctoral research in robotics. However, it is still beneficial to study where robotics is heading so that we can begin to comprehend the challenges and potential of robotics in our world.
Much of the practical component of this course is not strictly laid out in the study guide, but will be discovered and shared collaboratively on the Landing.
Arduino
The Arduino was chosen for this course for several reasons. First, the Arduino has become one of the most popular platforms in recent years for not only robotics, but also many embedded controller projects such as music synthesizers, home automation systems, and so on. As a popular platform, Arduino resources are added daily as it sees new uses.
The Arduino was created in Italy in 2005. A brief history can be found here: https://en.wikipedia.org/wiki/Arduino
The Arduino itself is open source, so any manufacturer may create Arduino and Arduino-compatible devices. The primary programming environment is also open source and freely available on the Internet. The main programming language of the Arduino is the C programming language. However, due to the simplified setup used in the Arduino, programming it consists of writing procedural language statements inside two subroutines. Writing procedural code inside a subroutine is almost identical in most modern third-generation languages. If you can program in C, C++, Java or other third-generation language, you can program the Arduino. Arduino tutorials will guide you step-by-step through early examples, and the COMP 444 Landing Group resources will assist with more exotic programming tasks.
Programs are compiled and downloaded to the Arduino using a supplied USB cable, which also powers the board. Once programmed, the board can be disconnected from the power source, and the program will remain in flash memory on the board. When powered up again, the program restarts without needing to be recompiled or downloaded, making the system very robust and powerful.
Your Portfolio of Competence – Weblog Journal and Diary
As part of your journey, you will create and keep a logbook of your exploration. In this logbook, you will answer questions both from the study guide and from the textbook. You will also log your experiments, both successes and failures, examining cause and effect to determine why your experiments behave the way they do.
Your diary will be kept in a weblog (blog) which you will create on the Landing. You are free to modify and personalize it to reflect your personal robotic explorations in this course. At various times your weblog will be submitted as assignments to the marker, who will examine your body of work and assign a grade for the course components to that point. A key component of this weblog is mapping your robotic explorations and exercises to the course objectives; that is, taking the list of objectives for each unit as an outline, you will explain how the activities you have completed enabled you to meet each one. In this way, you will establish a portfolio of competence that will be reflected in your final grade in this course.
If you have a webcam, smartphone, or other recording device, you should experiment recording short videos of your Arduino in action, to share with classmates on the Landing and to include in your assignment submissions.
Be sure to use a compression tool such as in this Handbrake example to minimize the file size of any video you upload here. If you wish, you can upload videos to YouTube and provide links in your weblog.
Assignments
The assignments for COMP 444 are not the typical “do this and submit that.” Rather, at certain waypoints in the course you will be required to submit your weblog / diary to your tutor for marking. The weblog and diary that you have been completing on the Landing contain a record of your progress through this course, including
- readings
- questions
- forum posts
- Arduino exercises
- any other work you have done in the course to that point.
Your weblog becomes a portfolio of competence for this course. The waypoints for weblog submission are indicated in the study guide as reminders to submit assignments. A good example for you to pattern your weblog after would be the Instructor’s Weblog.
For each of the three assignment submission points, the following exercises should have been completed, along with answers to all unit questions from the textbook and a diary of your progress through this course. Below is a rough outline of where you should be in your explorations when you submit your weblog for marking.
Assignment 0
(not submitted for marking, but recorded in your weblog)
- where to find resources
- examining the SparkFun Inventor’s Kit
- installing the Arduino development environment
- writing and executing your first program
Assignment 1
- Submit after completing Unit 2.
- The weblog and diary completed to this point will be submitted for marking
- Your weblog should contain designs, discussion, and diary entries that describe working examples which demonstrate exercises and concepts covered in Unit 1 and 2 inclusive
- Working examples will include moving actuators such as motors, turning LED lights on and off, and sensing light levels.
- Include answers to all Unit 1 and 2 questions from the textbook.
Assignment 2
- Submit after completing Unit 4.
- The weblog should contain designs, discussion, and diary entries that describe working examples which demonstrate exercises and concepts covered in Unit 1–4 inclusive.
- Working examples will include employing actuators to interact with the environment as well as using sensors to complete an assigned task.
- Include answers to all Unit 3 and 4 questions from the textbook.
Assignment 3
- Submit after completing Unit 5.
- The weblog should contain designs, discussion, and diary entries that describe working examples which demonstrate exercises and concepts covered in Unit 1–5 inclusive.
- Working examples will include the use of multiple feedback control mechanisms to improve control. Simple examples from earlier exercises are modified to incorporate different feedback control mechanisms and compared with the earlier examples to measure the change in control behaviour.
- Include answers to all Unit 5 questions from the textbook.
Project
- It is *critical* to submit the project before writing the final exam.
- The project is designed to bring together what you have covered in the course into a significant working project to be designed jointly between you and your tutor.
- The project should employ significant control elements as studied in Unit 5–11.
Group Work and Collaboration
Your posts in the Landing and COMP 444 General Discussion Forum, and any other evidence of your collaboration and group work with others in the course, are worth 15% of your final grade. Sometime before you write the final exam, you will submit a summary of your group work and collaboration efforts throughout the course.
Make a copy of various discussion postings that you have made and emails or messages as evidence of your collaborative participation, paste them into one document, and save it as a PDF. You can include a record of your collaboration with your tutor on the project plan as well. Submit this PDF file for the group work and collaboration component of your grade.
Using Athabasca Landing
The course also offers a gateway to lifelong learning in the form of Athabasca University’s Landing. Unlike Moodle course material and forums, the Landing is available to all students at Athabasca University, including current, past, and prospective students in this course.
At the start of this course you should log in to the Landing (http://landing.athabascau.ca) using your usual AU ID and password, set up a profile (if you have not already done so), and join three groups: the Robotics Group at https://landing.athabascau.ca/groups/profile/38211/robotics-and-embedded-controllers, the Programming & Problem Solving Group at https://landing.athabascau.ca/
Note: The COMP 444 group has been set up to be closed, which means only people who have been invited or admitted by the group owner (your tutor) are able to get to it. If your tutor has not invited you (usually because he or she may not know your ID until you make it known), then you will need to request group membership—there’s a link for that at the side of the page. Once the tutor has approved your request, you will be able to access the course group and all of its resources.
The Landing has, amongst other things, the following facilities:
- a place to post your weblog entries for your learning diary
- a means to share bookmarks of useful sites with others (and to find such sites)
- a wiki-like tool, which can be used to create pages of useful hints and ideas together. Here you can discover the pages being created by other members of this course as well as frequently asked questions and current information that may help you to be more successful on the course.
The Landing is where we require you to create your weblog / diary (in the COMP 444 group) and also a place for sharing and interaction, which accounts for 15% of your final grade. Not only is the ability to collaborate online an important 21st-century job skill; in addition, there are few better ways to learn than to teach, so it is very useful to help others. And, of course, being helped by others can help you work through problems more quickly than doing it yourself or waiting until the tutor is able to answer your questions. Everyone wins.
Because every student will be doing something a bit different from every other, there is no harm in sharing your work with others and, as a notable benefit, you can learn from each other and get a better sense of how you are doing by comparing what you have done with what others are doing.
This is a completely non-competitive environment: we use absolute, not relative, criteria when marking, so the fact that everyone is brilliant does not mean you have to be even more brilliant to succeed! However, we do hope that you will inspire each other and get ideas from each other that will make everyone’s work even better than it would otherwise have been. And, if you find things that could be improved, don’t be afraid to make suggestions or offer help: you can use those suggestions and help as part of the evidence of having achieved competency in this course.
Plagiarism
Students registered in Athabasca University courses are considered to be responsible scholars and are therefore expected to conform to the highest standards of academic integrity in all written assignments, including examinations.
Athabasca University Student Code of Conduct and Right to Appeals Regulations
Specifically, you cannot copy text from a source and portray it as your own words.
Any quoted text should be displayed as a quotation with a clear citation of the source. You also need to cite sources that you paraphrase, i.e., rephrase in your own words. Sources you cite must also be listed as a reference. See https://owl.purdue.edu/owl/research_and_citation/apa_style/apa_style_introduction.html for examples of how to list and cite sources using APA style, which is acceptable for COMP 444.
Penalties
Student Academic Misconduct Policy
Specifically, reduction in grade (item ‘c’ in the above web document). If repeated, further penalties up to an including failing grade in the course (d), suspension (e) or expulsion (f) from Athabasca University. All instances of plagiarism will be reported to the Dean of Science and the head of SCIS for determination of appropriate penalty.
Be certain the words you submit as your own words are indeed your own words. You can paraphrase and quote (with proper attribution), but you cannot copy other people’s words as your own.
Warning: Plagiarism detection software may be used on submitted assignments to insure compliance.
If you have any questions on plagiarism, please post them on the Landing for discussion.
Readings to Do Now
Please read the following article from Wikipedia on the history and development of the Arduino: https://en.wikipedia.org/wiki/Arduino
Please also use Google or other search engine to explore other articles on the Arduino by typing in the search phrase ‘Arduino history’.
Your First Exercises
At this time you should create your weblog and begin your diary.
In your weblog, please summarize the reading article’s key points and complete Assignment 0.
Assignment 0
You will not submit this assignment for marking, but your tutor should be able to review the following recorded in your weblog:
- where to find resources
- examining the SparkFun Inventor’s Kit
- installing the Arduino development environment
- writing and executing your first program