NeoMorph

[WIP] The REAL Nav Ball Project Thread (2017 Edition)

Recommended Posts

Well, another year and I'm starting my prototyping again. But I have realised that because I haven't really coded anything for several years I am vastly out of practice. Plus the fact that I learned too many languages means I keep getting them mixed up.

Basically I need help on the KRPC to Arduino coding side!

As a programmer its tough asking for help. It means I can no longer keep up with the current systems... but as they say, "If you don't use it, you lose it!" which is very true. I suppose I could kickstart my brain if I could just see some code that lets me extract the data that my navball needs. I've seen people code software versions using KRPC which looks even harder than what I need so I know it can be done.

I'll post the requirements shortly because I need to go do some real world stuff. Oh and my brain is still hurting from trying to figure out stuff.

 

 

Link to old Nav Ball Thread ->     http://forum.kerbalspaceprogram.com/index.php?/topic/46264-wip-the-real-nav-ball-project-thread/

Edited by NeoMorph

Share this post


Link to post
Share on other sites

Oh the horrors of eBay...

Just received the heavy gear I needed for the main axis. Only when I went to try fit the gear to the axle... it doesn't fit. Measured the axle 9.98mm... gear hole... 9.18mm... and I ordered 10mm for both.

*facepalm*

So now I've got to go out and get a brand new 10mm drill and drill the hole myself... through a big chunk of metal.

Edit 2: I've now asked the supplier to send me a better one... all the other gears came out perfect... it was just this one that is a botch job. Here is one of the good ones (this is the supposed matching gear to the botched one).

odVPRtj.jpg

 

Edit: And here is the offending item....

This hole was supposed to be for a grub screw... but he somehow screwed it up and then he just left it. Also note the dents in the teeth... was this a 12 year old making it? I think I made better when I was at school.

28qgPps.jpg

XApTJoY.jpg

Edited by NeoMorph
Added photos of gear.

Share this post


Link to post
Share on other sites

Good luck on the endeavor. There has been a lot a talk about the hardware in Mulbins thread, but I have not seen a software solution anywhere. I don't want to bother the esteemed gentlemen, but Stibbons have done a lot of work on a navball display and Richfiles has been giving advice on the hardware side.

Share this post


Link to post
Share on other sites

I'm happy to help with the krpc side, if you're still wondering about that part?   Do you just want heading, pitch, and roll, referenced to the planet you're orbiting? 

Share this post


Link to post
Share on other sites

Heading, pitch and roll (or properly said, X, Y and Z axis) are the basics but then I want the rates of change for all three too... then that pesky target you get on the nav ball when you set a burn too will be translated to the error needles on the FDAI (that's the error or how far out of alignment you are to the burn target in the X, Y and Z axis). So that's 9 variables I need.

JspFHBb.jpg

Oh and thanks for the help. I've programmed in all sorts of stuff over the years, from huge mainframes to tiny embedded stuff... but living on morphine really defocuses the memory... and without memory I end up spending more time looking something up than coding these days.

The way I will set up the navball will be to have a Cage option where the switch disconnects the FDAI from the input and returns to 0, 0, 0 position (or where it thinks the 0 position is) and then I just offset the ball using rotary encoders to align the ball... pretty much like how the Apollo Astronauts did...

 

I'm also going to have to select the guidance mode from surface to orbital a target which should affect the FDAI 8-ball like the KSP navball.

 

Changing the guidance mode is easy (joystick button) but I don't know (yet) how it affects the data coming out to the nav ball. My motors can change the orientation really quickly but I think I will include a ramping system to stop any sudden jolts (I think I broke prototype 4 that way... may have been 5). Because my old version wasn't balance right it was like something had hit the prototype with a metal bar. I had used 2 point support made out of crappy acrylic sheet layered together and the thing just shattered when I switched instantly from prograde to retrograde in a tiny craft. To say I jumped when the thing just disintegrated in front of me was an understatement.

I will probably shift to weaker motors when I build a production model design (if I do that is) but I want to see how fast I can drive he changes without it falling apart. 

The reason for this is that I'm using 10mm acrylic to make the cage and outer chassis so you can see the thing working inside. If I stress test it and it stays working I won't even need to switch to metal.

Oh and here is how the ball is actually two hemispheres connected through a central disk of metal... and actually the pitch and yaw motors are INSIDE the ball.

O8WbTq4.jpg

3FdSIaB.jpg

 

Edited by NeoMorph

Share this post


Link to post
Share on other sites

Well... got some good news...

Quote

Hi, dear customer,
Thanks for your picture. We apologize for the problem/. Pls take ot easy, we will be responsible for your purchase. Thanks.
Would you mena that the large gear was defective and in wrong bore diameter, right? To solve it, we would like to resend a new and correct bore size large to you, is that Ok? 
Look for your reply. Thanks. 
Have a nice day! : )

