Tuesday, December 4, 2018

Youtube daily report Dec 5 2018

[MUSIC PLAYING]

ADRIANA SCHULZ: Thanks for being here.

And welcome to the Computational Fabrication Colloquium.

We're very excited to have a wide range of topics

that we're going to be talking about today

from HCI to networks to programming languages.

So we will start with Liang.

You can come up.

Liang is a second year PhD student.

He is working with Jon.

He works in HCI, specifically on fabrication techniques

and tangible user interfaces.

LIANG HE: Thank you.

Thank you for the intro.

All right, so today, my topic is Modeling and Fabricating

Interactivity and Creativity with Object Properties.

So I think that 3D printing has been widely used these days.

And we can see 3D printing has been used for rapidly making

things like the mechanical components--

also creating some powerful devices like the prosthetics,

and also design some new fashion.

But there is a one problem in these 3D printed objects.

They are usually very static.

And in the commercial market, some companies already

produced some softer printing materials

like the soft PLA, NinjaFlex, or Tango.

But usually, people doesn't have a lot of control

over these materials in the 3D printing process.

And in the HCI research, particularly, researchers

has already explored a lot of different approaches

to create deformable and interactive objects

like this one.

He's using a silicon compound and sand casting techniques

to create some deformable parts in the 3D printed objects

and make the application interactive.

Or customize some printer how to print a soft teddy bear toy

for your kid or for yourself.

AUDIENCE: [LAUGHTER]

LIANG HE: The process is really like the traditional 3D

printing process, like, layer by layer--

layerized manufacturing.

But the resulting print is very, very durable.

Yeah.

And also, researchers are using metamaterials,

which is a kind of microstructure

with many mechanical properties.

In these 3D printed objects, this micro mater

can be used for certain functionalities.

Finally, with the rigid filaments,

we also can create some movable creatures using

some mechanical construction.

AUDIENCE: [LAUGHTER]

LIANG HE: Yeah, these materials are very rigid, not soft.

So my big research question is how

to support end users to design, model,

and fabricate interactive and creative objects?

And in my research approach, I focus on two parts.

The first one is the computational design tool.

And the second one is a custom fabricating machine.

And I also investigate object properties,

like the material or mechanical properties,

and try to integrate them into these two parts.

So today, I'm going to show two ongoing research projects.

And the first one is called Ondule,

which is about 3D printing and designing deformable objects

with spring-loaded structures--

I will highlight a computational design tool in this project.

And the second one is called FuzzPrint,

which is about 3D printing fluffy objects using cotton.

And in that project, I created a new machine.

So for the first project, my big question is,

how can we enable designers to rapidly

design, build, and fabricate deformable 3D-printable

objects?

And our solution is a set of novel techniques

to add elastic deformation behaviors to static 3D models

using a combination of a spring and a joint.

And we're using spring because spring are wider

used in mechanical engineering and haven't

been investigated in HCI area.

And they can exert a lot of expressive behaviors

and also store a lot of potential energy.

So first of all, I wanted to introduce the design space.

We are particularly looking into two parts.

The first one is a spring.

And based on this spring theory from the engineering,

we can allow the user to control two parameters.

Because when we convert those objects to the object spring,

we usually can get the size of a spring for under geometry.

And also, we assume the material is consistent throughout the 3D

printing.

So the two parameters the user can control-- one

is a ten gap, which is the gap distance between two

coils and the wire diameter.

And we also introduced the joints.

We provide five types.

For example, the prismatic joint,

which is a rail and a slider.

So using that joint inside a spring,

the part can only compress or stretch.

And also, like, the other one is knuckle joint.

It's basically a chain of cenergy rod and socket.

And you can constrain the object to deform in one direction.

And we also combined individual behaviors like stretch,

twist, or bending together-- compound behavior.

For example, the gray area part shows two compound behaviors.

The cylindrical joint used for twists and stretch

and compress.

The ball joint is used for all direction bending.

OK, I'm going to show you one quick workflow

of designing a cylinder.

So for example, we have this model, which is a cylinder.

And the first one, we will generate a spring, which

is taking over the deformation.

And the user can parametrize in the spring.

And now we will generate the essential constraint

using a specific joint.

And in this case, the cylinder can only compress or stretch.

It cannot twist and bend.

And finally, we generated the outer close

of the cylinder, which you will approximate at the outer

geometry of the shape.

And if you see from the top view,

you can see all the structures are nesting inside the model.

And to enable the user to create such design,

we created a plugin on Rhino.

And in the plugin, the user can select part of the model

and convert that part into a spring.

And also, the user can control the spring parameters

and the joint parameters to customize the design.

I'm going to show a quick video demo.

So for example, you want to convert

the two arms of the robot into flexible structure.

First of all, select the first arm,

and convert it to a spring.

See, here, the yellow part is the essential spring,

which is responsible for the deformation.

The user can parametrize the spring design

on the right side-- the panel here.

Like, the user can change the stiffness of a spring,

and also precisely can show the wide diameter and the ten gap,

as I said before.

And also, the user can add different constraint joint.

And the good thing of this design

is that you can integrate a lot of different parts

into one design.

For example, we already finished one arm.

And then we can move on to another arm

and change the design.

Here I'm going to show another design, which

is about making the other arm only bendable in one direction.

And then you will see how the user

can decide a bending direction using our tool.

So right now, it generates a chain of knuckle joints.

And the user can change the bending angle.

So for this project, I would create a bunch of applications.

First of all, it is a snake body,

so we incorporated all the design in one snake body.

And the tail doesn't have any constraints.

So it can be free--

deformed.

The second one is a rain doll.

We wanted to showcase the approximation

of the outer close spring.

This other one is a practical tool

for the people with muscle weakness.

So with this tool's rail springs,

the user can press the machine easily and cut things

in their daily life.

All right, so beside those applications,

we also created a bunch of other applications like

the jack-in-the-box-- the car was spring-loaded--

