Posts Tagged ‘’

Best Robotic Legs Ever?

Friday, July 6th, 2012

A very interesting development has been reported by the Daily Disruption News Desk regarding robotic legs that are claimed to “fully model walking in a biologically accurate manner.” This will come as good news for spinal cord injury patients. Those of us who follow developments in artificial intelligence and robotics will likely take note as well.

I read this account with fascination, and immediately wanted to sketch out my understanding in model form. Extending the colloquialism, to a hammer, everything is a nail – to a systems engineer, everything must be modeled. As conveyed in the article, human walking is controlled by a neural network called the central pattern generator (CPG), which is anatomically located in the lumbar region. It’s purpose is to generate rhythmic muscle signals. The researchers said in its simplest form the CPG can be modeled by a neuron pair that each fire signals in alternating fashion.

To complete this model in addition to the neural architecture, the robot needs muscle-skeleton and sensory feedback components. Roughly, this system can be modeled as shown:

I could be wrong, but this is how I understand the Robotic Leg System!

Co-author of the study Dr Theresa Klein was quoted as saying “…we were able to produce a walking gait, without balance, which mimicked human walking with only a simple half-centre controlling the hips and a set of reflex responses controlling the lower limb.”

So, did you catch that? That was quite a surprising statement. Two things are totally counter intuitive to me. First, she said the robot works “without balance.” Does that mean that this robot does not need an “inner ear” to balance? Second, the CPG apparently apparently converts coarse motor commands into forces applied at the hip joint only. The “dangling part of the leg, the lower limb, just follows reflexively, implementing easily programmable commands that simple follow what is happening up stream at the hip.

Another implication of this analysis is that the brain proper plays less of a role in controlling gait that I would have guessed.

This would be a good time to confess that I could be totally wrong in my interpretation of this research and its result; I am learning as I go.

Speaking of which, the CPG model of this study is apparently a good facsimile of how gait is refined from early childhood steps through later improvement during the maturing process. The CPG in humans gets better over time as it learns the best walk to walk by repetition.

This is exciting as I can see similarities between this system and what I am learning in my artificial intelligence class. The evolving understanding of complex bio-mechanical systems as well as advances in AI make this a great time to be a student of such things.

Functional Programming Defined by Consensus

Tuesday, June 26th, 2012

Learning computer science is part of what I am up to currently. Through two classes at I’ve been introduced to basic programming in cs101, and then to functional programming in cs212. Both used the python which is known for its power, ease of learning, and suitability for application to a broad spectrum of problems.

The first course introduced basic concepts such as creating, assigning and storing data in memory, defining functions as blocks of code, program flow control structures, argument passing and data return, program execution and data output.

Building on that foundation, the second courses introduced additional powerful capabilities. List comprehensions, regular expressions, generator expressions, search algorithms and recursion were covered, all at breakneck speed. Fundamental to this second class though was a concept that challenged the understanding and assumptions of the students new to computer science; that was the power of the function within functional programming. The essential distinction is that, beyond merely defining a function, it thereafter can be treated as any other object that the language accommodates. This is such a powerful idea, and its implications so far reaching that there is a pedagogical imperative by which students are are first intentionally shielded from this knowledge. Computer Science professors slowly feed their students regurgitated worms until the time that their little birds are ready to be pushed from the nest; until such time in the course that students are properly prepared to absorb the full impact, utility, and implications of functional programming. Lovely image, won’t you agree? I just threw that in to see if anyone was paying attention.

For me, the concept was rather elusive at first, and still remains somewhat mysterious. So much so that it bears revisiting. So now, before my next round of online classes start, I will as an exercise attempt to define functional programming by digesting an two existing StackOverflow threads (first,second). My theory is that if I shine a light on a subject from many different directions a better understanding will emerge. This will be my first, but probably not my last attempt to reinforce my conceptual understanding of functional programming.

As gleaned from the referenced threads the following is one composite definition of functional programming, or “FP” hereafter. FP is well suited for a wide variety of problems but especially so when mathematics are involved. Because of the mathematical emphasis FP is more flexible in terms of abstraction and composition. Here abstraction means the ability to simplify problems by using FP constructs to model the problem. Composition refers to the ability to extend the power of functions by combining, nesting and extending them as permitted by the FP language of choice.

