Python vs Julia: Speed Test on Fibonacci Sequence

Recently MIT released a course on Computational Thinking with code 18.S191 and it is available on YouTube. I can code in C++ and Python, so the founder’s claim that this code is as fast as C and as easy as Python gains my interest.

Introduction to Julia

Julia is created in 2009 and first introduced to public in 2012. The developers aimed for scientific computing, machine learning, data mining, and large-scale linear algebra. We might have heard this application on Python, but Julia gives advantages to programmer compared to Python.

Continue reading Python vs Julia: Speed Test on Fibonacci Sequence

Humanitarian Robotics: Autonomous Landmine Detection Rover

Although war is not happening, the dangerous impact is still tangible today. Landmine has been one of the threats left by the past wars, killing 15,000–20,000 people every year according to UN Mine Action Service. Demining efforts cost US$ 300–1000 per mine and imposing danger to people, resulting one person is killed and two are injured for every mines cleared.

HRATC 2017

Robot can be really helpful in solving this problem, as it is designed to do the “dull, dirty, dangerous, and difficult” tasks. In 2017, IEEE Robotics Automation Society’s Special Interest Group on Humanitarian Technology (RAS–SIGHT) held a competition. The competition was Humanitarian Robotics and Automation Technology Challenge (HRATC), held at the 2017 International Conference on Robotics and Automation (ICRA’17).

Autonomous Landmine Detection Rover
Continue reading Humanitarian Robotics: Autonomous Landmine Detection Rover

Text Extraction from a Table Image, using PyTesseract and OpenCV

Extracting text from an image can be exhausting, especially when you have a lot to extract. One commonly known text extraction library is PyTesseract, an optical character recognition (OCR). This library will provide you text given an image.

PyTesseract is really helpful, the first time I knew PyTesseract, I directly used it to detect some a short text and the result is satisfying. Then, I used it to detect text from a table but the algorithm failed perform.

Figure 1. Direct use of PyTesseract to Detect Text in a Table

Figure 1 depicts the text detection result, with green boxes enclosing the detected words. You may realized that most of the text can’t be detected by the algorithm, especially numbers. In my case, these numbers are the essentials of the data, giving me value of daily COVID-19 cases from a local government in my hometown. So, how extract these information?

Getting Started

When writing an algorithm, I always try to think as if I’m teaching the algorithm the way humans do. This way, I can easily put the idea into more detailed algorithms.

When you’re reading a table, the first thing you might notice is the cells. A cell might be separated from another cell using a border (lines), which can be vertical or horizontal. After you identify the cell, you proceed to read the information within. Converting it into algorithm, you may divide the process into three processes, namely cells detection, region of interest (ROI) selection, and text extraction.

Continue reading Text Extraction from a Table Image, using PyTesseract and OpenCV

Monte Carlo Localization

Monte Carlo localization (MCL) is also known as particle filter localization. Given a map of an environment, the algorithm estimates the position and orientation of a robot as it moves and senses the surrounding. The algorithm uses particle to represent the distribution of likely states, with each particle representing a possible state.

The algorithm starts by distributing the particles in the configuration space. After that, it starts to loop its three main parts, namely motion update, sensor update, and resampling. During motion updates, particles are shifted into new possibilities of states. Whenever the robot senses the environment, the particles are resampled using the recursive Bayesian estimation. Lastly, the particles with higher likelihood tend to survive in the resampling process.

Continue reading Monte Carlo Localization

Data Driven Decision Making: Booking a Flight Amid Corona Virus Outbreak

On February 20th, an outbreak of Corona virus began in Italy. It is believed to begin from the region Lombardy. Since then, the number of cases began growing exponentially in northern Italy. As part of European Union, Italy shares a “seamless” border, both by land and by flight, with other European country, including France and Germany. This put the neighboring country into test, whether they can contain the contagion of the virus.

I’m a student living in Toulouse, France. As part of the curriculum, I have to do an internship at the end of my study. Interested in drone, I choose Japan as the country where I will spend 6 months as an intern, starting from the 6th of April. I plan to leave France at the end of March since I have a project presentation on the 26th. However, the Corona virus cases began to spread wildly in France, after the Outbreak in Italy. This occasion put me into uncertainties, will it be fine, for my case, to stay in France until end of March?

