Pat Madden
Published © GPL3+

Mercersburg Academy Blue Storm Daddy-O

Source code and models to create our robot.

IntermediateWork in progress24 hours499
Mercersburg Academy Blue Storm Daddy-O

Things used in this project

Story

Read more

Custom parts and enclosures

Wheel

The wheel of robot.

Chassis

Chassis of robot.

Schematics

Setup.txt

Details on installing OpenCV 3 for the Pi, as well as remote desktop communication.

Code

controllerToMegaWheelMode.ino

Arduino
To be uploaded to Arduino and tethered with USB shield and PS4 controller. A mega or uno will work.
/*                                          __                    
   ____ ___  ___  _____________  __________/ /_  __  ___________ _
  / __ `__ \/ _ \/ ___/ ___/ _ \/ ___/ ___/ __ \/ / / / ___/ __ `/
 / / / / / /  __/ /  / /__/  __/ /  (__  ) /_/ / /_/ / /  / /_/ / 
/_/ /_/ /_/\___/ /   \___/\/_// /  /____/_.___/\__,_/_/   \__, /  
   _________  / /_  ____  / /_(_)_________               /____/   
  / ___/ __ \/ __ \/ __ \/ __/ / ___/ ___/                        
 / /  / /_/ / /_/ / /_/ / /_/ / /__(__  )                         
/_/   \____/_.___/\____/\__/_/\___/____/ 

Victor Li '18, Maddie Rogers '17, Pat Madden '18, 2017
Powered by nihilism, coffee, and some curiosity 
*/

//FOR USE WITH TETHER 

//---! XBee incompatible, use only with USB shield on mega  
//---! for direct communication between controller and mega (requires an arduino with USB shield and PS4 controller)

// ---! Code presented is heavily modifed from the example
// ---! sketch for the PS4 USB library - developed by Kristian Lauszus
// ---! For more information visit his blog: http://blog.tkjelectronics.dk/ 

// ---! I tried to write this as cleanly as I could, though
// ---!  if you have any questions I can be reached at patrickvincentmadden@gmail.com 

#include <PS4USB.h>
#include <usbhub.h>
#include <PS4Parser.h>

#include <Dynamixel.h>
#include <DynamixelConsole.h>
#include <DynamixelInterface.h>
#include <DynamixelMotor.h>

// Satisfy the IDE, which needs to see the include statment in the ino too.
#ifdef dobogusinclude
#include <spi4teensy3.h>
#include <SPI.h>
#endif

USB Usb;
PS4USB PS4(&Usb);

char myArray[100];
int i=0;
String str;
byte incoming=0;

int speedSelect = 1; //default set speedA -> speedB -> speedC -> speedA ...

int speedA = 750;
int speedB = 1000;
int speedC = 150;

int a = 0;
int b = 50; //hack value, turning right or left on very low speeds (like 150) lowers torque intolerably so this should help

int invert = 1; //default set NO
bool inverted = false;

DynamixelInterface &interface=*createSerialInterface(Serial);
DynamixelMotor motor1(interface, 55);
DynamixelMotor motor2(interface, 54);
DynamixelMotor motor3(interface, 60);
DynamixelMotor motor4(interface, 58);

void forward() {
  switch(speedSelect) {
     case 1:
      Serial.print("case 1");
      motor1.speed(speedA);
      motor2.speed(-speedA);
      motor3.speed(speedA);
      motor4.speed(-speedA);  
     break;
     case 2:
      Serial.print("case 2");
      motor1.speed(speedB);
      motor2.speed(-speedB);
      motor3.speed(speedB);
      motor4.speed(-speedB);
     break;
     case 3:
      Serial.print("case 3");
      motor1.speed(speedC);
      motor2.speed(-speedC);
      motor3.speed(speedC);
      motor4.speed(-speedC);
     break;
    }
}
void backward() {
  switch(speedSelect) {
     case 1:
     Serial.print("case 1");
      motor1.speed(-speedA);
      motor2.speed(speedA);
      motor3.speed(-speedA);
      motor4.speed(speedA);  
     break;
     case 2:
      Serial.print("case 2");
      motor1.speed(-speedB);
      motor2.speed(speedB);
      motor3.speed(-speedB);
      motor4.speed(speedB);
     break;
     case 3:
      Serial.print("case 3");
      motor1.speed(-speedC);
      motor2.speed(speedC);
      motor3.speed(-speedC);
      motor4.speed(speedC);
     break;
    }
}
void right() {
  switch(speedSelect) {
     case 1:
      Serial.print("case 1");
      motor1.speed(speedA);
      motor2.speed(speedA);
      motor3.speed(speedA);
      motor4.speed(speedA);  
     break;
     case 2:
      Serial.print("case 2");
      motor1.speed(speedB);
      motor2.speed(speedB);
      motor3.speed(speedB);
      motor4.speed(speedB);
     break;
     case 3:
      Serial.print("case 3");
      motor1.speed(speedC+b);
      motor2.speed(speedC+b);
      motor3.speed(speedC+b);
      motor4.speed(speedC+b);
     break;
    }
}
void left() {
  switch(speedSelect) {
     case 1:
     Serial.print("case 1");
      motor1.speed(-speedA);
      motor2.speed(-speedA);
      motor3.speed(-speedA);
      motor4.speed(-speedA);  
     break;
     case 2:
      Serial.print("case 2");
      motor1.speed(-speedB);
      motor2.speed(-speedB);
      motor3.speed(-speedB);
      motor4.speed(-speedB);
     break;
     case 3:
      Serial.print("case 3");
      motor1.speed(-speedC-b);
      motor2.speed(-speedC-b);
      motor3.speed(-speedC-b);
      motor4.speed(-speedC-b);
     break;
    }
}

void north() {
  switch(invert){
    case 1:
      forward();  
    break;
    case 2:
      backward();  
    break;
    default:
    //empty
    break;
  }  
}
void south() {
  switch(invert){
    case 1:
      backward();  
    break;
    case 2:
      forward();  
    break;
    default:
    //empty
    break;
  }    
}
// changes made here, if issues switch back to original
void east() {
  switch(invert){
    case 1:
      right();  
    break;
    case 2:
      right(); // left();
    break;
    default:
    //empty
    break;
  }   
}
void west() {
  switch(invert){
    case 1:
      left();  
    break;
    case 2:
      left(); // right();
    break;
    default:
    //empty
    break;
  }   
}
// end changes made

void setup() {
  Serial.begin(57600);
  interface.begin(1000000);
#if !defined(__MIPSEL__)
  while (!Serial); // Wait for serial port to connect - used on Leonardo, Teensy and other boards with built-in USB CDC serial connection
#endif
  if (Usb.Init() == -1) {
    //Serial.print(F("\r\nOSC did not start"));
    while (1); // Halt
  }
  delay(100);
    motor1.jointMode();
    motor2.jointMode();
    motor3.jointMode();
    motor4.jointMode();
  delay(100);
    while (! Serial) {
    delay(1);
  }
    motor1.position(a);
    motor2.position(a);
    motor3.position(a);
    motor4.position(a);
  delay(100);
    motor1.wheelMode();
    motor2.wheelMode();
    motor3.wheelMode();
    motor4.wheelMode();
  delay(100);
    while (! Serial) {
    delay(1);
  }
}

void loop() {
  Usb.Task();
  if (PS4.connected()) {
    if (PS4.getButtonClick(UP)) {
      Serial.println("hit");        
      north();
    }
    if (PS4.getButtonClick(RIGHT)) {
      Serial.println("hit");
      east();
    }
    if (PS4.getButtonClick(DOWN)) {
      Serial.println("hit");
      south();  
    }
    if (PS4.getButtonClick(LEFT)) {
      Serial.println("hit");
      west();
    }
    if (PS4.getButtonClick(CROSS)) {
      Serial.println("hit");
      motor1.speed(0);
      motor2.speed(0);
      motor3.speed(0);
      motor4.speed(0);
      motor1.speed(0);
      motor2.speed(0);
      motor3.speed(0);
      motor4.speed(0);
    }
    if (PS4.getButtonClick(SQUARE)) {
      Serial.println("hit");
      if(inverted)
      {
        invert = 1;
        inverted = false;
        Serial.print("invert = ");
        Serial.println(invert); 
      }else 
      {
        invert = 2;
        inverted = true;
        Serial.print("invert = ");
        Serial.println(invert);
      }
    }
    if (PS4.getButtonClick(TRIANGLE)) {
      Serial.println("hit");
      if(speedSelect==3)
      {
        speedSelect = 1;
        Serial.print(speedSelect);
      }else
      {
        speedSelect++;
        Serial.print(speedSelect);  
      }
    }
//    if (PS4.getButtonClick(CIRCLE) {

//    }
  }
}