A key distinction, referring to that first mentioned above in my introduction is that FP promotes functions to first class variables. Here is where, if the professor said that on the first day of class, I would have likely said, “hey, I want to go back to my regurgitated worms.” Sorry, I could not resist.

One feature of an FP approach is to limit the use of global variables, or variables that are visible to the full scope of the program. This facilitates the ability to employ parallel execution. Typical usage of this would include graphic modeling and ray-tracing. The latter figures prominently in computer animation.

FP also implements powerful data structure capabilities. A benefit of this allows for more efficient algorithms and code than non-FP approaches. Similarly, with list comprehensions, such as provided in python, FP promotes brevity by allowing the collapse of very complex loop mechanisms into a single line list comprehension.

Generator expression in python also promote efficient memory utilization in that elements in a large set of data can be referenced by their place in the set, as if generated on demand, rather than consuming a large array as with in imperative programming.

Finally FP encourages modularity as a result of a more decouple approach than imperative programming; this enables reusability of code and improves testability as well.

This concludes my experiment in FP concept reinforcement. I have benefited from the exercise, and I hope you were not overly traumatized by the worm reference. I promise to try not to use such a revolting literary device ever again.

New Access to Knowledge Delivery for Everyone!

Saturday, June 23rd, 2012

Here’s a bold assertion – any person, anywhere in the world, who is seeking to learn computer science, and who has access to the internet need look no further than Enrolling in a class will allow any person free college level education, taught by world-class professors using coursework comparable to that at America’s premier technical universities.

So named by combining ‘U’ for ‘University’ with ‘-dacity’ as the root of the word ‘audacious’, represents a revolution in how knowledge is being delivered.

Frustrated by the limitations of teaching a relative handful of elite students at a time, at exclusive schools like Stanford and MIT, pioneers like Sebastion Thrun are promising, and delivering disruptive innovation in education.

At a time when our traditional university system is showing its limitations in terms of limited access, declining funding, rising tuition and crushing student debt, the prospect of FREE, WORLD-CLASS education is supremely appealing.

The world needs this, and thanks to visionaries like Thrun and others (many from Silicon Valley) it is ready resource, available to one and all.

If it sounds like am a convert, I am guilty as charged. I’ve had the good fortune to discover this right at its inception, in April 2012, and I have already completed two classes – cs101 How to Build a Search Engine (an introduction to computer science using Python programming language) and cs212, The Design of Computer Programs. The latter class was taught by Dr Peter Norvig, who is not only director of research at Google, but he is a recognized world leader in the field of artificial intelligence.

One undeniable benefit of this approach is that each class, which is delivered online in video format, has its own student support forum. All students can interact, one another, the teaching assistants and the professor himself. In fact I have posted questions on the forum to which have been directly answered by Dr. Norvig. When is the last time you got direct interaction with a pioneer and leading authority in the field of artificial intelligence?

By completing a class student get, in addition to the knowledge received, a certificate that indicates a varying measure of mastery, but oddly enough, no grade. This tends to rattle some students who, by habit, think only in traditional terms of grade-based feedback. To think that way is to miss out on the beauty of the concept of; what good is a grade, in a class where every exam is ‘take-home’ and the main purpose is the acquisition of knowledge?

There is speculation that their business model will evolve to include paid-for certifications where exams are somehow monitored and results verified, but has pledged that all their courses will always be available for free. This suits my needs perfectly; I don’t need the grade, I need the knowledge, and the price is right!

To deal with the stresses of our current economic despair and to be sufficiently prepared for our individual and collective futures I believe each person has to become a better version of themselves in all ways. What has to offer to me fits perfectly with this belief and is part of my personal plan forward. I’d invite you to consider for yourself whether this, or something similar could help you become a better version of you. The next offering of classes starts on June 26th, 2012.

That’s my OODA Loop, and Yes, I am Happy to See You!

Friday, June 22nd, 2012