and also some IO device, which is connected to a digital

application.

The second project, our question is,

like, how can we enable children to rapidly design, build,

and fabricate fluffy, safe, and easy to configure objects.

So when we are young, we usually play blocks

and learn how to construct 3D models.

And so I'm thinking maybe we can create another type of toy

for them, and we can create some very safe and user-friendly

objects to render 3D modeling precise.

And we use cotton because cotton is very cheap.

And it's deformable and easy to bound no dangerous--

you know, the material.

And it has a lot of material properties.

It can diffuse the light.

And also it can absorb the water and user

can use different tools to manipulate the cotton.

So for this project, it's at a very early stage.

And we just built machinery here.

So we customize one printer-- a 3D printer.

And then we create a custom printer head

from the left to right.

From the right to left, there's a glue extrusion mechanism

which will drop the glue, which is just super glue.

And in the middle, there's a mechanism called a ball

delivery mechanism.

It will suck one cotton ball from a pack of balls,

and then deliver each ball one by one.

And the right most part is the punch gun.

So obviously, I will show you the whole process.

This is a quick demo of the process.

So first of all, we would drop one glue on the printer bed.

And then drop the cotton ball.

But it's not tightly bounded on the--

then we press it.

AUDIENCE: [LAUGHTER]

LIANG HE: And all the movement is controlled by the machine.

And in the future, we will generate the G code

and do all the routing.

Yeah, this is the idea.

[CHUCKLING]

AUDIENCE: [LAUGHTER]

LIANG HE: Yeah, OK.

So the whole process is like we import the one 3D model,

and we convert it to a Voxelizer model.

And then each of the voxel could be

represented by a cotton ball.

Or , we can change the voxels.

You can combine three or four voxels as a one cotton ball

in the printing process.

And then we would generate that that G code.

And based on the G code, we will do those series of operations,

as you've seen in the few video.

And do we also came up with a glue routing algorithm

to tightly bound each layer of the cotton balls.

And we're introducing the 1.5 feet layer here.

So basically, between four cotton balls--

the cotton balls-- we will drop another ball on this 1.5 layer.

So in that way, the whole object will be very robust

and tightly connected.

And in the future, we want to build some applications

particularly for children, like the cloud-like like lamp, which

will diffuse the light in a bedroom as a nightlight.

Or we can create a soft enclosure for the robotics.

And also, we can add some ink, different colored ink,

into the cotton balls.

Yeah, so I think that that's a big design

space for us to explore.

For further projects, we also wanted to be able to--

computational design tool for the children, so children

can easily manipulate and design the 3D objects in the tool.

And then the system will help them generate the G code

and operate the machine.

And also, we wanted to update the machine-- the print head.

Yeah, and then thank you.

And I wanted to appreciate my advisor, Jon Froehlich.

I'm happy to take questions.

AUDIENCE: [APPLAUSE]

ADRIANA SCHULZ: So maybe we can take one or two questions

while Chandra's setting up.

OK, then maybe I will ask one.

You talked about developing computational design

tools and also customized machines, right?

What do you think is a good way to link these two directions?

LIANG HE: Because have you seen before in my two projects--

I started this project from a specific idea or proposal.

So in that way, I probably will create a very particular design

tool and the machine for the end users.

And I think in the future, I probably

want to create some abstraction in the design tool.

For example, I can extract the user requirements

and design the abstraction modules in the design tool.

And then also on the hardware side,

I also want to create some modules, which

can be reconfigurable for different purpose.

And I think that that's a better way to approach this area.

Yeah.

ADRIANA SCHULZ: Thanks.

Great.

Thank you.

Yeah, I think these are really cool project and really

great questions on also these, as you said abstractions.

This is something that we've been thinking a lot about

and brings us to our next talk, which

is programming languages for manufacturing,

and which is a great way to do these kind of abstractions.

So Chandra's going to tell us about this really cool work

that she just presented at ICFP.

CHANDRA NANDI: Hi, everyone.

My name is Chandra.

And I'm a fourth year registrant in the programming languages

and software engineering lab.

And today, I'm going to talk about Functional Programming

for Computer-Aided Design.

So as you already saw from Liang's talk,

CAD and 3D printing is becoming almost like a revolution now.

And there are so many different applications for 3D

printing these days.

So starting from automobiles to space programs to medicine,

such as customizing prostheses, the applications

are just numerous.

And what's even more exciting is that recently,

due to democratized fabrication, the price

for 3D printers and other similar devices have gone down.

And as a result of that, if you have

a couple of hundred dollars to spare,

you can actually quite easily buy a 3D printer

and start printing various types of things for day-to-day life,

various tool parts, or just devices for aesthetic purposes.

And this is all actually really great.

And as you can see, we have printed

a lot of things in the past couple years in our lab itself.

So what's a problem in this space

is that the software pipeline that is currently

used in fabrication has certain challenges.

And the particular challenge that I'm

going to talk about today is about design tools.

So the first thing you do when you 3D print something

is you design a model.

And for that, you use various types of CAD packages.

And it turns out that these CAD packages are actually

really hard to use, especially if you're a hobbyist

and you've never done this before.

The learning curve is really steep.

A lot of these are actually also very expensive.

And often, there isn't really any proper specification.

So you kind of try out something.

And it doesn't work.

Then you do something else.

And eventually, you get it to work.

So to avoid all of these problems, what people do today

is they just go to these repositories like Thingiverse

and GRABCAD.

And they just download models from these repositories.

And now, this is actually really great

because once you download something,

all you have to do is slice it and print it.

So you don't need to buy any CAD package.

You don't need to understand how to design models and so on.

So this is great as well.

Unfortunately, when you download a model

from these websites, most of the time,

these are in the form of a mesh.

And these meshes are really hard to modify.

So let me tell you a little story that

can demonstrate this better.

So a while ago, I downloaded this model from the internet.

So this is a hex wrench holder.

