Here is my 10 weeks robotics specialization study plan(15 ECTS points) at my 4th Semester as an Computer Science Student at UCN. The study form is based on self study because the university could not offer an appropriate robotics course. I see it as a good opportunity for me because I can work at my own pace and with exactly the material that I find relevant. I will document the entire process on this blog, and you are welcome to comment and read along.
Here is a list of 3 courses that I will attend in my 10 week robotics self study. The courses contains a lot of theory which build further on the concepts and theory I’ve learned in previous semesters. Beside the courses I will build and code robots, so I also get some practical experience.
Artificial Intelligence for Robotics
The course is called Artificial Intelligence for Robotics – Programming a Robotic Car and this is the first course I will participate in. It is a course where I learn many of the fundamentals of robot cars, artificial intelligence, planning, searching, locating, tracking and control. All topics focus on robotics. The course includes programming tasks, where I learn to use different methods to build self-propelled cars.
The course covers the following topics
- Particle Filters
- Kalman Filters
- Search (including A * Search)
- PID control
- SLAM (simultaneous localization and mapping)
Intro to Artificial Intelligence
The course is called Intro to Artificial Intelligence – Learn the Fundamentals of AI and this is the second course I will participate in. It is a course on Artificial Intelligence, which contains some of the basic concepts and shows the use of AI. The course is by Peter Norvig and Sebastian Thrun.
The course covers the following topics
- Basics and applications of AI
- Machine learning
- Probabilistic reasoning
- Computer vision
- Natural language processing
Artificial Intelligence course at MIT open courseware
I have good experiences with online courses on MIT open courseware and therefore I have chosen to follow a Artificial Intelligence course. The course consists of 23 video lessons of 45 minutes, where there are quizzes and assignments alongside. One of the really good things about MIT open courseware, is that I can see the videos at 2 x speed. That way I can get much faster through the course. If you are a computer science student, I recommend you to watch the Introduction to Algorithms course. The course will teach you a lot about algorithms in general, Backtracking algorithms, Divide and conquer algorithms, Dynamic programming algorithms, Greedy algorithms, Complexity theory and a lot of other stuff. It was certainly very relevant to my 3rd semester as a Computer Science student.
Line following robot
To get some practical experience with robots I decided to build and code my own line following robot. The line following robot is based on a SparkFun RedBot Kit which is a robotic development platform. The kit pretty much have all the things I need to get started. Mainboard, Chassis, accelerometer sensor, line follower sensor and a lot of other stuff. Another cool about SparkFun is that they have a lot of documentation, schematics, guides etc for the line following robot. It helps me started quickly and then I can spend more time on the software part. When I have built the line following robot I will begin to build a more advanced robot. I will come with an update when I have come so far. One of the best way to learn about robots is to build them yourself, so it’s definitely something I will recommend you to do.
I also bought a learn to solder kit, so I can practice my soldering skills. The learn to solder kit contains many of the basic tools you need to get started with building robots. Soldering Iron, Soldering Iron Stand w/ Sponge, Diagonal Cutters, Lead Free Solder, Beginning Soldering Handbook, Safety Glasses and some other stuff.
Robotics self study resources
Here is a list of robotics related resources that you can use in your own robotics self study.
Robotics – WIKIBOOKS
My 10 week robotics self study plan
Here is a plan of what I’m going to do in my 10 week robotics self study. After each week I will write about how things have gone and what I have learned so that it will function as a logbook.
I will start on course 1 and combine it with a lot of reading so I can get a grasp of the topic robotics. Study question: What is a robot? How is a robot build? How is the history of robotics? What is the future for robots? What language are robots programmed in and so on.
I will try to finish course 1, which gives me the basic knowledge about robotic cars.
I will start on course 2. It is a longer course on Artificial Intelligence, which contains some of the basic concepts of AI and how to use it.
At the end of the week I will write about what course 2 has taught me so far.
I will continue with course 2. My goal for the week is to learn more about computer vision, Robotics and Natural language processing and do some work with problem sets in course 2.
I will try to finish course 2. That includes work with the rest of the problem sets, midterm exam and final exam. At the end of the week I will write about what course 2 has taught me in general and what I think about the course.
I will start watching the lectures in course 3 and do some of the quizzes and assignments which are included in the course. It is very theoretical and fits well in the extension of some of the things I have learned at my 3rd semester.
I will continue my work with quizzes and problem sets in course 3rd. At the end of the week I will write about what course 3 has taught me in general and what I think about the course.
Practical work with line following robot.
Practical work with line following robot.
Practical work with line following robot.
Review of my 10 week robotics self study plan
Review week 1
This is a review of my first week in my robotics self study. My self study officially started on a Friday, so that means Week 1 has been a short week. I have started on the first course Artificial Intelligence for Robotics – Programming a robotic car and so far it’s very interesting. I am almost done with the first lesson of the course which is about localization. Because of that I have learned a lot about localization and probability and I have completed a lot of simple python programming exercises which are a part of the course. You can read more about it in this post about the Artificial Intelligence for Robotics course. I have also been reading a lot about robots in general to get a better understanding of the topic. I have tried to answer some of the questions that I have made for the first week.
What is a robot?
A robot is a automated machine that can be build to do a lot of different thing. A robot can for example be a replacement for human in dangerous environments where it can do some specific task. An example of this could be a robot which is used in war. Bomb detecting, spying the enemy, combat, drone strikes etc. Robots are also used a lot in manufacturing due to their speed and accuracy.
How is a robot build?
Work with robot includes a lot of math and can be divided into three work areas.
Mechanical engineering: Building the robot body, how forces are transferred between parts, where the center of gravity lies, material properties etc. Electrical engineering: Building the electrical part of the robot, electronic circuits, resistors, capacitors, transistors, microcontrollers, schematic diagrams ect.
Computer science: Programming the brain of the robot, Artificial Intelligence, path finding, dealing with obstacles, machine learning, control structures, data types, algorithms, hardware control, microcontroller programming etc.
How is the history of robotics?
Robots goes far back in time and has evolved much in step with the computer. Robots became really known as Science fiction movies and books began to appear. As computing power has become more and more powerful, development in robot industry has seemed to increase.
What is the future for robots?
There is a great development in the robot industry and it will be even bigger in the future. Many believe that there’s going to be a great development in the robotics field similar to the industrial Revolution.
Review week 2
This is a review of week 2 in my robotics self study. It has been a very exciting and challenging week where I have learned a lot about the concepts behind self driving cars. I have continued on the Artificial Intelligence for Robotics – Programming a robotic car course. The course consists of 6 lessons, and I have worked with approximately one lesson a day. It has worked really well when I’ve done it this way. Here is an overview of what I did each day during the week.
Tuesday: Kalman Filters
Wednesday: Particle Filters
Thursday: Review of the first 3 lessons
Saturday: PID Control + building line following robot
Sunday: SLAM + writing on blog
Self-driving cars are a far more complex topic than I expected, and the course contains a lot of math and some of the programming tasks are very complex. I can therefore spend many more hours on the course. I’ve been through all six lessons, but I can easily go more in depth with each lesson. That is also something I’m going to do in the coming weeks just on a smaller scale. I plan to spend 1 hour each day to continue to work on the course. You can read more about my work with the course in this post Artificial Intelligence for Robotics course. I have also included some code examples from the course.
Another thing I really like about the course is that it is being taught by Sebastian Thrun. He is CEO and cofounder of Udacity, won the 2005 DARPA Grand Challenge and led the development of the Google self-driving car. He knows what it’s all about and he is really good at explaining things, and it makes everything much easier. I would therefore definitely recommend the course.
I also started and completed building my line following robot this week. It was pretty easy to build and it only took me a couple of hours. The robot is based on SparkFun RedBot Kit and I followed RedBot Assembly Guide Rev 02 in the building process. The end result was really good, and it’s a fun little robot. I tested the robot when I was done with the building part, and it runs just fine. I used the arduino IDE and a RedBot library to test the robot.
Review week 3
This week I started following course 2 Intro to Artificial Intelligence – Learn the Fundamentals of AI. The course consist of 22 lessons and 8 problem sets, Midterm exam, Final Assessment and Office Hours. So there are a lot of work to be done. Here is an overview of what I did each day during the week.
Monday: I worked with the following lessons in course 2
1. Welcome to AI
2. Problem Solving
Problem set 1
3. Probability in AI
4. Probabilistic Inference
Problem Set 2
5. Machine Learning
6. Unsupervised Learning
Problem Set 3.
Tuesday: Writing on this blog and started a new post about the “Intro to Artificial Intelligence course”.
7. Representation with Logic
Wednesday: I worked with the following lessons in course 2
9. Planning under Uncertainty
10. Reinforcement Learning
11. HMMs and Filters
12. MDP Review
14. Games Theory
Thursday: I used most of my time this day on reading about Kalman Filters and Particle Filters + writing on the Artificial Intelligence for Robotics course post. I wrote about some of the thing I learned from Lesson 2-6 in course 1. I also watched The Imitation Game in the evening with a friend. Really good movie especially if you have an interest in computer science. The movie gives a good picture of how useful mathematics and probability can be and how it turned the Second World War.
Friday: Review of some of the things I have learned in course 2 so far.
Sunday: Working on my line following robot + writing on this blog.
The course has been a learning experience so far, and it has taught me a lot about the basic concepts of Artificial Intelligence. What is great about this course is that it shows many concrete examples of where and how AI is used. Examples of that are AI in finance, robotics, medicine, games, internet and more specific, poker, machine translation, spam filters, particle filters and a lot more. Course 2 also goes in depth with gaussians, particle filters, probability and a lot of other stuff from course 1 and it’s really nice. Course 1 and course 2 fits therefore very well together. However, it would have made more sense to start with the course 2, as the course gives a more detailed and general explanation of AI.
Next week I will continue to work on course 2, and here I start learning about Computer vision, Robotics and Natural language processing.
Review week 4
Monday: I worked with the following lessons in course 2
15. Advanced Planning
16. Computer Vision 1
17. Computer Vision 2
18. Computer Vision 3
19. Robotics 1
20. Robotics 2
21. Natural Language Processing 1
22. Natural Language Processing 2
Tuesday: I started watching and working with the following lectures in course 3. It is an Artificial Intelligence course at MIT open courseware.
1. Introduction and Scope
2. Reasoning: Goal Trees and Problem Solving
3. Reasoning: Goal Trees and Rule-Based Expert Systems
4. Search: Deep-First, Hill Climbing, Beam
5. Search: Optimal, Branch and Bound, A*
6. Search: Games, Minimax and Alpha-Beta
7. Constraints: Interpreting Line Drawings
8. Constraints: Search, Domain Reduction
Wednesday: I worked with the IR Sensors on my line following robot. They work just fine and I’ve got the robot to drive after a line. I am considering ordering new parts home to the robot and it will possibly be some sort of remote control and a camera for computer vision. The computer vision lessons in course 2 was very exciting, and it’s definitely something that I will continue to work on.
Thursday: I spend some time soldering for the first time and it was pretty fun. I started soldering wires together to get some practice. Then I soldered male headers on to a 12 button keypad from sparkFun. The soldering was not the nicest, but it worked when I hooked it up with the arduino and did some programming. It was a good learning experience, and it’s definitely something I want to do more of in the future. I think the next practical project will be a Glove Controlled Robotic Hand.
Sunday: Writing review week 4 and looking for new parts for my line following robot.
It has been a fun week with practical and theoretical learning. My goal for the week was: I will continue with course 2. My goal for the this week was to learn more about computer vision, Robotics and Natural language processing and do some work with problem sets in course 2. I worked a lot with computer vision, Robotics and Natural language processing, but I did not work on the problem sets in course 2. I spent some time this week on course 3 and did some practical work instead. So I did not complete every goal for this week and that means I have do more problem sets next week. I still feel that I’m good with the initial plan. I have already started with course 3, and I have built my robot. So that means I can spend my time on something else later on. I must, however, be better to achieve my goals for the week in the future. That means more focus and to stick to the plan from my part.
My goal for week 5 is that I will try to finish course 2. That includes work with the rest of the problem sets, midterm exam and final exam. At the end of the week I will write about what course 2 has taught me in general and what I think about the course.
Review week 5
Monday: I worked on the following problem sets in course 2
Problem set 4
Problem set 5
Problem set 6
Problem set 7
Problem set 8
Tuesday: I watched the office Hours with Sebastian Thrun and Peter Norvig and worked on the Midterm Exam.
Office Hours 1-11
Wednesday: I worked on the Final Assessment.
Thursday: Continued my work on the Final Assessment.
Friday: Working on my line following robot + writing on this blog.
Week 5 is now over and I finished course 2 Intro to Artificial Intelligence. I have therefore achieved my goal for week 5, which was to finish course 2. I am now ready to continue on course 3 in the following week.
Course 2 has been a great course overall, and I am super happy that I took the course because it has given me a much better understanding of what AI is and how it is used. Course has taught me a lot about the basics of AI and I have worked with probability, Machine Learning, Planning, Games Theory, Computer Vision, Robotics, Natural Language Processing and a lot of other stuff in course 2. The two teachers Sebastian Thrun and Peter Norvig are really good at explaining things, and it makes the course so much easier.
Review week 6
Monday: I continued working with course 3.
9. Constraints: Visual Object Recognition
10. Introduction to Learning, Nearest Neighbors
11. Learning: Identification Trees, Disorder
12. Learning: Neural Nets, Back Propagation
13. Learning: Genetic Algorithms
14. Learning: Sparse Spaces, Phonology
15. Learning: Near Misses, Felicity Conditions
16. Learning: Support Vector Machines
17. Learning: Boosting
18. Representations: Classes, Trajectories, Transitions
19. Architectures: GPS, SOAR, Subsumption, Society of Mind
21. Probabilistic Inference I
22. Probabilistic Inference II
23. Model Merging, Cross-Modal Coupling, Course Summary
Worked with problem set 0 and quiz 1.
My goal for week 6 was to watch lectures in course 3 and do some work with the problem sets and quizzes. I completed my goals for week 6. I spend the first 4 days watching and working with the lectures and then I spend Friday working on problem set 0 and quiz 1.
My goal for week 7: I will continue my work with the quizzes and the problem sets in course 3rd. At the end of the week I will write about what course 3 has taught me in general and what I think about the course.
Review week 7
Monday: Worked with problem set 0 and quiz 1.
Tuesday: Worked with problem set 1 and quiz 2.
Wednesday: Worked with problem set 1 and quiz 2.
Thursday: Easter holiday
Friday: Easter holiday
Saturday: Easter holiday
Sunday: Easter holiday
Week 7 was a short week because of Easter holidays. My goal for week 7: I will continue my work with the quizzes and the problem sets in course 3rd. At the end of the week I will write about what course 3 has taught me in general and what I think about the course. I spend the first 3 days of week 7 on my work with the problem sets and quizzes which was my goal for the week. The problem sets and quizzes was pretty hard, but I tried my best. I also took some time to write about course 3. I feel have achieved what I should and have reached my goals for week 7. I am now ready for the last couple of weeks, where I continue to work on my line following robot.
Course 3 has definitely been the hardest course in my robotics self study. It has been a good learning experience although it has been difficult. The theory is very complex sometimes and the mathematics is at a high level. It is a course that takes its time and requires more than 14 days of work. I could therefore spend more weeks on the course to go more in depth with each topic. But I have reached my goals with course 3 and I’ve got a lot of good learning and good experience. So I’m super happy that I worked with this course.
One thing I really like about course 3 is that the teacher demonstrates AI through working code examples in each lecture. I think it’s a good way of teaching, and it has given me the opportunity to see how AI works in theory and in practice at a high level. After taking this course I have gained a lot inspiration on what can be done with AI.
My goal for week 8 is to do a lot of practical work with my line following robot and I will try to implement some of the things I have learned from the 3 courses in the last weeks.
Review week 8
Monday: Easter holiday
Tuesday: I spend some time building a oval track for my line following robot. I used black tape and my line following could follow the tape just fine. I also spend some time reading about each part of my robot and I spend some time reading Arduino programming documentation. It has been some time since I last looked at the robot, and it helped me to get started with the robot again.
Wednesday: I started the day building another track with dead ends and roads that splits. I did a bunch of testing to see how the robot will react under these circumstances. I also spend some time reviewing some of the concepts from course 1 Artificial Intelligence for Robotics and thinking about how I could implement them.
Thursday: I started writing on my specialization report and spend most of the day doing that.
Friday: Writing report + working on my line following robot.
My goal for week 8 was to do a lot of practical work with my line following robot and I would try to implement some of the things I have learned from the 3 courses in the last weeks. I did a lot of practical work this week. I built two tracks for my robot and I did a lot of testing with the robot on the tracks, so I could see how it would react under different circumstances. I also spend some time trying to transfer some of the concepts from course 1 over to my robot. I feel have achieved what I should and have reached my goals for week 8.
My goal for week 9 is to build on my practical work from last week with my line following robot. Another goal is to work a lot on my specialization report.