Here it is!
My project in all it's glory:
Following from my previous blog posts, where I mentioned that I was developing a robot named after my cat, Tara, I have developed a fantastic machine which showcases the potential of the Parallax robotics kit. This robot named, Tara Bot aka. "Blambo-Bot-Delux," is something that I will use as a discussion generator during my robotics, general technology skills and programming classes. In all, this is an educational tool, and represents the culmination of everything I have learned about robotics over the past two years. However, I must digress to explain how I got to this point during the Teacher's Pet road test...
After my last blog post: MATLAB+ Simulink w/ Arduino: My Special Experience I experimented with the Parallax robot kit in conjunction with Simulink. I followed the tutorial I found at this link:
Arduino Support from Simulink - Hardware Support
(Watched the video: "Using Simulink to program a Boe-Bot")
I had high expectations for Simulink and what was at this stage my very humble robot (in comparison to what it is now). The tutorial video I watched explained how to turn the servo motor wheels on and off using the Arduino specific programming blocks provided by Simulink. The purpose of this, in the video, was to calibrate the the servo wheels to stop when given the appropriate signal; a process I had already completed when I put together my Parallax robot kit in the first place. Nonetheless, it was quite cool to get my robot to move around via Simulink and make real time adjustments to the code (direction and speed) while watching these changes materialize instantaneously. The feature, of being able to update code on the fly is something I have mentioned before as the most appealing aspect of Simulink. Mainly because this is something you cannot do within the "traditional" Arduino IDE. However, I so badly wanted to use my Parallax robot in a way that it could move without being tethered by a USB cable; if you watched the tutorial video you'll notice that you always need to have your robot attached to the monitor for it to function with Simulink.
In the past, I made a multi-function robot which I named the "Blambo bot" which relied on
nRF24L01 2.4GHz Radio/Wireless Transceivers
to send data be control remotely
:
Here is a picture of the Blambo Bot...what a fat cat it is!
The wireless transmitter/receiver pair would work by one being connected to an Arduino and the other to an Arduino functioning separately as a motor controller. In the end, the same serial data received by one Arduino is received by the other through the nRF24L01 communication.
The Blambo bot could switch between these functions which I achieved during other robotics projects in the past; going through these will help emphasize why the robot I have created now is the "Delux" version:
1. Gyro remote control; this is a function I created for a robot this past winter:
2. dynamic obstacle avoidance which can be seen as the primary function in a robot I built called the "Dragon Bot":
3. The Blambo Bot could move according to a more advanced form of obstacle avoidance which is a mix between dynamic and static movement. Static because once the robot meets an object it stops, then checks the left and right direction, compares the distance measurements gained by ultrasonic sensor; then it chooses to go in the direction where there is the most space. I just finished a two weeks programming camp where I coached a student to build a version of this "pensive obstacle avoidance":
Once again, the signalling for all these functions was achieved remotely via the
nRF24L01 2.4GHz Radio/Wireless Transceivers
Note: In a separate project using the nRF24L01 I received ultrasonic distance measurement data remotely for visualization (locally) in Processing. This was quite cool. Connecting Processing to Arduino C has become the capstone project for my programming classes during the school year and during my summer camps.
In all the nRF24L01 is a nifty tool for remote control and data transfer. So could I use this thing with Simulink? The answer, at least for me, was no. Partly because Simulink's dynamic coding capabilities only work with an Arduino Due. And then unfortunately, the Arduino Due does not support the nRF24 library and hardware wiring which I have come to rely on for robotics projects.
Moreover, I found myself being frustrated by Simulink's inability to switch back and forth between MATLAB when using the Arduino Due. I tried downloading the updated trial version of MATLAB and I had the same issues. This was very discouraging since I know the purpose of the road test was also to test the software; MATLAB and SIMULINK.
Originally, I thought that I'd attempt to program light seeking behavior in Simulink as the process was clearly outlined in the example code provided by the Parallax online documentation. .However, things as simple as adding a delay() function were exceedingly difficult for me to figure out in Simulink. I had hoped that if I could program light seeking in Simulink and have it communicate remotely with my robot then I could do some exploratory demonstrations on the subject of Braitenberg Vehicles in class. The pictures below will give you a general sense of what Braitenberg vehicles are, but basically it's about characterizing the personality of artificial intelligence through the example of very basic autonomous machines:
Simulink would have afforded some great opportunities for dynamic experimentation in class to discuss the behavior of a robotic vehicle. But all the difficulties with Simulink drew me to make a decision to abandon MATLAB/SIMULINK (at least for the moment) and focus on what I knew how to do which was program in Arduino C. My goal was to turn the Parallax robot into something which went beyond what it was intended for.....
A while back in my second blog post I created a video to showcase the capabilities of the Parallax robot. Here it is if you'd like to take a quick look-
What the video did not include though was the "light seeking function" of the Parallax robot which I found to be quite charming.
The end goal for my Teacher's Pet road test was to combine all these functions into one robot:
-obstacle avoidance, in my "pensive avoidance style" (using ultrasound, not infra-red)
-edge detection
-light seeking
-bump sensor "Whiskers"
All into one robot which could be controlled remotely by arrow keys in a visual representation "control console" made in Processing. This control interface would also have buttons for activating each of these individual, autonomous, functions listed above; as well as combinations of them to see how the robot's behavior changes within a specific environment. A picture of the control console I programmed (to be explained in a later blog post) can be seen below:
To reiterate: The robot I'd develop purpose was to be used in my technology class as an introduction to robotics, the topic of artificial intelligence and to draw students attention towards developing technology.
This robot is a step up from my original Blambo Bot so I've called the completed version by the nickname Blambo Bot Delux; a homage to the Mac Delux for those already seeing the subtle allusions to Americana. Since this whole project is motivated by the element14.com Teacher's Pet Challenge the robot's primary name is the Tara Bot (named after my cat). Therefore the name for the robot and title for this blog: Tara Bot aka. Blambo Bot Delux........ USA....USA....USA!!!!
My next blog post will talk about how I used the Parallax robot kit in my programming class and how this process drove me to develop the code for the Tara bot. It will also have a video explaining the functions and control interface for the robot and also a comprehensive tour of it's capabilities through video.
Top Comments