Best regards

I so love Chinglish... heh. But the good news is they are sending one out with the right bore size.

Share this post


Link to post
Share on other sites

Even more good news... these arrived...

 

SboHl1i.jpg

can anyone guess what they are?

They basically replace this record player thing in the 1960's FDAI...

pMDL907.png

 

 

 

Share this post


Link to post
Share on other sites
21 hours ago, artwhaley said:

I'm happy to help with the krpc side, if you're still wondering about that part?   Do you just want heading, pitch, and roll, referenced to the planet you're orbiting? 

Art, do you happen to do physical interfaces too? 

Share this post


Link to post
Share on other sites

The physical side of it is probably more than I should get into, though it seems like it wouldn't be hard to use pyserial to command movements to an arduino or similar, and use the arduino to drive the stepper or continuous rotation servos?

 

Here's a quick script to get you started with those nine variables.  I'm SURE there are ways to streamline it... and I need to think more about if there's a way to get more useful numbers for the error indicator needles...  since as it is the heading and pitch needles correspond to the arbitrary roll value that isn't very important to node burns...  and it would be better if they just responded to the vessel's pitch and yaw instead?  But it should get you to the next stage of testing!  It, of course, just prints the values - but you shouldn't have trouble finding pyserial examples, or similar, for how to pass them out to a microcontroller to drive the motors.

 

import time
import krpc

def main():

    hz = 10  #update rate in updates per second!
    
    #Setup KRPC
    conn = krpc.connect()
    sc = conn.space_center
    v = sc.active_vessel

    last_pitch = 0.0
    last_head = 0.0
    last_roll = 0.0

    surf= v.flight(v.surface_reference_frame)
    while True:
        
        #First, grab pitch, heading and roll, referenced to the surface.
        pitch = surf.pitch
        heading = surf.heading
        roll = surf.roll

        #calculate rate of change
        pitch_chng = pitch-last_pitch * hz
        heading_chng = heading-last_head * hz
        roll_chng = roll-last_roll * hz

        #and store current values for next time
        last_pitch = pitch
        last_head = heading
        last_roll = roll
        
        try:  #If there's a maneuver node, grab it's data
            node = v.control.nodes[0]
            nav = v.flight(node.reference_frame)
            pitch_error = nav.pitch
            heading_error = nav.heading
            roll_error = nav.roll
        except: #otherwise center the nav needles
            pitch_error = 0.0
            heading_error = 0.0
            roll_error = 0.0

        print("NavBall     : {:03.2f}     {:03.2f}     {:03.2f}".format(pitch, heading, roll))
        print("Change Rate : {:03.2f}     {:03.2f}     {:03.2f}".format(pitch_chng, heading_chng, roll_chng))
        print("Nav Needles : {:03.2f}     {:03.2f}     {:03.2f}".format(pitch_error, heading_error, roll_error))

        time.sleep(1.0/hz)  #delay 

##This calls the main function which is at the top of the file for readability's sake!
if __name__ == '__main__':
    main()
    print('--')

 