wirelessStandardSENDERJuly24.ino

Arduino
Used in conjunction with wirelessStandardRECEIVER. Requires one XBee with USB shield (attached to PS4 controller) and one XBee receiver on chassis.
/*                                          __                    
   ____ ___  ___  _____________  __________/ /_  __  ___________ _
  / __ `__ \/ _ \/ ___/ ___/ _ \/ ___/ ___/ __ \/ / / / ___/ __ `/
 / / / / / /  __/ /  / /__/  __/ /  (__  ) /_/ / /_/ / /  / /_/ / 
/_/ /_/ /_/\___///   \___/\//_///  /____/_.___/\__,_/_/   \__, /  
   _________   / /_  ____  / /_(_)_________               /____/   
  / ___/ __ \/ __ \/ __ \/ __/ / ___/ ___/                        
 / /  / /_/ / /_/ / /_/ / /_/ / /__(__  )                         
/_/   \____/_.___/\____/\__/_/\___/____/ 

Victor Li '18, Maddie Rogers '17, Pat Madden '18
Mentored by Conner Caruso '16 and Dr. J 2017
Powered by nihilism, coffee, and some curiosity 
*/

// ---! Compatible with wirelessStandardSENDERJuly24  
// ---!  for wireless communication between XBees      
// ---! Requires one XBee with USB shield (attached to PS4
// ---!  controller), and one XBee receiver on chassis
// ---!  default start is on wheelMode                

// ---! Code presented is heavily modifed from the example
// ---! sketch for the PS4 USB library - developed by Kristian Lauszus
// ---! For more information visit his blog: http://blog.tkjelectronics.dk/ 

// ---! I tried to write this as cleanly as I could, though
// ---!  if you have any questions I can be reached at patrickvincentmadden@gmail.com 

// ---! The untested, experimental part of this is the addition of jointMode control,
// ---!  which in theory will give the driver further accuracy in navigation
// ---!  although it will require extensive testing as I'm unsure how it'll work (july24)               !---
                  
// We'll use SoftwareSerial to communicate with the XBee:
#include <SoftwareSerial.h>
// XBee's DOUT (TX) is connected to pin 2 (Arduino's Software RX)
// XBee's DIN (RX) is connected to pin 3 (Arduino's Software TX)
SoftwareSerial XBee(2, 3); // RX, TX

#include <PS4USB.h>
#include <usbhub.h>
#include <PS4Parser.h>
// Satisfy the IDE, which needs to see the include statment in the ino too.
#ifdef dobogusinclude
#include <spi4teensy3.h>
#include <SPI.h>
#endif

USB Usb;

PS4USB PS4(&Usb);
bool printAngle, printTouch;
uint8_t oldL2Value, oldR2Value;
void setup() {
  Serial.begin(57600);
  XBee.begin(57600);
#if !defined(__MIPSEL__)
  while (!Serial); // Wait for serial port to connect - used on Leonardo, Teensy and other boards with built-in USB CDC serial connection
#endif
  if (Usb.Init() == -1) {
    //Serial.print(F("\r\nOSC did not start"));
    while (1); // Halt
  }

  //Serial.print(F("\r\nPS4 USB Library Started"));
}

bool wheel = true;

void loop() {

  while(wheel) { //wheelMode controls
    Usb.Task();
  
    if (PS4.connected()) {
  
      if (PS4.getButtonClick(UP)) {
        XBee.write(1);
      }
      if (PS4.getButtonClick(RIGHT)) {
        XBee.write(2);
      }
      if (PS4.getButtonClick(DOWN)) {
        XBee.write(3);
      }
      if (PS4.getButtonClick(LEFT)) {
        XBee.write(4);
      }
      if (PS4.getButtonClick(CROSS)) {
        XBee.write(5);
      }
      if (PS4.getButtonClick(SQUARE)) {
        XBee.write(6); 
      }
      if (PS4.getButtonClick(TRIANGLE)) {
        XBee.write(7); 
      }
      if (PS4.getButtonClick(CIRCLE)) { //alternate wheelMode(default) and jointMode controls on both devices
        XBee.write(8);
        wheel = false; 
      }
    }
  }

 while(!wheel) { //jointMode controls
    Usb.Task();
  
    if (PS4.connected()) {
  
      if (PS4.getButtonClick(UP)) {
        XBee.write(11);
      }
      if (PS4.getButtonClick(RIGHT)) {
        XBee.write(12);
      }
      if (PS4.getButtonClick(DOWN)) {
        XBee.write(13);
      }
      if (PS4.getButtonClick(LEFT)) {
        XBee.write(14);
      }
      if (PS4.getButtonClick(CROSS)) {
        XBee.write(10);
      }
      if (PS4.getButtonClick(SQUARE)) {
        XBee.write(6); 
      }
      if (PS4.getButtonClick(TRIANGLE)) {
        XBee.write(9); 
      }
      if (PS4.getButtonClick(CIRCLE)) { //alternate wheelMode(default) and jointMode controls on both devices
        XBee.write(8);
        wheel = true; 
      }
    }
  } 
}

wirelessStandardRECEIVERJuly24.ino

Arduino
Used in conjunction with wirelessStandardSENDER. Requires one XBee with USB shield (attached to PS4 controller) and one XBee receiver on chassis.
/*                                          __                    
   ____ ___  ___  _____________  __________/ /_  __  ___________ _
  / __ `__ \/ _ \/ ___/ ___/ _ \/ ___/ ___/ __ \/ / / / ___/ __ `/
 / / / / / /  __/ /  / /__/  __/ /  (__  ) /_/ / /_/ / /  / /_/ / 
/_/ /_/ /_/\___/ /   \___/\/_// /  /____/_.___/\__,_/_/   \__, /  
   _________  / /_  ____  / /_(_)_________               /____/   
  / ___/ __ \/ __ \/ __ \/ __/ / ___/ ___/                        
 / /  / /_/ / /_/ / /_/ / /_/ / /__(__  )                         
/_/   \____/_.___/\____/\__/_/\___/____/ 

Victor Li '18, Maddie Rogers '17, Pat Madden '18
Mentored by Conner Caruso '16 and Dr. J 2017
Powered by nihilism, coffee, and some curiosity 
*/

// ---! Compatible with wirelessStandardSENDERJuly24  
// ---! for wireless communication between XBees      
// ---! Requires one XBee with USB shield (attached to PS4
// ---! controller), and one XBee receiver on chassis
// ---! default start is on wheelMode                

// ---! Code presented is heavily modifed from the example
// ---! sketch for the PS4 USB library - developed by Kristian Lauszus
// ---! For more information visit his blog: http://blog.tkjelectronics.dk/ 

// ---! I tried to write this as cleanly as I could, though
// ---!  if you have any questions I can be reached at patrickvincentmadden@gmail.com 

// ---! The untested, experimental part of this is the addition of jointMode control,
// ---!  which in theory will give the driver further accuracy in navigation
// ---!  although it will require extensive testing as I'm unsure how it'll work (july24)               !---
           
// SoftwareSerial to communicate with the XBee:
#include <SoftwareSerial.h>
// XBee's DOUT (TX) is connected to pin 2 (Arduino's Software RX)
// XBee's DIN (RX) is connected to pin 3 (Arduino's Software TX)
SoftwareSerial XBee(52, 3); // RX, TX

#include <Dynamixel.h>
#include <DynamixelConsole.h>
#include <DynamixelInterface.h>
#include <DynamixelMotor.h>

char myArray[100];
int i=0;
String str;
byte incoming=0;

int a = 0; //angle for motor position in jointMode
int angleIncrement = 2;

int invert = 1; //default set NO
bool inverted = false;

bool wheel;    

int speedSelect = 1; //intial set: speedA

int speedA = 750;
int speedB = 1000;
int speedC = 200;

DynamixelInterface &interface=*createSerialInterface(Serial2);
DynamixelMotor motor1(interface, 55);
DynamixelMotor motor2(interface, 61);
DynamixelMotor motor3(interface, 60);
DynamixelMotor motor4(interface, 58);