So if you go to Ikea and you buy a set of hex wrenches,

then you can put them in this holder just to store them.

So I put my wrenches in.

And I was not very happy because my wrenches were not sitting

parallel to one another.

And it was really important for me that there were parallel.

So--

AUDIENCE: [LAUGHTER]

CHANDRA NANDI: --I went and got a mesh editing tool.

And I started to modify the mesh.

And it turned out that just a simple modification, which

was just rotating a hole a little bit,

was actually really tedious.

I was constantly breaking the mesh.

And then I just gave up.

And I was just sitting there and wishing that, you know,

I wish I had a higher level program that

was a little bit more abstract so that I could look at it

and understand what's going on and maybe make this change much

easier.

So what do we actually want here?

We want some tool that can take any mesh

and convert it to a CAD program that

is equivalent to that mesh.

So that is exactly what I'm going to talk about today.

So we have built this tool called

Reincarnate that takes a mesh and gives you back a CAD

program.

And if you compile that CAD program,

you're going to get back that same mesh.

So if you give this mesh that I showed you before to our tool,

what it's going to do is it's going

to produce a program in a language that we built.

And it looks like that.

And once you have that program, in this case,

a modification was literally one line.

So we added a line.

And that line was a notation about z-axis.

And once we did that, we printed it again.

And I was really happy because everything was parallel.

And it was great.

So now that we have seen that this is a useful tool,

let's try and understand how we build this.

So in order to build this tool, we had this key insight

that the fabrication pipeline can be viewed as a compiler.

So why is that the case?

Well, because everything we do in this fabrication

world is actually right--

programs in certain languages-- compile them

to different types of representations.

And ultimately, we generate a G code,

which you can think of as assembly for 3D printers.

And that is what the 3D printer actually interprets.

And it moves the extruder and prints your thing for you.

So this can be viewed as a compiler.

So if it is a compiler, then what

are the languages that are the sources and the targets?

So the language that we care about is the topmost language.

This is the CAD language.

So here is an example of a language that we built.

If you're familiar with languages such as OpenSCAD,

then this might look similar, you know.

So this language can support various primitives,

such as cubes and polyhedrons.

It can support various affine transformations,

such as rotation and scaling and translation.

And it can also do various binary operations,

such as union and difference and intersection.

So this is our source language.

So we are going to write programs in this language.

And it will be compiled down to a mesh.

So mesh is a data structure which

is a list of faces that represent

the surface of your model.

So it's not a solid representation.

It's a surface representation.

And you can think of a mesh as an intermediate representation,

which is actually really great if you

want to do any kind of geometry computations.

And it turns out that these are the formats that are most

popularly used in online repositories like Thingiverse

and so on.

So these are really useful.

So now we have seen a CAD language.

And we have seen a mesh.

And I told you that we can view this fabrication pipeline

as a compiler.

So let's just write the compiler.

So the compiler is a function, in this case,

that takes a CAD program and gives you back a mesh.

So let's see what it does for a cube.

So it's going to produce the mesh for a cube.

And if you render it, you can see that it's a cube.

So it's a cube.

The bottom most left corner is at the origin.

And the dimensions are all one.

So now what happens when we want to do something more complex?

So for example, if you have a affine transformed CAD--

so it's very similar to what you can

expect from any other language.

So it's going to recursively compile the child

and apply the affine transformation

to the vertices of that child.

And similarly, if you have a union

or a different intersection, you're

going to compile that children and then apply the operation

to the meshes of the children.

So let's actually run this compiler on this simple example

and see what happens.

And we will actually run this using small steps,

so at every step, we are going to focus on a part

and compile it down, and then move on from there.

So here is a program in the language that I described.

So this is a union of a cube and another cube

that is translated by amount 2 along the x-axis.

So what the compiler is going to do

is it will focus on the first child, which is a cube.

And it will crunch it down to a mesh.

And we already saw how that happens.

Now, after that, it is going to focus on the next child, which

is the right child.

And then it'll crunch that down to a mesh that

corresponds to it.

Now, once it has compiled everything down to the meshes,

finally, it will apply this union to the meshes.

And that will give us the final mesh for this model.

But this is actually not what we wanted.

We want the backward process.

So the solution that we actually care about

for not having to learn any CAD, and this magically download

models and decompile them to CAD programs

is actually to go in the backward direction.

So starting from a mesh, we want to go back to a CAD program.

And the way we are going to do that is by using a technique

called synthesis.

And essentially, in this case, what that boils down to

is just flipping the arrows of the compiler.

Now, you might be wondering how is that happening?

Well, because you have already done all the hard work.

We have built a compiler.

And we have used these small steps

to make the compiler make progress.

And because we have done all of that,

now we can magically get a synthesis tool

by just flipping the arrows of the compiler.

Now, of course, nothing comes for free.

There are still some challenges that we need to address.

And in particular, there are three things.

So the first thing is when you go in the forward direction,

you lose a lot of information.

So when you want to go backwards,

you need to find a way to get that information back.

If you look at that blue lozenge on the slide,

the kind of information that we are losing here

is just by looking at that shape,

you can't actually tell how it was actually designed.

In this case, it was designed by intersecting two cylinders.

But it might have been a primitive in the language.

So we don't actually know how it was manufactured

or how it was designed.

So how did we get back this information?

So it turns out that there is a technique called

evaluation context.

I'm not going to talk about the details of this.

But it's a technique in programming languages

that can actually let you use a geometric context

to replace certain parts of the mesh

by some primitives that are provided in the language.

So we can use that to retrieve the information that was

lost in the forward process.

The second problem is that there are

a lot of geometry challenges that we need to solve in order

to go backwards.

So how do we do that?

So we implemented various oracles

that can guide the synthesis process.

It turns out that there are so many different CAD

programs that when you compile, you see the same mesh back.

So we needed to be able to make this entire process much more

tractable than it actually is.

And these geometric oracles help us do this.