Toulouse from Above

If France has a major spike for the Corona virus, I might have to be quarantined when I arrive in another country outside France. The quarantine period may last up to 14 days. Taking this consideration, if I leave France on the 27th of March and take a flight directly to Japan, I won’t be able to start my internship in time. It will be delayed up to the next Monday, 13th of April. Clearly, I should leave as soon as possible, I will apply the visa in Indonesia. But, when should I leave?

I asked my research project supervisor regarding the situation. Amid the outbreak, it will be hard to stay until end of month. I proposed him to have the final presentation online and he agreed. I am thinking of meeting him once more before I leave, so I booked a flight to Indonesia for Tuesday, March 17th.

However, things are not going well. I heard from a friend that India will quarantine anyone coming from Europe, starting from Friday, March 13th. Trump also announced that US imposes a travel ban from the continents. I also read news that Indonesia banned any flight from and to Italy, when the cases hit 9000.

I have to make a calculation, like, literally!

My calculation should give me number when any flight from France, or Europe, will be banned by Indonesian government, assuming they will do the same restriction as for Italy. I take the number of Covid-19 cases from a website, they provide number of total cases as well as new cases, every day. I made a logarithmic regression taking the number of cases as the input and predict the number of cases on 17th of March. It gives me the result as shown below!

Logarithmic Regression of Total Cases (N)

The result is startling! By 17th of March, there will be more than 20 thousand cases in France. However, something does not feel right. The new cases count is about 500 on March 11th but on March 12th it will be 1800. The next day, March 13th, an addition of 1600 new cases will happen. The jump from 500 to 1800 is a wild estimation and decrement to 1600 on the next day does not make sense. Something must be wrong with the model, even the correlation (R2) is high.

I recall the comment section on 3Blue1Brown video, someone mentioned that the “number of cases” does not grow exponentially. It is the “number of new cases” that follows this trend. Therefore, I did remodel considering exponential growth of the “number of new cases” and find the result as follows.

Logarithmic Regression of New Cases (delta N)

The regression result seems reasonable, there’s no unreasonable spike between day to day. Taking this for my flight planning, I have to change reschedule it! March 17th is too late to go back to Indonesia. The latest will be this Saturday, March 14th, as Indonesian government will probably take more prudent consideration, banning the flight when the number hits 5 thousand. Another remark is there is only one direct flight from Europe to Indonesia. If the other countries impose a travel ban, it might be harder to reach Indonesia.

Soon after this calculation, I reschedule my flight for Saturday afternoon. Unfortunately, a night before the flight, the airline canceled all flight for European country. Soon after hearing the news, I booked another flight to Indonesia using Singapore Airline. Gladly, Singapore imposes travel ban starting from 23.59 on March 15th. I can have my flight to Indonesia and apply my visa to Japan when I arrived.

Had I waited for March 17th to go back to Indonesia, the return trip to would be extremely difficult as only limited flights served and the French government has put the country into lock down. Thanks to data driven decision making, I could go back to Indonesia in a less complicated situation.

Moral of the story: in hard times, whenever you want to make a decision, use data! It gives you an estimate of the future, much better than assuming.

Sync: The Emerging Science of Spontaneous Order – Steven Strogatz

Our sense knows that the universe tends toward disorder, which is stated by the Second Law of Thermodynamic. It is stated that all closed systems have a tendency to maximize entropy. But, what if, nature can also synchronize by itself?

Steven Strogatz wrote this book in an elegant way. By reading the book, you have a journey of mathematics ranging from an atomic scale, human body, up to the cosmos. From living being to inanimate object. The formulation is described in a simple way, without taking away the essence of it. As my first popular science book, it is a good hook to keep me reading another similar genre of book.

Sync: The Emerging Science of Spontaneous Order