void setup() {
  XBee.begin(57600);
  //Serial.begin(57600);
  interface.begin(1000000);
  delay(10);
    motor1.jointMode();
    motor2.jointMode();
    motor3.jointMode();
    motor4.jointMode();
  delay(10);
    motor1.position(a);
    motor2.position(a);
    motor3.position(a);
    motor4.position(a);
  delay(10);
    motor1.wheelMode();
    motor2.wheelMode();
    motor3.wheelMode();
    motor4.wheelMode();
  delay(10);
    while (! Serial) {
    delay(1);
  }
}

//for jointMode
void jointNorth() {
    switch(invert)
    {
      case1:
        motor1.position(a);
        motor2.position(-a);
        motor3.position(a);
        motor4.position(-a);
      break;
      case2:
        motor1.position(-a);
        motor2.position(a);
        motor3.position(-a);
        motor4.position(a);      
      break;
    }
}
void jointSouth() {
    switch(invert)
    {
      case1:
        motor1.position(-a);
        motor2.position(a);
        motor3.position(-a);
        motor4.position(a);
      break;
      case2:
        motor1.position(a);
        motor2.position(-a);
        motor3.position(a);
        motor4.position(-a);      
      break;
    }
}
void jointRight() {
    motor1.position(a);
    motor2.position(a);
    motor3.position(a);
    motor4.position(a);
}
void jointLeft() {
    motor1.position(-a);
    motor2.position(-a);
    motor3.position(-a);
    motor4.position(-a);
}

//for wheelMode
void wheelForward() {
  switch(speedSelect) {
     case 1:
      //Serial.print("case 1");
      motor1.speed(speedA);
      motor2.speed(-speedA);
      motor3.speed(speedA);
      motor4.speed(-speedA);  
     break;
     case 2:
      //Serial.print("case 2");
      motor1.speed(speedB);
      motor2.speed(-speedB);
      motor3.speed(speedB);
      motor4.speed(-speedB);
     break;
     case 3:
      //Serial.print("case 3");
      motor1.speed(speedC);
      motor2.speed(-speedC);
      motor3.speed(speedC);
      motor4.speed(-speedC);
     break;
    }
}
void wheelBackward() {
  switch(speedSelect) {
     case 1:
     ///Serial.print("case 1");
      motor1.speed(-speedA);
      motor2.speed(speedA);
      motor3.speed(-speedA);
      motor4.speed(speedA);  
     break;
     case 2:
      //Serial.print("case 2");
      motor1.speed(-speedB);
      motor2.speed(speedB);
      motor3.speed(-speedB);
      motor4.speed(speedB);
     break;
     case 3:
      //Serial.print("case 3");
      motor1.speed(-speedC);
      motor2.speed(speedC);
      motor3.speed(-speedC);
      motor4.speed(speedC);
     break;
    }
}
void wheelRight() {
  switch(speedSelect) {
     case 1:
      //Serial.print("case 1");
      motor1.speed(speedA);
      motor2.speed(speedA);
      motor3.speed(speedA);
      motor4.speed(speedA);  
     break;
     case 2:
      //Serial.print("case 2");
      motor1.speed(speedB);
      motor2.speed(speedB);
      motor3.speed(speedB);
      motor4.speed(speedB);
     break;
     case 3:
      //Serial.print("case 3");
      motor1.speed(speedC);
      motor2.speed(speedC);
      motor3.speed(speedC);
      motor4.speed(speedC);
     break;
    }
}
void wheelLeft() {
  switch(speedSelect) {
     case 1:
     //Serial.print("case 1");
      motor1.speed(-speedA);
      motor2.speed(-speedA);
      motor3.speed(-speedA);
      motor4.speed(-speedA);  
     break;
     case 2:
      //Serial.print("case 2");
      motor1.speed(-speedB);
      motor2.speed(-speedB);
      motor3.speed(-speedB);
      motor4.speed(-speedB);
     break;
     case 3:
      //Serial.print("case 3");
      motor1.speed(-speedC);
      motor2.speed(-speedC);
      motor3.speed(-speedC);
      motor4.speed(-speedC);
     break;
    }
}

void wheelNorth() {
  switch(invert){
    case 1:
      wheelForward();  
    break;
    case 2:
      wheelBackward();  
    break;
    default:
    //empty
    break;
  }  
}
void wheelSouth() {
  switch(invert){
    case 1:
      wheelBackward();  
    break;
    case 2:
      wheelForward();  
    break;
    default:
    //empty
    break;
  }    
}

void loop() {
  if(XBee.available()) {
    incoming=XBee.read();
    
    //wheelMode
    if (incoming==1) { //north     
      wheelNorth();
    }
    if (incoming==2) { //wheelRight
      wheelRight();
    }
    if (incoming==3) { //wheelSouth
      wheelSouth();  
    }
    if (incoming==4) { //wheelLeft
      wheelLeft();
    }
    if (incoming==5) { //halt motors
      motor1.speed(0);
      motor2.speed(0);
      motor3.speed(0);
      motor4.speed(0);
      motor1.speed(0);
      motor2.speed(0);
      motor3.speed(0);
      motor4.speed(0);
      //Serial.println("");
    }
    if (incoming==7) { //speed select
      if(speedSelect==3)
      {
        speedSelect = 1;
        //Serial.print(speedSelect);
      }else
      {
        speedSelect++;
        //Serial.print(speedSelect);  
      }
    }

    //compatible with both modes
    if (incoming==6) { //invert up and down
      if(inverted)
      {
        invert = 1;
        inverted = false;
        //Serial.print("invert = ");
        //Serial.println(invert); 
      }else 
      {
        invert = 2;
        inverted = true;
        //Serial.print("invert = ");
        //Serial.println(invert);
      }
    } 
    if (incoming==8) { //switch jointMode and wheelMode (WARNING, may cause undesired movement if in region not available in jointMode, so test, test, test)
      
      if(wheel)
      {
        wheel = false;
        //Serial.println("jointMode enabled");
 
      }else 
      {
        wheel = true;
        //Serial.println("wheelMode enabled");
      }
    }     
 
    //jointMode
    if (incoming==11) { //jointNorth
      jointNorth();
    }
    if (incoming==12) { //jointRight
      jointRight();
    }
    if (incoming==13) { //jointSouth
      jointSouth();
    }
    if (incoming==14) { //jointLeft
      jointLeft();
    }
    if (incoming==9) {  //angle up
      a = (a + angleIncrement);
      //Serial.println(a);   
    }
    if (incoming==10) { //angle down
      a = (a - angleIncrement);
      //Serial.println(a);   
    }
  }
}

chassis.stl