And the third problem is that the entire backward process

is actually quite nondeterministic.

Because at every step, there are so many different directions

in which you can go, and you don't want

to go in all those directions.

You need to be able to follow certain directions that

can lead you to a proper CAD program that is actually

what you want.

So the way we do that is by using search.

So we have actually built this tool.

So we have built a compiler.

And we have also built this decompiler.

And we have used it on about 20 to 25 models

that we downloaded from Thingiverse.

And so Thingiverse happens to be one

of the most popular repositories for sharing designs for 3D

printing.

And we were able to synthesize CAD programs up

to 200 lines of code.

So basically, that brings me to the end of this talk.

So the takeaways from my talk are that functional programming

is great.

And you can use it in this really exciting domain

of fabrication.

And in particular, the things that you can do with it is you

can design domain specific languages.

You can provide semantics to them.

You can build compilers.

And you can even prove correctness for your compilers.

And after doing all of those exciting things,

you can even do more cool things like build fancy decompilers

and program synthesis tools that can let you go back

from meshes to CAD programs.

And with that, I would like to thank my collaborators

in the project.

And if you are interested, I would recommend

you to go and look at our tool.

And if you have any questions, I'm happy to take them.

Thank you.

AUDIENCE: [APPLAUSE]

ADRIANA SCHULZ: So questions?

Start set

AUDIENCE: This is really cool.

How did you come up with the set of shapes

that were going to be in your geometric oracles?

CHANDRA NANDI: The shapes in the language

or you mean in the oracle.

AUDIENCE: Ah.

I don't know which I mean.

CHANDRA NANDI: Oh.

I mean, so right now, the language

supports shapes that are very cube-like.

So you can have prisms and cubes and cubites.

And for more fancy things like spheres,

we have hard-coded models--

like, primitives for them.

But it would be cool and we would

like to extend it to support, like, real curves and so on.

So all the oracles that we have are actually

using those printers which I just mentioned-- so cubes

and cubites, and prisms.

ADRIANA SCHULZ: Next up is Vikram,

who is a PhD student in networks and mobile systems lab.

And he's going to be telling us about his work

that he just presented at UIST on wireless analytics for 3D

printed objects.

VIKRAM IYER: All right, hi, everyone.

So today, I'm going to be talking

about Wireless Analytics for 3D Printed Objects.

And this is joint work with Justin in our group,

as well as another undergrad Ian,

and advised by Jen and Shyam.

And so before I go any further, what do we mean by analytics--

wireless analytics?

Our goal in this project is to track

the use of functional 3D printed objects over time.

So for example, if we have things like this Phoenix hand--

it's a prosthetic hand--

these types of things have a pretty high rate

of abandonment.

But what if we could track when a user is actually

opening and closing this hand or even how

much they open and close it?

Tracking these kinds of things could give us

important information about their use

to address these issues of abandonment.

And we could also think of other everyday objects

like this plastic pill bottle here.

If we could track things like when a user actually

unscrews the cap, we could make sure

that someone has either taken their medication

or, say, make sure they haven't taken too much.

So really, our goal overall is to embed wireless sensing

into these 3D printed objects.

We can also think beyond everyday objects,

like to things like this robotic arm here.

If we could use a printed object to--

or track the motion of a printed object

and map that to this robot arm, there

are all kinds of other cool things that we could do.

Now, at this point, I've shown you some applications

of what we could do if we could track

the use of printed objects.

Well, and the most obvious way to do

that would be to embed electronic sensors in them.

The problem is that this requires first designers

to have a pretty strong understanding

of the electronics and circuits on top

of being experts in the mechanical design as well.

And second, any electronic component

requires some kind of power source.

So that means then you'd have to deal with batteries

or have an RFID reader pretty close by.

So in this work, we take a different approach,

and instead, we co-design our 3D printed objects and sensors

to create completely plastic objects that can communicate,

but without any electronics.

We call this work printed analytics,

which is a wireless and circuitless platform that

can capture, store, and transmit information about the use of 3D

printed objects.

And then I'm going to explain how

this works in the context of a couple of motivating

applications--

first, printed prosthetics, then smart pill bottles,

and a wireless insulin pen.

So to give you an overview, I'm going

to start by explaining how we can 3D print objects that

can communicate wirelessly.

Then I'll go on to talk about how

we can decode the wireless signals

and how we can use that to track motion.

And last, I'll talk about how we can actually store information

in these objects to enable analytics outside

of our wireless range.

So first, I'm going to talk about how we actually

print these objects.

And to really understand this, first

we need to answer the question, how can

a plastic object communicate?

The answer is that unlike things like our Wi-Fi chips

that exist in our phones and everything else,

our printed objects communicate using reflections.

And this requires three different components.

The first is an antenna, second a switch, and then

the message that we want to transmit.

The way this works is we have an incoming radio signal

that hits this antenna.

And then when we toggle or switch on and off,

that changes how that antenna absorbs or reflects a signal.

And so by controlling that switch,

we can produce a changing reflection over time and use

that to communicate information.

So next, I'm going to go into a little bit more detail

and walk you through how we build each of these components.

So first off, how do we 3D print an antenna?

The first step in our design process

is to start with a well-known reference

design for an antenna.

But the problem is that we can't just

copy a design for a metal antenna

because the performance of an antenna

depends a lot on things like the material properties.

And in our case, we're going to be

using a conductive 3D printer filament

to actually fabricate them.

So our next step is to take this original design

and then model it in an electromagnetic simulator

to optimize parameters like the length and the width

to get the frequency and bandwidth that we want.

And then last, we actually fabricate

this using, like I said, a conductive 3D printer filament

on a dual material printer.

And we get something like this antenna you see here.

That's something that we actually

use in our printed objects.

So next, how do we build a switch?

Now, remember that for things like a pill bottle

like I'm showing in this video, that switch

has to be able to move in two directions.

So the main components of our switch

are we have a spring and a conductive contact.

