Rich Primerano's Course Project
I began this project several years ago. The goal was to design a robot that behaved similar to a biological snake. The intent being that the robot would be a good platform for testing various control, path planning and object avoidance algorithms. Currently, I have completed the construction of the physical device and am in the process of building motor drive electronics. The first version of the snake will contain joint torque sensors and proximity sensors. Without too much more effort, I could add tactile sensors on the feet which would allow the snake to perform ground hugging and stability monitoring.
One of the first things I'll work on for this class is developing a physics based model of the robotic snake using ADAMS. The purpose of this is so that I may test several control algorithms, written in MATLAB, and tune their performance using the virtual device rather than a physical robot.
A solid model of the robot is already built in Pro/Engineer and a controller is being written in MATLAB. The initial controller will be a simple PID with each axis decoupled from the others. Although this is not the best approach, It should be adequate in the beginning while I work out some bugs. Later, this will likely be replaced with a state feedback controller. Initially, the controller will drive a simulated version of the snake build in a (still undetermined) physics based simulator.
All parts pictured below (except the motor) were machined on a Bridgport Knee Mill and a 10 inch South Bend Lathe (both manual).
A kinematic simulation of one of the robot's ribs. This illustrates how the snake is able to walk forward. File:Rib kinematic.avi
An animation of a curve fitting algorithm that Gabe Ford developed in Matlab for the robotic snake. The algorithm fits the snake to an arbitrary curve in space. File:Snakecrawl.avi
The same algorithm can be used to have the snake's head (or any other point on its body) follow an arbitrary path. Here, the snake's head traces out a diamond pattern. File:Diamond.avi
This week, I have familiarizes myself with MSC/ADAMS, a program used for developing physics based models. This model could be integrated with a control algorithm so that the controller could be tuned without needing the physical robot. I have begun going through the tutorial at the link below. Later this week, I'll try to import some of the snake segments and build an assembly from them.
During the past week, I've begun modeling the snake in ADAMS and applying constraints that simulate a flat surface over which the snake can crawl. I'm still not sure exactly how to drive the model from external sources and read back model parameters, but there are several online resources that discuss this.
I've gotten back to working on the servo drive circuitry for the snake as well. This should be complete in about a week and I'll send the boards out to be fabricated soon after. This version of the robot will be controlled by seven PIC microcontrollers that receive their commands through a tether from a PC. Locally, each motor is controlled by a separate PID control algorithm.
I have begun simulating the dynamics of the snake using ADAMS. This model simulates contact force between neighboring ribs and also between each rib and the ground.
As a first experiment, I have simulated a scenario where the snake leaps onto an embankment, perhaps in search of delicious field mice. Disaster follows... File:Model 1.avi
Week 4: Hardware Assembaly
This week, I finished the majority of the assembaly for the snake. I still need to machine a holder for the drive motor (shown at the far right of the rendering at the top of the page).
Weeks 5-6: Dynamics Simulation
For the past few weeks, I've been importing the Pro/E files into ADAMS so that I can perform dynamics simulations of the robot. I haven't been able to find an easy way to import a model while preserving all mass properties, connections and other data required to get the simulation running. The following animation is a dynamics simulation of the (shortened) snake crawling over a flat surface. ADAMS is capable of simulating contact forces in addition to basic rigid body dynamics. Contact forces have been defined between each of the feet and the surface. Friction is included. File:Snake.avi
Week 7: Controller Development
ADAMS/Controls, a plugin for ADAMS/View, allows you to interface a dynamic model built in ADAMS with a controller designed in MATLAB (among others). I have begun working on a simple controller for the deice which is pictured below. It uses several independant PID controllers to control each axis independantly. One advantage to this type of controller is that it scales easily and is simple to impliment on a distributed platform. The next controller I will be slightly more sophisticated.
The tutorials links below are useful for those interested in learning either of these software packages discussed.