Plain text
The body of the robot.
solid solidname
 facet normal -0.00000000 0.99144542 0.13052198
  outer loop
    vertex -107.00000000 -46.93184280 15.96790695
    vertex -110.00000000 -46.93184280 15.96790695
    vertex -107.00000000 -46.99998856 16.48554230
  endloop
 endfacet
 facet normal 0.00000000 0.99144542 0.13052198
  outer loop
    vertex -107.00000000 -46.99998856 16.48554230
    vertex -110.00000000 -46.93184280 15.96790695
    vertex -110.00000000 -46.99998856 16.48554230
  endloop
 endfacet
 facet normal 0.00000000 0.99144554 -0.13052152
  outer loop
    vertex -107.00000000 -46.99998856 16.48554230
    vertex -110.00000000 -46.99998856 16.48554230
    vertex -110.00000000 -46.93184280 17.00317955
  endloop
 endfacet
 facet normal 0.00000000 0.92387664 0.38269034
  outer loop
    vertex -110.00000000 -46.93184280 15.96790695
    vertex -107.00000000 -46.93184280 15.96790695
    vertex -110.00000000 -46.73203659 15.48554230
  endloop
 endfacet
 facet normal 0.00000000 0.92387664 0.38269034
  outer loop
    vertex -110.00000000 -46.73203659 15.48554230
    vertex -107.00000000 -46.93184280 15.96790695
    vertex -107.00000000 -46.73203659 15.48554230
  endloop
 endfacet
 facet normal 0.00000000 0.79336280 0.60874921
  outer loop
    vertex -110.00000000 -46.73203659 15.48554230
    vertex -107.00000000 -46.73203659 15.48554230
    vertex -110.00000000 -46.41421127 15.07133102
  endloop
 endfacet
 facet normal 0.00000000 0.79336280 0.60874921
  outer loop
    vertex -110.00000000 -46.41421127 15.07133102
    vertex -107.00000000 -46.73203659 15.48554230
    vertex -107.00000000 -46.41421127 15.07133102
  endloop
 endfacet
 facet normal 0.00000000 0.60875940 0.79335481
  outer loop
    vertex -110.00000000 -46.41421127 15.07133102
    vertex -107.00000000 -46.41421127 15.07133102
    vertex -110.00000000 -45.99999619 14.75349426
  endloop
 endfacet
 facet normal 0.00000000 0.60875940 0.79335481
  outer loop
    vertex -110.00000000 -45.99999619 14.75349426
    vertex -107.00000000 -46.41421127 15.07133102
    vertex -107.00000000 -45.99999619 14.75349426
  endloop
 endfacet
 facet normal 0.00000000 0.38268667 0.92387813
  outer loop
    vertex -110.00000000 -45.99999619 14.75349426
    vertex -107.00000000 -45.99999619 14.75349426
    vertex -110.00000000 -45.51763535 14.55369186
  endloop
 endfacet
 facet normal 0.00000000 0.38268667 0.92387813
  outer loop
    vertex -110.00000000 -45.51763535 14.55369186
    vertex -107.00000000 -45.99999619 14.75349426
    vertex -107.00000000 -45.51763535 14.55369186
  endloop
 endfacet
 facet normal 0.00000000 0.13052823 0.99144465
  outer loop
    vertex -110.00000000 -45.51763535 14.55369186
    vertex -107.00000000 -45.51763535 14.55369186
    vertex -110.00000000 -44.99999619 14.48554230
  endloop
 endfacet
 facet normal 0.00000000 0.13052823 0.99144465
  outer loop
    vertex -110.00000000 -44.99999619 14.48554230
    vertex -107.00000000 -45.51763535 14.55369186
    vertex -107.00000000 -44.99999619 14.48554230
  endloop
 endfacet
 facet normal 0.00000000 -0.13052823 0.99144465
  outer loop
    vertex -110.00000000 -44.99999619 14.48554230
    vertex -107.00000000 -44.99999619 14.48554230
    vertex -110.00000000 -44.48235703 14.55369186
  endloop
 endfacet
 facet normal 0.00000000 -0.13052823 0.99144465
  outer loop
    vertex -110.00000000 -44.48235703 14.55369186
    vertex -107.00000000 -44.99999619 14.48554230
    vertex -107.00000000 -44.48235703 14.55369186
  endloop
 endfacet
 facet normal 0.00000000 -0.38268667 0.92387813
  outer loop
    vertex -110.00000000 -44.48235703 14.55369186
    vertex -107.00000000 -44.48235703 14.55369186
    vertex -110.00000000 -43.99999619 14.75349426
  endloop
 endfacet
 facet normal 0.00000000 -0.38268667 0.92387813
  outer loop
    vertex -110.00000000 -43.99999619 14.75349426
    vertex -107.00000000 -44.48235703 14.55369186
    vertex -107.00000000 -43.99999619 14.75349426
  endloop
 endfacet
 facet normal 0.00000000 -0.60875940 0.79335481
  outer loop
    vertex -110.00000000 -43.99999619 14.75349426
    vertex -107.00000000 -43.99999619 14.75349426
    vertex -110.00000000 -43.58578110 15.07133102
  endloop
 endfacet
 facet normal 0.00000000 -0.60875940 0.79335481
  outer loop
    vertex -110.00000000 -43.58578110 15.07133102
    vertex -107.00000000 -43.99999619 14.75349426
    vertex -107.00000000 -43.58578110 15.07133102
  endloop
 endfacet
 facet normal 0.00000000 -0.79335564 0.60875833
  outer loop
    vertex -110.00000000 -43.58578110 15.07133102
    vertex -107.00000000 -43.58578110 15.07133102
    vertex -110.00000000 -43.26794815 15.48554230
  endloop
 endfacet
 facet normal 0.00000000 -0.79335564 0.60875833
  outer loop
    vertex -110.00000000 -43.26794815 15.48554230
    vertex -107.00000000 -43.58578110 15.07133102
    vertex -107.00000000 -43.26794815 15.48554230
  endloop
 endfacet
 facet normal 0.00000000 -0.92387664 0.38269034
  outer loop
    vertex -110.00000000 -43.26794815 15.48554230
    vertex -107.00000000 -43.26794815 15.48554230
    vertex -110.00000000 -43.06814194 15.96790695
  endloop
 endfacet
 facet normal 0.00000000 -0.92387664 0.38269034
  outer loop
    vertex -110.00000000 -43.06814194 15.96790695
    vertex -107.00000000 -43.26794815 15.48554230
    vertex -107.00000000 -43.06814194 15.96790695
  endloop
 endfacet
 facet normal 0.00000000 -0.99144542 0.13052198
  outer loop
    vertex -110.00000000 -43.06814194 15.96790695
    vertex -107.00000000 -43.06814194 15.96790695
    vertex -110.00000000 -42.99999619 16.48554230
  endloop
 endfacet
 facet normal 0.00000000 -0.99144542 0.13052198
  outer loop
    vertex -110.00000000 -42.99999619 16.48554230
    vertex -107.00000000 -43.06814194 15.96790695
    vertex -107.00000000 -42.99999619 16.48554230
  endloop
 endfacet
 facet normal -0.00000000 -0.99144554 -0.13052152
  outer loop
    vertex -110.00000000 -42.99999619 16.48554230
    vertex -107.00000000 -42.99999619 16.48554230
    vertex -110.00000000 -43.06814194 17.00317955
  endloop
 endfacet
 facet normal 0.00000000 -0.99144554 -0.13052152
  outer loop
    vertex -110.00000000 -43.06814194 17.00317955
    vertex -107.00000000 -42.99999619 16.48554230
    vertex -107.00000000 -43.06814194 17.00317955
  endloop
 endfacet
 facet normal -0.00000000 -0.92387611 -0.38269162
  outer loop
    vertex -110.00000000 -43.06814194 17.00317955
    vertex -107.00000000 -43.06814194 17.00317955
    vertex -110.00000000 -43.26794815 17.48554230
  endloop
 endfacet
 facet normal 0.00000000 -0.92387611 -0.38269162
  outer loop
    vertex -110.00000000 -43.26794815 17.48554230
    vertex -107.00000000 -43.06814194 17.00317955
    vertex -107.00000000 -43.26794815 17.48554230
  endloop
 endfacet
 facet normal -0.00000000 -0.79335701 -0.60875660
  outer loop
    vertex -110.00000000 -43.26794815 17.48554230
    vertex -107.00000000 -43.26794815 17.48554230
    vertex -110.00000000 -43.58578110 17.89975548
  endloop
 endfacet
 facet normal 0.00000000 -0.79335701 -0.60875660
  outer loop
    vertex -110.00000000 -43.58578110 17.89975548
    vertex -107.00000000 -43.26794815 17.48554230
    vertex -107.00000000 -43.58578110 17.89975548
  endloop
 endfacet
 facet normal -0.00000000 -0.60875940 -0.79335481
  outer loop
    vertex -110.00000000 -43.58578110 17.89975548
    vertex -107.00000000 -43.58578110 17.89975548
    vertex -110.00000000 -43.99999619 18.21759224
  endloop
 endfacet
 facet normal 0.00000000 -0.60875940 -0.79335481
  outer loop
    vertex -110.00000000 -43.99999619 18.21759224
    vertex -107.00000000 -43.58578110 17.89975548
    vertex -107.00000000 -43.99999619 18.21759224
  endloop
 endfacet
 facet normal -0.00000000 -0.38268667 -0.92387813
  outer loop
    vertex -110.00000000 -43.99999619 18.21759224
    vertex -107.00000000 -43.99999619 18.21759224
    vertex -110.00000000 -44.48235703 18.41739464
  endloop
 endfacet
 facet normal 0.00000000 -0.38268667 -0.92387813
  outer loop
    vertex -110.00000000 -44.48235703 18.41739464
    vertex -107.00000000 -43.99999619 18.21759224
    vertex -107.00000000 -44.48235703 18.41739464
  endloop
 endfacet
 facet normal -0.00000000 -0.13052464 -0.99144512
  outer loop
    vertex -110.00000000 -44.48235703 18.41739464
    vertex -107.00000000 -44.48235703 18.41739464
    vertex -110.00000000 -44.99999619 18.48554230
  endloop
 endfacet
 facet normal 0.00000000 -0.13052464 -0.99144512
  outer loop
    vertex -110.00000000 -44.99999619 18.48554230
    vertex -107.00000000 -44.48235703 18.41739464
    vertex -107.00000000 -44.99999619 18.48554230
  endloop
 endfacet
 facet normal 0.00000000 0.13052464 -0.99144512
  outer loop
    vertex -110.00000000 -44.99999619 18.48554230
    vertex -107.00000000 -44.99999619 18.48554230
    vertex -110.00000000 -45.51763535 18.41739464
  endloop
 endfacet
 facet normal 0.00000000 0.13052464 -0.99144512
  outer loop
    vertex -110.00000000 -45.51763535 18.41739464
    vertex -107.00000000 -44.99999619 18.48554230
    vertex -107.00000000 -45.51763535 18.41739464
  endloop
 endfacet
 facet normal 0.00000000 0.38268667 -0.92387813
  outer loop
    vertex -110.00000000 -45.51763535 18.41739464
    vertex -107.00000000 -45.51763535 18.41739464
    vertex -110.00000000 -45.99999619 18.21759224
  endloop
 endfacet
 facet normal 0.00000000 0.38268667 -0.92387813
  outer loop
    vertex -110.00000000 -45.99999619 18.21759224
    vertex -107.00000000 -45.51763535 18.41739464
    vertex -107.00000000 -45.99999619 18.21759224
  endloop
 endfacet
 facet normal 0.00000000 0.60875940 -0.79335481
  outer loop
    vertex -110.00000000 -45.99999619 18.21759224
    vertex -107.00000000 -45.99999619 18.21759224
    vertex -110.00000000 -46.41421127 17.89975548
  endloop
 endfacet
 facet normal 0.00000000 0.60875940 -0.79335481
  outer loop
    vertex -110.00000000 -46.41421127 17.89975548
    vertex -107.00000000 -45.99999619 18.21759224
    vertex -107.00000000 -46.41421127 17.89975548
  endloop
 endfacet
 facet normal 0.00000000 0.79336405 -0.60874736
  outer loop
    vertex -110.00000000 -46.41421127 17.89975548
    vertex -107.00000000 -46.41421127 17.89975548
    vertex -110.00000000 -46.73203659 17.48554230
  endloop
 endfacet
 facet normal 0.00000000 0.79336405 -0.60874736
  outer loop
    vertex -110.00000000 -46.73203659 17.48554230
    vertex -107.00000000 -46.41421127 17.89975548
    vertex -107.00000000 -46.73203659 17.48554230
  endloop
 endfacet
 facet normal 0.00000000 0.92387611 -0.38269162
  outer loop
    vertex -110.00000000 -46.73203659 17.48554230
    vertex -107.00000000 -46.73203659 17.48554230
    vertex -110.00000000 -46.93184280 17.00317955
  endloop
 endfacet
 facet normal 0.00000000 0.92387611 -0.38269162
  outer loop
    vertex -110.00000000 -46.93184280 17.00317955
    vertex -107.00000000 -46.73203659 17.48554230
    vertex -107.00000000 -46.93184280 17.00317955
  endloop
 endfacet
 facet normal 0.00000000 0.99144554 -0.13052152
  outer loop
    vertex -110.00000000 -46.93184280 17.00317955
    vertex -107.00000000 -46.93184280 17.00317955
    vertex -107.00000000 -46.99998856 16.48554230
  endloop
 endfacet
 facet normal -0.00000000 0.99144542 0.13052198
  outer loop
    vertex -107.00000000 -23.93185043 15.96791077
    vertex -110.00000000 -23.93185043 15.96791077
    vertex -107.00000000 -23.99999619 16.48554611
  endloop
 endfacet
 facet normal 0.00000000 0.99144542 0.13052198
  outer loop
    vertex -107.00000000 -23.99999619 16.48554611
    vertex -110.00000000 -23.93185043 15.96791077
    vertex -110.00000000 -23.99999619 16.48554611
  endloop
 endfacet
 facet normal 0.00000000 0.99144554 -0.13052152
  outer loop
    vertex -107.00000000 -23.99999619 16.48554611
    vertex -110.00000000 -23.99999619 16.48554611
    vertex -110.00000000 -23.93185043 17.00318336
  endloop
 endfacet
 facet normal 0.00000000 0.92387664 0.38269034
  outer loop
    vertex -110.00000000 -23.93185043 15.96791077
    vertex -107.00000000 -23.93185043 15.96791077
    vertex -110.00000000 -23.73204422 15.48554611
  endloop
 endfacet
 facet normal 0.00000000 0.92387664 0.38269034
  outer loop
    vertex -110.00000000 -23.73204422 15.48554611
    vertex -107.00000000 -23.93185043 15.96791077
    vertex -107.00000000 -23.73204422 15.48554611
  endloop
 endfacet
 facet normal 0.00000000 0.79335564 0.60875833
  outer loop
    vertex -110.00000000 -23.73204422 15.48554611
    vertex -107.00000000 -23.73204422 15.48554611
    vertex -110.00000000 -23.41421127 15.07133484
  endloop
 endfacet
 facet normal 0.00000000 0.79335564 0.60875833
  outer loop
    vertex -110.00000000 -23.41421127 15.07133484
    vertex -107.00000000 -23.73204422 15.48554611
    vertex -107.00000000 -23.41421127 15.07133484
  endloop
 endfacet
 facet normal 0.00000000 0.60875940 0.79335481
  outer loop
    vertex -110.00000000 -23.41421127 15.07133484
    vertex -107.00000000 -23.41421127 15.07133484
    vertex -110.00000000 -22.99999619 14.75349808
  endloop
 endfacet
 facet normal 0.00000000 0.60875940 0.79335481
  outer loop
    vertex -110.00000000 -22.99999619 14.75349808
    vertex -107.00000000 -23.41421127 15.07133484
    vertex -107.00000000 -22.99999619 14.75349808
  endloop
 endfacet
 facet normal 0.00000000 0.38268667 0.92387813
  outer loop
    vertex -110.00000000 -22.99999619 14.75349808
    vertex -107.00000000 -22.99999619 14.75349808
    vertex -110.00000000 -22.51763535 14.55369568
  endloop
 endfacet
 facet normal 0.00000000 0.38268667 0.92387813
  outer loop
    vertex -110.00000000 -22.51763535 14.55369568
    vertex -107.00000000 -22.99999619 14.75349808
    vertex -107.00000000 -22.51763535 14.55369568
  endloop
 endfacet
 facet normal 0.00000000 0.13052823 0.99144465
  outer loop
    vertex -110.00000000 -22.51763535 14.55369568
    vertex -107.00000000 -22.51763535 14.55369568
    vertex -110.00000000 -21.99999619 14.48554611
  endloop
 endfacet
 facet normal 0.00000000 0.13052823 0.99144465
  outer loop
    vertex -110.00000000 -21.99999619 14.48554611
    vertex -107.00000000 -22.51763535 14.55369568
    vertex -107.00000000 -21.99999619 14.48554611
  endloop
 endfacet
 facet normal 0.00000000 -0.13052823 0.99144465
  outer loop
    vertex -110.00000000 -21.99999619 14.48554611
    vertex -107.00000000 -21.99999619 14.48554611
    vertex -110.00000000 -21.48235703 14.55369568
  endloop
 endfacet
 facet normal 0.00000000 -0.13052823 0.99144465
  outer loop
    vertex -110.00000000 -21.48235703 14.55369568
    vertex -107.00000000 -21.99999619 14.48554611
    vertex -107.00000000 -21.48235703 14.55369568
  endloop
 endfacet
 facet normal 0.00000000 -0.38268667 0.92387813
  outer loop
    vertex -110.00000000 -21.48235703 14.55369568
    vertex -107.00000000 -21.48235703 14.55369568
    vertex -110.00000000 -20.99999619 14.75349808
  endloop
 endfacet
 facet normal 0.00000000 -0.38268667 0.92387813
  outer loop
    vertex -110.00000000 -20.99999619 14.75349808
    vertex -107.00000000 -21.48235703 14.55369568
    vertex -107.00000000 -20.99999619 14.75349808
  endloop
 endfacet
 facet normal 0.00000000 -0.60875940 0.79335481
  outer loop
    vertex -110.00000000 -20.99999619 14.75349808
    vertex -107.00000000 -20.99999619 14.75349808
    vertex -110.00000000 -20.58578110 15.07133484
  endloop
 endfacet
 facet normal 0.00000000 -0.60875940 0.79335481
  outer loop
    vertex -110.00000000 -20.58578110 15.07133484
    vertex -107.00000000 -20.99999619 14.75349808
    vertex -107.00000000 -20.58578110 15.07133484
  endloop
 endfacet
 facet normal 0.00000000 -0.79335564 0.60875833
  outer loop
    vertex -110.00000000 -20.58578110 15.07133484
    vertex -107.00000000 -20.58578110 15.07133484
    vertex -110.00000000 -20.26794815 15.48554611
  endloop
 endfacet
 facet normal 0.00000000 -0.79335564 0.60875833
  outer loop
    vertex -110.00000000 -20.26794815 15.48554611
    vertex -107.00000000 -20.58578110 15.07133484
    vertex -107.00000000 -20.26794815 15.48554611
  endloop
 endfacet
 facet normal 0.00000000 -0.92387664 0.38269034
  outer loop
    vertex -110.00000000 -20.26794815 15.48554611
    vertex -107.00000000 -20.26794815 15.48554611
    vertex -110.00000000 -20.06814194 15.96791077
  endloop
 endfacet
 facet normal 0.00000000 -0.92387664 0.38269034
  outer loop
    vertex -110.00000000 -20.06814194 15.96791077
    vertex -107.00000000 -20.26794815 15.48554611
    vertex -107.00000000 -20.06814194 15.96791077
  endloop
 endfacet
 facet normal 0.00000000 -0.99144542 0.13052198
  outer loop
    vertex -110.00000000 -20.06814194 15.96791077
    vertex -107.00000000 -20.06814194 15.96791077
    vertex -110.00000000 -19.99999619 16.48554611
  endloop
 endfacet
 facet normal 0.00000000 -0.99144542 0.13052198
  outer loop
    vertex -110.00000000 -19.99999619 16.48554611
    vertex -107.00000000 -20.06814194 15.96791077
    vertex -107.00000000 -19.99999619 16.48554611
  endloop
 endfacet
 facet normal -0.00000000 -0.99144554 -0.13052152
  outer loop
    vertex -110.00000000 -19.99999619 16.48554611
    vertex -107.00000000 -19.99999619 16.48554611
    vertex -110.00000000 -20.06814194 17.00318336
  endloop
 endfacet
 facet normal 0.00000000 -0.99144554 -0.13052152
  outer loop
    vertex -110.00000000 -20.06814194 17.00318336
    vertex -107.00000000 -19.99999619 16.48554611
    vertex -107.00000000 -20.06814194 17.00318336
  endloop
 endfacet
 facet normal -0.00000000 -0.92387611 -0.38269162
  outer loop
    vertex -110.00000000 -20.06814194 17.00318336
    vertex -107.00000000 -20.06814194 17.00318336
    vertex -110.00000000 -20.26794815 17.48554611
  endloop
 endfacet
 facet normal 0.00000000 -0.92387611 -0.38269162
  outer loop
    vertex -110.00000000 -20.26794815 17.48554611
    vertex -107.00000000 -20.06814194 17.00318336
    vertex -107.00000000 -20.26794815 17.48554611
  endloop
 endfacet
 facet normal -0.00000000 -0.79335701 -0.60875660
  outer loop
    vertex -110.00000000 -20.26794815 17.48554611
    vertex -107.00000000 -20.26794815 17.48554611
    vertex -110.00000000 -20.58578110 17.89975929
  endloop
 endfacet
 facet normal 0.00000000 -0.79335701 -0.60875660
  outer loop
    vertex -110.00000000 -20.58578110 17.89975929
    vertex -107.00000000 -20.26794815 17.48554611
    vertex -107.00000000 -20.58578110 17.89975929
  endloop
 endfacet
 facet normal -0.00000000 -0.60875940 -0.79335481
  outer loop
    vertex -110.00000000 -20.58578110 17.89975929
    vertex -107.00000000 -20.58578110 17.89975929
    vertex -110.00000000 -20.99999619 18.21759605
  endloop
 endfacet
 facet normal 0.00000000 -0.60875940 -0.79335481
  outer loop
    vertex -110.00000000 -20.99999619 18.21759605
    vertex -107.00000000 -20.58578110 17.89975929
    vertex -107.00000000 -20.99999619 18.21759605
  endloop
 endfacet
 facet normal -0.00000000 -0.38268667 -0.92387813
  outer loop
    vertex -110.00000000 -20.99999619 18.21759605
    vertex -107.00000000 -20.99999619 18.21759605
    vertex -110.00000000 -21.48235703 18.41739845
  endloop
 endfacet
 facet normal 0.00000000 -0.38268667 -0.92387813
  outer loop
    vertex -110.00000000 -21.48235703 18.41739845
    vertex -107.00000000 -20.99999619 18.21759605
    vertex -107.00000000 -21.48235703 18.41739845
  endloop
 endfacet
 facet normal -0.00000000 -0.13052464 -0.99144512
  outer loop
    vertex -110.00000000 -21.48235703 18.41739845
    vertex -107.00000000 -21.48235703 18.41739845
    vertex -110.00000000 -21.99999619 18.48554611
  endloop
 endfacet
 facet normal 0.00000000 -0.13052464 -0.99144512
  outer loop
    vertex -110.00000000 -21.99999619 18.48554611
    vertex -107.00000000 -21.48235703 18.41739845
    vertex -107.00000000 -21.99999619 18.48554611
  endloop
 endfacet
 facet normal 0.00000000 0.13052464 -0.99144512
  outer loop
    vertex -110.00000000 -21.99999619 18.48554611
    vertex -107.00000000 -21.99999619 18.48554611
    vertex -110.00000000 -22.51763535 18.41739845
  endloop
 endfacet
 facet normal 0.00000000 0.13052464 -0.99144512
  outer loop
    vertex -110.00000000 -22.51763535 18.41739845
    vertex -107.00000000 -21.99999619 18.48554611
    vertex -107.00000000 -22.51763535 18.41739845
  endloop
 endfacet
 facet normal 0.00000000 0.38268667 -0.92387813
  outer loop
    vertex -110.00000000 -22.51763535 18.41739845
    vertex -107.00000000 -22.51763535 18.41739845
    vertex -110.00000000 -22.99999619 18.21759605
  endloop
 endfacet
 facet normal 0.00000000 0.38268667 -0.92387813
  outer loop
    vertex -110.00000000 -22.99999619 18.21759605
    vertex -107.00000000 -22.51763535 18.41739845
    vertex -107.00000000 -22.99999619 18.21759605
  endloop
 endfacet
 facet normal 0.00000000 0.60875940 -0.79335481
  outer loop
    vertex -110.00000000 -22.99999619 18.21759605
    vertex -107.00000000 -22.99999619 18.21759605
    vertex -110.00000000 -23.41421127 17.89975929
  endloop
 endfacet
 facet normal 0.00000000 0.60875940 -0.79335481
  outer loop
    vertex -110.00000000 -23.41421127 17.89975929
    vertex -107.00000000 -22.99999619 18.21759605
    vertex -107.00000000 -23.41421127 17.89975929
  endloop
 endfacet
 facet normal 0.00000000 0.79335701 -0.60875660
  outer loop
    vertex -110.00000000 -23.41421127 17.89975929
    vertex -107.00000000 -23.41421127 17.89975929
    vertex -110.00000000 -23.73204422 17.48554611
  endloop
 endfacet
 facet normal 0.00000000 0.79335701 -0.60875660
  outer loop
    vertex -110.00000000 -23.73204422 17.48554611
    vertex -107.00000000 -23.41421127 17.89975929
    vertex -107.00000000 -23.73204422 17.48554611
  endloop
 endfacet
 facet normal 0.00000000 0.92387611 -0.38269162
  outer loop
    vertex -110.00000000 -23.73204422 17.48554611
    vertex -107.00000000 -23.73204422 17.48554611
    vertex -110.00000000 -23.93185043 17.00318336
  endloop
 endfacet
 facet normal 0.00000000 0.92387611 -0.38269162
  outer loop
    vertex -110.00000000 -23.93185043 17.00318336
    vertex -107.00000000 -23.73204422 17.48554611
    vertex -107.00000000 -23.93185043 17.00318336
  endloop
 endfacet
 facet normal 0.00000000 0.99144554 -0.13052152
  outer loop
    vertex -110.00000000 -23.93185043 17.00318336
    vertex -107.00000000 -23.93185043 17.00318336
    vertex -107.00000000 -23.99999619 16.48554611
  endloop
 endfacet
 facet normal -0.00000000 0.99144477 0.13052724
  outer loop
    vertex -107.00000000 9.48577118 33.72245407
    vertex -110.00000000 9.48577118 33.72245407
    vertex -107.00000000 9.44999313 33.99421310
  endloop
 endfacet
 facet normal 0.00000000 0.99144477 0.13052724
  outer loop
    vertex -107.00000000 9.44999313 33.99421310
    vertex -110.00000000 9.48577118 33.72245407
    vertex -110.00000000 9.44999313 33.99421310
  endloop
 endfacet
 facet normal 0.00000000 0.99144495 -0.13052544
  outer loop
    vertex -107.00000000 9.44999313 33.99421310
    vertex -110.00000000 9.44999313 33.99421310
    vertex -110.00000000 9.48577118 34.26597595
  endloop
 endfacet
 facet normal 0.00000000 0.92388231 0.38267669
  outer loop
    vertex -110.00000000 9.48577118 33.72245407
    vertex -107.00000000 9.48577118 33.72245407
    vertex -110.00000000 9.59066391 33.46921539
  endloop
 endfacet
 facet normal 0.00000000 0.92388231 0.38267669
  outer loop
    vertex -110.00000000 9.59066391 33.46921539
    vertex -107.00000000 9.48577118 33.72245407
    vertex -107.00000000 9.59066391 33.46921539
  endloop
 endfacet
 facet normal 0.00000000 0.79335344 0.60876137
  outer loop
    vertex -110.00000000 9.59066391 33.46921539
    vertex -107.00000000 9.59066391 33.46921539
    vertex -110.00000000 9.75753021 33.25175095
  endloop
 endfacet
 facet normal 0.00000000 0.79335344 0.60876137
  outer loop
    vertex -110.00000000 9.75753021 33.25175095
    vertex -107.00000000 9.59066391 33.46921539
    vertex -107.00000000 9.75753021 33.25175095
  endloop
 endfacet
 facet normal 0.00000000 0.60876805 0.79334825
  outer loop
    vertex -110.00000000 9.75753021 33.25175095
    vertex -107.00000000 9.75753021 33.25175095
    vertex -110.00000000 9.97499084 33.08488464
  endloop
 endfacet
 facet normal 0.00000000 0.60876805 0.79334825
  outer loop
    vertex -110.00000000 9.97499084 33.08488464
    vertex -107.00000000 9.75753021 33.25175095
    vertex -107.00000000 9.97499084 33.08488464
  endloop
 endfacet
 facet normal 0.00000000 0.38267174 0.92388427
  outer loop
    vertex -110.00000000 9.97499084 33.08488464
    vertex -107.00000000 9.97499084 33.08488464
    vertex -110.00000000 10.22823334 32.97999191
  endloop
 endfacet
 facet normal 0.00000000 0.38267174 0.92388427
  outer loop
    vertex -110.00000000 10.22823334 32.97999191
    vertex -107.00000000 9.97499084 33.08488464
    vertex -107.00000000 10.22823334 32.97999191
  endloop
 endfacet
 facet normal 0.00000000 0.13052724 0.99144477
  outer loop
    vertex -110.00000000 10.22823334 32.97999191
    vertex -107.00000000 10.22823334 32.97999191
    vertex -110.00000000 10.49999237 32.94421387
  endloop
 endfacet
 facet normal 0.00000000 0.13052724 0.99144477
  outer loop
    vertex -110.00000000 10.49999237 32.94421387
    vertex -107.00000000 10.22823334 32.97999191
    vertex -107.00000000 10.49999237 32.94421387
  endloop
 endfacet
 facet normal 0.00000000 -0.13052724 0.99144477
  outer loop
    vertex -110.00000000 10.49999237 32.94421387
    vertex -107.00000000 10.49999237 32.94421387
    vertex -110.00000000 10.77175140 32.97999191
  endloop
 endfacet
 facet normal 0.00000000 -0.13052724 0.99144477
  outer loop
    vertex -110.00000000 10.77175140 32.97999191
    vertex -107.00000000 10.49999237 32.94421387
    vertex -107.00000000 10.77175140 32.97999191
  endloop
 endfacet
 facet normal 0.00000000 -0.38267174 0.92388427
  outer loop
    vertex -110.00000000 10.77175140 32.97999191
    vertex -107.00000000 10.77175140 32.97999191
    vertex -110.00000000 11.02499390 33.08488464
  endloop
 endfacet
 facet normal 0.00000000 -0.38267174 0.92388427
  outer loop
    vertex -110.00000000 11.02499390 33.08488464
    vertex -107.00000000 10.77175140 32.97999191
    vertex -107.00000000 11.02499390 33.08488464
  endloop
 endfacet
 facet normal 0.00000000 -0.60876805 0.79334825
  outer loop
    vertex -110.00000000 11.02499390 33.08488464
    vertex -107.00000000 11.02499390 33.08488464
    vertex -110.00000000 11.24245453 33.25175095
  endloop
 endfacet
 facet normal 0.00000000 -0.60876805 0.79334825
  outer loop
    vertex -110.00000000 11.24245453 33.25175095
    vertex -107.00000000 11.02499390 33.08488464
    vertex -107.00000000 11.24245453 33.25175095
  endloop
 endfacet
 facet normal 0.00000000 -0.79335344 0.60876137
  outer loop
    vertex -110.00000000 11.24245453 33.25175095
    vertex -107.00000000 11.24245453 33.25175095
    vertex -110.00000000 11.40932083 33.46921539
  endloop
 endfacet
 facet normal 0.00000000 -0.79335344 0.60876137
  outer loop
    vertex -110.00000000 11.40932083 33.46921539
    vertex -107.00000000 11.24245453 33.25175095
    vertex -107.00000000 11.40932083 33.46921539
  endloop
 endfacet
 facet normal 0.00000000 -0.92388231 0.38267669
  outer loop
    vertex -110.00000000 11.40932083 33.46921539
    vertex -107.00000000 11.40932083 33.46921539
    vertex -110.00000000 11.51421356 33.72245407
  endloop
 endfacet
 facet normal 0.00000000 -0.92388231 0.38267669
  outer loop
    vertex -110.00000000 11.51421356 33.72245407
    vertex -107.00000000 11.40932083 33.46921539
    vertex -107.00000000 11.51421356 33.72245407
  endloop
 endfacet
 facet normal 0.00000000 -0.99144477 0.13052724
  outer loop
    vertex -110.00000000 11.51421356 33.72245407
    vertex -107.00000000 11.51421356 33.72245407
    vertex -110.00000000 11.54999161 33.99421310
  endloop
 endfacet
 facet normal 0.00000000 -0.99144477 0.13052724
  outer loop
    vertex -110.00000000 11.54999161 33.99421310
    vertex -107.00000000 11.51421356 33.72245407
    vertex -107.00000000 11.54999161 33.99421310
  endloop
 endfacet
 facet normal -0.00000000 -0.99144495 -0.13052544
  outer loop
    vertex -110.00000000 11.54999161 33.99421310
    vertex -107.00000000 11.54999161 33.99421310
    vertex -110.00000000 11.51421356 34.26597595
  endloop
 endfacet
 facet normal 0.00000000 -0.99144495 -0.13052544
  outer loop
    vertex -110.00000000 11.51421356 34.26597595
    vertex -107.00000000 11.54999161 33.99421310
    vertex -107.00000000 11.51421356 34.26597595
  endloop
 endfacet
 facet normal -0.00000000 -0.92388231 -0.38267669
  outer loop
    vertex -110.00000000 11.51421356 34.26597595
    vertex -107.00000000 11.51421356 34.26597595
    vertex -110.00000000 11.40932083 34.51921463
  endloop
 endfacet
 facet normal 0.00000000 -0.92388231 -0.38267669
  outer loop
    vertex -110.00000000 11.40932083 34.51921463
    vertex -107.00000000 11.51421356 34.26597595
    vertex -107.00000000 11.40932083 34.51921463
  endloop
 endfacet
 facet normal -0.00000000 -0.79334825 -0.60876805
  outer loop
    vertex -110.00000000 11.40932083 34.51921463
    vertex -107.00000000 11.40932083 34.51921463
    vertex -110.00000000 11.24245453 34.73667526
  endloop
 endfacet
 facet normal 0.00000000 -0.79334825 -0.60876805
  outer loop
    vertex -110.00000000 11.24245453 34.73667526
    vertex -107.00000000 11.40932083 34.51921463
    vertex -107.00000000 11.24245453 34.73667526
  endloop
 endfacet
 facet normal -0.00000000 -0.60876805 -0.79334825
  outer loop
    vertex -110.00000000 11.24245453 34.73667526
    vertex -107.00000000 11.24245453 34.73667526
    vertex -110.00000000 11.02499390 34.90354156
  endloop
 endfacet
 facet normal 0.00000000 -0.60876805 -0.79334825
  outer loop
    vertex -110.00000000 11.02499390 34.90354156
    vertex -107.00000000 11.24245453 34.73667526
    vertex -107.00000000 11.02499390 34.90354156
  endloop
 endfacet
 facet normal -0.00000000 -0.38267174 -0.92388427
  outer loop
    vertex -110.00000000 11.02499390 34.90354156
    vertex -107.00000000 11.02499390 34.90354156
    vertex -110.00000000 10.77175140 35.00843430
  endloop
 endfacet
 facet normal 0.00000000 -0.38267174 -0.92388427
  outer loop
    vertex -110.00000000 10.77175140 35.00843430
    vertex -107.00000000 11.02499390 34.90354156
    vertex -107.00000000 10.77175140 35.00843430
  endloop
 endfacet
 facet normal -0.00000000 -0.13052724 -0.99144477
  outer loop
    vertex -110.00000000 10.77175140 35.00843430
    vertex -107.00000000 10.77175140 35.00843430
    vertex -110.00000000 10.49999237 35.04421234
  endloop
 endfacet
 facet normal 0.00000000 -0.13052724 -0.99144477
  outer loop
    vertex -110.00000000 10.49999237 35.04421234
    vertex -107.00000000 10.77175140 35.00843430
    vertex -107.00000000 10.49999237 35.04421234
  endloop
 endfacet
 facet normal 0.00000000 0.13052724 -0.99144477
  outer loop
    vertex -110.00000000 10.49999237 35.04421234
    vertex -107.00000000 10.49999237 35.04421234
    vertex -110.00000000 10.22823334 35.00843430
  endloop
 endfacet
 facet normal 0.00000000 0.13052724 -0.99144477
  outer loop
    vertex -110.00000000 10.22823334 35.00843430
    vertex -107.00000000 10.49999237 35.04421234
    vertex -107.00000000 10.22823334 35.00843430
  endloop
 endfacet
 facet normal 0.00000000 0.38267174 -0.92388427
  outer loop
    vertex -110.00000000 10.22823334 35.00843430
    vertex -107.00000000 10.22823334 35.00843430
    vertex -110.00000000 9.97499084 34.90354156
  endloop
 endfacet
 facet normal 0.00000000 0.38267174 -0.92388427
  outer loop
    vertex -110.00000000 9.97499084 34.90354156
    vertex -107.00000000 10.22823334 35.00843430
    vertex -107.00000000 9.97499084 34.90354156
  endloop
 endfacet
 facet normal 0.00000000 0.60876805 -0.79334825
  outer loop
    vertex -110.00000000 9.97499084 34.90354156
    vertex -107.00000000 9.97499084 34.90354156
    vertex -110.00000000 9.75753021 34.73667526
  endloop
 endfacet
 facet normal 0.00000000 0.60876805 -0.79334825
  outer loop
    vertex -110.00000000 9.75753021 34.73667526
    vertex -107.00000000 9.97499084 34.90354156
    vertex -107.00000000 9.75753021 34.73667526
  endloop
 endfacet
 facet normal 0.00000000 0.79334825 -0.60876805
  outer loop
    vertex -110.00000000 9.75753021 34.73667526
    vertex -107.00000000 9.75753021 34.73667526
    vertex -110.00000000 9.59066391 34.51921463
  endloop
 endfacet
 facet normal 0.00000000 0.79334825 -0.60876805
  outer loop
    vertex -110.00000000 9.59066391 34.51921463
    vertex -107.00000000 9.75753021 34.73667526
    vertex -107.00000000 9.59066391 34.51921463
  endloop
 endfacet
 facet normal 0.00000000 0.92388231 -0.38267669
  outer loop
    vertex -110.00000000 9.59066391 34.51921463
    vertex -107.00000000 9.59066391 34.51921463
    vertex -110.00000000 9.48577118 34.26597595
  endloop
 endfacet
 facet normal 0.00000000 0.92388231 -0.38267669
  outer loop
    vertex -110.00000000 9.48577118 34.26597595
    vertex -107.00000000 9.59066391 34.51921463
    vertex -107.00000000 9.48577118 34.26597595