Share this post


Link to post
Share on other sites

The physical engineering side of things I've finally sorted out (thank god) and I just need my damned bearings to arrive and I can finally put together prototype 7 which will be the first "all up" build with all three axes modelled and will include the control panel and associated parts.

The weird thing is that the bearings were ordered from 3 different suppliers and none have arrived yet items ordered from Hong Kong two weeks before I ordered the bearings have arrived already. I hope they haven't vanished somewhere in Europe...

I hope they arrive soon.

Regarding the programming... where is that code running? This is the problem that got my brain in a fug. There are so many different languages that krpc supports and I can't find an example of getting that data down to an Arduino yet I know it's possible. My previous setup (several years ago) used Telemachus and I had the data transmitted over the network and the Arduino used an Ethernet shield. I basically got a line of numbers separated by comma (iirc). The Arduino took that line, split the data and passed it to the motor drivers.

 

 

Edited by NeoMorph

Share this post


Link to post
Share on other sites

LOL.... please forgive this rough code but this is from the early version I was running back in 2013 (yeah, long project heh). I can't seem to find the later ones yet I know they existed because they were the ones that crashed Prototype 5 so dramatically and set the driver board for one axis to smoking like a firebomb...

I tend to really code in simple to read blocks these days (and add numerous comments) becase all my streamlined code I used to write back in the 90's is basically gibberish to my drugged up brain now. Hell, I used to code in APL Darn it and if you have ever seen it you would have thought it was in greek lol... mind you it does use a lot of mathematical notation.

Anyway, this was the first example to get the data across the network and into the Arduino.

/*

This is the basis for the Aduino Main Brain reading from Telemachus on the net

*/
#include <Ethernet.h>
#include <SPI.h>

////////////////////////////////////////////////////////////////////////
//CONFIGURE
////////////////////////////////////////////////////////////////////////
byte server[] = { 192,168,1,182 }; //ip Address of the server you will connect to

//The location to go to on the server
//make sure to keep HTTP/1.0 at the end, this is telling it what type of file it is
String location = "/telemachus/datalink?pitch=n.rawpitch&roll=n.rawroll&yaw=n.rawheading HTTP/1.0";


// if need to change the MAC address (Very Rare)
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
////////////////////////////////////////////////////////////////////////

EthernetClient client;

char inString[50]; // string for incoming serial data
int stringPos = 0; // string index counter
boolean startRead = false; // is reading?

void setup(){
  Ethernet.begin(mac);
  Serial.begin(115200);
}

void loop(){
  String split = connectAndRead(); //connect to the server and read the output

 // Serial.println(split); //print out the findings.
  
  //String split = "pitch:328.6074,roll:64.62955,yaw:143.8955";
  String AllPitch = getValue(split, ',', 0);
  String Pitch = getValue(AllPitch, ':', 1);

  String AllRoll = getValue(split, ',', 1);
  String Roll = getValue(AllRoll, ':', 1);

  String AllYaw = getValue(split, ',', 2);
  String Yaw = getValue(AllYaw, ':', 1);
 
  
  //Serial.println(split); 
  
  float fPitch = getFloat(Pitch);
  float fRoll = getFloat(Roll);
  float fYaw = getFloat(Yaw);


  Serial.print("Pitch:");
  Serial.println(fPitch);
  Serial.print("Roll:");  
  Serial.println(fRoll);
  Serial.print("Yaw:");
  Serial.println(fYaw);
  Serial.println("====================");

  

  delay(30); //wait 5 seconds before connecting again
}

//========== Subroutines ====================

float getFloat(String inputString)
{
   char carray[inputString.length() + 1]; //determine size of the array
   inputString.toCharArray(carray, sizeof(carray)); //put readStringinto an array
 //int n = atoi(carray); //convert the array into an Integer
 float f = atof(carray);
 return f;
}

