Well, I did it. With very little warning, I did something that I have said I wouldn’t do. Yes, the unthinkable is..I tore MARVIN apart. All the way. No remains. Kaput. Nada.
Why you may ask? Because I need a break from MARVIN. I started working on him back in January. I worked very hard on him for many, many hours. But then summer came and I started working more outside, played with the kids, all the good stuff. I got distracted. Then last Friday night I sat down with about three good quiet hours and I was completely, utterly uninspired. The great cancer of a Lego builder.
Over the last few months I have been working “on the side” with a few other small projects but I couldn’t actually finish most of them because all my NXTs were tied up in MARVIN. That frustrated me. I thought, and still think that MARVIN is a great project and I fully intend to build him again, but I need to mentally stretch, take a walk and come back to him refreshed.
I also made some crucial mistakes while working on that project. First, I let my imagination get away from me. I literally had pages of notes of things I wanted to make him do. All of that would have taken time and when I looked at the list I was overwhelmed. I had a very hard time getting started on one thing because I had fifty other things on my mind.
The second major mistake was that I initially spent all my time building and very little time programming. I enjoy building much more than programming (but I do like to program) so when it came to make him do his thing, it was pretty much exclusively programming. I didn’t enjoy that. I had a pile of about seven thousand Lego parts, but I felt that I couldn’t mechanically change him because it might mess up my plans. My next project(s) (and when I do get back to work on MARVIN) I am going to build, program, build, program, build, program… rather than build, build, build and then try to program it all. At one point I had twenty five motors and over thirty sensors mounted but not a stitch of code. That was a big mistake.
So what this means is that I hope to do smaller projects for a while, throw some video up on YouTube, and offer more good stuff here on Tinkernology. I have some great ideas that I have started working on and in fact, I have already built one small thing that only took me about two hours. I really miss working on projects like that. I am very excited to be back building again.
Showing posts with label MARVIN. Show all posts
Showing posts with label MARVIN. Show all posts
Sunday, August 29, 2010
Friday, May 21, 2010
Reality Check
My wife and I dusted off a toy for my youngest that my oldest got a year or so ago. It's an Elmo Live toy. After watching the toy move around and do its thing, I realized that my dream of MARVIN is nearly identical. MARVIN will just have different movements, different sensors and different interactions. But I do think that MARVIN will be very unique and I may be the only one who makes the comparison.
Friday, May 14, 2010
MARVIN
MARVIN has been coming along nicely. I have been working on him a lot in the last two weeks which is primarily the reason there hasn’t been many posts this week (not to mention the fact that all my resources have been pretty slow this week.
Last week I spent lots of time working on the radar system. I have the math figured out to get him to scan properly. The radar should be able to move back and forth as well as up and down to search using either the ultrasonic sensor or the legacy light sensor. I spent nearly the whole week frustrated because there was a bug in my code that I couldn’t find, but after much searching, I finally found it. About 5 seconds of editing the code and suddenly everything worked correctly. That’s a nice feeling.
This week I have been working on setting up the format for the code and the header files. I am taking a different approach this time. I have one program for each NXT, one specific header file for each program, and one universal header file that all six NXTs pull from. The universal header file contains common procedures to all the files such as display, music and communication. This is pretty handy because before each program had its own header file and there was little in common, so if I wanted to make a change to all four programs, I had to edit and debug four programs. That’s a real pain.
I have also worked out the bugs on the light communication. I am really beginning to appreciate communicating using the light sensors. I am finding that sending a message is slow because it takes about 480 ms to send a message, but it is very consistent and it I don’t have the minor timing variances that are common with Bluetooth. I don’t have to handshake the NXTs so as soon as the program is running, it is ready to send and receive messages which is really, really nice. Not to mention that I have six NXTs that are able to send and receive equally. Right now I have the programs designed to play a sound file after a certain amount of time and the synchronization is remarkable; it sounds like a single speaker, but in fact it is six speakers. I really fought with timing on the previous version.
Wednesday, March 31, 2010
Visually Tracking Robot
I found this video very inspiring. I believe that if I had the Mindsensors NXTcam and lots of programming time, I could come pretty close to achieving this with MARVIN. And I would love to try.
Sunday, March 28, 2010
Marvin Update
I have been busy...blah blah blah. You don't want to hear that, you want to see new, cool stuff. Well, here are more pictures of what I have been working on.
The body of MARVIN is nearly done, the six NXTs have been mounted, and I am beginning to mount all the new features.
The body of MARVIN is nearly done, the six NXTs have been mounted, and I am beginning to mount all the new features.
Front
Back
MARVIN is now 33 inches tall. The motor count is at 20 right now, and will grow by a couple at least. The sensor count is over 20 and rising. I am adding an on-board air compressor and some pneumatics. Believe it or not, (I didn't) as big and heavy as he is, he moves with no problems on smooth surfaces, the XL PF motors barely bog down.
I have been thinking about the interactivity of MARVIN. How can the user (aka the "victim") communicate with the robot? I have two ways I am working on. I have built one way and it is a card reader.
The user pushes the card between the wheels. A touch sensor then senses there is an object. The motor kicks on and pulls the card into the scanner. The HiTechnic color sensor reads the first four colors, then the scanner spits the card back out to the user. I would like to program the scanner to store several scans before starting the sequences.
Breaks over, time for me to get back to work
Tuesday, March 16, 2010
Some MARVIN Details.
So here are a few of the things I have been working on...
First, the base. This is the original base. I was having problems with the motors not being powerful enough, the rubber coming off the rims, and the casters were bending and not operating correctly.
This is the new base. It is much larger, the wheels are bigger and geared down more and centered on the plate. The casters are far more rigid and I added two more. I have left two open axles (not shown) on the underside to add more PF motors if needed. Each wheel can have up to three XL PF motors. If you look at the side of the wheel housing there is a bit of axle sticking out. I left this in case I want to add a rotation sensor later. I also made the base more round to allow for easier turns so the corners won't get caught so much. The wheels are the old solid supercar style so they shouldn't crush under heavy weights, plus there are two on each side. The base is balanced so all six wheel touch the ground at the same time to distribute the weight better.
First, the base. This is the original base. I was having problems with the motors not being powerful enough, the rubber coming off the rims, and the casters were bending and not operating correctly.
This is the new base. It is much larger, the wheels are bigger and geared down more and centered on the plate. The casters are far more rigid and I added two more. I have left two open axles (not shown) on the underside to add more PF motors if needed. Each wheel can have up to three XL PF motors. If you look at the side of the wheel housing there is a bit of axle sticking out. I left this in case I want to add a rotation sensor later. I also made the base more round to allow for easier turns so the corners won't get caught so much. The wheels are the old solid supercar style so they shouldn't crush under heavy weights, plus there are two on each side. The base is balanced so all six wheel touch the ground at the same time to distribute the weight better.
This is the light sensor communication hub I referred to a few days ago. The clear round bricks in the middle are to diffuse the light in all directions. The light on the sensor tends to shine directly forward and the bricks in the middle spread it.
I think I can overload this thing with PF and 9v motors. I have two HiTechnic IRLinks and I have been doing some tests to see if I can use them at full capacity. I learned that the IRLink is different than the IR Remote. The remote really fills the air with signal, but the IRLink shoots forward for a limited distance. As long as the IRLink is pointed directly at the receivers that you want to operate and all the stray and reflected signal is blocked, you can use two IRLinks in close proximity to each other. This way I can control up to 16 more motors on top of the 18 servos directly controlled by the NXT. I don't know if I will use that many motors, but it's nice to know that I can run up to 34 motors (WOW!) I can stack up the rotation sensors and creatively program the bot to save on ports too.
Here is a turret I have been working on too. It moves left, right, up and down. It has an ultrasonic sensor and an old RCX light sensor (behind the radar dish). This will be used to search for light sources, obstacles, edges of tables and such. There is one detail I'm not showing on purpose, but it is pretty cool and it's a surprise.
Anyway, you can see that I have been pretty busy. Progress is definitely happening, not as fast as I would like, but it is moving along.
Monday, March 15, 2010
Don't Give Up on Tinkernology!
Sorry I haven't been posting, things have been crazy. Plus all the places I normally look for stuff to post have been unusually dry for the kind of stuff I post. It will pick up, it always does.
There have been several really good reasons I haven't been posting. First and mainly, my sister and two of her teenaged boys are in town. Both are pretty tech savvy, and when they saw the Lego room, they went nuts. So we spent Friday, Saturday and Sunday building and teaching RobotC. They are absorbing it up like sponges, so it made it lots of fun for me. Plus, the older one spent most of his time sitting in front of my computer programming so I didn't get much surfing time.
The second reason is that I have been working really hard on (re)building MARVIN. I took the big guy apart and I have rebuilt most of him. He is going to be much bigger, much stronger, more powerful and have lots more functions. Yes, I have added more to the previous 17 motors and 16 sensors...a lot more. I don't have a count yet because I am still building (and building.... ad infinitum)
I am experiencing something that I don't think I have ever experienced before. I am absolutely overwhelmed with ideas and they all seem to work. I have been writing them down and I currently have a list that is two pages long. I have the hardware to make them work. I have made a few sensor purchases so I should be fine in that area too. I have spent time going thru my list and choosing which ideas are worth spending time on and which to shelve. The best way to describe what I am going thru is to watch a bunch of YouTube videos and combining some of the really good ones into one robot, then adding a few more of my own ideas. It is absolutely exciting for me and I am struggling to not spend 20 hours a day building and programming.
I can't wait to share the improvements and additions. I think you will like it.
There have been several really good reasons I haven't been posting. First and mainly, my sister and two of her teenaged boys are in town. Both are pretty tech savvy, and when they saw the Lego room, they went nuts. So we spent Friday, Saturday and Sunday building and teaching RobotC. They are absorbing it up like sponges, so it made it lots of fun for me. Plus, the older one spent most of his time sitting in front of my computer programming so I didn't get much surfing time.
The second reason is that I have been working really hard on (re)building MARVIN. I took the big guy apart and I have rebuilt most of him. He is going to be much bigger, much stronger, more powerful and have lots more functions. Yes, I have added more to the previous 17 motors and 16 sensors...a lot more. I don't have a count yet because I am still building (and building.... ad infinitum)
I am experiencing something that I don't think I have ever experienced before. I am absolutely overwhelmed with ideas and they all seem to work. I have been writing them down and I currently have a list that is two pages long. I have the hardware to make them work. I have made a few sensor purchases so I should be fine in that area too. I have spent time going thru my list and choosing which ideas are worth spending time on and which to shelve. The best way to describe what I am going thru is to watch a bunch of YouTube videos and combining some of the really good ones into one robot, then adding a few more of my own ideas. It is absolutely exciting for me and I am struggling to not spend 20 hours a day building and programming.
I can't wait to share the improvements and additions. I think you will like it.
Saturday, March 6, 2010
MARVIN is Evolving
I have had a command decision. Much like Honda’s ASIMO evolved, MARVIN is evolving.
Here’s why. First and probably the biggest reason is that I am having difficulties with RobotC. I have hit a snag and I am not completely sure what is happening. Basically, when I change any part of the code, it doesn’t get downloaded correctly. I have been in contact with the development folks and I am told they are working on the problem. So while they are working on the program, I am putting the programming or MARVIN on hold.
Secondly, I as you may remember I purchased two more NXT 1.0 sets. So that means that I have increased capabilities. Yes, I am going to try to upgrade MARVIN to have six NXTs. I also have two RCXs lying around going unused, and I am considering throwing those in too, but that is a stretch. This means that the robot can be incredibly complicated both mechanically as well as programmatically. Communications will be a nightmare and I am investigating ways to accomplish this. Currently I use the PF LED and the light sensor and that will likely be how I do it again with more controllers.
Thirdly, after working with MARVIN for a few months, I have learned a ton of things. I have built some parts too weak and I want to upgrade them. The wheels can’t hold the massive weight of the robot and I am having problems getting him to move. The casters on the back aren’t sturdy enough to hold the weight either and those need to be beefed up. I also want to make the robot more modular, meaning when something goes wrong I want to be able to just take off the offending part and work on it away from the robot without having to disassemble the whole thing.
As I work on the robot, I am overwhelmed with all the ideas that I have had. When you have a very high number of motors, sensors and parts, the number of things you can do shoot thru the roof. I guess to give you an example, imagine taking several of the cool robots seen on blogs and on YouTube and mashing them all into one super massive bot. I want to spend some time investigating what I can do to accomplish this.
I am really enjoying working on MARVIN, and lots of people are interested in seeing the cool things he will be able to do, so I want to make sure I don’t disappoint. I am finding that this project really isn’t as difficult as you might imagine, but it takes lots of time to work thru the problems. To me, that is the fun part
Here’s why. First and probably the biggest reason is that I am having difficulties with RobotC. I have hit a snag and I am not completely sure what is happening. Basically, when I change any part of the code, it doesn’t get downloaded correctly. I have been in contact with the development folks and I am told they are working on the problem. So while they are working on the program, I am putting the programming or MARVIN on hold.
Secondly, I as you may remember I purchased two more NXT 1.0 sets. So that means that I have increased capabilities. Yes, I am going to try to upgrade MARVIN to have six NXTs. I also have two RCXs lying around going unused, and I am considering throwing those in too, but that is a stretch. This means that the robot can be incredibly complicated both mechanically as well as programmatically. Communications will be a nightmare and I am investigating ways to accomplish this. Currently I use the PF LED and the light sensor and that will likely be how I do it again with more controllers.
Thirdly, after working with MARVIN for a few months, I have learned a ton of things. I have built some parts too weak and I want to upgrade them. The wheels can’t hold the massive weight of the robot and I am having problems getting him to move. The casters on the back aren’t sturdy enough to hold the weight either and those need to be beefed up. I also want to make the robot more modular, meaning when something goes wrong I want to be able to just take off the offending part and work on it away from the robot without having to disassemble the whole thing.
As I work on the robot, I am overwhelmed with all the ideas that I have had. When you have a very high number of motors, sensors and parts, the number of things you can do shoot thru the roof. I guess to give you an example, imagine taking several of the cool robots seen on blogs and on YouTube and mashing them all into one super massive bot. I want to spend some time investigating what I can do to accomplish this.
I am really enjoying working on MARVIN, and lots of people are interested in seeing the cool things he will be able to do, so I want to make sure I don’t disappoint. I am finding that this project really isn’t as difficult as you might imagine, but it takes lots of time to work thru the problems. To me, that is the fun part
Personal Project Inspiration
I have been looking for more inspiration for MARVIN. Here are a couple of videos that are hot right now on the Robotics sites I check out daily.
Thursday, February 25, 2010
Update on MARVIN
I snapped this picture today as MARVIN was chewing me out for not completing him by now.
Here’s what is going on with MARVIN. This is by far the toughest challenge I have ever taken on, but it is sooo much fun. I literally keep a “to do” list at my work table as I think of things to add and things I need to fix. I have six “scripts” put together. A script is just like it sounds, a series of actions and sounds based on user interactions. Most are pretty short, like raising a gripper and waving while saying “Hello.” A couple are more complicated and still need some work. I have a long list of scripts I would like to program.
A few web sites have taken notice of MARVIN and are eagerly waiting to see the final robot in action. This is good because it motivates me to do my best work and not slough off. One of those sites is Singularity Hub. Check out the last line of this post and you’ll see what I mean.
The problems are too many to list here, but here are a couple.
I chose the wheels because they are not pneumatic and can handle higher loads; well at least I thought they could.
I am finding that the weight of the robot is causing the rubber to come off the hubs. Not sure how I am going to deal with that, but it may require a significant rebuild.
RobotC doesn’t support multiple NXT communications, so I have had to improvise by using LEDs on the Master NXT and light sensors on the slave NXTs. This means that communications is a one-way street, so all my scripts have to take that into account. Plus we all know how finicky Bluetooth can be.
Getting the grippers to work has been a real challenge. Each arm requires three servo motors so there is no extra port to operate the gripper. I overcame this obstacle by using a IRLink with a PF receiver with medium PF motors running the grippers. So I have to communicate between the NXTs when I operate the gripper when the IRLink is on the other NXT. The timing is a real trick. I am still perfecting that problem.
MARVIN may not be done soon, but I am confident that when he is done, he will be something you will remember.
#!%@% Chris!!!!
A few web sites have taken notice of MARVIN and are eagerly waiting to see the final robot in action. This is good because it motivates me to do my best work and not slough off. One of those sites is Singularity Hub. Check out the last line of this post and you’ll see what I mean.
The problems are too many to list here, but here are a couple.
I chose the wheels because they are not pneumatic and can handle higher loads; well at least I thought they could.
I am finding that the weight of the robot is causing the rubber to come off the hubs. Not sure how I am going to deal with that, but it may require a significant rebuild.
RobotC doesn’t support multiple NXT communications, so I have had to improvise by using LEDs on the Master NXT and light sensors on the slave NXTs. This means that communications is a one-way street, so all my scripts have to take that into account. Plus we all know how finicky Bluetooth can be.
Getting the grippers to work has been a real challenge. Each arm requires three servo motors so there is no extra port to operate the gripper. I overcame this obstacle by using a IRLink with a PF receiver with medium PF motors running the grippers. So I have to communicate between the NXTs when I operate the gripper when the IRLink is on the other NXT. The timing is a real trick. I am still perfecting that problem.
MARVIN may not be done soon, but I am confident that when he is done, he will be something you will remember.
Monday, January 25, 2010
Equal rights
I came to the table where I am working on MARVIN today and I found a piece of literature on the table..
Apparently, while I sleep, MARVIN is attending Union meetings.
Sunday, January 24, 2010
MARVIN
Bot now has a name….MARVIN, or Mindstorms Anthropomorphic Robot-Verbalizing Interactive Nerd. Thanks to all of you that suggested names and voted!
I have been spending tons of time programming MARVIN. I have to tell you, creating an interactive robot with tons of sensors and motors is a HUGE task. I have spent more time programming than building, and I still have a long, long way to go to achieve my goals.
Here are some of the specs.
MARVIN is 28 inches tall, 22 inches wide, but the arms extend out to the side so it can be about 18" wider. If I had to guess, it probably weighs about 20 lbs.
The hardware includes:
4 NXTs
9 servos
5 PF motors, three XL and two MED
3 IR Receivers
2 micro motors
1 PF battery box
The HiTechnic SMUX
17 sensors,
• HiTechnic Compass
• 2 HiTechnic IR Links
• 4 ultrasonic sensors, three on the bumpers and one on the chest.
• 3 touch bumpers
• 1 touch for an emergency stop
• 4 sound sensor for emergency stop, yell louder than 95 and the robot dies,
• 2 light sensors, which picks up light signals from the master as commands, since there is no BlueTooth capability for fours NXTs using RobotC
Not all sensors are completely written into the code yet. I have envisioned what I want to do, but there just isn't enough time in the day to do it all.
Both arms and the face are controlled by functions that receive pre-programmed parameters from arrays such as...
int FaceArray[][]=
{
{9, 0, 0, 0, 0, 0, 0, 30, 200}, // Brows Only
{0, 0, 0, 100, 30, 100, 30, 0, 0}, // Eyes Only
{0, 0, 0, -100, 30, -100, 30, 0, 0}, // Eyes Only
{0, 0, 0, 0, 30, 0, 30, 0, 0}, // Eyes Only
{0, 120, 80, 0, 0, 0, 0, 0, 0}, // Mouth Only
{0, 10, 80, 0, 0, 0, 0, 0, 0}, // Mouth Only
{0, 120, 80, 0, 0, 0, 0, 0, 0}, // Mouth Only
{0, 0, 80, 0, 0, 0, 0, 0, 0}, // Mouth Only
{0, 0, 0, 0, 0, 0, 0, -30, -200}, // Brows Only
{6, 0, 0, 0, 0, 0, 0, -30, 200}, // Brows Only
};
This way, each motor can run completely independently thru their own task. Each array is created in Excel (easier to read the numbers) and exported into a data file that is read by the program.
Since there are 4 NXTs, I can run multiple motors and functions at the same time. Each arm has 3 degrees of freedom, plus the gripper motion.
The eyes move up & down and side to side. The eyebrows move up and down and turn in and out to make scowling and other facial movements reflecting mood. The more I look at MARVIN, he reminds me of Wall-E.
Here is a very basic look at how the robot is controlled; Master NXT (1) controls the drive motors, runs the face and sends a BlueTooth signal to NXT (2). NXT (2) then sends simultaneous light signals to NXT (3) and NXT (4) which run the arms. NXT (3) runs the grippers and NXT (4) sends a BT signal to NXT (3) when it is time to close the right gripper on NXT (4).
So basically, there is a "script" of several actions. For example, NXT (1) says "run Action 12". On all the other NXTs, they then run whatever Action 12 is, whether it be play a sound, move the right arm, play a tone, move the face, turn on a light etc. Multiple things happen all at the same time. MARVIN can sense the presence of someone (or something) right in front of him and can hear them.
He can do things such as “see” an object with sonar, yell "Ahhhh!" (moving his mouth while raising his eye brows), raise both arms, turn around and drive away. Then he can turn back around, point his arm at you and laugh. I have several actions such as this that I am working on teaching him. I hope to be able to set up 20-30 actions with more than 30 sound files that are standard with the NXT software.
I have been spending tons of time programming MARVIN. I have to tell you, creating an interactive robot with tons of sensors and motors is a HUGE task. I have spent more time programming than building, and I still have a long, long way to go to achieve my goals.
Here are some of the specs.
MARVIN is 28 inches tall, 22 inches wide, but the arms extend out to the side so it can be about 18" wider. If I had to guess, it probably weighs about 20 lbs.
The hardware includes:
4 NXTs
9 servos
5 PF motors, three XL and two MED
3 IR Receivers
2 micro motors
1 PF battery box
The HiTechnic SMUX
17 sensors,
• HiTechnic Compass
• 2 HiTechnic IR Links
• 4 ultrasonic sensors, three on the bumpers and one on the chest.
• 3 touch bumpers
• 1 touch for an emergency stop
• 4 sound sensor for emergency stop, yell louder than 95 and the robot dies,
• 2 light sensors, which picks up light signals from the master as commands, since there is no BlueTooth capability for fours NXTs using RobotC
Not all sensors are completely written into the code yet. I have envisioned what I want to do, but there just isn't enough time in the day to do it all.
int FaceArray[][]=
{
{9, 0, 0, 0, 0, 0, 0, 30, 200}, // Brows Only
{0, 0, 0, 100, 30, 100, 30, 0, 0}, // Eyes Only
{0, 0, 0, -100, 30, -100, 30, 0, 0}, // Eyes Only
{0, 0, 0, 0, 30, 0, 30, 0, 0}, // Eyes Only
{0, 120, 80, 0, 0, 0, 0, 0, 0}, // Mouth Only
{0, 10, 80, 0, 0, 0, 0, 0, 0}, // Mouth Only
{0, 120, 80, 0, 0, 0, 0, 0, 0}, // Mouth Only
{0, 0, 80, 0, 0, 0, 0, 0, 0}, // Mouth Only
{0, 0, 0, 0, 0, 0, 0, -30, -200}, // Brows Only
{6, 0, 0, 0, 0, 0, 0, -30, 200}, // Brows Only
};
This way, each motor can run completely independently thru their own task. Each array is created in Excel (easier to read the numbers) and exported into a data file that is read by the program.
Since there are 4 NXTs, I can run multiple motors and functions at the same time. Each arm has 3 degrees of freedom, plus the gripper motion.
The eyes move up & down and side to side. The eyebrows move up and down and turn in and out to make scowling and other facial movements reflecting mood. The more I look at MARVIN, he reminds me of Wall-E.
Here is a very basic look at how the robot is controlled; Master NXT (1) controls the drive motors, runs the face and sends a BlueTooth signal to NXT (2). NXT (2) then sends simultaneous light signals to NXT (3) and NXT (4) which run the arms. NXT (3) runs the grippers and NXT (4) sends a BT signal to NXT (3) when it is time to close the right gripper on NXT (4).
So basically, there is a "script" of several actions. For example, NXT (1) says "run Action 12". On all the other NXTs, they then run whatever Action 12 is, whether it be play a sound, move the right arm, play a tone, move the face, turn on a light etc. Multiple things happen all at the same time. MARVIN can sense the presence of someone (or something) right in front of him and can hear them.
He can do things such as “see” an object with sonar, yell "Ahhhh!" (moving his mouth while raising his eye brows), raise both arms, turn around and drive away. Then he can turn back around, point his arm at you and laugh. I have several actions such as this that I am working on teaching him. I hope to be able to set up 20-30 actions with more than 30 sound files that are standard with the NXT software.
Subscribe to:
Posts (Atom)