So on the left here, we have our cantilever spring,

which can actually move both up or down because

of its symmetric design.

And what happens is we have this gear.

Basically, as it's turning clockwise,

it's going to push that spring in one direction.

When it turns counterclockwise, it'll push it in the other.

On the reverse side, we have our antennas and the switch

contacts.

So again, as that gear is turning,

it's going to push those contacts to either touch

the antenna at the top or touch the antenna at the bottom.

And that's going to create the changing reflection.

So here's an example of our switch

in action integrated into the Phoenix hand

that I showed you before.

And we can see that the switches either

are moving up or down to touch the antenna

at the top or the bottom.

And this creates this pattern of changing reflections

that we see at the bottom.

That's what we get at our receiver.

So next, now that I've shown you how we actually

print these things, let's go on to understand

how we can decode these signals that we get from them.

So the first step is we record the raw signal

on a software defined radio.

And the problem is we can see in this raw signal

those little peaks that I showed you before.

But we also have lots of noise from the environment.

So the next step is we go through,

and we apply some filters, and count the number of peaks

that we have in this signal, which corresponds to our data.

In the interest of time, I'm going

to skip through some of the details

about how we extend the range of our transmitter.

But to give you an overview, our system

works up to about four meters from our access point.

So next, if we look at how we can actually

track rotational motion once we've decoded our signals,

here's another video showing the Phoenix hand again.

And what we see here is as we turn that gear,

we get six peaks this time.

And what we can do is we can map that number of peaks

to the number of times or basically

the amount that that gear is turned

and the number of times it's pressed a switch.

And we can see that across a whole range

of 180 degrees of motion, we can figure out

how much this thing has moved.

The other question is, of course, how

do we figure out the direction that the gear is turning?

It could be going counterclockwise or clockwise.

And the way that we do this is by using this asymmetric gear

design where we have this pattern of six teeth followed

by four followed by three.

And if we look at this pattern of peaks

that we get on our receiver, by simply looking

at that sequence and the order that it appears in,

we can figure out whether our gear is turning

clockwise or counterclockwise.

So last, I'd like to talk a little bit

about how we can enable analytics

outside our wireless range.

And I'm going to motivate this by talking about an application

like an insulin pen.

Now, what we want to do here is we

want to store the number of times this has been pressed.

And we want to accumulate the number of button presses

to know how much insulin has been dispensed.

And last, of course, once we have that data stored,

we want to upload it once we're back in our wireless range.

The key idea here is that we're going to store information

in the rotation of a spring.

So the way this works is when you apply force or press down

the button on the insulin pen, it's

going to coil up this spring.

The question, of course, is how do

we do that in a controlled way.

And we do that by using a ratchet mechanism

to coil up this spring in a controlled fashion.

So the way this works is a ratchet

is a mechanism that can only turn freely in one direction.

So if you look at the pattern of teeth

that we have here in these grooves, when the ratchet turns

in one direction, it can move freely.

But in the other, it's going to come back and get stuck.

So what we can do with this ratchet is

when it's turning in one direction,

we accumulate all of our rotation

and store up energy in that spring.

And then when we press a button, we'll release that.

And we get our data back.

And here's a brief video showing how that works.

Again, we're pressing it down, coiling up the ratchet,

and in just a second, I'm going to press a button

to release that.

And we get our backscatter data.

So some quick thoughts on how we can

improve on this in the future.

We're currently working on reducing the form

factor of this to make it fit into smaller objects,

storing additional information about printed objects,

and hopefully, increasing the wireless range

from across a room to, say, across a whole home.

So to conclude, I've shown you how printed objects can

communicate and how we can store information about them

and how we can enable analytics for applications

like printed prosthetics, pill bottles, and a wireless insulin

pen.

Thank you.

AUDIENCE: [APPLAUSE]

AUDIENCE: When you're doing the analysis on the intended

design, is that a consol or something?

VIKRAM IYER: Yeah, it was actually HFSS.

AUDIENCE: OK.

VIKRAM IYER: Yeah.

AUDIENCE: Yeah.

So there, can you take into account the structure of 3D

printed conductive material?

VIKRAM IYER: Yeah, so that's actually

a great question that's not something

I've found a way to model very well, as far as,

like, the different layers that we have

and how those will impact the structure of the printed

object.

But I've definitely seen that what you get when you actually

model it in standard electromagnetic simulators

isn't quite the performance that you get on the actual printed

object.

AUDIENCE: A great research problem.

VIKRAM IYER: Yeah, definitely.

[CHUCKLING] Anyone else?

AUDIENCE: Yeah.

Yeah, so it seems like in particular

with zombie applications that you talk about,

you can imagine really serious security and privacy

concerns with the data that you're sort of collecting.

So if you have the transmitter and the receiver,

are there strong guarantees that only the receiver can actually

receive that data?

VIKRAM IYER: Yeah, so one thing right now is, of course,

our wireless range is limited.

The other thing that we've been looking at

is how we can encode or, like, basically have

some kind of encoding on the gear to encrypt

what information we're sending.

So then you'd have to know that information

to be able to decode the signal.

ADRIANA SCHULZ: And next is Megan.

She is co-advised by Jen and Scott Hudson, at CMU.

She's spending the year with us here at UW.

And she's going to tell us about some cool work on knitting.

MEGAN HOFMANN: This is research done in collaboration

with the Carnegie Mellon University Textiles

Lab, along with my collaborators Lea Albaugh, Ticha Sethapakdi,

Jessica Hodgins, Jennifer Mankoff, and Jim McCann.

And I want to start off by saying this is not

a project about 3D printing.

And we did not invent a knitting machine.

In fact, almost everyone in this room

is probably wearing something that

was made with an industrial knitting machine.

If you're wearing a sweater because it's cold outside--

industrial knitting machine.

If you're wearing socks--

industrial knitting machine.

If you're wearing a orthopedic brace--

industrial knitting machine.