Having introduced the OODA Loop yesterday it’s now time to examine how its application is relevant in my life currently.

Traditionally associated with military tactics in aerial combat, this recurring decision-making cycle consists of these steps – Observe, Orient, Decide and Act. Information from each step feeds forward into successive steps. Similarly, results of each increment feed back directly to the Observe step since they represent significant changes in the overall situation.

This has proven effective in the stress of combat because correctly applied it allows the pilot to respond effectively to the environment and to his opponent. He will defeat the enemy and perhaps most importantly, he will likely survive the encounter.

While I am not engaged in aerial combat presently, I do find myself in a rather stressful situation. I am currently unemployed; my economic survival and readiness for my future are in question. As such, it occurred to me to revisit the OODA Loop with the following question in mind – could I apply it to my present circumstances?

Here’s what’s going on with my OODA Loop, mid-cycle:

Observe – Relevant aspects of my observable environment include, [1] a US economy in a deep and severe recession, with sparse, if any at all, indications of near-term improvement, [2] an aerospace industry that is stagnant with no major US government acquisitions on the horizon, [3] a personal economy that includes mortgage commitments, and retirement savings which, although “above average” will not be sufficient on their own, especially in light of likely Social Security and Medicare reform.

Without making my age an inordinately large part of this conversation I will say that I am too young to take early retirement, but I’ve been around long enough to become vulnerable in terms of age and wage discrimination in my former industry.

If the preceding observations seems overly negative, I will assert that I do have useful skills accrued over my undergraduate education and professional career. These are reusable skills that can be leveraged and repurposed.

Orient – A large part of my orientation step depends on the quality of, and my interactions with my immediate and extended network, and with friends, one of whom has assisted me in a role as my mentor. The interim result of my orientation step is an awareness that [1] software solutions are ubiquitous with little prospect that software’s role in our lives will diminish, [2] modern personal computers are incredibly capable and can be leveraged to host powerful development environments, [3] the open source software movement has produced vast volumes of free software, [4] delivery systems, most notably cloud-based computing have revolutionized how software can be distributed, [5] the internet itself stores expansive resources to learn many things, including software development, [6] new means of “knowledge delivery” are beginning to emerge, most notably, a free, online university taught by world-class professors, from institutions such as MIT and Stanford. Did I mention it was free, and world-class?

Decide – Based on my observe and orient steps I have decided on this path: I will prepare myself to become a hybrid of a systems engineer and a software developer, by following a jointly determined (by myself and my mentor) learning curriculum, using my “powerful laptop” along with open source software development tools fashioned to implement a linux-python-java-groovy-grails-MySQL ramp in order to develop value-added solutions to customers ranging from small business to large-scale aerospace, delivered whenever possible as a hardware/software appliance bundle, or as software-as-a-service (SaaS).

Act – Based on the above plan I will learn specific software skills through [1] self-directed study using borrowed books and the internet, and through [2] successive classes at Associated actions, on a parallel path to the software learning include, learning the basics of business, and business development through interaction with my network, and by attendance at various meetups and user’s groups. In addition I will be revisiting selected liberal arts educational objectives that weren’t part of my aerospace engineering eduction.

As a result of actions, taken above, more feedback is directed to the Observe step and the cycle repeats.

Note, to tell this story, it has been streamlined. In reality I have already been doing this over the course of a year. I have been through roughly four complete cycles, and this post represents a distillation. At this point I am effectively entering a new Act step which will include enrollment and completion of several courses for the next hexamester that starts Monday the 26th of June. Having completed Dr Peter Norvig’s most recent class, cs212, the Design of Computer Programs I have Observed, Oriented, and then I Decided on the next classes. Note that the classes I will take are different than what I might have expected to take prior to the last cycle through the OODA Loop.

This is an experiment-in-progress, but so far, I’d say it has been effective for me. In my opinion it is a flexible, agile approach. With current economic stresses and uncertainties, combined with concerns over the long term prospects for traditional employment models in corporate America, I believe that this kind of method is as applicable, now, to people in my situation, as it was when first formulated by John Boyd for application to aerial combat.