Tag Archives: python

Three awesome MOOCs to build intelligent robots

Are you interested in robotics and AI? There are so many great learning resources online. Let me share the last 3 MOOCs (massive open online courses) I took recently and enjoyed a lot.

1. MITx 6.832x Underactuated Robotics by Prof. Russ Tedrake

In this excellent MITx online course, Prof. Tedrake introduces a novel view on robotics and control.  Instead of focusing on controllability and feedback linearisation, he goes beyond the limits by embracing the fact that systems in movement are often not completely controllable, and still can be guided to move as desired.

Having forgotten most of my mechanical engineering classes, I found the quizzes and assignments quite involved, but also very rewarding when reaching the solution.  Russ introduces Drake, a complete robotics framework written in Matlab and giving access to all concepts developed in the course.

Starting by (and constantly going back to) basic concepts such as the inverted pendulum or the double integrator, Prof. Tedrake takes his students through an exciting journey, giving the mathematical and numerical tools to solve real-world problems.

In this course, you will learn about walking, swimming, flying, juggling robots, and much more!

Thank you so much to Russ and his team for providing this awesome content.

2. Robotic Vision by Prof. Peter Corke

This course graciously offered by Prof. Corke at QUT (Queensland University of Technology, Brisbane) is following Introduction to Robotics, in which we built a robotic arm as part of the final project.  In this course, Peter talks about the fascinating field of robotic vision, that is, how can a robot learn about the outside world, just by analysing images taken by one or more cameras.

Vision is a very fundamental sense that we, human beings take for granted, but which is very powerful, and at the same time, challenging to equip a robot with, considering the overwhelming quantity of data and the many transformations required for a robot (computer) to make sense of it.

Prof. Corke explains very gently all the theory behind vision, the process of image formation, the relationship between the 3D and 2D worlds, equips the students with powerful image analysis tools (through the Robotic Vision Matlab toolbox, implementing all algorithms explained in the course), and even introducing more advanced topics such as image servoing (i.e. how a robot can orient and control itself through vision).

The assignments are relatively easy, but still give good foundations to get started and build vision-enabled robots.

3. Introduction to Natural Language Processing by Prof. Dragomir R. Radev

This MIT course offered on Coursera is less about robotics, but nonetheless touching the very hot topics of natural language processing, at the era of Siri, Cortana and other language capable machines.

You will learn all methods of natural language processing, including parsing, stemming, part-of-speech tagging, word sense disambiguation, information extraction, clustering, etc. all the way to question-and-answer systems, sentiment analysis, text summarisation, and machine translation.

Prof. Radev obviously is passionated by languages and seems to know so many of them.  He pronounces French and Japanese equally well (!) and draws all kinds of very interesting links between languages.  He introduces many algorithms to make a computer capable of processing human language for a variety of purposes.

Quizzes help you keep in mind the important points from the lectures, and the 3 programming assignments are relatively involved.  It certainly helps to know a bit of Python and be willing to spend time on really understanding the algorithms you are required to implement.

This lecture is a very good investment of your time if you are interested in NLP, and Drago is a pleasure to hear and learn from.

Happy Learning!


PyCon JP 2015

I had the pleasure to attend PyCon JP 2015, held in Heisei Plaza in Tokyo on October 9-10, featuring the “Possibilities of Python”.  Although I am not really into Python (busy with Clojure & robots!), I thought is would be a good way to meet programming enthusiasts in Tokyo.  And it was.

My first impression about the Python community is its diversity.  Beyond gender diversity, I felt Pythonistas (seems to be how to call someone who writes Python) were coming from so many different areas: I met people in the devops world (of course), but also researchers, roboticists, data scientists, linguists, game developers, startup owners, photographers and hackers of all sorts.  Great community!

Now let me pick up a few talks/sessions which resonated with me.

My first (and favourite) talk is by Hideyuki Takei (@HideyukiTakei) on how to make a 4-leg robot learn to move on its own using reinforcement learning in Python.  His idea is simple, but really great: let the robot “try out” different possible actuator settings, and based on a reward (basically, the total travelled distance), learn the “good” patterns (i.e. the ones that will make the robot move forward).  I thought this was wonderful.  He is using Gazebo robot simulator for learning (to avoid making his robot actually move so many times), and showed off his robot walking.  It was impressive to see a real motion pattern emerge after only 400 iterations!

My next pick is actually a poster session by Ugo-Nama (@movingsloth) who presented his attempt to create a toad robot, particularly focusing on modelling of the perception of the world by the toad.  He is using (again) Q-learning and CNN (convolutional neural networks) to analyse the visual input of the toad and deduce whether the toad sees a “prey” or a “predator”.  This information can then be transformed them into actionable goals, such as “jump”, “run”, etc.  His work is based on the research of J.P. Ewert who studied neurophysiological foundations of behavior.

Make a Toad

I also liked the talk of Tomoko Uchida (@moco_beta) on natural language processing, and in particular Morphological Analysis using Python.  This was appealing to me, because the problem of lexical parsing turns out to be more difficult in Japanese than in Western languages for example, where the separation between words is clear.  She explained how she built janome, a morphological analysis library written in Python.  I tried it out, and yes, it parses the following sentence correctly!

>>> from janome.tokenizer import Tokenizer
>>> t = Tokenizer()
>>> for token in t.tokenize(u'すもももももももものうち'):
...     print(token)
すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも 名詞,一般,*,*,*,*,もも,モモ,モモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも 名詞,一般,*,*,*,*,もも,モモ,モモ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
うち 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
>>> ^D

I also attended many other talks / poster sessions, including “How to participate to programming contests and become a strong programmer” by Chica Matsueda, “Building a Scalable Python gRPC Service using Kubernetes” by Ian Lewis, “Finding related phrases on large amount of tweets in real time using Tornado/Elasticsearch” by Satoru Kadowaki, “Python and the Semantic Web: Building a Linked Data Fragment Server with Asynco and Redis” by Jeremy Nelson, “Let it crash: what Python can learn from Erlang” by Benoit Chesneau, a panel session on diversity, “How to develop an FPGA system easily using PyCoRAM” by Shinya Takamaeda, “Sekai no Kao” (the Face of the World) by Hideki Tanaka et al., and “Rise of the Static Generator” by Justin Mayer.

Lots of great content, but especially great people.  Many thanks to the organisers for such a great conference.  I’m hoping to attend PyCon 2016… and maybe submit a talk?