3D Printing with the Solidoodle!

I have finally gotten the Solidoodle to print! I couldn’t get the software to cooperate on Ubuntu which forced me to install Windows. Installing windows was a project in itself because I had to replace the CD drive with an SSD. As it turns out, the Windows only version of the software plays nice. I started out with just  a simple calibration cube.

2013-03-03 13.43.47

It was ok. Nothing to really write home about, but I am sure I can make the machine produce more consistent shapes with more tuning. At first, I was having issues getting the print to stick to the print bed. After fiddling around, I fixed this by cleaning the print bed, slowing the print speed, increasing the flow rate, and increasing the heat on the bed and print head. You can see the before and after pictures clearly.

2013-03-04 02.36.26

Go home Solidoodle, you’re drunk.

2013-03-04 02.10.16

This is a bracket I designed to connect to the LEGO MINDSTORMS NXT motor. It adds more connection points which makes integrating the motor into a model easier. While the print came out ok, I have learned that 3D printing and face down counter-bores do not mix. The small height difference and overhang created by the counter-bore is just too subtle to capture. In the next version of this print, I am going to change the model to remove the counter-bores. This will make the print thinner overall, but it should function within the LEGO Technic System. In addition, I am going to add a small scaling factor to compensate for thermal shrinkage since the holes seem way to tight.

Next, I made another bracket like the old one, but with the counter-bores stripped off. Below you can see the difference! I forgot to add a larger scaling factor, but I wanted to see how it would come out anyway so I let it finish printing. You can see how it is slightly nicer to not have counter-bores on the left. On the right, you can see how the face down counter-bores just melted into the model.

2013-03-04 18.34.49

2013-03-04 18.35.03







I am printing a model for the Hacker Scouts. I was trying to find a way to easily connect two servos and an Arduino together to make a very simple robot. I was unable to find an off the shelf solution that was easy enough for an 8 year old to assemble.  I threw this together and went on printing it. This is a great example of how 3D printing can be used for educational purposes.

2013-03-04 02.15.10 2013-03-04 02.24.55


2013-03-04 18.35.32







Here is the model sitting on its side. Those cutouts in the side mount the servos which drive wheels. I lost my two continuous-rotation servos when I moved recently which is why they are not installed yet; I ordered some more from Sparkfun.

And now for the fireworks. You know when You are working on stuff and it breaks? Like badly? As it turns out my Solidoodle print head overheated – badly. I have not seen this before. I had the machine resting with the head temperature at 200C and the bed at 100C. As I was using CAD at my computer, I was smelling smoke. I looked over to see black smoke bellowing out the print-head. I saw on the software interface that the head had jumped to 230C! This sadly melted my print-head. I tried to fix it by remelting the print-head, because that is clearly the best idea. I was unable to get the print-head to melt again. All of the automatic safeties kicked in and did not let the head get that hot again. However, what I did notice is that if the print head gets too far over the target temperature, the temperature climbs rapidly. PID problem? I am guessing this might have had something to do with it. At the time, I had the head in the home position which is next to the print bed. I am thinking that the extra heat from the bed ?might? have somehow added more heat to the head which caused the runaway heating problem. During the incident, the head melted out of alignment and clogged with black ABS. Moreover, the head now leaks ABS out the side if it tries to extrude. I am going to contact Solidoodle support and see if they can get me a new part so I can keep printing again. You can see the broken print-head below.

2013-03-04 18.13.48







Below is what I was working on when the printer derped. It’s a hole checker. I am trying to figure out what size I need to make the holes for the LEGO pins to fit nicely. If you remember above, those holes ended up being way to tight. I am testing 4.0mm(way under), 4.8mm(specified LEGO size), 4.9mm, 5.0mm, 5.1mm, and 5.2mm. We are going to solve this mystery one way or another! Also notice the lack of counter-bores.







See you next time!

The Human Element of Robotics

KUKA_Industrial_Robots_IRIn one of my classes, we were discussing what will happen when robots and automated manufacturing mostly replace people. What will we do with all of the unemployed? I pondered this, and I had this idea. What if the nature of our economy changed? Right now, a large part of the economy is centered around products which help make/buy/sell other products. Let us think about a world many years from now where products have become so cheap that they have very little intrinsic worth because the manufacturing and selling process are extremely efficient. Where will the economy go? Where is the transfer of value in our society? I am guessing that the economy will shift to art. Yes, art. With our basic needs satisfied, people need to produce something unique that others will buy. Art or artistic elements can highly differentiate a product or be the product itself. Think of it this way, if all toasters are inexpensive and toast bread, which toaster will you buy? I think the answer to this is that you will buy a toaster that you “like.” Products that people “like” tend to be more design, and thus art, oriented. Taking this even further, we can think of groups of products with similar design languages; ahha! we just created a brand. Branding is essentially the industrial version of art.

