RAM RAM I need more RAM!!

thorax.h

#ifndef antThorax_h
#define antThorax_h

#include "multiMap.h"
#include "miniSSC.h"
#include "timeObj.h"

/*
                                   Front
   0           1
    \        /
     \  () /
       O  O
 2 --- O  O --- 3
       O  O
      /    \
     /       \ 
    4         5 
 
 Group A = 0,3,4
 Group B = 1,2,5
 
 */
#define swivel 0
#define lift   1
#define knee   2

#define swivel0 16
#define lift0   16
#define knee0   16

#define swivel1 5
#define lift1   6
#define knee1   7

#define swivel2 16
#define lift2   16
#define knee2   16

#define swivel3 0
#define lift3   1
#define knee3   2

#define swivel4 16
#define lift4   16
#define knee4   16

#define swivel5 16
#define lift5   16
#define knee5   16

#define swivleFwd  1
#define swivleBack -1
#define swivlePark 0

#define liftUp -1
#define liftDwn .5
#define liftPark -1

#define kneeExtend 1
#define kneeRetract -1
#define kneePark -1

#define NUM_LEGS   6                     // Duh! Its an ANT!
#define NUM_JOINTS 3

#define CYCLE_TIME 40000.0               // Time to complete one step
#define SLICES 50.0                      // How many times to update position per step.
#define STEP_SET_WAIT CYCLE_TIME/2
#define NUM_MAPPERS NUM_JOINTS

enum stepStateType { unknown, parked, startingToWalk, walkingFwd };

class antThorax;

class antLeg {

public:
  antLeg(antThorax* inThorax, byte inLegNum, byte inSwivel, byte inLift, byte inKnee);

  void walkFwd(void);
  void park(void);

private :
  antThorax*    thorax;       // Our thorax..
  byte          legNum;     
  byte          swivelPin;    // Output here..
  byte          liftPin;      // and here..
  byte          kneePin;      // and here..
  int           timeSlice;    // Where are we in our step?
  timeObj*      legTimer;     // How long between updates?
  
  float         swivelVal;    // Calculated values to send out to the servos.
  float         liftVal;
  float         kneeVal;
  stepStateType legState;

};


// **************************************************



class antThorax {

public :
  antThorax(void);

  void startSerial(void);
  void stopSerial(void);
  void park(void);
  void walkFwd(void);

  boolean checkMapperNum(int mapperNum);
  void addMapperPoint(int legMapperNum, double x, double y);
  double mapPoint(int legMapperNum, double x);
  double legsMapPoint(int legNum, int jointNum, double x);
  void clearMapper(int LegMapper);
  void mapperPointsToSerial(int LegMapper);
  void dumpMapperToSerial(int LegMapper);
  double mapTime(double timeSlice);                           // Acess the slice mapper..

  stepStateType stepState;
  miniSSC  theSSC;                                            // Used to make servos go..
  
private: 
  antLeg*  legList[NUM_LEGS];                                 // just the leg list
  mapper*  sliceMapper;                                       // Mapps from slice number to data scaled to %.
  multiMap legMapper[NUM_MAPPERS];                            // The joint position mappers.
  timeObj* waitTimer;    // We need to wait before doing something.
};


#endif