HI GUYS, I am currently working on a project to build something from what we have learned so far or what we already know. This course is about Computer Organization, and we have learned all the theoretical parts of the digital design to practical stuffs. We also had to use verilog during our lab. We came across with incorporating verilog with DE2 BOARD from ALTERA. My concern/question is, i am trying to build a snake robot. It's going to be 8 segment and I just don't know what kind of materials that i need to buy and if it's necessary to use DE2 Board and verilog to build this robot. The robot is going to basically wiggle around place and try to make it fizzle like actual snake does. What are your advice or basic guidance to approach to this. Thanks.

There are two challenges:1) Build the actual robot, mechanically and electrically.2) Make the robot do what you want, electronically and software-wise.

You can use an FPGA for 2) if you want. It would probably be easier to use a microcontroller, but if the point is to use an FPGA in a project, then do that :-)The first point is actually pretty hard. You might want to look at an easy-to-integrate servo like the Robotis AX-12, which also comes with brackets that you can link up: servo - bracket - servo - bracket - ... will make a chain of 8 servos. Note that each servo only turns around a single axis (like a hinge,) whereas a typical snake can flex in two directions (like a universal joint.)Another, novel, way of doing a snake would be to build it out of universal joints, and use something like muscle wire to actuate those joints and drive them to turn/twist. I've never seen it done, but it'd be an interesting experiment :-)

I need clarify myself. So what you are saying is there are 2 parts of going with this project. First, building actual robot using components and then connect it to FPGA to make it move the way I want to? My idea was to have about 16 wheels and then have it wiggle by going left or right. Also, how many motors and batteries would I need for this? Lastly, do you think it's wise to use Finite State Automata? or is it the only way?

I also forgot about Software part. I would have to use verilog for this. We have learned to write flip-flop, multiplexers, FSA, and more and then displaying it on DE2-board. But, I just can't think of where to start of writing the code. More precisely, how to incorporate all those stuffs into my snake robot movement.

If you use wheels, you'd want individual control of each wheel that needs to be able to drive. That would mean 16 motors. Luckily, you can probably get away with cheap "hobby" motors. You'd also need 16 H-bridges to drive those motors. 8 L293D ICs would probably solve that. A single battery is enough; you can run a power bus down the length of the snake.

I'd suggest looking at servos (perhaps even cheap hobby servos) to turn the links of the snake, to make it wiggle more like a real snake; that may actually be simpler than trying to control 8 pairs of wheels presumably coupled with free-moving hinge linkages.

For the behavior, you again have to break it down into a hierarchy. There's signals to make the motors go backwards/forwards the way you want. Then there's the thing that decides which motors to go backwards/forwards to achieve a particular kind of wiggle. Then there's the thing that decides what kinds of wiggles to do in what order to achieve a high-level behavior like locomotion.

FSAs can achieve each of those behaviors if you want. You'd probably want real time (elapsed time) as one input to the modules, to say "to wiggle left, drive this motor forward at 50% speed for 200 milliseconds, and this motor ..."

Thanks a lot for the help! So, materials that I need is 16(hobby/servo motor), 8 LP23D ICS, and 16 wheels? I also thought of attatchin IR proximity sensor on the front to avoid contact with a wall or object. Also for chassis, what do you think would be the best fit for this case? I am thikning of making my robot not to long. About 15-20cm length would be suitable I think. Oh and does it really matter if I was to use DC motor instead of servo motor? THANK YOU

A servo motor is a motor with feedback, so you can tell where it's at (what position/pose it has.)A raw DC motor does not allow you to measure where it's at, so you're going to have trouble turning "just enough" in cases where that matters.If the motors drive wheels that are in contact with the ground, you don't need the servo part, though.

At this point, perhaps you should mock up all the parts you need using Lego bricks or modeling clay or cardboard, to get the sizing and positioning right. Then you can figure out what kinds of brackets and shafts and couplings and joints you'll need. My initial reaction is that 16 motors in 20 cm is not going to fit.

I have finished all the mechanics part and I am stuck in 2nd part. Using FPGA and verilog.. I just want to design very simple movement. Going forward, left, and right would the most that I would need. However, I am stuck in understanding how the code will generated and command the robot what to do. I am using DE2 Board to control the robot. Thank you.