If you're-- actually, I don't think this furniture is

knitted.

But most furniture that has any stretch to it--

knitting.

And there's lots of other interesting applications

of industrial knitting in the future.

You can create 3D shapes with knitting,

which means that if you dip those 3D shapes into cement,

you can make really lightweight bridges

or other architectural structures.

And at the CMU Textiles Lab, we're

really interested in thinking about how can we

make industrial knitting machines more

accessible from a computer-aided design perspective.

So the first place we started with this in 2016

when we were the Disney Research Pittsburgh Textiles Lab

was to build a compiler for the low level machine

instructions that run these machines so that we can create

different knitted primitives relatively easy,

like this teddy bear outfit.

And then this year at SIGRAPH, we

started to think a little bit more about complex shapes.

And so we can do something like take

a 3D mesh of, say, your favorite Stanford bunny

and generate knitting instructions.

But the next step we're starting to look at

is thinking about texture.

So this is my co-author Lea Albaugh's work.

She presented this work at a fashion show.

And she was thinking about different ways

of controlling textures and the interesting properties

of textures.

So you can make a really ruffly skirt

or you can make this interesting shoulder pad structure.

But the problem is is that creating 3D knitted structures

is really difficult. So what we've started with

is a very simple pipeline that starts

with a parser of a hand knitting language.

We did not invent this language.

It actually exists.

It wasn't designed for computers.

It was designed for people.

And we compile this down to something

that we call a knit graph, which is just

a basic representation of the functional properties

of a knitted structure.

And we can apply a lot of interesting algorithms-- pretty

standard classic graph algorithms--

to manipulate these structures in interesting ways

and combine them together.

And then we throw this in to KnitOut,

which is the term for most of the prior work I

was showing earlier.

And we get knitted results.

And we have based off of our sample

from a online repository of knitting samples,

we have 400 plus swatches of knitted textures.

So if anyone wants to see one of these things live,

come down after the talk.

But for the brevity and shortness on time,

I'm going to stick to just these kind of first three components.

And I'm going to start with the KnitSpeak Parser.

So the state-of-the-art for industrial knitting is this

terrible, terrible image editing tool.

So if you want to think about knitting as a bunch of stitches

kind of all structured in rows and columns like a picture,

you might start to think, well, let's just name every stitch

a color.

And let's have someone label every single pixel

as the stitch they want at that space.

But if you're repeating a structure over a large series

of space-- maybe 10,000 stitches-- a million stitches--

that's about the number that would go into a sweater--

this can be really tedious.

And so fashion designers don't do this.

Engineers at knitting machine companies do this.

But there are lots of people who know about knitting.

And they are not engineers.

And in fact, they have invented their own ways

of describing knitted structures so that they can render

these things in on their own.

And their instructions look oddly

like a programming language.

So they give you different commands

for all of the instructions in a specific set.

They may repeat these commands over time

and say, like, do this particular row

on row 1, 3, and 5.

And then they have charting tools

that can help them represent these visually so

that they know what they're making as they're knitting it.

And so we did a really simple thing.

We just took this language.

We built a parser for it.

It rendered pretty accurately across the sample

that we looked at.

And now we can generate these swatches

of different interesting knitted textures.

And this reveals some interesting things

about knitted textures.

They have lots of fun properties.

That can stretch and scrunch in.

They can have a pastae change, where they look like a lace

where you have lots of holes through it.

And they can even change the shape

entirely of a rectangular fabric and make it tilt onto its side.

So how do we represent-- what are we outputting

from this KnitSpeak Parser?

Well, to explain that, I'm going to have

to explain how knitting works and specifically

this idea of a loop-to-loop constraint.

So if anyone's ever held a string

and wrapped it into a loop, you know

that if you pull on two ends of that string,

the loop's going to fall apart.

But if you pull a loop through that loop,

the loop that you originally made--

the green loop at the bottom--

is going to be stable.

And you can pull it through in either direction.

And now you have two different sides of a knitted structure.

So if you're wearing anything knitted,

I encourage you to flip it over and notice

that it looks completely different on the opposite side.

This is the notion of the two simplest stitches you

can make-- a knit and a purl.

But we can combine loops.

So we can decrease the number of loops in a row

by pulling them through on one stitch.

Or we can increase the number of loops

by adding what we call a yarn over, which

is just a loop with no parents.

And then we can do even weirder things,

like we can start to cross these loops over one another.

And this ends up making a stiffer structure and also kind

of embosses the fabric so that it

looks like there's a stitch that's traveling in a diagonal.

And if we make a basic grid of these different loops that

are stabilized by one another, we have a knitted structure.

And a knitted structure is a linked list

of loops called a yarn.

AUDIENCE: [LAUGHTER]

MEGAN HOFMANN: [CHUCKLING] Or it's

a series of loops that are connected to one another

in what we call a knit graph.

So a knit graph is where each node is a loop.

And the directed graph between them

is how the loop is pulled through another loop

with this loop-to-loop constraint

that all loops must have a child or else they will unravel.

So let's think about a particular problem

with these nested structures.

These textures are great, except that their output

in tiles that usually have a resolution of somewhere

between a centimeter and a half a foot, so that's

a really poor resolution.

But because of this loop-to-loop constraint,

there's lots of dependencies across these tiles.

And so if we want to remove any of these stitches,

we have to do so carefully.

So in this case, in this texture,

which is about four inches on either side,

you have four tiles.

You have a resolution of one inch.

But removing things from images or something that looks

like an image as nothing new.

Back in 2007, Avidan and Shamir invented seam carving,

which is just a dynamic programming

technique for removing a seam--

not to be confused with the seams in this paper--

of pixels that are the least relevant in an image.

And so we want to apply the same approach

to these tiles of texture.

And when we think about the value of a single stitch,

we're going to think about first the functional constraints.

How many loops depend on this particular loop?

That's a bug.

Oh, well, we'll skip forward to the algorithm.

