Kuroki’s first picture!

In my research I have the opportunity to learn about machine learning (ML). Knowing ML is a fundamental to understand the capabilities and limitations of current robotics. If you are new to the field, I fully recommend the machine learning course by Andrew Ng and the probabilistic graphical models specialization by Daphne Koller, both on Coursera.

While I directly applied and developed some ML techniques in my research (i.e., robust estimators, probabilistic models, reinforcement learning, …), I did not “get my hands dirty” with some others. I believe the best way to learn something is to use it to solve a problem, so I looked for an excuse to learn more about these other ML techniques I didn’t use before.

My main goal is to get more practical experience on deep neural networks (DNNs) and reinforcement learning (RL), two techniques that are receiving increasing attention on robotics due to the awesome results they have delivered in games (for example, Alpha Go, or agents playing Atari) but also in manipulation, locomotion, grasping… DNNs and RL are powerful horses for robotics but, as any other tool, they present some strengths and some limitations. I want to explore those!

And the excuse to explore DNNs and RL came last Christmas! Its name is Kuroki, it is a Robotis Mini unit and it is amazing! It was not a surprise: my family wanted to give me something I would really be happy to use and I came with the idea. After searching for a while I realized that: 1) robots are still pretty expensive when it comes to hobbiests, 2) Robotis Mini is the best robotic platform to acquire if you want to focus on the “brain” of the robot and not on the hardware, which is my main interest and skill-set.

You can get the robot for 300€ and it can be programmed/used at different levels of complexity: you can play with it using an app on your smart phone and commanding some predefined motions (nice for demos for your family and friends); you can modify those motions and create sequences of motions using a Robotis software with very nice GUI (only for Windows and Mac, though); and finally, and most importantly to me, you can program the controller in a C-like language. The controller is a OpenCM 9.04c which can be programmed very similarly to how you would program an Arduino.

However, I encounter rather quickly that the C interface is rather limited for any interesting and complex tasks that can make use of DNNs and RL for control. In next posts I will explain how to modify the Robotis Mini to control it directly from your computer and be able to use the computer as perception, planning and control unit.

Enjoy!

Learning to walk with a Robotis Mini

In this post I will develop the following main components for the Robotis Mini: A parametrized walking trajectory generator An interface to receive walking parameters and reset the Gazebo simulation A program that explores the space of walking parameters of the robot by setting them and observing the “quality” of the simulated execution The parametrization of […]

Posted in Kuroki – Machine Learning on a Robotis Mini | Leave a comment

Simulating Robotis Mini in Gazebo

In this post I will extend the URDF model I created in the previous post to be used to simulate a Robotis Mini robot in Gazebo ROS. I will include dynamic and other properties that are necessary for the simulation. First, I will add collision bodies to each of the links of the URDF model. […]

Posted in Kuroki – Machine Learning on a Robotis Mini | Leave a comment

Creating a bridge between Robotis Mini and ROS

In the last post I explained how to interface the Robotis Mini robot with python using the pypot library and a Robotis Mini module I created. In this post I will make use of this functionalities to connect the robot to the ROS environment. My goals are: read motor states and publish them to ROS […]

Posted in Kuroki – Machine Learning on a Robotis Mini | Leave a comment

Using the PC as motor controller through USB2AX and pypot

In this post I will report on my steps to connect the Robotis Mini to my PC. I will use the PC to 1) read motor state, and 2) send motor commands. In previous posts I reported on the physical connection between the PC and the motors through the USB2AX. Now we need to develop […]

Posted in Kuroki – Machine Learning on a Robotis Mini | Leave a comment

Change of strategy

I gave up on using the OpenCM board and decided on a change of strategy. The reasons for this change are: The specific board I have seems to be faulty The board is just a microcontroller that can execute only very simple scripts. Thus, the “real” computation would require a PC anyway. If I am […]

Posted in Kuroki – Machine Learning on a Robotis Mini | Leave a comment

Downloading sketches to the OpenCM board

It was not easy but I can finally compile and download sketches to the board! To do that I use a modified version of this python script https://github.com/tician/opencm-1.5/blob/master/hardware/tools/opencm.py. The reason I can’t download sketches using the openCM IDE is that the replies from the board during the download process are corrupted. For each command sent by […]

Posted in Kuroki – Machine Learning on a Robotis Mini | Leave a comment

First program on the OpenCM board

Once I could connect my USB to the mini USB of the OpenCM board I wanted to try my first program on the Arduino-like board. I installed the OpenCM library for Linux and took one of the included examples, compiled it and tried to download it to the board (download means copying from the PC […]

Posted in Kuroki – Machine Learning on a Robotis Mini | Leave a comment

First steps

The first thing I did was to play around with the Android app. Yes, I know it’s lame to play like a kid at my age but it was a lot of fun watching the robot dancing and falling down so many times… The next thing was to sit down and think if the current […]

Posted in Kuroki – Machine Learning on a Robotis Mini | Leave a comment