I'm a beginner at robotics, but I do have a background in programming and some artificial intelligence and I'm planning to build an autonomous robot with an onboard computer. I may be able to use a Rasberry Pi, but I'm leaning towards a more powerful PC running (perhaps) Ubuntu. What would be a pragmatic (hopefully quick and easy) way to interface the PC with the inputs and outputs? Inputs would be ultrasonic sensors and probably either an infra-red camera or (inexpensive) laser scanner. Outputs would just be various motors to control wheels and an arm etc. Your thoughts/experience on the best options to interface with a PC would be much appreciated.
First - Welcome to LMR.
In general, PC style computers running Linux are great for high level algorithm work. They are really poor at low level I/O such as Analog to Digital conversion, accurate time measurement, interfacing to digital logic. For this work a $25US micro controller is more appropriate. Look at the products from Dagu & DFRobot (just a couple of vendors) that include hardware interfaces for motors and A/D devices plus headers for digital I/O.
Consider how much of the your application/algorithm can be implemented in the micro. If you need more CPU resources then determine how you can interface the micro to your host (RPi for example). Some people use wires (serial, I2C, SPI) while other go wireless. I find that a typical small 2 motor robot with 4 sensors is easily handled by a 16MHz 8-bit micro whereas processing a video stream is not.
Provide sufficient clean power. Trying to draw 3 amps from a 0.5 amp supply is a common pitfall.
Check out the kits on our host (RobotShop) for a good selection of hardware that is suited for the beginner thru expert builder.
When asking for help on this forum it is best to include pictures, wiring diagrams and overall project goals. Asking what is wrong on line 17341 of my code generally will get ignored. BYW, “Quick & Easy” and “DIY Robots” are not in the same universe.
A Chinese Arduino Mega clone is the cheapest option and with 52 I/Os plenty of possibilities. In your favorite programming language it’s just a matter of setting up the connection via USB (or a wireless protocol with additional hardware) and let the communication begin! (After programming the Arduino of course to receive and send to your PC.)
Very helpful answers!
Thank you both; this should get me started in the right direction.