After being working on real-time systems for almost 4 years during my PhD, I have learnt so much about this research field, and it is becoming more clear to me what is this research really about. The most critical part of real-time systems is timing guarantee, in which the tasks in the system, especially with hard real-time constraints, would meet their deadlines. However, I also realized the general principle behind real-time systems is changing these days: instead of trying to make 100% guarantee, new methods are invested so even a timing failure / cpu overload occurs, the system would still have predictable behaviour.
Last week I tried to make my new Intel Galileo running a basic 14 x 7 LED Matrix program which was working perfectly on my old Arduino UNO. This Intel powered opensource platform has a CPU frequency of 400MHz while the Arduino only got 16MHz. The interesting thing I found is, after I spent 3 hours to port the program to Galileo and executed it with full of expectation, the program turned out to work crappy: the LED matrix looked unstable and each pixel had a different luminance.
OpenWeatherMap.org is a free weather forecast website, where you can get up-to-date weather reports. One nice thing about this website is that it does provide weather APIs which you can use to fetch current weather data, and use them to build your own weather-forecasting program. In this post, I will describe how to use python to access the weather APIs and fetch the current weather information. The full documentation of the APIs can be find here: http://openweathermap.
When you study your first lecture in Embedded Systems, you will definitely hear the term ‘hard’ real-time and ‘soft’ real-time. Systems such as avionic systems, automobile engine control systems and cardiac pacemakers could be included in the category of hard real-time systems, while web servers, human-machine interfaces and multimedia systems are soft real-time systems. By intuition, we can infer that these hard real-time systems are more critical and important than the soft ones.
Real-time Scheduling Theory has been developed over last 40 years, since the first published work of Liu and Layland in 1973. Before that, real-times systems were designed with cyclic executives, which is in a ad-hoc manner and very difficult to maintain. In general, the theory is consist of task modelling, scheduling policy and schedulability test. Some other issues, e.g., resource management, response time analysis, worst-case execution time analysis, are also involved in the design of real-time systems.
Having been mainly using C/C++ in real-time systems for many years, this is my first time to seriously consider other languages which has the capability and primitives to handle concurrency and meet the requirement of hard real-time systems. During my time looking for a research position in Real-time Systems Group at University of York, I firstly realized there is another language – Ada – which has been used in military, aerospace and industrial systems for more than three decades.
This state-of-the-art vacuum cleaner robot, 360 Eye, was released by Dyson few months ago. From the official website, it can be seen that the robot uses V-SLAM technique which dramatically increases the computational overhead. To fit the computational load, I think the processor of this robot should be at least a Cortex A8 running at 1GHz or an ARM-DSP SoC, like TI DaVinci DM64xx. I think the innovative part which makes this robot unique, is the use of tank-like structure and a 360 degrees camera for video navigation:
A demonstration of my Master’s Thesis: Visual-Based Localization and Tracking of a UGV with a Quadcopter. In this project, a visual tracking framework is designed to track the UGV with an AR.Drone quadcopter from Parrot. The system utilizes a centralized control by a ground station which is running ROS and Ubuntu 12.04 LTS. The first two experiments were taken with the support of a global vision system which was designed using a low cost web camera.
Since founded by N. Weiner in 1947, the control theory has been evolved for more than 60 years and is still full of challenges and opportunities. The most important principle of the control theory, in my opinion, is the feedback mechanism. Without feedback and closed-loop, almost no algorithm and control technique can be implied. The idea of feedback is that by comparing the reference input and the actual output, an error signal can be obtained and then can be used by the controller to trace and eliminate the difference between the input and the output.