Looking at an individual level, we will be able to focus more on creativity and on creating experiences that please us. Think of someone designing t-shirts on a computer. She hits  “print” which automatically sends the design to a virtual shopping arena. The design then moves to a manufacturing facility, and finally the physical product is sent to a distribution chain. What could we focus on creating?

How do you Measure Success?

What is your success face?

What is success? This theme has been reoccurring lately. It seem that most people are measure success by metrics which are not their own. The media and other social pressures force people’s ideals into a very small box. However, to be truly happy one must find their measure of success. Society tells us that success should be money, power, friends, houses, cars, or other equipment. Other than those gains, there are a whole host of positive ways to measure success. Some people measure success in terms of people helped, lives saved, or items donated.

To be truly happy, you have to find your passion. Find it and figure out how to monetize it so it then becomes a sustainable way of living. Wait, did I just say monetize your passion? Yes I did. There is nothing wrong with finding the activities that bring you joy and then pairing that with a sustainable way of living. If you can achieve this, then you will never have to “work” again.

For me, success is measured in innovations. This is what I am passionate about, and it can help people too! My friend, Teegan, measures his success in patients helped, and my friend Sarah Jones measures her success somewhere between information acquired and students taught. I urge you to find what success means to you.

How do you measure success?

Do You See the Forest or the Trees?

I would like to dedicate this post to my good friend Sarah Jones. While we were at ihop, we began talking about this subject, and I just had to write it down. Sarah asked me if I ever wanted to get a .P.H.D. to which I responded that I did not. She look horrified as if I had slayed her cat. As background, Sarah is currently in a .P.H.D. program and intends to be a psychology professor.

I want to explain my reason why I intend to not continue my formal education past a bachelors or masters level. It is a simple case of the forest and trees. I am a forest guy, I see the whole picture and everything in it. I am not passionate about the fine details or the specific mechanisms which compose the forest such as the chlorophyll in the leaves. In contrast the .P.H.D. sees the tree and maybe specializes in a mechanism inside it. Society needs both in order to grow.

Sarah’s goal is to acquire as much information as she can; she thrives on learning. She is a true academic. On the other hand, my goal has always been to innovate or we could say to build really awesome forests usually in a different way. Each order of scale presents its own challenges. As a forest builder, I am looking more at the abstract levels of placement of the forest, but I also need to have some knowledge about the trees. However, I do not need nearly as much as tree knowledge as Sarah. My gift is the new configuration of the forest and how it is beautiful in its integration as a whole. Sarah’s gift might be hearty beautiful trees.

All of this jib jab over forests and trees comes to bear when talking about how information about these things are acquired. As it turns out, trees are very well documented. We know how the leaves, roots, and bark work. There are classes and professions devoted to every part of the tree. Consequently, Sarah will have a very deep understanding about the tree. We need that. However, there is not necessarily a good single way to build to a forest because of the number of variables involved. Each forest is different and it takes a certain amount of judgement and experience in order to build a good forest. The bottom line is that to get good at forest building, you need to have built and observed a lot forests.

To this credit I submerse myself in my mentors. Mentoring can come from anywhere at anytime from the most inopportune people to the very familiar friend. It comes in many forms. This is why listening is so important. Listen to what people say, what they do, what happened, an why they did it as such. Try to understand their forest and maybe part of their trees. My mentors are people such as my boss, my CFO, CTO, CSO, friends and so on. They each have a unique experience from their angle of their part of the forest. My goal as a forester is to take all of these ideas of how parts of a forest should be and make it into a harmonious functioning, and sustainable system. Sarah’s mentors come from her teachers. She specifically finds her mentorship in her teachers.

Then there are the hybrids. My best friend Mike Jones (no relation to Sarah Jones) likes some of the trees, but also likes some of the forest. In the same manor that he deals primarily with trees first and then the forest, I am the inverse. This is what makes us such a powerful team when working on startup ventures. To be a truly effective team, there needs to be an understanding of the system at each scale of the project. While I have my focus, Mike has his, and we leverage this in order to make the best decisions possible.

First Steps with the Solidoodle!