String getValue(String data, char separator, int index)
{
  int found = 0;
  int strIndex[] = {0, -1};
  int maxIndex = data.length()-1;

  for(int i=0; i<=maxIndex && found<=index; i++){
    if(data.charAt(i)==separator || i==maxIndex){
        found++;
        strIndex[0] = strIndex[1]+1;
        strIndex[1] = (i == maxIndex) ? i+1 : i;
    }
  }

  return found>index ? data.substring(strIndex[0], strIndex[1]) : "";
}


String connectAndRead(){
  //connect to the server

  //Serial.println("connecting...");

  //port 80 is typical of a www page
  if (client.connect(server, 8085)) {
    //Serial.println("connected");
    client.print("GET ");
    client.println(location);
    client.println();

    //Connected - Read the page
    return readPage(); //go and read the output

  }else{
    return "connection failed";
  }

}

String readPage(){
  //read the page, and capture & return everything between '<' and '>'

  stringPos = 0;
  memset( &inString, 0, 32 ); //clear inString memory

  while(true){

    if (client.available()) {
      char c = client.read();

      if (c == '"' ) { // is our begining character
        startRead = true; //Ready to start reading the part 
      }else if(startRead){

        if(c != '}'){ // is our ending character
          inString[stringPos] = c;
          stringPos ++;
        }else{
          //got what we need here! We can disconnect now
          startRead = false;
          client.stop();
          client.flush();
          //Serial.println("inString:");
          //Serial.println(inString);
          return inString;

        }

      }
    }

  }

}

I seem to remember there was a problem with Telemachus back when I was coding this... namely Telemachus would crash and burn if you requested data too quickly. Considering I was only requesting 3 values over a gigabit network I should have been able to access it faster but programs are notorious for doing stuff they shouldn't.

Regarding the choice of motors, I finally decided on steppers over all other different methods. I tried using a continuous rotation server with a resolver to find the position the ball is at, I tried using a motor and optical led locator, I tried using a motor and limit switches... but in the end the KISS principle is ultimately the easiest way to go... So I'm making Prototype 7 an oversize version of the final version to make it easier to access the mechanics and install the motors and wire them up. I also had to order a new ball because I dropped the old one.

There is another fun part to do once the prototype is proven to work... and that is labelling the darn ball itself. I've got the fix in mind already but that is going to be a seperate project in itself.

EDIT:

Hmmmm... just came across this that would definitely make it better. Instead of a fixed time to transmit data you could only transmit when the data changes using "available()".

#include <Ethernet.h>
#include <SPI.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 10, 0, 0, 177 };
byte server[] = { 64, 233, 187, 99 }; // Google

EthernetClient client;

void setup()
{
  Ethernet.begin(mac, ip);
  Serial.begin(9600);

  delay(1000);

  Serial.println("connecting...");

  if (client.connect(server, 80)) {
    Serial.println("connected");
    client.println("GET /search?q=arduino HTTP/1.0");
    client.println();
  } else {
    Serial.println("connection failed");
  }
}

void loop()
{
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }

  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();
    for(;;)
      ;
  }
}

https://www.arduino.cc/en/Reference/ClientAvailable

 

Edited by NeoMorph

Share this post


Link to post
Share on other sites

Wow NeoMorph!  That is quite the setup you have!  I have been trying to figure out how those navballs worked for quite some time, but I have never been able to figure it out.  I would suggest kRPC is the way to go, I am familiar with C# and I used it to send data using USB serial before.

Also, I saw in your previous posts  about trying to machine the navball on a CNC and the massive hassle that will be. Why not 3D print?  You could even print the lines into the ball and then just paint in them to highlight them.

Keep up the great work!

Share this post


Link to post
Share on other sites

Wahoooo... finally got Krpc running and wanging data over to one of my Arduinos today. Then I got sidetracked fixing an LCD 20x4 display with a busted backlight (I just want the LCD to monitor the values being sent over to the arduino to verify).

Really feeling great now I can at least see two sides of this project linking up for the first time in 4 years. 

