When it comes to robotics, I typically jump to the technical aspect of planning, kinematics, and tracking. It can get nitty gritty really fast. But, it's great to see what just a little bit of artistic creativity can do when applied to even the most modest of robots. I hardly ever see anything quite this "cute" come out of the robotics research community:
Okay well, there's KeepOn by Hideki Kozima and Marek Michalowski which is pretty good.
At the complete other end of the "cute" spectrum is this recent video from Boston Dynamics, but is amazing for a completely different set of reasons.
Boston Dynamics continues to push hydraulic actuators farther than I think anybody thought they could. But, why does it have run like some kind of giant insect rather than an actual cheetah? Surely, staggering the foot falls would provide mechanical advantages I am not knowledgeable enough to articulate. Developing a robot capable of matching the maneuvering performance and speed of a cheetah would be quite remarkable.
I don't normally post negative reviews about products and services. I generally try to celebrate the things I really enjoy and share that with others. But, I had an astoundingly destructive experience with Linked-In this morning.
I received a Linked-In invite from an old colleague and decided to see who else had sent me an invitation that I might have neglected. I don't use Linked-In very much, but it's good to have a memory aid for colleagues I've worked with. After about 20 minutes of browsing and seeing which people have found new jobs (or been promoted in their old ones). I noticed that in my email stream were notifications of people accepting my invitations. I had only sent out about 5 invitations during my browsing session, and none of these notifications were from the people I had manually invited.
After about a dozen acceptance notifications from people I didn't recognized, I checked the Linked-In website and the "sent invitations" tab. Apparently, Linked-In automatically sent out nearly 1000 invitations on my behalf! See the screenshot below of my inbox flooded with accepted invites:
This continues on for several pages. I don't know exactly by what criteria this bug decided to send out 1000 invites. Perhaps it was everyone in the network of every profile I looked at this morning. Regardless, this was a major failure of this social network for me. I'm not even sure it's physically possible to send out 1000 invites in 20 minutes. And of course, there's no way to easily withdraw 1000 invitations in the UI. After about 15 minutes of trying to figure out what went wrong, emailing support, and trying to manually retract invites to people I didn't know.... I gave up.
Generally, I think Linked-In is a good service. However, this bug is castrophic for preserving any sense of professional meaning in the social network. It has caused A LOT of confusion for me and several other people, not counting the annoyance of spamming people on both sides. It's not the end of the world to be over-connected to people I may have briefly met directly, indirectly, saw me give a talk, or merely know of me. In fact, it's rather flattering that so many people accepted my invitations. I'm now connected to some people I perhaps should have sent invitations to, but the net was cast EXTREMELY wide and it has diluted the distinguishing value of Linked-In to nearly zero.
If you really care about the discretion of your Linked-In activity, BEWARE, this bug might hit you too and Linked-In might cause you to spam 1000 people, just like me.
I'm currently in LA for Siggraph 2012, which is the leading conference for computer graphics - but the community here includes artists, animators, modelers, movie studios, games studios, camera and display technologies. It's always a treat. While, there were definitely many interesting projects from the technical program (too many to enumerate here, like this, this, this, this, this and many more).
One piece that I really enjoyed seeing is a new animated short from Disney called "Paperman". It is planned to be shown at the beginning of Wreck-It-Ralph, so you'll get a chance to see it as well.
The reason I enjoyed it so much because it is a prefect balance of technology and art fusing hand drawn animation, CG graphics, and a great story. I watched some of the production talk about how it was created. The most enjoyable part of the talk was hearing about the interaction between the 2D hand drawing artists and the CG team - in particular how much they mutually respected each other and how humbled they were by what each side brought to the table. Often projects are too heavily weighted toward one side: either too focused on raw technology without a soul or too focused on the artistic concept without interesting execution. When you get a chance to witness the balance of both, the results are remarkable. "Paperman" is such an example.
I have a tremendous respect for the creative people I have encountered in my life, and make a conscious effort to expose myself to environments with people of vastly different skills and interests. I often run ideas that are extremely technical in nature past people who know nothing about technology, because I have often been surprised by the answer. At the very least, I get a little bit of practice trying to covey a complicated concept to someone who may have no domain knowledge and how it might affect ideas they care about - a very underrated skill, and not something taught in school.
So, whether you consider yourself an engineer or an artist, I encourage you to make a friend on the other side of campus. Your perspective on the world, the ideas you'll have, and the work you do will be better for it.
Congratulations, to everyone at NASA, JPL, and anyone else who may have been involved. It couldn't have gone anymore smoothly. High res images within minutes of landing. Amazing. I am in awe.
If you have not seen it. the description of the landing:
3D printed lower receiver for an AR-15 assault rifle. This is the only legally regulated component of the weapon.
It's hard not to like 3D printing. It allows you to transform nearly any 3D form you can draw on the computer into a physical object with a mere push of a button - literally. It also implies a completely alternative way goods might be delivered to consumers, manufactured, or customized to each individual. When your inventory and shipping costs are zero, and your manufacturing volume for any particular model is 1, many traditional assumptions about the economics of manufacturing are no longer valid.
I have no shortage of enthusiasm for that vision. But, there are some significant challenges to overcome before this will become a dominate way people purchase products. So, this transition will not likely occur very quickly.
However, I do watch the space of 3D printing and CNC fabrication with fascination, trying to understand where/when it will have dramatic effects on the manufacture of consumer goods. The object pictured above is a startling example, and may have a significant impact on the public discourse of tools like consumer 3D printing.
It is a 3D printed lower receiver for an AR-15 assault rifle based on the original file on Thingiverse. The version I printed is modified so it can print in two pieces on the smaller bed of my printer and has been made intentionally non-functional. But, this person printed one, assembled the full weapon, and successfully tested it with real ammunition. Apparently, fairly little stress is placed on the lower receiver during firing with most of the energy contained by the metal chambers of the upper receiver.
I find this object fascinating.
The lower receiver is the only component of the AR-15 assault rifle that is regulated by federal law as a "gun". If you disassemble a gun, it has many parts. Each part alone is quite harmless, such as the barrel, the grip, the magazine, the shoulder stock. So, which of the many parts actually constitutes the "gun" and is illegal to sell without a license? the lower receiver - which is like the body frame that holds all the parts together. Every other component you can legally purchase online and have mailed directly to your door step, no background check, no registration. But without the lower receiver, the gun would just fall apart and never be able to fire a round. This is the one part that is illegal to sell without a license, should have a serial number on it, and be registered according to local, state, and federal law.
What happens when the one part of the gun that is so intensely regulated, monitored, and the subject of so much national debate and law-enforcement man power, can simply be downloaded off the internet and printed? An individual sitting in front of a computer, can legally order all of the components of an AR-15 (except the lower receiver), order a 3D printer, download a file, push a button, and within a few hours assemble a fully operational unregistered assault rifle in broad daylight without having to resort to illicit or underground suppliers. What happens if they print 10 of them? 100? While it is definitely illegal to sell the parts without a license, the laws regarding home-built weapons for personal use are much less clear and may vary by locality - so, it is your responsibility to check with your local and state laws before you consider printing one of these.
As with any new technology, it can be used for good as well as evil. This is no different here and is not very surprising. However, what fascinates me is that this little piece of plastic, which was so trivial to make using a 3D printer, completely undermines centuries of debate, and fighting, and lobbying surrounding gun control regulation. In my opinion, this a radical example how technology changes faster than our social and political culture can adapt. As the quality of tools like 3D printing gradually mature and become common place and these models are improved, this tension will only increase. These are interesting times.
It's that time of year again. The Student Competition for the conference on User Interface Software and Technology (UIST). The goal of the contest is to invent new interactions on
state-of-the-art hardware. UIST will give you the hardware and a chance to win
up to $1500, and you show us what you can do. The hardware this year is a new input device from Synaptics. The sensor is code-named “Jedeye” and features high
resolution, independent tracking of up to 5 fingers with an "extra dimension":
The contest registration deadline is August 19th and one team member
must be registered for the UIST Conference by August 26th to
participate. For more details and to register, visit the contest website
(http://www.acm.org/uist/uist2012/contest.html).
When surfing the web and catching up on technology news, it is incredibly easy to become accustomed to the rapid pace that new products are announced, new features are offered, and new capabilities are demonstrated. Many of us have come to expect new gadgetry to be offered up every few days for our critiquing amusement, and the internet fills itself with commentary and fanaticism, both positive and negative, with each new wave of announcements. With in a month or so, the attention span of the internet will have drifted onto the next new offerings to be placed before the alter of judgement. This has become the expected norm.
But, I wanted to encourage everyone to take a moment to pause, and look back at the last 3 weeks..... actually, just 16 days. In less time than it takes for refrigerated milk to spoil, Apple, Microsoft, and Google each announced a remarkable new piece of technology: (in chronological order)
June 11th: Apple MacBook Retina Display
June 18th: Microsoft Surface with Touch Cover
June 27th: Google Glass
Perhaps it's because I happen to be lucky enough to know some of the people involved with all three of these projects, it absolutely humbles me to see the culmination of all of their work presented to the public at nearly the same time. These are the results of amazing colleagues, both past and present.
I think it is very hard for outside observers to really understand exactly how dramatic these product announcements can be for the people involved in creating them. Imagine spending 2 or more years of your life working away in complete silence on a project, never quite sure what the world is going think of it, what people are going to say about it, what people are going to do to you in the press... and then suddenly bring it on stage to unveil to an audience of literally millions hoping the demos go okay as you scramble to put on the last minute touches. The people that invest their lives into these creations inevitably develop an emotional attachment to the product itself. And as cheesy as it might sound, it really is a bit like releasing a child out in to the world and all you can do is pray that world treats them okay.
It is intensely nerve racking and even surreal to see something that you have helped shape suddenly appear all over international news, see people talking about you in different languages in countries that you've never even thought about visiting, or to turn on the TV and see people talking about your work in a way that is completely out of your control. Even though I was just a backstage spectator this time, I still got a bit of a rush witnessing it happen.
It's important for people reading news about these projects to realize that these products are not created by massive armies of engineers. In some cases, it can just be a few dozen folks. Imagine gathering 2-3 classrooms worth of your colleagues, and setting out to create a product like one of these in 2 years. That's is no small task. Think back to what you have done in the past 2 years. Not that many people can say that they accomplished more.
So before returning to the daily habit of consuming and critiquing tomorrow's offerings of gadgets, put aside any opinions you may or may not have about the companies involved and any predictions about the success of these products.... and take a moment. Take a moment to realize that in the span of just 16 days, you were able to watch as the hard work of 200-300 people was revealed to the world in the form of 3 remarkable feats of engineering and design, pulling the world ever so slightly further into the future.
Congratulations to all the people involved. Amazing work. Time to build more stuff.
I donated "one truckload of gravel to pave a school yard" because I personally believe the truckload is an under utilized unit of measure, and it's satisfying to be able to say you bought a "truckload" of just about anything.
If you'd like another educational treat, I highly recommend the following Vi Hart video (who recently joined Kahn Academy earlier this year). Awesome.
Since coming to Google, this is probably the most interesting code library that I have had a chance to work with. And now, you can use it too. So, what exactly is a "non-linear least squares solver"? and why should you care?
It turns out that a solver like Ceres is at the heart of many modern computer vision and robotics algorithms. Anywhere you have a bunch of observed sensor data about the world and you want to create an explanation of all those observations, a non-linear least squares solver can probably do that for you. For example, if you have a bunch of distance sensors and you want to figure out where you are relative to the walls. Like this:
Or if you have a camera, and you want to figure out the position of the camera and objects in view:
Or say you have a quad copter, and you want to model how it will respond to thrust on different propellers:
or (as in the case of Google Street view) combining vehicle sensors in the cars with GPS data:
or even figure out the best way to position your plant so it gets the most amount of sun (assuming you could accurately measure the amount of sun hitting the leaves):
Non-linear least squares solvers, like Ceres, are a tool for optimizing many variables simultaneously in a complex model/formula to fit some target data. Many of the advanced engineering problems today come down to this. It's basically a fancy version of your typical line fitting problem:
This is linear least-squares. The model here is:
y = m*x + b
This is "linear" because it is the simple addition of a scaled variable m*x and a constant b. It is "least-squares" because it minimizes the square of the distance between the line and each of the data points. In this simple case, that algorithm is simply solving for m and b in the line equation. There are methods for directly computing these values. But, if the equation was non-linear such as:
y = (m*x - cos(x))^2/b
You now need a non-linear least squares solver. Many real world problems are non-linear such as anything that involves rotation, camera projection, multiplicative effects, or compounding/exponential behavior. You might be able to devise a clever way to calculate the optimal values for m and b directly, or you can use an iterative algorithm and let the computer tweak the values of m and b until the squared error to your data is minimized. While this example also only has two variables, Ceres can handle optimizing thousands of variables simultaneously and uses techniques for reaching an error minimizing solution quickly. Though, it's important to note that it can only iteratively crawl toward the lowest error solution starting from the initial values of m and b you provide... like a drop of water sliding down to the bottom of a bowl. If the bottom of the bowl is very bumpy, it can get stuck in one of the smaller divots and never reach the lowest part of the bowl. This is known as getting stuck in a "local minima" and never finding the "global minimum" and the shape of the bowl is called the "cost surface". When the cost surface of a problem is not very bowl-like, it can lead to problems.
Ceres can also handle something called "sparsity" efficiently. This occurs when you have many many variables, but only a few of them interact with each other at a time. For example, the current position of a flying quad copter depends on the previous position and previous velocity. But, the current velocity doesn't really depend that much on the previous position. Imagine if you made a giant table with all your input variables in the column names and all of your output values in row names and then put check mark in the table where ever the input was used to compute the output. If most of the table is empty, then you have a "sparse matrix" and Ceres can take advantage of this emptiness (which indicates independence of the variables) to dramatically increase the speed of computation.
Anywhere you that have data, and you have a model (which just a fancy term for complicated formula) that should be able to generate that data and you want to tweak the values inside your generative model to best fit your data... a tool like Ceres might do the job.
For many problems, mathematicians and engineers have spent decades devising clever and complex formulas to solve them directly. But in many fields, having a computer perform non-linear optimization on data is becoming the preferred method because it makes it much easier to tackle very complicated problems with many variables, and often the result can be more stable to noisy input.
The neat thing about using a non-linear solver in a real-time system, is that the computer can respond to feedback in much the same way you do. If an object is too far to the left of a target position, it knows to move it right. If the wind starts blowing, and it drift backwards it will automatically respond by pushing forward. As long as you have an equation to explain how the output will be affected by the controls. It can figure out the best way to fiddle with the controls to minimize the distance from a target value.
If I find the time, I might try to post some tutorials on using Ceres. Because I believe this is one of the most powerful tools in modern engineering, and no one ever taught it to me in undergrad or high school. It's like the difference between doing long division by hand and then being handed a calculator.
These past couple weeks, there have been a few videos released from the group I work in at Google. Congratulations to the many people in X who's hard work has gone into each of these.
I am engineer that lives in the bay area. This project blog is for personal projects outside the scope of my work. In 2008, I graduated from Carnegie Mellon University with a PhD in Human-Computer Interaction. My research interests are in exploring novel interface technology that can influence the lives of many people. My main website can be found at johnnylee.net