I started playing around with my Soidoodle! I was in good company from Workshop 88. Bill, our resident 3D Printer guy, was helping me out and learning about the Solidoodle too. Over the course of 7 hours. We both had broken and fixed just about everything. You can see the fruits of our labor in the video.
The first thing we did was that we got Pronterface running on my machine. I was easily able to connect, but we were noticing some problems. The first problem that we were having was that we were unable to get the system to home. Homing is when all off the Axis move to push a switch so that their position is in a known place in space. We were also having issues getting the bed and tip to heat.

General Picture of the Sillyness

The solution to this is new firmware that was released for the machine. After getting all the files needed, we were able to update the firmware. It was a slightly non-tivial process because an old version of the Arduino IDE is required to interface to the controller on the Solidoodle. Proper drivers are also required. After we knew what to do, it was actually pretty easy.

After we put the new firmware on the machine, we had the opposite issue: the tip getting hot to quickly which caused the temperature to overshoot the target temperature. This caused overheating. As it turns out, the maximum temperature was set at the temperature that we were aiming at. This had the undesired effect of when the tip reached temperature, it “overheated” and shutdown. We ran the Solidoodle through a few calibration cycles which helped, but it did ultimately overheat. We then went into the source code of the firmware and changed the maximum temperature value to be a bit higher than the operating temperature, and we updated the PID values for the tip. In addition, we found through reading that the tip itself runs about 10C hotter than what is actually being measured. We used this to our advantage by setting the maximum temperature to 235C, and then running the target temperature at 220C which is secretly 230C at the tip. It is silly that we had to do this, but we did and it worked.

The wire that powers the heating element in the extrusion tip broke off while we were trying to feed in a new line of ABS. We had to disassemble the head and remove the tip assembly from the carriage so that we could solder the heating element back in and remove a stuck piece of remnant ABS. We got it back under control and made the solder connection proper again. After doing this, the tip seemed to heat a little better.

In the middle of repairs to the head

Concurrently with all of this, we were trying to get either ReplicatorG or Pronterface to try to print something from my machine. We were unable to get ReplicatorG to connect to the Solidoodle at all, and we couldn’t seem to get Pronterface to run through a print. We settled on generating the G Code that we wanted in ReplicatorG and then using that code for Pronterface  No such luck because the programs don’t agree on the format of the comments which is ridiculous.

We gave up on using my machine. We were able to get Pronterface to cooperate with the Solidoodle on Bill’s machine. Our print failed to come out right, but it did prove that the machine does work. I will work on getting Pronterface to work on my machine properly. I am betting that the next release of Ubuntu will fix a lot of bugs.

I want to think you Bill for helping me. This wouldn’t have been possible without your help.

Close up of the repaired head.
A “working” Test Print!

Solidoodle 3D Printer Unboxing!

I have wanted to get into 3D printing for a while now; I ordered a Solidoodle on May 11th, and it has arrived! I have waited months for this. Here is a great blog about how to get started with this machine. I went with the expert model due to the heated build platform and a case. One of my friends was having some fairly serious issues with his RepRap because he did not have the heated platform. I decided that it was important to have that feature due to his challenges. The case was important due to the presence of cats. The last thing you want is hair in your prints or a heat treated cat. It is going to sit on my workbench next to my Shapeoko mini mill. Here are some pictures of the unboxing:

What is in the box?

What is that?

It’s a 3D Printer!
It came packed to the gills with bubble wrap. That is going to be fun later!

Here is a view of what the inside looks like.

I ordered some more ABS…

And there she is next to my Shapeoko!

Lego Mindstorms Workshop 88 Class Followup

On Saturday August 25th, I held a NXT-G class at Workshop 88. I had spent several weeks teaching kids at Inzone program at Harper College, but this time I was teaching adults which is a very different experience! We quickly covered the basics of how each block works and how to use wires to pass data values around the program. I then explained how the programming can be applied to a sumo robot, and walked through the logic and the programming part-by-part to show how the settings affected the actions. I even brought up some of the Arduino code which I use with my NXshield to show how each command would look in a text based language in comparison to a graphical one. If my memory serves, we also busted out the NXC code for comparisons as well.
I was hoping that the attendants would have brought some of their own bots so that we could have used them as programming demos. However, most of the attendance just wanted to listen and ask questions which worked out pretty well for the format. After I finished my sermon of robotics, the attendees spent some time talking about starting FLL teams. We are now seeing if we can get a FLL team together.
I have been in involved in varying capacities with FLL for 10 years now! Time flies! I have been a competitor,  Mentor, State Judge, and most recently a Judge at the World Festival. You can see what I have been doing with FIRST, and Lego as a Mindstorms Community Partner(MCP) here in this spreadsheet.
Good Ol’ Teach
Table of Robots
Some of the Crew
More Crew
From left to right: Jay’s Jaysumo and Jaysumo 2. Nicky’s Wedge, Juggernaut