So what we're going to do is we're

going to assign these values.

And you might already start to see a path of 1, 1, 1 in red

and think that kind of looks like the chevron that was

represented by this texture.

And then as we sum up the value of all of the smallest

dependencies, we get this path that

follows that those black dots.

And we can remove those black dots

from the image or the knitted structure.

And now we have a slightly reduced texture,

which means that we can make smaller and smaller tiles.

And our resolution is back down to a stitch.

And what I want you to take away from this idea

is that machine knitting is a unique fabrication

tool that has been relatively unexplored in the literature.

It can produce complex shapes with fabric without sewing.

And the knitted texture are more interesting

because they have these functional

and aesthetic properties.

They're stiff.

We can control the drape.

They stretch in different interesting angles and ways.

And finally, we can express them as a simple node-link graph,

which means we can apply all of these classic computer science

algorithms to solve and to manipulate them

in interesting ways.

Are there any questions?

AUDIENCE: [APPLAUSE]

AUDIENCE: Did you ever have any problems

where things in KnitSpeak didn't map well to the machine

knitted?

MEGAN HOFMANN: So we actually got lucky that there is--

so the charting tool that this--

we'll go back to that one--

that image the chart image comes from

is generated by a place called Stitch Maps, which

has a language already in it.

So we knew that everything would be parsable.

It does end up lining up that they engineered their language

particularly well--

that if you look at the majority of published

books of knitted textures, they use a very similar form

to this.

It's essentially following the same grammar

so that we could have a sample from books

that are out there as well as this entire repository.

We were guaranteed that they would parse because they

wouldn't have been a chart on the website if they didn't.

We had a few exclusions where there are properties

in their language that actually can't be expressed

on a knitting machine because hand knitters have

more control.

If you want to see samples of things

that can't be machine knitted but can be hand knitted,

I've got a sweater with a black berry

stitch that's particularly difficult for the machine.

AUDIENCE: Is there a version of KnitSpeak

for circular knitting machines as well?

MEGAN HOFMANN: Yes.

And the only change is that instead

of saying row, row, row, row, row, you say round,

round, round, round, round.

[CHUCKLING] It's the exact same language.

And the graph can be represented both ways

because we represent the order in which the loops occur

as a linked list.

And so we just say, like, as you move to the next row,

the linked list doesn't have to shift backwards.

AUDIENCE: Yes, so this was a super cool talk.

Thanks.

But one quick question about making or incorporating

different materials into this framework-- so to what extent

does it take into account the differences in, say,

swatches that are produced by running

the same set of instructions over, like, a different sort

of, like, fiber.

MEGAN HOFMANN: So we have only knitted

these in cashmere, which is a relatively expensive activity.

But you can-- [LAUGHTER] knit on an industrial knitting machine

with a variety of fibers.

Shima Seiki, who is the company that

produces our knitting machine sells

a lot of fibers, including conductive fibers, meaning you

could probably make circuits.

We haven't explored it yet.

And we know that it will affect properties

like the stretchiness and the gauge

because those are as correlated to the material

as they are to the overall structure.

One of the things we're looking at in future work

is that if you take these different properties,

is there at least consistency in how they change so that you can

model things in regular yarn, but then predict them

for something like a metal.

ADRIANA SCHULZ: Thanks.

So let's thank again all the speakers.

And there will be a time if you guys have questions

and want to talk more.

AUDIENCE: [APPLAUSE]

[MUSIC PLAYING]

For more infomation >> UW Allen School Colloquium: Computational Fabrication Group - Duration: 54:29.

-------------------------------------------

Amazing Beautiful Park Model 553L from Athens Park Model RVs - Duration: 5:19.

Amazing Beautiful Park Model 553L from Athens Park Model RVs

For more infomation >> Amazing Beautiful Park Model 553L from Athens Park Model RVs - Duration: 5:19.

-------------------------------------------

BMW X5 3.0si High Executive Navigatie, Xenon, leer, camera, 19inch, pdc v+a, trekhaak, keyless - Duration: 1:12.

For more infomation >> BMW X5 3.0si High Executive Navigatie, Xenon, leer, camera, 19inch, pdc v+a, trekhaak, keyless - Duration: 1:12.

-------------------------------------------

Opel KARL 1.0 ecoFLEX 75pk Edition ** Airco, Bluetooth, Lage KM-Stand ** - Duration: 1:10.

For more infomation >> Opel KARL 1.0 ecoFLEX 75pk Edition ** Airco, Bluetooth, Lage KM-Stand ** - Duration: 1:10.

-------------------------------------------

Mazda 3 2.0 SkyActiv-G 120 TS+ Navi - Duration: 1:09.

For more infomation >> Mazda 3 2.0 SkyActiv-G 120 TS+ Navi - Duration: 1:09.

-------------------------------------------

Gorgeous Beautiful Model 505 Park Model From Athens - Duration: 5:35.

Gorgeous Beautiful Model 505 Park Model From Athens

For more infomation >> Gorgeous Beautiful Model 505 Park Model From Athens - Duration: 5:35.

-------------------------------------------

糖尿病桑椹健康 糖尿病人可以吃桑葚吗?为什么? - Duration: 2:56.

For more infomation >> 糖尿病桑椹健康 糖尿病人可以吃桑葚吗?为什么? - Duration: 2:56.

-------------------------------------------

SignalBooster.com = Clear Cell Phone Calls + Fast Mobile Internet (Indoors and in Vehicles)

For more infomation >> SignalBooster.com = Clear Cell Phone Calls + Fast Mobile Internet (Indoors and in Vehicles)

-------------------------------------------

Hyundai H300 2.5 CRDi Dynamic Airco Navigatie - Duration: 0:52.

For more infomation >> Hyundai H300 2.5 CRDi Dynamic Airco Navigatie - Duration: 0:52.

-------------------------------------------

【フォーミュラE】J SPORTS全戦放送決定、12月15日開幕戦をライブ中継 - Duration: 3:35.

