I originally started with the idea of a GLaDOS type robot (if you've played Portal)
This design was pretty static, so I figured I could have two ethernet webcams (stereoscopic vision) plug into a router which could then go to my PC. However, I have since given more thought to making the robot mobile, meaning the robot could move out of range of my laptop. With the computer doing the processing, I originally thought about some point cloud stuff, but since I haven't come across any good resources for how to do that (I would like to work in Java if possible), I thought I'd go more for a mapping of the environment, so making rectangles in space, x distance away from the robot based on the distance sensor, painting the square with the image from the webcam, and then displaying the 3D environment in an interactive app on the PC (so the user could fly around the area the robot has mapped out). However, if the robot is moving around, I then have a desire to have the robot be capable of doing some, at least minimal, image processing on its own.
So I'm envisioning that the ethernet shield be commanded to access the ethernet camera jpg url, store the jpg on the SD card (I have half a gig of storage), and then the Arduino could filter the jpg data off the SD card and look for key colors, or try to do some primitive comparison between the images to attempt to figure out where it is in the room, or how far objects are away, or to figure out if anything is moving, etc. Also once the robot got within range of my laptop, I could download the image data (with a location and distance for each image) and add it to the 3D environment kept on the computer. I'd like to be able to read the raw rgb data from a jpg image using the Arduino, do you have any recommendations for resources to use? I doubt I'd have the stamina to code a codec for jpg image processing from scratch in C, so recommendations for premade software modules or hardware that does the processing are appreciated
Also any other ideas extensions to the project are welcome. I've given some thought to getting a GPS unit - if the robot is roaming the nearby area, I'd prefer to give it a better sense of where it is (and allow it to find its way back home). I haven't looked into the internal time keeping of the Arduino, but I can sync a time piece when the robot connects with the laptop. I'm also interested in the robot being able to climb stairs, the quicker the better, though I haven't really worked out a design yet, I'm hoping for something that weighs approximately the same as a medium sized cat when the batteries are included (essentially looking to make a robotic pet).
My parts list: 2 ethernet cameras http://wpcdn.padgadget.com/wp-content/uploads/2011/01/dlink-cam.jpg 1 8-port (and wireless) router http://www.stardi.com/wp-content/uploads/2010/08/D-Link_DIR-632_Wireless_N_8-Port_Router.jpg Arduino Mega 2560 Ethernet Shield PING distance sensor HM55B Compass IMU/temp https://www.aeroquadstore.com/ProductDetails.asp?ProductCode=SEN-10121 servo http://www.hooked-on-rc-airplanes.com/images/servo.jpg 1 std motor http://img.diytrade.com/cdimg/472172/3499190/0/1224408480/Small_DC_Motor_for_electrical_tool_Toy_Hobby_Massage_machine.jpg 1 Amp H-bridge
I am proficient in Java, this will be my first real project working with C/C++