ThingiMix – Beginning

Watch on YouTube

 

ThingiMix

We’ve been wondering lately about how to create computer-generated 3D models. Not just with shape primitives, but also adding other models into the mix.

ThingiMix Slides.001

If we can do this maybe we can make generated robot parts, make things stronger (or weaker), or maybe even use physical computing to ‘sculpt’ a new model.

Two sources of inspiration of these thoughts originates from pieces by Nervous System and Neri Oxman. They both have this skill of making their models seem as if they were literally grown from a 3D printer.

As mentioned above, for our project we’re interested in using existing models in our mix. The amount of things uploaded on Thingiverse and their API makes it a good place to experiment with.

ThingiMix Slides.004

Thingiverse does not have a way to recommend things to a certain user— if it would tailor to their likes or not. It also doesn’t have a way to compare two things together.

Let’s get started with the making! We created four Python programs:
• Thingiverse, a wrapper for the Thingiverse API
• Thinginew, which watches the new feed on Thingiverse and tweets some of the data
• Thingiscore, takes a thing ID and calculates its score (also explores random thing IDs)
• Thingisimilar, compares two things to see if they are similar

You can view the source for these on Github.

 

Thinginew

Here is the flowchart overview of Thinginew. It has two main routines, Refresh Things and Send Update.

ThingiMix Slides.007

ThingiMix Slides.008

–> Check it out: #thinginew

 

Thingiscore

Here is the flowchart overview of Thingiscore. Three main routines, Trigger Tweet, Random Routine, and Tweet Routine.

ThingiMix Slides.011

ThingiMix Slides.012

Here is the table detailing how each score is calculated.

ThingiMix Slides.013

–> Check it out: #thingiscore
–> Try it in action: @RobotGrrlDev thingiscore: 279864

 

Thingisimilar

Here is the flowchart overview of Thingisimilar at the moment. It will be changed and improved upon…

ThingiMix Slides.016

Making Thingisimilar work better is proving to be challenging. It will be interesting to see if we can make it work.

 

Development Snags

There were some interesting snags during development.

 
Authentication with Thingiverse

For desktop applications, the Thingiverse auth is a little peculiar. You have to go to a website to get the auth key.

Through a little trickery, you can ‘sort of’ automate this. Not sure if they have any future plans to improve this.

 
HTTP PATCH

This was a tricky bug (not really a bug) to figure out. We could not get our bio on Thingiverse to be updated from the API. It was always resulting in a 400 error.

After trying to fix this after many hours, we asked James from WaterColorBot and Eric from Pinoccio for help. They lead me to some webpages to learn more about it, and some documentation. Quite helpful, thanks. :)

Eventually the solution was to use json.dumps(data), so it would send the data raw. It was very sweet to see the HTTP status 200.

snag1

 
Things Disappearing from Newest

The most bizarre bug goes to this one. It would only happen sometimes, not all the time, and hardly any of the time. But enough to mess up the flow of the program.

Sometimes when refreshing the newest feed, we would see a ‘bulk’ of new things. They were not new, and they were already added to the list of seen things. Why would this be happening?

We concluded that sometimes things are deleted from the new things feed. Even though this should not happen. If a user did delete their newly created thing, trying to access the thing would result in an error. But it should still be listed on the newest feed.

Here is a screenshot of our console log, showing the disappearance of 275902.

snag2

We adjusted our code to account for this, and have not had a problem with it since.

 
Thingiscore Without Downloads

This flaw in our program was noticed thanks to MakerBlock. He decided to compare two of his things, Customizable Ring and Pirate Ship.

The pirate ship did not receive a very high score, even though it has more downloads than the ring.

snag3

It should have received a higher score. Aha! We were not including file download count!

We wrote a test script to see if it was possible to access this variable from the Thingiverse API, and it was. Now, it is included into the Thingiscore calculation. :)

 

Next Goals

Thingisimilar has to be improved. We think this will be a challenging one to make it work with good results. ‘Good’ results meaning, the two things that are reported to be similar do actually seem similar from our point of view.

Creating a program that analyzes a user on Thingiverse for their apparent favourite category and types of things would be useful for when a person wants to create a mashup of things based on their own likes.

…And getting started with mashing up the things. OpenSCAD appears to be well suited for this, there is a Python package SolidPython and a command line tool. It will be fun to get started with this.

 

Thoughts

While we have been making ThingiMix, we have been learning Python. So if the code seems relatively ‘n00bish’ in some areas, this is why ;) It will be improving as we learn more.

If you want to support the development of this project, please consider backing us on Patreon.

You will be helping us monetarily with getting a metal Printrbot Simple kit. We just need a bit more to cover shipping and taxes, most of it is covered thanks to the Make Connected Home prize.

As well as saving up to go to Maker Faire New York. Hopefully by the end of the summer we will have enough to go. It would be amazing to show off this project.

A cool moment of the project so far- a web engineer at Makerbot tried Thingiscore! Sweet!

Hope some people out there are interested in this project. We’re pretty excited about it. If you have any crazy weird ideas please let us know, maybe it is so crazy or weird we haven’t thought of it yet. :D

Now it is time to work on improving Thingisimilar. Until next time, make weird things!