...

This file has been truncated, please download it to see its full contents.

Update 2

Plain text
Our team is planning on making two improvements to our robot. First is creating a casing for the camera, so that it may be mounted to a servo that will allow the driver to adjust the cameras angle in order to get a more desirable field of view. The second is adjusting the design of the body to incorporate a more bubble like design so that it may handle the stresses of being dropped better by distributing the force throughout the curve instead of on a single edge or point
No preview (download only).

Update RMRC

Plain text
RMRC Robot Progress

Progress on our robot has primarily been focused on hardware advancement and improvement on wireless communication. We've upgraded our camera systems from the Pi Cams to using ODROIDs oCam 5MP USB 3.0 Cameras. This allows for potential flexibility in porting to only one Raspberry Pi, as it is only one Pi Cam per Pi. There is also an overall improvement to the camera system, as the oCams rolling shutter system and better camera quality should improve image recognition tests, motion detection, and general visibility to the driver. With some current troubles to work out, using the software Motion to stream our cameras, I have been able to connect both cameras at the same time

We are now using the Pi 3 B+, which is an upgrade from our past Pi with better wireless capabilities. This features gigabit and PoE capable Ethernet, and overheating protection.
Additionally we are implementing a Lepton longwave infrared (LWIR) imager with the FLiR development kit. This will be connected to the Pi via SPI port andI2C port.

