Go Down

Topic: Autonomous Robot & Machine Learning (Read 4445 times) previous topic - next topic

Lc324

Hi All,

I was planning on programming an autonomous robot that would avoid obstacles, utilizing machine learning.

How difficult would this be?
Can machine learning be done on an Arduino?
Where should I start with machine learning?

Thanks

robtillaart

Quote
Where should I start with machine learning?

we used to say buy a good book, for 20-40$ you should have quite a bit of information.


Quote
Can machine learning be done on an Arduino?

Depends, on what it needs to learn, resources are limited. I refer to the book above ;)
Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

vffgaston

Quote
utilizing machine learning.


What's the machine supossed to learn?

Regards

StanD

There are quite a few decent free courses on the topic:

https://www.udacity.com/course/ud675
https://www.udacity.com/course/cs373
https://www.udacity.com/course/cs271

Most of them have lab exercises that cover key elements of your objectives.
Arduino experiments, resources and hacks http://42bots.com

keeper63


I was planning on programming an autonomous robot that would avoid obstacles, utilizing machine learning.

How difficult would this be?


Based on my experience, quite difficult. The main difficult concepts to understand and use for machine learning involve linear algebra, including understanding how to vectorize a problem to obtain a solution, and more importantly - a good grounding and understanding of probabilities and/or statistics.

If you have a grasp on all of those, then provided you can program, you can implement and understand (mostly) a machine learning algorithm.


Can machine learning be done on an Arduino?


You might be able to implement something -extremely- simple, but one thing you quickly learn about machine learning algorithms and systems is that they require a ton of memory for adequate results (as well as to "train" them), and they require a lot of CPU horsepower to plow through all of the data, as well as for storing the training results for later evaluation (especially true in the case of neural networks).

As you should know the Arduino is poorly suited on both fronts, which is why these systems are typically implemented on full-size desktop machines, or, for the really large ML problems, parallel computer clusters.


Where should I start with machine learning?


For straight machine learning knowledge, I only have full experience with a couple of online MOOCs; the first has already been mention: the Udacity CS373 course. The second course, mostly geared toward general machine learning (and from my experience easier to get through than the CS373 course), is the following course from Coursera:

https://www.coursera.org/course/ml

This course was the main inaugural course for Coursera - which began after the rousing success of the "ML Class" (Coursera) and "AI Class" MOOC experiments were implemented by Stanford in the Fall of 2011. Udacity was the result of the success with the "AI Class". Udacity didn't initially start with a re-issue of the AI Class, but they did recently integrate it with their offerings (CS271, which has been mentioned).

I should note that I attempted both the Stanford courses at the same time in the Fall of 2011 (before the project was split off into Udacity and Coursera3), but I ended up having to drop out of the AI Class due to personal issues; however I was able to finish the ML Class. While I didn't complete the other course, I learned plenty from both. I also found the AI Class to be more difficult than the Udacity CS373 course I took later in 2012 - I'm not sure why, though, as both were challenging for me.

Now, if you want a potential method of "machine learning" that could potentially work with the Arduino (although it would probably work best with something like the Mega or such with a larger amount of SRAM available) - the following books might prove useful:


  • Build Your Own Working Robot - #841 (ISBN 0-8306-6841-1), HB, © 1976

  • How to Build Your Own Self-Programming Robot - #1241, (ISBN 0-8306-9760-8), HB, © 1979

  • Robot Intelligence...with experiments - #1191, (ISBN 0-8306-9685-7), HB, © 1981

  • How to Design & Build Your Own Custom Robot - #1341, (ISBN 0-8306-9629-6), HB, © 1981

  • Projects in Machine Intelligence For Your Home Computer - #1391, (ISBN 0-8306-0057-4), HB, © 1982

  • Build Your Own Working Robot - The Second Generation - #2781, (ISBN 0-8306-1181-9), HB, © 1987