This book not only let us explore the science of spontaneous order, but reimagining phenomenon around us. Strogatz explained the sudden synchronization of oscillators by contemplating on spontaneous formation of water when it is slightly below the freezing point. He also asked reader to reimagine the linearity of the universe, which might be a non-linear system. We do not live long enough to observe the non-linear behavior. This horizon of time is called “Lypapunov time”.

In this book, the evolution of this science is explored. Starting with a mathematical model proposed by Winfree, his mentor and early scientist of sync, towards the recent researches at that time, modeling it as a “small world” system. This model is proposed by Strogatz and his PhD student, Duncan Watts. He provided a good foundation to understand the latest approach which might be abstract for some. However, he mentioned that today is just the dawn of synchronized system research, more interesting founding and applications of it are coming.

If you are interested in reading a new topic of science, this might be a good book to read. Even though you’re not familiar mathematical model, you don’t have to worry, Strogatz explained everything intuitively.

Autonomous Mobile Robot on edX: a Review

I completed my first online course several days ago. I was skeptical about this novel media of learning since it does not allow a direct touch with the professor. However, I finished my first online course and in this post I’m going to share my experience with you.

The online course that I took is Autonomous Mobile Robot on edX. This course is provided by professors from ETH Zurich, one of the best university in the world, especially for autonomous systems. To have a certificate, you have to pay an upgrade fee and complete this course within a certain time range.

Source: edX

The course consists of weekly overview, lecture segments, problem set, and quizzes. For every new topic, they will provide you a weekly overview on what to expect from that particular topic. Next, they have some 8-15 minutes videos to learn. It shows a slide and a handwritten notes on it. Lastly, to validate the student capability, one has to answers question from problem set and quizzes.

Discussed Topics

I learnt some new concepts from this course. Firstly, I was introduced to “Locomotion Concepts” and “Mobile Robot Kinematics”. In these topics, I learnt how to model a dynamic system such as legged and wheeled robots. I had to solve problem related to the dynamic modelling as well as its control using inverse kinematics and forward kinematics.

The following topic is “Perception”, in which they introduce me to sensors and computer visions. Essentially, this is how your robot “see” the environment. This topic is very interesting because it allows me to know how sensors, especially camera, work and how to extract meaningful information from this devices. However, the problem set does not deeply elaborate the technical aspects. They mostly asked a conceptual question on the methods for computer vision. Therefore, to understand deeply, you need to practice a lot by yourself.

After perception, next is “Localization”. This topic allows me to understand how to find a position of a robot in a known environment. They teaches some methods such as Markov and Extended Kalman Filter (EKF) Localization. From this topic, I understand localization method for both discretized and continuous environment, as well as its advantages and disadvantages.

In contrast to localization, the next topic, “Simultaneous Localization and Mapping (SLAM)” is a method to localize a robot in an unknown environment. This is one of the most critical part in today robotics. Most of the robots are deployed in an unexplored place and one has to keep track of it. For this course, they teach the basic of SLAM, which is graphical representation of robot states and environment’s features. Then they explain further on the optimization of SLAM and elaborate it for EKF SLAM.

Surprisingly, after this completing this topic, I had an interview with a Japanese drone company. They asked me a lot of things related to drone and its automation , including SLAM. After explaining the EKF SLAM that I studied, they said they’re not using it in their company and they explain briefly on what they’re working on. This opened my mind that there are a lot of SLAM method out there and this course only covers a small part of it.

The last topic of this course is “Planning”, in which they teach you how a robot can navigate from a start to a specified goal. For this topic, they provided me a lecture on potential field planning as well as A*. On the problem set, one to solve a planning exercise using both methods. However, the planning problem is not integrated with the “actuation” part. In my opinion, elaborating it allows the student to understand deeply how it works in real life.


In my opinion, this is a good starting point to learn about robotics. One can build a basic knowledge and sense after finishing this course. The problem set is really helpful to understand the concept and validate your knowledge. They also provide you with two quizzes, which are harder than the problem set.

However, some questions in the problem set are not well defined, making it harder to solve it as you are not certain on what is expected and the format of your answer. Wrong formatting will lead to a wrong answer.

The courses is also not well maintained, one probably has answer to his/her question after a few weeks. This makes students find difficulties to continue their progress. I assume this thing happened because the course is launched long time ago and not a lot of people doing it right now.