With the purchase of a router, I am also researching further into wireless communication between our robot and hub computer. Progress with this includes being able to remote desktop and SSH from the hub computer to the Pi solely through the router.

Victor has been doing research into machine learning which should also aid in image recognition.

Links to hardware

http://www.hardkernel.com/main/products/prdt_info.php?g_code=G145231889365 oCam
https://www.sparkfun.com/products/13233 FLiR Dev Kit
https://www.sparkfun.com/products/14643 Raspberry Pi Kit B+
No preview (download only).

RMRC Update

Plain text
RMRC Robot Progress

	Progress on our robot has primarily been focused on hardware advancement and improvement on wireless communication.  We've upgraded our camera systems from the Pi Cams to using ODROIDs oCam 5MP USB 3.0 Cameras. This allows for potential flexibility in porting to only one Raspberry Pi, as it is only one Pi Cam per Pi. There is also an overall improvement to the camera system, as the oCams rolling shutter system and better camera quality should improve image recognition tests, motion detection, and general visibility to the driver. With some current troubles to work out, using the software Motion to stream our cameras, I have been able to connect both cameras at the same time

	We are now using the Pi 3 B+, which is an upgrade from our past Pi with better wireless capabilities. This features gigabit and PoE capable Ethernet, and overheating protection.
	Additionally we are implementing  a Lepton longwave infrared (LWIR) imager with the FLiR development kit. This will be connected to the Pi via SPI port andI2C port.

	With the purchase of a router, I am also researching further into wireless communication between our robot and hub computer. Progress with this includes being able to remote desktop and SSH from the hub computer to the Pi solely through the router. 

	Victor has been doing research into machine learning which should also aid in image recognition.

Links to hardware

http://www.hardkernel.com/main/products/prdt_info.php?g_code=G145231889365 oCam
https://www.sparkfun.com/products/13233 FLiR Dev Kit
https://www.sparkfun.com/products/14643 Raspberry Pi Kit B+

Credits

Pat Madden

Pat Madden

0 projects • 0 followers

Comments