NXT, Linux, NXC

NXC is another cool language. It was made made by John Hansen. One of the really cool features of NXC is that you can build “C” like programs on Linux, OSX, and Windows for the NXT platform.
Here are some instructions to help you get your NXT working with Ubuntu. My best friend, Mike Jones, made this script for me to automate the process. Don’t forget to run the script as root and make sure it is executable. This script installs the nbc compiler and makes the NXT appear to the system correctly. To download something to the brick, all you have to do is whip out a terminal and type  “nbc -d -S=usb programname”. If you’re feeling like a boss, you could do “nbc -d -Z6 -S=usb programname” to do more compiler optimizations. 

At first I started with NBC which is supposed to be an assembly like language that is fed to an interpreter on the NXT brick. Knowing some C, the assembly style was pretty hard for me because it doesn’t have an intuitive form of flow control. In NBC, you can start and stop execution at certain points called labels which leads to some acrobatics. I just couldn’t get the flow right to make my sumo program. I then decided to switch to NXC which stands for Not eXactly C. NXC is also made by Hansen. 

NBC and NXC both use the same compiler. Compiling an NBC or NXC program is as easy as changing the file extension e.g. nbciscool.nbc or nxciscool.nxc. After switching to NXC, I was able to finish my basic sumo program for my sumo robot. I also updated the download for my sumo robot to include the NXC program. 

Since I have some experience with C, making the program do what I want became much easier. However there are still challenges. I really wanted to have different tasks running at the same time to do different things. I wanted a task for getting the sensor values, performing mathematical and logical operations with the stored sensor values, and finally another task to control the motors. I haven’t quite figured out how to do that yet. Sure, making another task is as easy as “task taskname(){};”, but I haven’t figured out how to pass values around between the different tasks even with global variables…yet. After some reading, I know that I need to use some things called “mutex”, “Acquire()”, “Release()” to be able to pass values around. I am still working on that. Until then, please feel free to enjoy the current revision with everything in a single task! 

I have done most of my learning and reading about NXC though Hansen’s online documentation and his book: Lego Mindstorms Power Programming. I have a signed copy which always makes everything that much better 🙂 You can pick up a copy an amazon here.

In summary, NXC was a pretty easy and well documented way to get into some cool C like text based programming on Linux which is faster than NXT-G. I would recommend giving it a shot if you want to take the next step after NXT-G!

NXT, Linux, PBlua

I have been wanting to get into a text based programming language for the NXT for quite some time now. Team Hassenplug as done a lot work with testing and cataloging the different available languages. I want to choose a text based language for the NXT that I can begin to tinker with. I really want the robot to run smoothly which means the software needs to run fast. I also don’t want to purchase a software licence. If I have to purchase software, I want to have full ownership of it; I do not want to pay a subscription fee every year to get updates. It also must run under Linux. This leads me to a great free language called pbLua by Ralph hempel.
From the pbLua site: “In a nutshell, pbLua is replacement firmware for the NXT that allows you to write sophisticated programs for the NXT using any text editor, and to send the programs to the NXT using Hyperterminal, screen, minicom, or any dumb terminal program.

pbLua is operating system and hardware agnostic – which means you can control the NXT from any device that supports either USB and/or Bluetooth as a serial port device. You can use pbLua with Windows, MacOSX, Linux, and pretty much any other OS you can name. There are pbLua users that send programs using their mobile phone.

There is no compiler to install, no IDE to learn. All compilation and execution happens on the NXT itself. There is support for all of the NXT peripherals, I2C and RS485 devices, Bluetooth and USB communications as well as floating point math, arrays, strings and lots of other great features.”

To give you an idea of how much faster pbLua is when compared the software that comes in a NXT kit, The stock firmware and NXT-G was able to squeeze 762 loops out in a minute. In contrast, pbLua was able to deliver 18,000 loops. The loop time was decreased further by taking out the the display commands which yielded 31,000 loops! When we compare 762 loops to 31,000 loops, you begin to see how much extra benefit you are going to get speed wise form the system. That is a 3968.24% change in speed. Robot C is even faster at 103,000 loops. However, you must pay either a yearly licence or a 3.x version licence that works with windows only. As an interesting fact, the person who made pbLua was part of a team of people who helped originally design the NXT. Some of these measurements were taken a while ago; I wonder what the numbers would come to today. I am sure they all might have grown!