Aside: Although the entire post is written with ‘we’, it is just me working on the project.

New Boards!

Four new boards, open source hardware, timelapse video, and a tutorial!

New Boards!

Big day, we have four new boards! Here is a little overview of each:

 

Boards

RoboBrrd Brain (APMB)

Your RoboBrrd needs a brain! Use this Arduino Pro Mini Breakout board that was specifically designed for RoboBrrd to get it up and running.

More details / View in store

 

Quick! Resistors!

Add resistors to your project with simplicity and elegance.

More details / View in store

 

Quick! Voltage Divider!

Add two voltage dividers to your project — usually used with variable resistors as sensors.

More details / View in store

 

Arduino Pro Mini Breakout

Embed an Arduino into a project, with a suitable amount of prototyping space available.

More details / View in store

 

 

Available Now

You can buy these boards on our store, right now.

 

 

Timelapse Video

Here is a short video of the making of the boards in gEDA! Time goes by so quickly on timelapse mode…

Watch on YouTube

 

 

New Tutorial

We are including 3D printed enclosure ‘sleds’ with each of the boards. It would be very tedious to design these by hand, but there is a way you can export the pcb from gEDA into Inventor. We thought we would share this with you!

3D Printed PCB Enclosure: gEDA to Autodesk Inventor

Learn more!

 

 

Open Source Hardware!

The gEDA pcb files, as well as the Inventor enclosure files are open source!

View the Github repository.

 

Nutrition Monitor for the Elderly

thumb_large

This is a nutrition monitor for the elderly. It calculates a malnutrition score based off of body mass index and the daily food intake. The score is then uploaded to a remote dashboard that a guardian can view, and be alerted if it exceeds a threshold.

With the nutrition monitor, a problem can be addressed in a few days, rather than many months.

It is a step in the direction of being able to be more aware of ourselves by using sensors placed in our homes.

Watch it in action:

You can get started making this yourself! Check out the Instructable, NutriModule Arduino library, example Arduino sketch, and the Processing sketch.

MAKE Connected Home Contest

I entered this project into the MAKE Connected Home Internet of Things contest. The prize was a $500 gift certificate at the Maker Shed. We won! Read the article here.

make

Thank you to everyone who watched the video, commented and shared it with friends, and to the MAKE staff.

It was quite a shock to get a call from Stett at MAKE on Friday evening saying that the Nutrition Monitor won! (My hands were shaking well into Saturday morning.) I will never forget this!

Right now, I’m considering the Printrbot Jr V2. After there are some more purchases in the RoboBrrd Store, we can probably get it!

Reflection

Just as some background, I saw a tweet about the contest, and noticed that the deadline was really quick. If you read this blog frequently, you might have realised finishing a project very quickly is a struggle for me.

Knowing a gist of what I wanted to make, I researched around about malnutrition. On Sunday (Feb. 2), I dived more into it and learned all about it. There were two references in particular that helped:

Nutrition Support for Adults (accessed Feb. 2, 2014)
Malnutrition Universal Screening Tool (accessed Feb. 2, 2014)

Monday (Feb. 3) it was time to start building. I finished the Arduino library before the hardware was done, then finished the hardware, and created the application plus the remote dashboard. The reason why it’s so tricky to make IoT projects is because of the numerous ‘components’ that have to talk with each other. There are many points of failure. I really lucked out that I didn’t hit many snags.

nutrition_monitor_5

The one snag I hit was with the conductive foam in the DIY force sensitive resistors not un-compressing fast enough. Instead of the weight being recorded after it automatically detects removal/putting back of the food on the module, a button is pressed instead. The sensors are still a little glitchy, however they can be improved.

Reading the feedback from comments, with some heads nodding thinking it’s an interesting idea, is very motivating. This project is only the first try at the idea. With the future modifications in mind, it will get better.

Future Modifications

- Adding wireless radios to broadcast the data to the internet
This way, there will be no computer needed (except to access the remote dashboard).

- Improving the weight sensors
The conductive foam is very DIY, and this can be done much better to result in more accuracy and reliability.

- Shape detecting mat
Instead of modules, have one ‘mat’ (or plate), that can detect the shapes of many foods placed on it. And detect the weight within that shape area. It will be easier to clean than individual modules.

- Better remote dashboard
Currently the BMI is hard-coded into the desktop application. This should be able to be input via the remote dashboard. Also, ensuring privacy and security of the data is important to be improved.

There are also other interesting ideas suggested, to increase battery life, when to send the data, and maybe switching the place of the module (on the food, instead of the food going onto the module).

One of the obstacles will be the elderly using it / not dismantling it. They may still believe they do not need help, or they may believe it is a spy device by the CIA.

It would be great to run a beta test with some of the future prototypes. I wonder what the feedback would be?

Our future will be full of connected devices. It will be so interesting to have everything synced, communicating with each other, and helping our lives.

Now, I am looking for people who are experienced with health/medical/connected devices. If you know of anyone (or are someone), please email me!

Also, if you are interested in potentially beta testing this (or know of someone who would be able to beta test it), let me know.

Until next time, make something weird or connected, maybe both- weirdly connected!