Oh and for those who eventually want to build their own I will be posting how to do it yourself (and hopefully get you sucke... errr, fine people... to improve it).

KSP has given me hours, no WEEKS of fun... I just want to see how far we can push it. Now who's going to make a DSKY linked to kOS? 

Edited by NeoMorph

Share this post


Link to post
Share on other sites

I've decided that until I get this project running I will be doing a post every Sunday evening (if my disability lets me).

9th July 2017

So what have I done this week... well, a lot actually. I managed to finally get data from KSP into one of the motors I will be using for my 16cm model. To say I was happy when the servo turned when the navball did was an understatement. 

So now it's time to start work on the full 16cm model. First it will be the  main axes and getting them right followed by the 3 error needles and 3 outer rate needles. The  production blueprints for the final version will be made based on a 12cm ball and general made out of the lowest cost parts I can get working but to make it easier to test I'm building this one a little oversized (cramming everything into a 12cm one right away is probably what led to Prototype 6 bursting into flames... well maybe not flames but lots of smoke heh. 

It would be simple to make a navball that works but costs £500 but I want it to be buildable by anyone. Granted the research on this project probably has cost me more than £500 since 2013 but I've enjoyed myself along the way. I've gone from not knowing how they got the real nav ball working to pretty much understanding everything about it now... well except the math... oh god... THAT MATH!... Euler error rates sounds like something an American football team does when they drop the ball a lot.

So what have I bought for this project over the years? This photo below is a small collection of bits that I'm currently using to build Prototype 7. The clear plastic ball is what it eventually will be built around.

 

xM3Rn2i.jpg

Yikes... that's a bunch of parts for one Navball!

 

One thing that has amazed me is that my final sim will probably be running on 5 separate voltages.

  • 220v ac for the the computer, display and power supply to the sim
  • 24v dc for the motors driving the ball (this still might change down to 12v).
  • 12v dc for the Arduinos (yes multiple but only one for the FDAI navball), indicator lights and control systems.
  • 5v Warning and fault generation system, switch arrays (powered by USB from the computer).
  • 3.3v for the pro-mini Arduino that will be handling the error and rate needles in the nav ball

I do know I aimed big and several times down the road I thought it was going to beat me... but thanks to Chinese parts (and of course eBay) I think I'm on the final lap. And yeah, hopefully I will be drawing up plans so you can make your own... and sadly, no, I won't be making and selling them.

Thats all for this week. Keep the faith... this WILL be done.

Share this post


Link to post
Share on other sites

I'm glad to hear you got the KRPC code working!  I should have provided more info sooner!   That was example code in Python that would run on the PC in a Python interpreter - and then you'd add to that last while loop code that used a python serial library to push either raw data or processed motor movement commands out to the arduino.

But it sounds like you've got it working!  Also, I had very similar code using telemachus ages ago! I was running it on one of the TI Launchpads that has built in ethernet and a whole BUNCH of IO pins.  Never got around to finishing the cockpit... but it'll happen eventually.  And when it does I may well build one of your navballs! :)

I've been wondering about getting KRPC working directly to arduino?  There is some work being done on getting the google protbuf library to compile for microcontrollers, which would be the big hurdle to jump I think...  though I think the project would be a bit over my head.  But it's so easy to make an arduino talk to an intermediary program, there's no real reason it has to run natively on the arduino.  Something I MAY work on is building a raspberry pi distribution that has python and krpc and some scripts for various ways to display data all prebuilt so you could just write it to an sd card, and if you wanted physical interface perhaps edit a .cfg file to map buttons or indicators to the GPIO?

But I digressed!  If I can help any more with the KRPC side let me know.  I'm fairly familiar with it! 

Share this post


Link to post
Share on other sites

Art, look up "python pyserial arduino". It helps simplify it a lot (well it does after you close the bloody Arduino serial monitor that is).