All of these books were written by David L. Heiserman - and they are all long out of print, so you'll have to do some research and digging to find copies. But the key is that the robots presented in these books used extremely simple custom-built microcomputer systems for their processing - in all of the cases with much less capabilities and resources than the Arduino Mega. These robots were programmed in assembler; but it isn't so much the hardware or the software you'll care to understand or replicate from these books, but rather what algorithms were used, and how/why they worked for the author's creations.

Note that the 3rd and 5th book deal with simulations only, and did not utilize any hardware; in fact, one can say that (at least) the third book is a standalone algorithmic explanation and implementation of the basic systems detailed in the first two books. In addition, rather than being presented in assembler (which can be difficult to read and decipher if you don't have experience with it), the algorithms are presented in BASIC - which should be easier to read and understand. Also, that book (and the 5th book) have much better explanations of the processes which were originally implemented for the robot systems of the first two books.

These "machine/robot intelligence" algorithms aren't "mainstream" in concepts - in fact, they basically implement a "subsumption" architecture in software, before the concepts of hardware "subsumption" for robots were really popularized by Brookes. It should be said that it seems Heiserman worked "alone" and in a "bubble" on these systems and algorihms; they weren't research projects or such. Even so, they could easily be reimplemented, and might offer a fun way to implement interesting and seemingly "intelligent" software within the confies of the memory and speed limits of the Arduino.
I will not respond to Arduino help PM's from random forum users; if you have such a question, start a new topic thread.

oric_dan

Heiserman's books are easy to find on Amazon, and are generally very cheap, as low as $0.01.

http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Dstripbooks&field-keywords=david+heiserman&rh=n%3A283155%2Ck%3Adavid+heiserman

This is the one you want for MI. I read it recently and it would be easy to implement his Beta class machines on an Ardunio. The Beta machines do basic learning.

http://www.amazon.com/Robot-Intelligence-experiments-David-Heiserman/dp/0830696857/

keeper63


Heiserman's books are easy to find on Amazon, and are generally very cheap, as low as $0.01.

http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Dstripbooks&field-keywords=david+heiserman&rh=n%3A283155%2Ck%3Adavid+heiserman


I guess I stand corrected; I've always found mine via other sources - mainly used book stores and similar (Abe, Alibris).

But thank you for posting the link; if you hadn't, I wouldn't have ever known he had a new "book" (pamphlet might be a better word for it) out - kindle only, though.


This is the one you want for MI. I read it recently and it would be easy to implement his Beta class machines on an Ardunio. The Beta machines do basic learning.

http://www.amazon.com/Robot-Intelligence-experiments-David-Heiserman/dp/0830696857/



I've always thought that one could implement the beta and later gamma class systems on the Arduino; once you got to that point, it shouldn't be very difficult to re-implement the Rodney system.

For those that don't know, the Rodney system later became commercialized as the RB5X:

http://www.rbrobotics.com/Products/RB5X.htm

While not produced any more, there is more than enough information at the RB Robotics site (pictures, mainly) for you to be able to re-create the robot, I believe, using the Arduino and some other modules. It's one of those "hacks" I've always wanted to "get around" to, but never have.
I will not respond to Arduino help PM's from random forum users; if you have such a question, start a new topic thread.

JimboZA

#7
Oct 12, 2014, 07:36 am Last Edit: Oct 12, 2014, 02:39 pm by JimboZA Reason: 1

The second course, mostly geared toward general machine learning (and from my experience easier to get through than the CS373 course), is the following course from Coursera:

https://www.coursera.org/course/ml




Thanks for that link cr0sh, I've just signed up. Got 5/5 for first review quiz whoop whoop.....

Edit.... good material, done all of the work due by midnight Pacific today. Downloading Octave as we speak.
Johannesburg hams call me: ZS6JMB on Highveld rep 145.7875 (-600 & 88.5 tone)
Dr Perry Cox: "Help me to help you, help me to help you...."
Your answer may already be here: https://forum.arduino.cc/index.php?topic=384198.0

Go Up