Overall, as long as one has the required basic to do this course, such as mathematics and basic programming, it is a good introduction to robotics. Oh, and here’s my certificate from the online course! Check out this photo below or this link!

Programming for Robotics – ROS: Exercise 3

This post is a continuation of previous project, on learning ROS. The lecture and exercise is given by Robotic Systems Lab. – ETH Zurich, can be accessed through this website.

This time, the exercise goal is to make the robot hit the pillar in the simulation environment. The pillar position is found by measuring closest distance from LIDAR measurement. The speed is set to be constant and a simple P controller is made to direct Husky towards the pillar. Both speed and P-gain is written in param file, making it easy to tune avoiding re-build the code. A marker in RViz is created to visualize location of the pillar.

Exercise 3

The video above shows my result for the exercise. You can find the exercise paper sheet on this link.

Thanks to Robotic Systems Lab – ETH Zurich for sharing this helpful course!

Kiai Hologram oleh Emha Ainun Nadjib

Kiai Hologram adalah buku Cak Nun kesekian yang saya baca. Saya membaca buku beliau karena tertarik dengan cara beliau memandang suatu peristiwa. Dari buku-bukunya, saya belajar mengambil hikmah.

Seperti buku-buku sebelumnya, beliau menghikmahi kejadian-kejadian di sekitarnya. Kali ini, selain tentang kemasyarakatan, beliau juga sedikit bercerita tentang keluarganya di bagian pertama buku ini. Selain itu, beliau membagikan pemikiran-pemikiran yang dibahas selama acara kenduri cinta, atau maiyah-an.

Ada beberapa kutipan menarik yang saya ambil dari buku ini, termasuk paragraf berikut.

Pribumi itu bukan siapa kita, apa warna kulit kita, apa agama kita. Pribumi itu bukan personalitas, bukan pula identitas. Pribumi itu komitmen kepada rakyat karena kita sendiri adalah rakyat, bukan yang berkuasa atas rakyat.

Hal. 219

Paragraf tersebut saya artikan sebagai sindiran bagi pemimpin yang datang dari kalangan “rakyat”, namun kemudian menjadi “elitis”. Kebijakan-kebijakan yang dibuat tidak lagi memihak kepada “rakyat”, sehingga boleh kita mengeluarkan personil tersebut dari himpunan “rakyat”.

Di halaman lain, saya menemukan satu hal berkaitan dengan ketuhanan-keagamaan yang menambah wawasan saya.

Kalau manusia mencari Tuhan, itu namanya rasa keagamaan atau religiositas (berkaitan dengan ibadah muamalah). Kalau Tuhan menginformasikan, menghidayahi, menyuruh, melarang, itu namanya agama atau religion (berkaitan dengan ibadah madhloh). Tanda agama adalah kalau ada ibadah madhloh. Karena kalau ibadah muamalah, meskipun juga baik, ia bukan agama melainkan rasa keagamaan.

Hal. 275

Buku-buku Cak Nun memang mengandung banyak hikmah yang bisa kita pelajari. Namun, sebagai pembaca non-jawa, saya merasa ada beberapa kata dalam bahasa Jawa yang seharusnya dibuatkan pengartiannya dalam bahasa Indonesia. Saya mahfum bahwa tidak semua kata dalam sebuah bahasa dapat dengan mudah diartikan ke bahasa lain, tapi membiarkan pembaca tersesat sedikit mengurangi kedekatan pembaca dengan buku.

Programming for Robotics – ROS: Exercise 2

This post is a continuation of previous project, on learning ROS. The lecture and exercise is given by Robotic Systems Lab. – ETH Zurich, can be accessed through this website.

This second lecture is focused on ROS package structure, ROS C++ client library, ROS subscribers and publishers, ROS parameter server, as well as RViz visualization. I haven’t included integration and programming with Eclipse in my work.

Exercise 2

The video above shows my result for the exercise. You can find the exercise paper sheet on this link.

Thanks to Robotic Systems Lab – ETH Zurich for sharing this helpful course!