I hadn't even touched Python until the other day... done the C family (although not too much C#), Java and Lua in my past and keep getting them mixed up.

So I decided to try Python!

Crikey some of it was long winded... learning about how to install PIP, installing Python wheels etc... but I got there in the end. 

But the fussiness about program indents took me back to my COBOL days.

I used the Launch Into Orbit program which actually worked perfect after I figured out the Arduino serial monitor in the IDE was locking out Python when using pySerial. 2nd attempt and I put our 3 amigos into orbit without using kOS or mechjeb.

Next I used the pitch, heading, roll tutorial example...

https://krpc.github.io/krpc/tutorials/pitch-heading-roll.html

Again it worked perfectly... but looking at the code made me realise I need to go back to school (as it were) and also get help (help me Obi-Wan Art Whaley, you're my only hope). But using the tutorial code as an example is a bloody good start.

That tutorial code is working on angles from the surface path by the looks of things. We will have to do orbit and target too. If I get one nav ball working I will probably build another like in the Apollo cockpit... and then I can set one to surface and the other to orbit... or make one A target and the other into orbit... making them interchangeable would be important if my fault generator kills one nav ball.

Had one bit of annoyance today...

My dear customer,
Thank you for your order, but here has a bad news.
I'm so sorry to inform you that this item was out of stock, sorry I forgot to update the inventory information.
In this case, it was better to full refund to you, do you think so?
Hope you can reply me.
Best regards

That was the dual shaft motor that drives the ball hemispheres for the 12cm version. Had to reorder from another supplier which means another long wait. Oh well, need to get the 16cm version running first heh... but I feel confident.

 

 

Share this post


Link to post
Share on other sites

I'm going to be literally learning Python this week and maybe brush up on my trigonometry, and hope it IS trig and not me getting "triggered" lol. I'm stuck on my hardware atm as I'm still waiting for my bearings to arrive... you might say "I can't get my bearings lately!"

I used to find learning new languages fun... will have to find out how thing go from here. Hell, I learned LUA by repairing bad code on my gaming isp main website because the code they paid for was total rubbish and crashed a lot... talk about pressure learning.

 

Share this post


Link to post
Share on other sites

Okay Art, I was looking at the reference frame code and came across this... was going to mention you could look at it when... I glanced over and looked at who was actually part of the conversation and had they fix s added to krpc.... god I'm soooooooooo dumb at times... and yeah, I'm blaming lack of sleep and painkillers heh.

NVeFtw4.jpg

https://github.com/krpc/krpc/issues/397

 

Share this post


Link to post
Share on other sites

Yes, Djungelorm is way smarter than me, but I try to contribute fixes when I find a problem! 

I ALSO found (find, but have stopped complaining aloud about it) the indentation instead of just using parenthesis all willy nilly to be frustrating at times, though I am STARTING to understand the beauty of encouraging people to all write code that essentially 'looks like python' by doing it that way.  But still.   Having a program refuse to execute because there's an extra space at the beginning of a line is annoying, right?  ((Okay, I apparently still complain aloud a little.)

Yes, Pyserial is the way I'd probably pass things to the navball too!  At the moment we're working on getting a repository of KRPC example scripts built and perhaps I should do a Pyserial example that shows how to push some data to an arduino?   I'll think on that!  It's here  https://github.com/krpc/krpc-library if a couple more examples are useful to you.  

Definitely let me know when you get stuck!  The example I posted above should pass out the data for one navball if you replace the three print statements (or augment above or below them) with the Pyserial command to send your data however you'd like!  

Share this post


Link to post
Share on other sites

Looking at the pile of stuff you have there is pretty crazy.  And all of the different power supplies... I know your pain my friend... 

Just a suggestion (maybe for version 8?) Have you looking into using something from a 3D printer?  You can get RAMPS boards dirt cheap from eBay, and they will give you up to 5 axes of stepper control, and have nice cheap, replaceable Pololu style stepper drivers.

http://www.ebay.com/itm/RAMPS-1-4-3D-PRINTER-CONTROLLER-Mega-2560-R3-CH340G-5x-A4988-2A-Drivers-More-/321974766842?hash=item4af7310cfa:g:ggUAAOSwL7VWlds2

 These things would work a charm for what you are doing, and then all you would need is one 12v power supply for everything.  Plus, the documentation for RAMPS is great. http://reprap.org/wiki/RAMPS_1.4

 

Share this post


Link to post
Share on other sites
2 hours ago, Dr.Vulpinus said:

Just a suggestion (maybe for version 8?) Have you looking into using something from a 3D printer?  

I use some reprap parts in my build already. But here is why all the bits... this is my current design btw. 

3 axis for heading, yaw and roll (steppers)

3 axis for movement rates (servos)

3 axis for course error needles (servos)

1 axis for power flag (servo)

3 ball zeroing indicators (hall effect sensors)

 

The power flag is this little thing...

p9kzZuV.jpg

... and will be changing the servo for a solenoid either in this upcoming build or the first 12cm build. I got these dinky little 5v solenoids that will do just right. 

EUY2HA0.jpg

 

So so as you can see, it's come quite a long way... it's just waiting for some parts is all (darn bearings).

Share this post


Link to post
Share on other sites

There has been one huge bonus this project has given me. I always thought that artificial horizon gauges were out of my price range. Now though, I can quite easily build my own because I fully understand how they work. This is because where the nav ball displays three  axis plus three rates of change and three course error values... all the artificial horizon does is show pitch and roll... 

 

Here is an aircraft Artificial Horizon...

eb3NblM.jpg

 

... and here is a beautiful Apollo FDAI...

2mbeOb9.jpg

 

... which just goes to show what is squeezed into such a small space. And as I now know how to make an FDAI you can see how easy the AH is by comparison!

 

Share this post


Link to post
Share on other sites

Well, today the postwoman arrived bearing gifts... looked to be about half her sack full of stuff. 

Everything but the darn ball itself has arrived, including the tools I ordered to make some of the parts as don't yet have a cnc machine or laser cutter. When this is finished though, I will have at least on cnc laser or engraver. 

I even went to a friend to rebore the problematic main gear that was malformed due to a carbon chunk being left in the steel blank... all so I could test for fit of the roll axle subassembly.

The one job I really am dreading is cutting the 6 C assemblies before heat shaping them for the 8-ball inner cage. A lot of the testing is going to be done using plywood. I might even see if there is a maker group nearby who will help cut the acrylic for me.

So progress is being made... photos WILL be posted on Sunday's main progress report. This week is going to be mainly dev rigs I've been making due to waiting for parts... I've still got parts on the way for Prototype 8 (the 12cm ball model) but I haven't even started the plans for that one yet as things might (read probably) change in the 15.6cm build. Remember this is just the hardware... the larger amount of time is going to be spent on writing the client/server (Python/Arduino C) system. 

Edited by NeoMorph

Share this post


Link to post
Share on other sites

Well I'm gutted... 

I was reading up on making a little cnc machine to assist in making a part I want (tools to make tools) when I came upon this little beautiful little detail...

Quote

... but built from 2 old stepper motors and some steel rods (all cannibalised from old flatbed scanners), some MDF and plywood and a few 3d printed parts (printed with my MakerBot Cupcake).

 

Old flatbed scanner... old flat... bed.... scanner... OLD FLATBED SCANNER.... ARRRRRGGGH

Oops!

You see, for years I've had the  carcass of an old flatbed scanner that I had broken the lid off and never got fixed. It's slept in my junk bin for decades... and last week I decided I needed some space and decided to throw some old, useless junk out that I hadn't even looked at for over 10 years... and yes, you guessed it, it included that darn flatbed scanner lol.

They always say you find a use for something the moment you throw it out... god...dang... it! Over 10 years and I throw it out a week before I needed it...

Oh well, something else to order. LOL

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now