“Takes Directions”: Needs Improvement
So, I hacked the new movement logic into the old Pong processing code.
After an initial lack of movement due to a flipped bit in the Busy property, the robot started turning when it was told to turn.
When it needed to move the paddle down, it rotated counter clockwise.
When it needed to move the paddle up, it rotated counter clockwise.
I think you can get a sense of the problem.
It was a bit frightening to experience, actually. It would turn the paddle a little to the left. Then a little more. Eventually, it would turn so far that the paddle dropped off the bottom of the screen, causing it to launch into recovery mode. Recovery mode is where it does a fast clockwise turn to get the paddle back into the visible playfield. Unfortunately, when the command “Fast Clockwise Turn” gets translated into “Fast Counter-Clockwise Turn”, things can go very bad, very fast. After the first command did not recover the paddle, it issued another command. Then another. Then another. It quickly hit the counterclockwise extreme of the paddle’s rotational range, where it was again told to continue in the same direction. Then again. Then again.
Immovable Object (Paddle Potentiometer) + Irresistable Force (Insane Mindstorms Motor) == Flying Lego Parts.
Even when it wasn’t attempting to self destruct, the force it exerted and the noise it made while spinning seems a bit excessive.
I think it might be perfect…
At any rate, I think it tried to calibrate the movement, based on the segment calibration technique I described earlier, but I can’t tell if it worked because of its slight homicidal streak. Gotta get working on that.
February 26, 2010 No Comments
Pong Non Sufficit
Pong is not enough.
The Atari Robot is bored. Pong is undeniably a classic game, but it’s classic in the same way Shakespeare is. Everyone looks at it and praises it, but they really want nothing to do with it because it’s so old and dull. Back and forth, back and forth. For hours. Even to lose a game takes twenty minutes sometimes. And it’s not really pushing anything to the limit.
The Atari Robot wanted more out of life.
At first, it talked at great length about a kitten object that it had fallen in love with and wanted to search the world for. For a time, this plan was compelling, however, my apartment is strictly full of non-kitten objects, and acquiring a kitten-object for this endeavor would not have been wise.
Atari Robot was sad.
It looked around at other famous robots. There’s the robots that build cars, but there’s no romance or excitement in that. Then it found what it wanted to be. One of the most well known uses of robots in the world today is in bomb disposal. Excitement and adventure, becoming a bomb disposal robot would be sure to make all the female Atari Robots fall for him. However, my apartment is strictly full of non-explosive objects, and acquiring an explosive object for this endeavor would not have been wise.
Atari Robot was sad.
Then I realized that there was a way for Atari Robot to live its dream and keep all my fingers and not get arrested. I have a bomb disposal simulator that Atari Robot could use. Atari Robot could join the Bucket Brigade to stop the Mad Bomber!
Atari Robot was happy.
February 25, 2010 No Comments
Victory Video
I’m working on a YouTube friendly condensed version at the moment.
[Edit: Here’s the YouTube version.]
September 8, 2009 No Comments
An Even Epicker Win
21-9! Take that and dance, 30+ year old technology! I’ve got two words for you: Inyo and Face!
Video coming soon.
September 8, 2009 No Comments
Well Now, That Didn’t Work.
I am really starting to hate those robotic motors. Sometimes they won’t move at all, and other times they’ll overcompensate for all the times they don’t move and end up flying across the screen when the ball is two pixels away. They just do not want to be controlled. The battery change has given them new life. Actions that were once just right are now wildly off the mark.
Stupid real devices. Does anyone know how to attach a debugger to the laws of physics so I can see what’s going wrong?
September 8, 2009 No Comments
Now I have to implement the “Smack Talk” feature…
September 7, 2009 No Comments
LeftMedium Stop RightFast RightMedium Stop RightMedium Stop
So, all this talk about it, and all these videos of the thing going wrong, and yet I haven’t actually posted a video of what the thing does when it’s actually working right? Well, here you go.
And the YouTube version:
It’s a lot more subdued than when I started this morning. The robot I had in the morning could have torn your hand off. Now it’s much more mellow. (Of course, I’m afraid that it’ll kill me in my sleep, but whatever…)
Two days remain, and there is still much to be done.
September 7, 2009 2 Comments
Getting Better All The Time
21-13, the best score yet. I tweaked the motion yet again. I went back to continuous motion, for starters, since the angular was constantly starting and stopping over and over and over and over, slowing it down. I think part of the main problem before was the message buffering. The same thing that was happening with the LEFT LEFT LEFT stuff I talked about earlier was happening in continuous motion mode, too. The solution here doesn’t have to be async, though, which is nice. Instead, all I have to do is not send the same message more than once in a row. You can tell me LEFT LEFT LEFT LEFT LEFT all you want, and I only tell the robot a single LEFT and I leave it at that. It’s now hardly ever overshooting the mark, and when it does, it can usually recover with a quick nudge back in the right direction.
Also, with this game, the robot was briefly in the lead!
So, now, why isn’t it winning? It’s supposed to be a perfect robot, why is it still losing to a 30 year old processor? Two big apparent reasons:
- It’s not moving fast enough. I need to alter it so that it will race from one side to the other when the projected point is far away.
- It’s not going to the right place. The trajectory projection isn’t perfect. It’ll sometimes miss the mark. I’ll need to go back and work on that a bit to improve the prediction.
Still, I’m very pleased with what’s come together in the last hour or so. The day wasn’t going so well until then. Right now, I’m at the point where I’d hoped to be by about 2 PM… The problems today have all been little stupid ones that can only be fixed by experimentation. There hasn’t been much problem solving, it’s all been iterative failure toward a higher goal.
September 6, 2009 No Comments
Four, count’em FOUR points!
The best part about sucking is that any improvement seems like a huge victory. This is a 400% improvement over my previous score!
I discovered that there was a command flag to indicate that a return message wasn’t necessary. Apparently return messages could take 60ms to send, which is very precious time in this world. So, I set that flag and now it’s running much smoother and stopping where it should more often.
Unfortunately, the problem now seems to be that it’s not going fast enough. It won’t run to the other side of the screen when it needs to get there fast. Now, that’s something I can fix. I hope.
September 6, 2009 No Comments
At Least It Wasn’t A Shutout…
September 6, 2009 No Comments