For more infomation >> 【フォーミュラE】J SPORTS全戦放送決定、12月15日開幕戦をライブ中継 - Duration: 3:35.

-------------------------------------------

"Gilets jaunes" : les 4 options d'Emmanuel Macron pour sortir de la crise- NT - Duration: 10:52.

For more infomation >> "Gilets jaunes" : les 4 options d'Emmanuel Macron pour sortir de la crise- NT - Duration: 10:52.

-------------------------------------------

(CC) YUBIN - Thank U Soooo Much (VOSTFR) - Duration: 3:45.

For more infomation >> (CC) YUBIN - Thank U Soooo Much (VOSTFR) - Duration: 3:45.

-------------------------------------------

Amazing Beautiful Park Model 553L from Athens Park Model RVs - Duration: 5:19.

Amazing Beautiful Park Model 553L from Athens Park Model RVs

For more infomation >> Amazing Beautiful Park Model 553L from Athens Park Model RVs - Duration: 5:19.

-------------------------------------------

K-1 Fiance Visa Packet 2018 l How To Assemble 1-129F Fiance Visa - Duration: 6:44.

This is the K-1 visa packet also known as the 90-day fiance visa and today is

October 15th 2018 this is the cover letter and it describes what's within

the packet and also date and sign it the check the fee for $535 make sure you

make it out to the U.S Department of homeland security here is the e

notification this is where they notify you the status of the packet of the

i-129f email and phone number so they can text you and here is the I 129 F form

itself make sure you fill out everything that pertains to you and your fiancee

you do not leave anything out and just be 100% open and honest input na not

applicable where you don't need to put information as it doesn't pertain to you

and there's some sections that won't let you type it in so you just write it in

after you print it say I wrote it in there and this is 13 pages and there's

my signature that is important it's Keith they'll send it back

they'll deny it immediately if you don't sign it here's the additional

information needed and it'll indicate that you go back to this page if you run

out of room and certain sections like children meeting in person address maybe

employment like myself and here's an another attachment section to item 54 in

regards to how we met we both filled out one and signed it and dated

and my fiancee she did the same she is beneficiary and then we met on a dating

site known as Filipino Cupid dot-com so we're upfront and honest about that

and then we included the information about it

that's not a international marriage broker

there's my birth certificate it's a copy a printed copy front and

back and this is our intent to marry

once she's over here on the k1 visa we have 90 days to marry I filled out one

and she fell out one is when we both signed and dated this is the divorce

decree for myself you have to include that to show that you can marry and for

my fiance for annulment it was granted on the date our passport pictures two by

two and they're just paper clipped in place and then our pictures to prove

that we met in person my fiancee she put this all together with the captions

because quite honestly if she had to wait on me

it still wouldn't be done that's the date that I proposed it just shows our

days together

and that's our last day together we're actually right into the airport one shot

is us waiting a lobby of our hotel and the other one is in the grab as they

call it in the Philippines and here's our receipts during our time there again

they're just looking to make sure that you truly met in person because you have

to meet within two years of sending this packet which we met March of this year

2018 here's my our temporary

and just email confirmation then in my passport I took pictures of every page I

don't want to leave anything to chance and again it's just a show that I you

know went to the Philippines there's this stamp or stamps and then I included

the blank pages and if nothing else has verifies my US citizenship as well along

with my birth certificate and this is the show our relationship that's the

engagement ring and these are all chat messages from the beginning which we

started in a Skype and then went to what's app you know we ended up in

facebook Messenger but you don't want to overwhelm with too much information they

get the gist and then I also included the chat messages with her children and

then also with her sister and her sister-in-law included a chat message

between her and my mom then we included some cards that we sent to one another

during special occasions Christmas Valentine's and then our one-year

anniversary and I just sent a copy of a FedEx and that concludes the packet

For more infomation >> K-1 Fiance Visa Packet 2018 l How To Assemble 1-129F Fiance Visa - Duration: 6:44.

-------------------------------------------

Mercedes-Benz E-Klasse 200 K. Avantgarde Automaat - Duration: 1:13.

For more infomation >> Mercedes-Benz E-Klasse 200 K. Avantgarde Automaat - Duration: 1:13.

-------------------------------------------

Kpop Teasers That DIDN'T Match The Comeback - Duration: 10:48.

The teaser showed a badass/ girl crush concept however the MV was cute.

compared to the horror themed teaser, the Mv was more comedic than it was dark.

The instrumental was completely different.

The teaser is completely opposite to MV. It's literally night and day.

The first teaser was powerful and had a more hiphop style but the song was pop.

Both the set and sounds were different to the MV

The teasers made it seem like EXO were going to ride motorbikes.

the teaser portrayed a transition Korean theme yet that wasn't the concept for the MV.

The teaser shows a possible plot with a futuristic vibe.

Looking at the teaser alone you'd think it's a calm song.

The mv was pop but the teaser had a futuristic vibe to it.

The teaser sounds completely different to the comeback.

The teaser was calm but the song is upbeat.

The teaser and Comeback are polar opposites.

The member teasers for the "TT Film" were random and cute whereas the comeback was cute but Halloween themed.

The teaser was simple but unique however it had nothing to do with the comeback.

Their debut teaser was badass concept so fans were shocked to see their debut song be so cute.

The teaser looked like club song but the comeback was classy and sexy.

while the pathcode wasn't for the comeback (it was for their concert) fans associate it with CMB and how different it is.

MISS A - TOUCH The teaser made it seem like the comeback was plot driven but it was more dance centred.

NCT DREAM - WE GO UP The teaser is very calm.

Both trailer and MV were full of mystery and horror but VERY different to each other.

The teaser sounds different but both are catchy.

The teaser had a retro vibe.

Although this was the teaser for the album You'd think the office theme would appear in the comeback.

The teaser sounds mature and has a more simpler concept than the MV.

No comments:

Post a Comment