This is The Basement Lab for Computer Vision and Personal Robotics’ June 2013 status report. Here I present status and progress for various tasks and my goals for the next phases as well as my hardware acquisition plans. Continue reading
In previous posts, I presented a remote controlled Arduino robot and “Robot Navigator”, a graphical user interface under development that is mainly aimed at controlling robots by visual feedback. The interface is capable of grabbing and displaying images simultaneously from up to three webcams. Robot Navigator now includes two instances of a widget allowing manual control over a robot. This widget has been introduced in the post about the Arduino Robot and it allows commanding a robot to go forward or backwards, to rotate towards its left or its right or to stop by the click of a button. However, to truly achieve real mobile robotics, I need to implement more sophisticated means of control such as scripted missions and navigation by visual feedback. This time, I present the navigation port I implemented and integrated in the Robot Navigator software. The intent of this class is to graphically define navigation paths to be later provided to the vision-based controller. This GUI class relies on an internal state machine to track user’s interaction. Firstly I will present the navigation port’s features, then a bit of theory about state machines and why they should be used more often by programmers. Finally, I will present the class implementation based on the Qt framework’s state machine: the QStateMachine. Continue reading
As promised, now that I am done with building my new robot, I am back to my “Indoor GPS-like Navigation System” series. I previously presented the vision-based indoor navigation system I intend to implement, the system’s graphical user interface and how to acquire images from webcams on Windows systems with Qt creator and a little open source library based on Direct Show. This time, I thought it could be interesting to present functionalities I added to my GUI in order to grab and encode video sequences and how I did it using a cross-platform open source library: FFmpeg. Continue reading
In previous posts, I presented new hardware I acquired to build an Arduino robot and preliminary component testing. In this post, I share my experiments aimed at building the robot. Firstly, I will present and justify the electrical system I designed. Secondly, I will talk about its implementation and thirdly I will review the mechanical assembling. Finally, I will present a test code featuring QT. Continue reading
Computer audition goes open source
Being to human earing what computer vision is to human vision, computer audition is another interesting discipline in the field of robotics. It intends to give robots the abilities to perceive and react to sounds generated by their environment. These abilities consist in source separation and in source localization and tracking in the early stages. At later stages, one can also find source identification and speech recognition.
My last post presented new hardware I acquired to build a remote controlled mobile robot: an Arduino Uno, a DFRobot Motor Shield 2A and a Copperhead Wifi shield. This post presents the work done to test the new material. First, the Arduino microcontroller is tested individually. Second, motor shield is combined and tested with the Arduino, then Copperhead shield and Arduino are tested together. Finally, the Arduino is tested with both shields. Continue reading
I am finally back in the basement! To celebrate, I acquired new hardware to build a second remote controllable robot. The inventory now counts a second Arduino Uno, a second Copperhead WiFi shield, a DFRobot motor shield 2A, a Turtle-2WD mobile platform and a lot of colored wires. Before ordering shields, I verified on shieldlist.org to avoid pin conflicts between the Copperhead and the motor shield. According to Figure 1, there are no conflicting pins. Continue reading
I saw that on IEEE Spectrum. Even if in my opinion using IR for gesture recognition is a bit like cheating, I think that Kinect is a good low-cost 3D sensor for robotics applications. What I find most interesting is that the next generation will provide access to the IR stream. Maybe it will be useful to develop eye tracking applications. We’ll see.
In order to implement my vision-based navigation system I needed a way to acquire images from a webcam. But Qt framework does not offer such features. I searched a lot on the Internet and on Qt forums to find advice or a solution. Most common answer I found is using OpenCV. I am not really an OpenCV fan (one day I will blog about this). Let’s just say that it is too big if you are only interested by video capture.
Another option could have been implementing it from scratch using Direct Show since I am working on a Windows platform and since Programming Microsoft Direct Show for Digital Video and Television book is part of The Basement Lab’s inventory. In fact, I already used it once: image acquisition in the vision-based gesture guidance for mobile robots project was implemented with Direct Show. Unfortunately, I lost the code from this era (I wasn’t as organized as I am today). Furthermore, I am much more interested by developing robotics application than by developing acquisition software. Therefore, I continued my investigations and I finally found a nice solution. Continue reading