I use Linux everyday, specifically Ubuntu. I made the change to Ubuntu to be my main operating system in 2008. I really don’t like using Windows or OSX where it can be avoided. The one downside to this is that you often have to do things the hard way. This can be one of those times. The good news is that you will become much better at using and understanding your computer.

After you flash the new pbLua firmware, it is time to start making some programs. There are some great tutorials on the pbLua Site to help you get started!

Lego CAD systems and Something Different

I have been a big fan of Lego Digital Designer since its early days of being available. LDD allows you to build with Lego in a virtual space. This is very handy for sharing models as well as documenting things that you build. In addition, if you don’t have the space to whip out a hardcore building session, LDD can be a great choice to give you a place to build that does not take up space. 

In general, I like building inside LDD first before I approach the actual plastic. This is because building in LDD has no limits (other than your graphics card and such). You have access to tons of parts of various color, and there is no limit on the number of parts you can place. If you are like me, you have some parts, but maybe not 100 or 1000 of something. In LDD you have all the tools you need to tinker around and find new geometries, and mechanisms. 

The translation between LDD and other Lego CAD systems and the real world isn’t always perfect. You might find that sometimes if you build something in real space first, that you might be able to utilize the flex in a part to make a structure slightly tighter or better somehow. Having some building experience with the plastic will give to you knowledge to know if something is going to be a good idea before you build it.

By far through, the key element for me is the snapping functionality. As we all know, Lego is built off of a grid type system. In general, things in this grid snap together at predictable places, but this isn’t always the case. Packages like MLcad don’t have snapping functionality….yet. This means that you as the user have to place the blocks precisely on a very fine grid. The larger the model, the more off a MLcad model gets as you build out from the origin. This happens because you need to place something precisely where you can’t due to this grid. It is a huge hassle which has kept me from MLcad for years. In contrast, a LDD models stays together significantly better. 

I also like that you can view things in 3D in LDD. In contrast, MLcad gives you a separate isometric view, top view, side view, and bottom(top?) view at the same time. Working with this is pretty intuitive; It is much easier to view what is going on by moving a viewpoint around a 3D space. 

Just to be fair, MLCad and similar systems do have some advantages. One of its major advantages is its parts library. MLCad’s party library, LDraw, has thousands of parts many of which are no longer in production. This allows the Lego community to continuously design models which use parts that Lego no longer makes. It should also be noted that LDD is made by Lego and only has parts that are currently in production. If LDraw were to get a snapping function and a true 3D view of the workspace, I would switch over.

On the MLCad/Ldraw side, you can use this nifty program called LPub to make building instructions. I never used LPub before because I never had the patience to finish something worth recreating in MLCad. However, the instructions that I have seen LPub make of other peoples’ models are gorgeous. LDD’s building instruction generator is not that great. It works sometimes, but don’t be surprised if it asks you to build something in a weird order or is unable to be constructed.

Back when Lego’s Design By Me was still around, they let you build something in LDD and then upload it to their site where you could buy it way overpriced. I am pretty sure the price was so high because of the labor involved with getting the different parts for each individual order. Lego killed off Design By Me and instead introduced Lego Cuusoo which is basically crowdsourced the design portion of the Lego sets; If an uploaded project gets so many supporters, Lego will turn it into a real set that you can buy. This makes much more sense from a business perspective since the marginal cost of making the same set repeatedly is going to be much lower than changing the set design for every order. 

That being said, I indulged myself once with Design By Me when it was active. As a member of Klug, I was going to build a car to compete in a downhill race that took place on a Boy Scout pine wood derby track that someone had around. You could probably tell that I build mostly robots which entails having some Mindstorms and Technic. I have a scarce number of System parts laying around. This means that I was actually unable to build a car that could compete in the race that would conform to the rules with the parts that I had on hand. Enter: Design By Me. I whipped out LDD and completely designed this car without ever touching a physical part. I ordered it, and had it sent to me. Done. I did this a while ago, but I wanted to share how cool being able to go from LDD to real space is! By the way, here is the LDD file for the car 🙂

CAD to Physical
The Car Itself
Rear View