Welcome to TiddlyWiki created by Jeremy Ruston; Copyright © 2004-2007 Jeremy Ruston, Copyright © 2007-2011 UnaMesa Association
[[Classes]]
List of coursework completed & TA'd at Berkeley.
[[Qual]]
Helpful info & documents for ~PhD students preparing for the qual.
/***
|''Name:''|BibTeXPlugin|
|''Description:''|Very incomplete BibTeX implementation to work with bibliographic references|
|''Author:''|Paulo Soares; some tweaks by sburden|
|''Version:''|1.5|
|''Date:''|2010-11-11|
|''Source:''|http://www.math.ist.utl.pt/~psoares/addons.html|
|''Overrides''|Story.prototype.refreshTiddler|
|''Documentation:''|[[BibTeXPlugin Documentation|BibTeXPluginDoc]]|
|''License:''|[[Creative Commons Attribution-Share Alike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion:''|2.5.0|
***/
//{{{
if(!version.extensions.BibTeXPlugin) { //# ensure that the plugin is only installed once
version.extensions.BibTeXPlugin = {installed: true};
(function($) {
config.macros.cite = {
noReference: "(??)",
refreshTiddler: Story.prototype.refreshTiddler
};
config.macros.cite.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
var pos, cmb = config.macros.bibliography;
if(params.length==0) return;
var entry = params[0];
var args = paramString.parseParams(null,null,false);
var title = getParam(args,"bibliography",null);
if(title) {
this.biblioTiddler = title;
} else {title = this.biblioTiddler;}
title = getParam(args,"thisBibliography",title);
var format = getParam(args,"format",null);
if(format) {
this.format = format;
} else {format = this.format;}
format = getParam(args,"thisFormat",format);
var argsArray = paramString.readMacroParams();
var showAll = ($.inArray('showAll',argsArray) > -1);
if(title && store.tiddlerExists(title)) var bib = cmb.extractEntry(title, entry);
if(bib.content) {
var entries = this.entries;
if($.inArray(entry, entries)==-1) this.entries.push(entry);
entries = this.entries;
pos = $.inArray(entry, entries)+1;
var author = cmb.processNames(bib.content.extract("author"), showAll);
var year = bib.content.extract("year");
var citation = format.replace("author", author);
citation = citation.replace("year", year);
citation = citation.replace("number", pos);
wikify(citation, place);
} else {
wikify(this.noReference, place);
}
}
Story.prototype.refreshTiddler = function(title,template,force){
config.macros.cite.biblioTiddler = null;
config.macros.cite.format = "author (year)";
config.macros.cite.entries = [];
var tiddler = config.macros.cite.refreshTiddler.apply(this,arguments);
return tiddler;
}
config.macros.bibliography = {
article: {fields: ["author", "year", "title", "journal", "volume", "pages"], format: "author. title. //journal// volume:pages, (year)."},
book: {fields: ["author", "year", "title", "publisher"], format: "author (year). //title//. publisher."},
inproceedings: {fields: ["author", "year", "title", "booktitle"], format: "author. title. //booktitle//, year."},
incollection: {fields: ["author", "year", "title", "editor", "booktitle", "pages", "publisher"], format: "author (year). title. In editor //booktitle//, pages. publisher."},
techreport: {fields: ["author", "year", "title", "institution"], format: "author. title. institution, year."},
manual: {fields: ["author", "year", "title", "organization"], format: "author (year). //title//. organization."},
unpublished: {fields: ["author", "year", "title"], format: "author (year). //title//. Unpublished."}
};
config.macros.bibliography.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
var cmc = config.macros.cite;
var title = (cmc.biblioTiddler) ? cmc.biblioTiddler : params[0];
if(!title || !store.tiddlerExists(title)) return;
var argsArray = paramString.readMacroParams();
//console.log(argsArray);
var i, entryText;
var entries = [];
if($.inArray('showAll',argsArray) > -1) {
entryText = this.extractAllEntries(title);
for(i=0; i<entryText.length; i++) {
entries[entries.length] = this.processEntry(entryText[i], i);
}
} else if ( argsArray.length > 1 ) {
argsArray.shift();
//console.log(argsArray);
for ( i=0; i < argsArray.length; i++) {
entryText = this.extractEntry(title, argsArray[i]);
if(entryText) {
entries[entries.length] = this.processEntry(entryText, i);
}
}
} else {
for(i=0; i<cmc.entries.length; i++){
entryText = this.extractEntry(title, cmc.entries[i]);
if(entryText) {
entries[entries.length] = this.processEntry(entryText, i);
}
}
}
//entries.sort();
wikify(entries[0] , place);
for (i=1; i < entries.length; i++) {
wikify("\n\n" + entries[i] , place);
}
return true;
}
config.macros.bibliography.processNames = function(names, showAll) {
var i, authors = names.split(" and ");
var entry = authors[0];
var numAuthors = authors.length;
var fullEntry = entry;
if (numAuthors==2) {
entry += " and " + authors[1];
fullEntry = entry;
}
if (numAuthors>2) {
fullEntry = entry;
for (i=1; i < numAuthors; i++) {
if (i==numAuthors-1) {fullEntry += " and "} else {fullEntry += ", "};
fullEntry += authors[i];
}
if(showAll) {entry = fullEntry;} else {entry += " et al.";}
}
return entry;
}
config.macros.bibliography.processEntry = function(entry, pos) {
var field, text=entry.content;
var fields={};
fields.number = pos+1;
var type = this[entry.type];
var output = type.format;
for(var i=0; i<type.fields.length; i++){
field = type.fields[i];
switch(field){
case "author":
fields.author = this.processNames(text.extract("author"), true);
break;
case "title":
var url = text.extract("url");
fields.title = text.extract("title");
fields.title = (url=='') ? fields.title : "[[" + fields.title + "|" + url + "]]";
break;
case "editor":
var editor = text.extract("editor");
fields.editor = (editor=='') ? editor : this.processNames(editor,true) + " (Eds.), ";
break;
default:
fields[field] = text.extract(field);
}
output = output.replace(field, fields[field]);
}
return output;
}
config.macros.bibliography.extractEntry = function(title,entry) {
var bib = {type: null, content: null};
var text = store.getTiddlerText(title);
var re = new RegExp('\\s*@(\\w+?)\\{\\s*' + entry + '\\s*,\\s*(.[^@]+)\\}','mi');
var field = text.match(re);
if(field) {
bib.type = field[1].toLowerCase();
bib.content = field[2];
}
return bib;
}
config.macros.bibliography.extractAllEntries = function(title) {
var bib, field, entries = [];
var text = store.getTiddlerText(title);
var bibs = text.match(/\s*@(\w+?)\{\s*(.[^@]+)\}/mgi);
for(var i=0; i<bibs.length; i++){
field=bibs[i].match(/\s*@(\w+?)\{\s*(.[^@]+)\}/mi);
bib = {type: null, content: null};
if(field) {
bib.type = field[1].toLowerCase();
bib.content = field[2];
if(bib.type!='string' && bib.type!='preamble' && bib.type!='comment') entries.push(bib);
}
}
return entries;
}
config.macros.bibliography.extractField = function(field) {
var text = "";
var re = new RegExp('\\s*'+field+'\\s*=\\s*[\\{|"]\\s*(.+?)\\s*[\\}|"]','mi');
var fieldText = this.match(re);
if(fieldText){
text = fieldText[1].replace(/\{|\}/g,'');
if(field!='url') text = text.replace(/-+/g,"—");
}
return text;
}
String.prototype.extract = config.macros.bibliography.extractField;
config.shadowTiddlers.BibTeXPluginDoc="The documentation is available [[here.|http://www.math.ist.utl.pt/~psoares/addons.html#BibTeXPluginDoc]]";
})(jQuery)
}
//}}}
[<img[Sam Burden|img/sam_burden_.jpg]]
!!!Sam Burden
I am a ~PhD candidate in Electrical Engineering and Computer Sciences at UC Berkeley. My training is in control theory, but my interests lie at the intersection of dynamical systems, robotics, and biomechanics. My thesis advisor is [[Prof. Shankar Sastry| http://robotics.eecs.berkeley.edu/~sastry/]], and I have several active [[collaborations| Collaborations]]. I am funded by an [[NSF fellowship| https://www.fastlane.nsf.gov/grfp/Login.do]] and the [[MAST| http://mast-cta.org]] project.
Together with [[Matt Spencer| http://www.eecs.berkeley.edu/~mespence/]], I help run a [[K-12 engineering outreach| Outreach]] program in Bay Area schools, and I present annually to large groups of high school students at [[UW MathDay| http://www.math.washington.edu/~morrow/mathday.html]] in Seattle.
My academic career started at a [[math camp| http://www.math.washington.edu/~simuw/thisyear/]] at the University of Washington, where I now have the honor of [[teaching robotics| Outreach]] each summer.
As an undergraduate at [[UW| http://uw.edu]], I worked with [[Prof. Eric Klavins| http://depts.washington.edu/soslab/mw/index.php?title=User:Klavins]] in the [[Self-Organizing Systems| http://soslab.ee.washington.edu]] lab with funding from the [[WA NASA Space Grant| http://www.waspacegrant.org/]], [[Mary Gates Endowment| http://www.washington.edu/uaa/mge/apply/research/index.htm]], and [[Washington Research Foundation| http://www.washington.edu/research/urp/wrff/index.html]]. I also spent a summer at [[Penn| http://www.upenn.edu/]] working with [[Prof. Dan Koditschek| http://www.seas.upenn.edu/~kod/]] and [[Prof. Jon Clark| http://www.eng.fsu.edu/~clarkj/]] in the [[KodLab| http://kodlab.seas.upenn.edu]] with funding from the NSF [[SUNFEST| http://www.seas.upenn.edu/sunfest/]] REU.
|bd0|k
|''email:''|sburden@eecs.berkeley.edu|
|''cell:''|206.384.6942|
|''skype:''|sburden|
|''desk:''|#13 in 337 Cory Hall|
|''mail:''|University of California at Berkeley<br />205 Cory Hall<br />Berkeley, CA 94720-1772|
!!!Brief Bio
Sam Burden is a ~PhD candidate in EECS at UC Berkeley advised by Prof. Shankar Sastry. He studies locomotion and manipulation in robotics and biomechanics using novel tools from hybrid systems theory.
[[All blog entries| index.html#tag:blog]]
2013/05/09: [[Forces are covariant]] (needs [[MathJax| http://www.mathjax.org/download/]])
2013/02/25: [[CDC2012]]
2013/02/21: [[OSX]]
2013/02/02: [[DOI]]
2013/01/16: [[Python]]
2013/01/08: [[SICB2013]]
2012/10/27: [[SwiMP3 Playlists]]
2012/07/22: [[Structure of Scientific Revolutions]]
2012/07/21: [[Radiolab]]
2012/06/02: [[Robot Ethics]]
2012/05/24: [[Rosetta Stone]]
2012/05/20: [[Migration to tiddlyWiki]], [[CDC2011]], [[SysID2012]]
!!!Dec 3, 2012
This evening [[Dorsa Sadigh| http://www.eecs.berkeley.edu/~dsadigh/]], [[Sam Coogan| http://www.eecs.berkeley.edu/~scoogan/]] and I visited [[Boost! Oakland| http://boostoakland.org/]], a non-profit 1-on-1 K-5 tutoring program. Consider [[volunteering with them| http://boostoakland.org/volunteer]] if you'd like to mentor a student!
Sam Burden is a PhD candidate in EECS at UC Berkeley advised by Prof. Shankar Sastry. He studies locomotion and manipulation in robotics and biomechanics using novel tools from hybrid systems theory.
!!![[Numerical Integration of Hybrid Dynamical Systems via Domain Relaxation| pubs/BurdenGonzalez2011.pdf]]
To generate the schematic and plots in the paper:
{{{
$ hg clone http://eecs.berkeley.edu/~sburden/code/cdc2011 cdc2011
$ cd cdc2011/simulation
$ matlab
>>> dpsch
>>> dpplots
}}}
''Prerequisites''
{{{mercurial matlab}}}
!!![[Dimension Reduction Near Periodic Orbits of Hybrid Systems| pubs/BurdenRevzen2011.pdf]]
To generate the schematic and plots in the paper:
{{{
$ hg clone http://eecs.berkeley.edu/~sburden/code/cdc2011 cdc2011
$ cd cdc2011/reduction
$ ipython
ipy$ run hop.py
}}}
Links: [[slides| talks/2011cdc.pdf]], [[paper| pubs/BurdenRevzen2011.pdf]]
''Prerequisites''
{{{mercurial python ipython numpy scipy matplotlib}}}
I co-organized a workshop on [[Control Systems in the Open World| http://purl.org/sburden/cdc2012]] at [[CDC 2012| http://control.disp.uniroma2.it/cdc2012/]] in Maui, HI, USA. A video of my talk and the accompanying slides are available below.
<html>
<iframe width="640" height="360" src="http://www.youtube.com/embed/VucNlU50-WM?list=PLNO40GE-rrcN8TModHcf5A2WtkbMMPqED" frameborder="0" allowfullscreen></iframe>
</html>
[[Reduction and Robustness via Intermittent Contact| talks/2012cdc.pdf]]
<html>
<iframe src="https://www.google.com/calendar/embed?showTitle=0&mode=WEEK&height=600&wkst=1&bgcolor=%23FFFFFF&src=0t15c830il35dlj0oe17jprndk%40group.calendar.google.com&color=%23125A12&src=l63aj123cn03hrvatvojraim2s%40group.calendar.google.com&color=%23AB8B00&src=samaburden%40gmail.com&color=%232952A3&src=2fegaeb6knf6ujiiektlu6hdc4%40group.calendar.google.com&color=%23BE6D00&src=tqednnog8ampv63dk3iclcklog%40group.calendar.google.com&color=%23A32929&ctz=America%2FLos_Angeles" style=" border-width:0 " width="800" height="600" frameborder="0" scrolling="no"></iframe>
</html>
/***
|Name|CheckboxPlugin|
|Source|http://www.TiddlyTools.com/#CheckboxPlugin|
|Documentation|http://www.TiddlyTools.com/#CheckboxPluginInfo|
|Version|2.4.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|Add checkboxes to your tiddler content|
This plugin extends the TiddlyWiki syntax to allow definition of checkboxes that can be embedded directly in tiddler content. Checkbox states are preserved by:
* by setting/removing tags on specified tiddlers,
* or, by setting custom field values on specified tiddlers,
* or, by saving to a locally-stored cookie ID,
* or, automatically modifying the tiddler content (deprecated)
When an ID is assigned to the checkbox, it enables direct programmatic access to the checkbox DOM element, as well as creating an entry in TiddlyWiki's config.options[ID] internal data. In addition to tracking the checkbox state, you can also specify custom javascript for programmatic initialization and onClick event handling for any checkbox, so you can provide specialized side-effects in response to state changes.
!!!!!Documentation
>see [[CheckboxPluginInfo]]
!!!!!Revisions
<<<
2008.01.08 [*.*.*] plugin size reduction: documentation moved to [[CheckboxPluginInfo]]
2008.01.05 [2.4.0] set global "window.place" to current checkbox element when processing checkbox clicks. This allows init/beforeClick/afterClick handlers to reference RELATIVE elements, including using "story.findContainingTiddler(place)". Also, wrap handlers in "function()" so "return" can be used within handler code.
|please see [[CheckboxPluginInfo]] for additional revision details|
2005.12.07 [0.9.0] initial BETA release
<<<
!!!!!Code
***/
//{{{
version.extensions.CheckboxPlugin = {major: 2, minor: 4, revision:0 , date: new Date(2008,1,5)};
//}}}
//{{{
config.checkbox = { refresh: { tagged:true, tagging:true, container:true } };
config.formatters.push( {
name: "checkbox",
match: "\\[[xX_ ][\\]\\=\\(\\{]",
lookahead: "\\[([xX_ ])(=[^\\s\\(\\]{]+)?(\\([^\\)]*\\))?({[^}]*})?({[^}]*})?({[^}]*})?\\]",
handler: function(w) {
var lookaheadRegExp = new RegExp(this.lookahead,"mg");
lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
// get params
var checked=(lookaheadMatch[1].toUpperCase()=="X");
var id=lookaheadMatch[2];
var target=lookaheadMatch[3];
if (target) target=target.substr(1,target.length-2).trim(); // trim off parentheses
var fn_init=lookaheadMatch[4];
var fn_clickBefore=lookaheadMatch[5];
var fn_clickAfter=lookaheadMatch[6];
var tid=story.findContainingTiddler(w.output); if (tid) tid=tid.getAttribute("tiddler");
var srctid=w.tiddler?w.tiddler.title:null;
config.macros.checkbox.create(w.output,tid,srctid,w.matchStart+1,checked,id,target,config.checkbox.refresh,fn_init,fn_clickBefore,fn_clickAfter);
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
}
}
} );
config.macros.checkbox = {
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
if(!(tiddler instanceof Tiddler)) { // if no tiddler passed in try to find one
var here=story.findContainingTiddler(place);
if (here) tiddler=store.getTiddler(here.getAttribute("tiddler"))
}
var srcpos=0; // "inline X" not applicable to macro syntax
var target=params.shift(); if (!target) target="";
var defaultState=params[0]=="checked"; if (defaultState) params.shift();
var id=params.shift(); if (id && !id.length) id=null;
var fn_init=params.shift(); if (fn_init && !fn_init.length) fn_init=null;
var fn_clickBefore=params.shift();
if (fn_clickBefore && !fn_clickBefore.length) fn_clickBefore=null;
var fn_clickAfter=params.shift();
if (fn_clickAfter && !fn_clickAfter.length) fn_clickAfter=null;
var refresh={ tagged:true, tagging:true, container:false };
this.create(place,tiddler.title,tiddler.title,0,defaultState,id,target,refresh,fn_init,fn_clickBefore,fn_clickAfter);
},
create: function(place,tid,srctid,srcpos,defaultState,id,target,refresh,fn_init,fn_clickBefore,fn_clickAfter) {
// create checkbox element
var c = document.createElement("input");
c.setAttribute("type","checkbox");
c.onclick=this.onClickCheckbox;
c.srctid=srctid; // remember source tiddler
c.srcpos=srcpos; // remember location of "X"
c.container=tid; // containing tiddler (may be null if not in a tiddler)
c.tiddler=tid; // default target tiddler
c.refresh = {};
c.refresh.container = refresh.container;
c.refresh.tagged = refresh.tagged;
c.refresh.tagging = refresh.tagging;
place.appendChild(c);
// set default state
c.checked=defaultState;
// track state in config.options.ID
if (id) {
c.id=id.substr(1); // trim off leading "="
if (config.options[c.id]!=undefined)
c.checked=config.options[c.id];
else
config.options[c.id]=c.checked;
}
// track state in (tiddlername|tagname) or (fieldname@tiddlername)
if (target) {
var pos=target.indexOf("@");
if (pos!=-1) {
c.field=pos?target.substr(0,pos):"checked"; // get fieldname (or use default "checked")
c.tiddler=target.substr(pos+1); // get specified tiddler name (if any)
if (!c.tiddler || !c.tiddler.length) c.tiddler=tid; // if tiddler not specified, default == container
if (store.getValue(c.tiddler,c.field)!=undefined)
c.checked=(store.getValue(c.tiddler,c.field)=="true"); // set checkbox from saved state
} else {
var pos=target.indexOf("|"); if (pos==-1) var pos=target.indexOf(":");
c.tag=target;
if (pos==0) c.tag=target.substr(1); // trim leading "|" or ":"
if (pos>0) { c.tiddler=target.substr(0,pos); c.tag=target.substr(pos+1); }
if (!c.tag.length) c.tag="checked";
var t=store.getTiddler(c.tiddler);
if (t && t.tags)
c.checked=t.isTagged(c.tag); // set checkbox from saved state
}
}
// trim off surrounding { and } delimiters from init/click handlers
if (fn_init) c.fn_init="(function(){"+fn_init.trim().substr(1,fn_init.length-2)+"})()";
if (fn_clickBefore) c.fn_clickBefore="(function(){"+fn_clickBefore.trim().substr(1,fn_clickBefore.length-2)+"})()";
if (fn_clickAfter) c.fn_clickAfter="(function(){"+fn_clickAfter.trim().substr(1,fn_clickAfter.length-2)+"})()";
c.init=true; c.onclick(); c.init=false; // compute initial state and save in tiddler/config/cookie
},
onClickCheckbox: function(event) {
window.place=this;
if (this.init && this.fn_init) // custom function hook to set initial state (run only once)
{ try { eval(this.fn_init); } catch(e) { displayMessage("Checkbox init error: "+e.toString()); } }
if (!this.init && this.fn_clickBefore) // custom function hook to override changes in checkbox state
{ try { eval(this.fn_clickBefore) } catch(e) { displayMessage("Checkbox onClickBefore error: "+e.toString()); } }
if (this.id)
// save state in config AND cookie (only when ID starts with 'chk')
{ config.options[this.id]=this.checked; if (this.id.substr(0,3)=="chk") saveOptionCookie(this.id); }
if (this.srctid && this.srcpos>0 && (!this.id || this.id.substr(0,3)!="chk") && !this.tag && !this.field) {
// save state in tiddler content only if not using cookie, tag or field tracking
var t=store.getTiddler(this.srctid); // put X in original source tiddler (if any)
if (t && this.checked!=(t.text.substr(this.srcpos,1).toUpperCase()=="X")) { // if changed
t.set(null,t.text.substr(0,this.srcpos)+(this.checked?"X":"_")+t.text.substr(this.srcpos+1),null,null,t.tags);
if (!story.isDirty(t.title)) story.refreshTiddler(t.title,null,true);
store.setDirty(true);
}
}
if (this.field) {
if (this.checked && !store.tiddlerExists(this.tiddler))
store.saveTiddler(this.tiddler,this.tiddler,"",config.options.txtUserName,new Date());
// set the field value in the target tiddler
store.setValue(this.tiddler,this.field,this.checked?"true":"false");
// DEBUG: displayMessage(this.field+"@"+this.tiddler+" is "+this.checked);
}
if (this.tag) {
if (this.checked && !store.tiddlerExists(this.tiddler))
store.saveTiddler(this.tiddler,this.tiddler,"",config.options.txtUserName,new Date());
var t=store.getTiddler(this.tiddler);
if (t) {
var tagged=(t.tags && t.tags.indexOf(this.tag)!=-1);
if (this.checked && !tagged) { t.tags.push(this.tag); store.setDirty(true); }
if (!this.checked && tagged) { t.tags.splice(t.tags.indexOf(this.tag),1); store.setDirty(true); }
}
// if tag state has been changed, update display of corresponding tiddlers (unless they are in edit mode...)
if (this.checked!=tagged) {
if (this.refresh.tagged) {
if (!story.isDirty(this.tiddler)) // the TAGGED tiddler in view mode
story.refreshTiddler(this.tiddler,null,true);
else // the TAGGED tiddler in edit mode (with tags field)
config.macros.checkbox.refreshEditorTagField(this.tiddler,this.tag,this.checked);
}
if (this.refresh.tagging)
if (!story.isDirty(this.tag)) story.refreshTiddler(this.tag,null,true); // the TAGGING tiddler
}
}
if (!this.init && this.fn_clickAfter) // custom function hook to react to changes in checkbox state
{ try { eval(this.fn_clickAfter) } catch(e) { displayMessage("Checkbox onClickAfter error: "+e.toString()); } }
// refresh containing tiddler (but not during initial rendering, or we get an infinite loop!) (and not when editing container)
if (!this.init && this.refresh.container && this.container!=this.tiddler)
if (!story.isDirty(this.container)) story.refreshTiddler(this.container,null,true); // the tiddler CONTAINING the checkbox
return true;
},
refreshEditorTagField: function(title,tag,set) {
var tagfield=story.getTiddlerField(title,"tags");
if (!tagfield||tagfield.getAttribute("edit")!="tags") return; // if no tags field in editor (i.e., custom template)
var tags=tagfield.value.readBracketedList();
if (tags.contains(tag)==set) return; // if no change needed
if (set) tags.push(tag); // add tag
else tags.splice(tags.indexOf(tag),1); // remove tag
for (var t=0;t<tags.length;t++) tags[t]=String.encodeTiddlyLink(tags[t]);
tagfield.value=tags.join(" "); // reassemble tag string (with brackets as needed)
return;
}
}
//}}}
*Fall 2008
**EE 221: Linear Systems
**EE 226: Stochastic Processes
*Spring 2009
**EE 222: Nonlinear Systems
**EE 291E: Hybrid Systems
**BIO 135L: Mechanics of Organisms Laboratory
*Fall 2009
**EE 227A: Convex Optimization
**MATH 214: Differential Geometry
**(TA) EE 221: Linear Systems with Prof. Claire Tomlin
*Spring 2010
**MATH 240: Riemannian Geometry
*Fall 2010
**MATH 202A: Real Analysis
**MATH 219: Dynamical Systems
*Spring 2011
**MATH 202B: Real Analysis
*Fall 2011
**(TA) EE 125/215: Introduction to Robotics with Prof. Ruzena Bajcsy
*Spring 2013
**CS 294P: Active Perception
**~CogSci 290Q: Computational Models of Cognition
[[All code| index.html#tag:code]]
[[Git]]
[[Optimization]]
[[CDC2011]]
[[OptiTrack]]
[[SysID2012]]
!!!Nov 2, 2012
[[Dorsa Sadigh| http://www.eecs.berkeley.edu/~dsadigh/]], Dan Calderone, Sana Vaziri, [[Robert Matthew| http://www.robertpetermatthew.com/]] and I visited [[Coliseum College Prep Academy| http://www.coliseumcollegeprep.org/]] in East Oakland. We presented to a whopping 10 classes of ~30 6th-12th graders!
!!!March 3, 2012
[[Kevin Peterson| http://www.eecs.berkeley.edu/~kevincp/]], Andre Zeumault and I visited [[Coliseum College Prep Academy| http://www.coliseumcollegeprep.org/]] in East Oakland. We presented to 6 classes of ~30 9th-12th graders!
!!!Probing neuromechanical control architecture in running cockroaches
''Participants:'' [[Prof. Robert Full| http://polypedal.berkeley.edu/]], [[Prof. Shai Revzen| http://shrevzen.nfshost.com/]], and [[Talia Moore| http://sites.google.com/site/taliayukimoore/]]
''Press:'' [[UMich press release| http://www.ns.umich.edu/new/multimedia/videos/21233-lessons-from-cockroaches-could-inform-robotics]] featured in [[ScienceDaily| http://www.sciencedaily.com/releases/2013/02/130222143233.htm]], [[Discovery News| http://news.discovery.com/tech/robotics/cockroaches-teach-robots-to-balance-130226.htm]], [[Wired UK| http://www.wired.co.uk/news/archive/2013-02/26/cockroach-tripping-study]], [[Popular Science| http://www.popsci.com/technology/article/2013-02/watch-how-cockroaches-are-helping-scientists-design-better-robots]]
''References:''
<<bibliography inprep.bib MooreBurden2013>>
<<bibliography journal.bib RevzenBurden2013>>
<<bibliography unpublished.bib BurdenRevzen2013 MooreRevzen2010>>
!!!Bio-inspired design and control of a minimally-actuated milliscale hexapedal robot
''Participants:'' [[Prof. Aaron Hoover| http://orb.olin.edu/]]
''References:''
<<bibliography inprep.bib HooverBurden2013>>
<<bibliography conference.bib HooverBurden2010>>
!!!Robust limit cycles in hybrid systems with simultaneous transitions
''Participants:'' [[Prof. Daniel Koditschek| http://www.seas.upenn.edu/~kod/]], [[Prof. Shai Revzen| http://shrevzen.nfshost.com/]]
''References:''
<<bibliography inprep.bib BurdenRevzen2013multi>>
!!!Numerical Methods for Hybrid Dynamical Systems
''Participants:'' [[Prof. Humberto Gonzalez| http://www.ese.wustl.edu/~hgonzale]], [[Dr. Ram Vasudevan| http://web.mit.edu/ramv/www/]]
''References:''
<<bibliography inprep.bib BurdenGonzalezVasudevan2013>>
<<bibliography conference.bib BurdenGonzalez2011>>
PageTemplate
|>|>|SiteTitle - SiteSubtitle|
|MainMenu|DefaultTiddlers<br><br><br><br>ViewTemplate<br><br>EditTemplate|SideBarOptions|
|~|~|OptionsPanel|
|~|~|AdvancedOptions|
|~|~|<<tiddler Configuration.SideBarTabs>>|
''StyleSheet:'' StyleSheetColors - StyleSheetLayout - StyleSheetPrint
InterfaceOptions
SiteUrl
Extensive StartupParameters to control the startup beahviour of ~TiddlyWiki through specially crafted ~URLs
While helping organize a [[workshop at CDC2012| http://purl.org/sburden/cdc2012]] in Maui, I helped [[Shai Revzen| http://shrevzen.nfshost.com/]] collect some specimens of native Hawaiian crab. The animals exhibit fast and robust locomotion over highly fractured, slippery terrain -- a fact that makes them very interesting to study, but difficult to capture. This page documents our experience in the hopes that it may assist other intrepid researchers.
!!!a'ama crab
[img[a'ama crab| aama/DSC00021.JPG]][img[a'ama on water's edge| aama/DSC00065.JPG]][img[a'ama on slippery cliff| aama/DSC00051.JPG]]
The a'ama crab (//[[Grapsus tenuicrustatus| http://www.itis.gov/servlet/SingleRpt/SingleRpt?search_topic=TSN&search_value=660758]]//?) is native to the rocky intertidal shores of Hawaii. The terrain is extremely challenging to traverse -- hard, slippery, and highly fractured.
<html><iframe width="560" height="315" src="http://www.youtube.com/embed/HpHPzOwuZTQ" frameborder="0" allowfullscreen></iframe></html>
As illustrated in the video, the a'ama crabs nimbly negotiate this complex environment at high speed, sprinting across uneven surfaces to avoid potential predators while ocean waves crash over them.
!!!Locations
We found the crab species on essentially every part of Maui we visited regardless of whether the area was inhabited by humans. Most of our video was collected at the volcanic rock field on La Perouse Bay just south of [[Ahihi Kinau| http://en.wikipedia.org/wiki/Ahihi-Kinau_Natural_Area_Reserve]], where there was an abundance of rock outcroppings with severe inclines. The specimens that were shipped back to Ann Arbor were all collected near our hotel in Wailea.
<html>
<iframe width="425" height="300" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://maps.google.com/maps/ms?msa=0&msid=210136531334088769950.0004d681f0744c019579c&gl=us&hl=en&ie=UTF8&ll=20.764004,-156.417724&spn=0.8,0.9&t=m&output=embed"></iframe><br /><small>View <a href="https://maps.google.com/maps/ms?msa=0&msid=210136531334088769950.0004d681f0744c019579c&gl=us&hl=en&ie=UTF8&ll=20.764004,-156.417724&spn=0.332027,0.538083&t=m&source=embed" style="color:#0000FF;text-align:left">A'ama crabbing locations</a> in a larger map</small>
</html>
!!!Crabbing
The locals informed us that a'ama are edible and make good bait for larger fish, and they have [[techniques| http://www.hawaiipictureoftheday.com/hawaii-aama-crab-hunting/]] to capture the animals using poles, hooks, and possibly bait. However, these methods generally damage the animals, hence they were not appropriate for our purposes.
As suggested both by local fishermen and [[online| http://www2.hawaii.edu/~pelikaok/naiaaama1.html]], we successfully caught intact animals using a bright flashlight at night. Our technique:
# Quietly crawl to the edge of the rocky coast in the dark.
# Slowly stand up and hold the flashlight above your head.
# Turn on the light and watch for crabs darting away.
# Choose one animal to chase, ideally away from the water's edge.
# Once cornered and blinded with the flashlight, the crab will usually freeze in place, allowing you to:
## slowly bring your hand near; then
## quickly snatch it.
{{{
equipment photo
}}}
equipment: [[rubberized gloves| http://www.amazon.com/Atlas-Glove-C300S-Small-Gloves/dp/B001EDDWJI]]; plastic bucket; [[head-mounted flashlight| http://www.amazon.com/Streamlight-61052-Septor-Headlamp-Strap/dp/B00064YL7S]]
!!!Husbandry
!!!!Shipping
As anticipated by the local fishermen, the first batch of crabs we caught performed poorly in captivity. In fact, they died within hours of being captured. Folk wisdom suggested the animals secrete a chemical that poisons them. We hypothesized that the toxic chemical was ammonia from the animals' urine, so we tried packing the second batch with pellets designed to fix ammonia in aquariums. The crabs traveled safely for nearly 48 hours from Maui, HI to Ann Arbor, MI. Our preparation:
# Cut circular respiration holes in the plastic container.
# Fill the bottom of the container with a single layer of ammonia fixation pellets.
# Fill the rest of the container with peat moss.
# Close the lid and submerge the container in fresh (i.e. aerated) seawater.
# Open the lid and transfer the crab on top of the bed of peat moss.
# Place a piece of food (e.g. calamari) inside the container in front of the animal's mouth.
{{{
preparation photo
}}}
equipment: perforated [[plastic containers| http://www.amazon.com/GladWare-Entree-Containers-Lids-5-Containers/dp/B0009P67US]]; seawater-soaked [[peat moss| http://www.amazon.com/Espoma-PTM8-8-Quart-Organic-Peat/dp/B0037AP20I]]; [[ammonia fixation pellets| http://www.amazon.com/Acurel-LLC-Activated-Accessory-135-Ounce/dp/B000YJ4BO8]]
!!!!Storage
(instructions from Olivia)
For the uninitiated:
<<<
A digital object identifier (DOI) is a character string (a "digital identifier") used to uniquely identify an object such as an electronic document.
<<<
> [[Wikipedia| http://en.wikipedia.org/wiki/Digital_object_identifier]]
Given a DOI, say 10.1007/s00422-012-0545-z, simply navigate to [[http://dx.doi.org/10.1007/s00422-012-0545-z| http://dx.doi.org/10.1007/s00422-012-0545-z]]; you will be redirected to the official website for the article.
!!!doi2bibtex.py
Filipe Fernandes has a [[great script| http://code.google.com/p/ocefpaf-python/source/browse/ocefpaf/doi2bibtex.py]] for fetching a ~BibTeX entry using a DOI. This is far superior to the alternative (navigating journals' aggravatingly cryptic websites, selecting `Export to ~BibTeX' from a drop-down menu, downloading and opening a file), and it has worked for me in cases where the journal itself doesn't provide ~BibTeX!
You'll need some extra Python libraries; using ~MacPorts:
{{{
sudo port install py27-httplib2 py27-beautifulsoup
}}}
!!![[From Anchors to Templates: Exact and Approximate Reduction in Models of Legged Locomotion| pubs/BurdenRevzen2013dw.pdf]]
Links: [[meeting| http://dynamicwalking.org/]]; [[abstract| pubs/BurdenRevzen2013dw.pdf]]; slides and simulations will be made available after the meeting
[[RSI| http://en.wikipedia.org/wiki/Repetitive_strain_injury]]
[[carpal tunnel| http://en.wikipedia.org/wiki/Carpal_tunnel_syndrome]]
[[focal dystonia| http://en.wikipedia.org/wiki/Focal_dystonia]]
[[tendinitis| http://en.wikipedia.org/wiki/Tendinitis]]
[[tendinosis| http://en.wikipedia.org/wiki/Tendinosis]]
[[Logitech M570| http://www.amazon.com/Logitech-910-001799-M570-Wireless-Trackball/dp/B0043T7FXE/]] wireless ball mouse
[[Goldtouch| http://www.amazon.com/Keyboard-Ergonomic-Qwerty-Black-Apple/dp/B001IIP9UY/]] adjustable keyboard
[[external monitor| http://www.amazon.com/s/ref=nb_sb_ss_i_0_13?field-keywords=external+monitor]]
[[small, light computer| http://apple.com/macbookair]]
[[| ]]
(if you see raw LaTeX rather than formulas below, you need [[MathJax| http://www.mathjax.org/download/]])
I recently had a great deal of trouble solving what I regarded as a fairly simple physics problem that required transforming forces through a change of coordinates. The solution is straightforward once we recognize that ''forces are [[covariant| http://en.wikipedia.org/wiki/Covariance_and_contravariance_of_vectors]]''.
If $p = \phi(q)$, then the chain rule yields $\dot{p} = D\phi(q) \dot{q}$ where $D\phi(q)$ is the Jacobian linearization of the coordinate transformation $\phi$ (in manifold lingo, $D\phi:TQ\rightarrow TP$ is the pushforward). Since the (instantaneous) work $F^T \dot{p}$ performed by a force $F$ represented in the $p$ coordinates is frame-invariant, direct substitution yields $F^T \dot{p} = F^T D\phi(q) \dot{q}$. Since $\dot{p}$ is arbitrary, the equivalent force represented in the $q$ coordinates must be $F^T D\phi(q)$. In differential-geometric terms, if we regard forces as covectors so that $F\in T^*Q$, this is simply the pullback $\phi^* F\in T^*P$. Therefore ''forces are (naturally) covariant''.
One potential point of confusion: if the coordinate change is an isometry, i.e. $\phi(q) = R q + a$ for some orthogonal matrix $R$ and vector $a$, then forces can also be transformed by the pushforward of the inverse transformation. Specifically, let $\psi(p) = R^T(p - a)$ so that $\phi\circ\psi = \text{id} = \psi\circ\phi$. Then $D\phi = R$, and $D\psi = R^T = (R)^{-1} = (D\phi)^{-1}$. Therefore $F^T D\phi = (D\psi F)^T$, so in this case $F$ may be "pushed forward" and it appears that forces are [[contravariant| http://en.wikipedia.org/wiki/Covariance_and_contravariance_of_vectors]]. I cannot emphasize enough that ''this formula does not hold unless $\phi$ is an isometry''.
|Style|Formatting|h
|''bold''|{{{''bold''}}} - two single-quotes, not a double-quote|
|//italics//|{{{//italics//}}}|
|''//bold italics//''|{{{''//bold italics//''}}}|
|__underline__|{{{__underline__}}}|
|--strikethrough--|{{{--Strikethrough--}}}|
|super^^script^^|{{{super^^script^^}}}|
|sub~~script~~|{{{sub~~script~~}}}|
|@@Highlight@@|{{{@@Highlight@@}}}|
|{{{plain text}}}|{{{ {{{PlainText No ''Formatting''}}} }}}|
|/%this text will be invisible%/hidden text|{{{/%this text will be invisible%/}}}|
I finally put [[all my code on github| https://github.com/sburden?tab=repositories]].
!!!Acquiring code
!!!!Clone the repositories
{{{
cd ~/your/src/dir
mkdir sburden && cd sburden
git clone https://github.com/sburden/opt.git
git clone https://github.com/sburden/rbt.git
git clone https://github.com/sburden/sim.git
git clone https://github.com/sburden/uk.git
git clone https://github.com/sburden/util.git
git clone https://github.com/sburden/vid.git
}}}
!!!!Add sburden directory to PYTHONPATH
{{{
echo "export PYTHONPATH=~/your/src/dir/sburden:$PYTHONPATH" >> ~/.bash_profile
}}}
!!!!Import code in ipython shell
{{{
$ ipython
ipy$ import opt,rbt,sim,uk,util,vid
}}}
!!!uk: Unscented Kalman filtering
A few simple tests are included with the code to illustrate its application to track rigid bodies and particles using either motion capture (mocap) data or camera observations from multiple (calibrated) cameras.
{{{
$ cd ~/your/src/dir/sburden/uk
$ ipython
ipy$ run body
ipy$ run pts
}}}
This is the PRE-RELEASE build of ~TiddlyWiki v<<version>>, and incorporates all changes currently committed to the [[TiddlyWiki source repository|http://github.com/tiddlywiki/tiddlywiki]], including several enhancements to key functions and objects, as well as an internal update to use a newer revision of jQuery (now v1.8.1)
~TiddlyWiki "Classic" uses ~TiddlyWiki5-based tools to assemble and output the core system, rather than the Ruby-based ginsu/cook utilities that were previously used. The ability of ~TiddlyWiki5 to directly create ~TiddlyWiki Classic documents ensures a robust and reliable future for the existing "installed base" of ~TiddlyWiki, even as the community migrates to using the new power and flexiblity of ~TiddlyWiki5.
You can view/download versions of ~TiddlyWiki from the following locations:
|current release of ~TiddlyWiki Classic|http://www.TiddlyWiki.com/|
|latest pre-release of ~TiddlyWiki Classic|http://www.TiddlyWiki.com/beta/|
|latest pre-release of ~TiddlyWiki5|http://five.TiddlyWiki.com/|
!!!April 3, 2013
This evening [[Dorsa Sadigh| http://www.eecs.berkeley.edu/~dsadigh/]], Duncan Haldane and I visited Science Night at Joaquin Miller Elementary in the Oakland Hills. It was a large and stimulating crowd, with many exciting demonstrations!
!!!Schedule
10am Mon -- Thu the week of July 23 -- 26 in 337 Cory.
!!!Recommended Reading / Prerequisites
Working knowledge of [[topology| http://books.google.com/books?id=XjoZAQAAIAAJ]] and [[analysis| http://books.google.com/books?id=uPkYAQAAIAAJ]] on the level of MATH 202A/B.
Familiarity with basic [[finite-dimensional optimization theory| http://books.google.com/books?id=TgMpAQAAMAAJ]], for instance from [[convex optimization| http://www.stanford.edu/~boyd/cvxbook/]] or EE 227.
The lecture material will be drawn largely from [[Prof. Polak's book| http://books.google.com/books?id=gcYR884tdCEC]].
[[CV| cv.pdf]][[Bio]][[Papers]][[Talks]][[Code]][[Blog]][[Outreach]][[Calendar]]<<tiddler ToggleRightSidebar##show with: {{config.options.chkShowRightSidebar?'►':'◄'}}>>
<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<style type="text/css">#contentWrapper {display:none;}</style>
<style type="text/css">
body { margin:0;padding:10px; }
a { color: #fff; font-weight:bold; }
#SplashScreen {width:600px; text-align:left; font-family:monospace; background-color:#666; color:#fff; padding:10px; position:center; display:block; margin: 50px auto;}
</style>
<div id="SplashScreen">
<img src="img/sam_burden_.jpg" style="border:2px solid #000;float:left; margin-right:10px;" />
<h1 style="margin:0">Sam Burden</h1>
<h4 style="margin:0">PhD candidate in EECS at Berkeley</h4>
<hr>
<pre>
email: sburden@eecs.berkeley.edu
cell: 206.384.6942
skype: sburden
desk: #13 in 337 Cory Hall
mail: University of California at Berkeley
205 Cory Hall
Berkeley, CA 94720-1772
</pre>
<a href="cv.pdf">CV</a> |
<a href="sch.html">Calendar</a> |
<a href="papers/">Papers</a> |
<a href="talks/">Talks</a> |
<a href="https://github.com/sburden?tab=repositories">Code</a> |
<a href="http://www-inst.eecs.berkeley.edu/~eegsa/or/">Outreach</a>
<br /><br /><br />
<h4 style="margin:0">Brief bio</h4>
<hr>
Sam Burden is a PhD candidate in EECS at UC Berkeley advised by Prof. Shankar Sastry. He studies locomotion and manipulation in robotics and biomechanics using novel tools from hybrid systems theory.
<br /><br /><br />
<h4 style="margin:0;text-align:left">Loading full site <blink>. . .</blink></h5>
<hr>
You must have JavaScript enabled.
</div>
<!--}}}-->
/***
|''Name:''|MathJaxPlugin|
|''Description:''|Enable LaTeX formulas for TiddlyWiki|
|''Version:''|1.0.1|
|''Date:''|Feb 11, 2012|
|''Source:''|http://www.guyrutenberg.com/2011/06/25/latex-for-tiddlywiki-a-mathjax-plugin|
|''Author:''|Guy Rutenberg|
|''License:''|[[BSD open source license]]|
|''~CoreVersion:''|2.5.0|
!! Changelog
!!! 1.0.1 Feb 11, 2012
* Fixed interoperability with TiddlerBarPlugin
!! How to Use
Currently the plugin supports the following delemiters:
* """\(""".."""\)""" - Inline equations
* """$$""".."""$$""" - Displayed equations
* """\[""".."""\]""" - Displayed equations
!! Demo
This is an inline equation \(P(E) = {n \choose k} p^k (1-p)^{ n-k}\) and this is a displayed equation:
\[J_\alpha(x) = \sum_{m=0}^\infty \frac{(-1)^m}{m! \, \Gamma(m + \alpha + 1)}{\left({\frac{x}{2}}\right)}^{2 m + \alpha}\]
This is another displayed equation $$e=mc^2$$
!! Code
***/
//{{{
config.extensions.MathJax = {
mathJaxScript : "http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML",
// uncomment the following line if you want to access MathJax using SSL
// mathJaxScript : "https://d3eoax9i5htok0.cloudfront.net/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML",
displayTiddler: function(TiddlerName) {
config.extensions.MathJax.displayTiddler_old.apply(this, arguments);
MathJax.Hub.Queue(["Typeset", MathJax.Hub]);
}
};
jQuery.getScript(config.extensions.MathJax.mathJaxScript, function(){
MathJax.Hub.Config({
tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]},
extensions: ["tex2jax.js"],
"TML-CSS": { scale: 100 }
});
MathJax.Hub.Startup.onload();
config.extensions.MathJax.displayTiddler_old = story.displayTiddler;
story.displayTiddler = config.extensions.MathJax.displayTiddler;
});
config.formatters.push({
name: "mathJaxFormula",
match: "\\\\\\[|\\$\\$|\\\\\\(",
//lookaheadRegExp: /(?:\\\[|\$\$)((?:.|\n)*?)(?:\\\]|$$)/mg,
handler: function(w)
{
switch(w.matchText) {
case "\\[": // displayed equations
this.lookaheadRegExp = /\\\[((?:.|\n)*?)(\\\])/mg;
break;
case "$$": // inline equations
this.lookaheadRegExp = /\$\$((?:.|\n)*?)(\$\$)/mg;
break;
case "\\(": // inline equations
this.lookaheadRegExp = /\\\(((?:.|\n)*?)(\\\))/mg;
break;
default:
break;
}
this.lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
createTiddlyElement(w.output,"span",null,null,lookaheadMatch[0]);
w.nextMatch = this.lookaheadRegExp.lastIndex;
}
}
});
//}}}
I discovered [[tiddlyWiki| http://www.tiddlywiki.com/]] earlier this week, and quickly became so enamored that I decided to rewrite my web page using the tool -- if you're reading this, you have witnessed the results.
I can whole-heartedly recommend the tool for building an academic web page (with support for [[blogging| #tag:blog]] and [[RSS| index.xml]]) and maintaining an electronic lab notebook; for instance, check out [[BibTeXPlugin]] and [[MathJaxPlugin]] to see how easy it is to integrate citations and equations. [[CheckboxPlugin]] makes it perfect for to-do lists.
June 2013: to present work on [[reducing templates to anchors| http://www.cmu.edu/dynamic-walking/files/abstracts/Burden_2013_DW.pdf]] in the 2013 [[Dynamic Walking| http://www.cmu.edu/dynamic-walking/]] meeting at CMU in Pittsburgh, PA, USA
May 2013: presented invited paper on [[reduction and identification of hybrid dynamical models for terrestrial locomotion| SPIE2013]] at [[ARL| http://www.arl.army.mil/www/default.cfm?page=43]] in Adelphi, MD, USA and [[SPIE DSS| http://spie.org/x6765.xml]] in Baltimore, MD, USA ([[slides| talks/2013spie.pdf]]) ([[paper| papers/BurdenSastry2013.pdf]]); thanks to Chris Kroninger and Will Nothwang for organizing the invited session and hosting the group at ARL!
April 2013: [[featured maker| Open Make]] of tiny tech at the [[Lawrence Hall of Science| http://www.lawrencehallofscience.org/visit/events/open_make]] ([[photos| http://www.flickr.com/photos/lhsingenuitylab/sets/72157633304110819/]])
March 2013: presented at the Controls seminar at the University of Michigan in Ann Arbor, MI, USA ([[slides| talks/20130322umich.pdf]]); thanks to [[Shai Revzen| shrevzen.nfshost.com]] for inviting me, and all the ~U-M folks for stimulating conversations!
Feb 2013: pre-print on metrization and simulation of hybrid control systems available (arXiv: [[1302.4402| http://arxiv.org/abs/1302.4402]]) ([[pdf| papers/BurdenGonzalezVasudevan2013.pdf]])
Feb 2013: article investigating neuromechanical response of running cockroaches to large lateral perturbations to appear in Biological Cybernetics (doi: [[10.1007/s00422-012-0545-z| http://dx.doi.org/10.1007/s00422-012-0545-z]]) ([[pdf| papers/RevzenBurden2013.pdf]]); [[UMich press release| http://www.ns.umich.edu/new/multimedia/videos/21233-lessons-from-cockroaches-could-inform-robotics]] featured in [[ScienceDaily| http://www.sciencedaily.com/releases/2013/02/130222143233.htm]], [[Discovery News| http://news.discovery.com/tech/robotics/cockroaches-teach-robots-to-balance-130226.htm]], [[Wired UK| http://www.wired.co.uk/news/archive/2013-02/26/cockroach-tripping-study]], [[Popular Science| http://www.popsci.com/technology/article/2013-02/watch-how-cockroaches-are-helping-scientists-design-better-robots]], [[NSF Science360| http://news.science360.gov/archives/20130322]]
Jan 2013: presented a technique for [[using reduced-order models to study dynamic legged locomotion| SICB2013]] at [[SICB| http://sicb.org/meetings/2013/]] in San Francisco, CA, USA
Dec 2012: co-organized and [[presented| CDC2012]] at a workshop on [[Control Systems in the Open World| http://purl.org/sburden/cdc2012]] at [[CDC| http://control.disp.uniroma2.it/cdc2012/]] in Maui, HI, USA
Minor tweaks and bugfixes for OSX.
!!!Disable Adobe Updater
I have tried many different "solutions" with varying degrees of success:
!!!![[This blog| http://lifecs.likai.org/2011/02/real-way-to-disable-adobe-updater-from.html]]
{{{
cd ~/Library/LaunchAgents
launchctl remove `basename com.adobe.ARM.* .plist`
rm com.adobe.ARM.*
}}}
!!!![[Adobe Itself| http://helpx.adobe.com/creative-suite/kb/disable-update-manager-administrators-cs3.html]]
Make a file called com.adobe.~AdobeUpdater.Admin.plist with the following text:
{{{
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Disable.Update</key>
<true/>
</dict>
</plist>
}}}
then save it to /Library/preferences.
!!![[Force font smoothing on non-Apple monitors| http://apple.stackexchange.com/questions/19468/terminal-text-size-different-when-connected-to-external-monitor]]
{{{
defaults -currentHost write -globalDomain AppleFontSmoothing -int 2
}}}
!!!Nov 9, 2012
I visited the honors chemistry class at [[Oakland Technical High School| http://oaklandtech.com/]] in East Oakland. We had a great discussion about the defining properties of robots -- information processing, physical embodiment, and mechanical work -- I look forward to returning!
[[economics| http://www.nytimes.com/2013/04/19/opinion/krugman-the-excel-depression.html]]
The [[Lawrence Hall of Science| http://lawrencehallofscience.org]] partnered with the [[Maker Education Initiative| http://makered.org/]] to run a series of "Open Make" events targeting young makers. After seeing the [[press coverage| http://www.ns.umich.edu/new/multimedia/videos/21233-lessons-from-cockroaches-could-inform-robotics]] for our [[Biological Cybernetics paper| http://dx.doi.org/10.1007/s00422-012-0545-z]], they invited me to be a "featured maker" and teach kids how to build robotic cockroaches.
[[Photos from the event| http://www.flickr.com/photos/lhsingenuitylab/sets/72157633304110819/]] are available; here are a few featuring my demonstration:
<html>
<a href="http://www.flickr.com/photos/lhsingenuitylab/8672815725/" title="DSC_9082 by LHS Ingenuity Lab, on Flickr"><img src="http://farm9.staticflickr.com/8395/8672815725_10f9fa76ab.jpg" width="400" height="267" alt="DSC_9082"></a>
<a href="http://www.flickr.com/photos/lhsingenuitylab/8673917314/" title="DSC_9081 by LHS Ingenuity Lab, on Flickr"><img src="http://farm9.staticflickr.com/8264/8673917314_a5ecd99c90.jpg" width="400" height="267" alt="DSC_9081"></a>
</html>
Video discussing the motivation for the event:
<html><iframe width="560" height="315" src="http://www.youtube.com/embed/jfAVO1pQb5A" frameborder="0" allowfullscreen></iframe></html>
Command-line server for streaming 2D data from [[OptiTrack Camera SDK| http://www.naturalpoint.com/optitrack/products/camera-sdk/]] over a socket. Python script provided to save & load data.
{{{
hg clone http://eecs.berkeley.edu/~sburden/code/opti
}}}
''Prerequisites''
{{{mercurial OptiTrackCameraSDK python numpy}}}
To download and test the optimization code:
{{{
$ git clone https://github.com/sburden/opt.git
$ cd opt
$ mkdir ex
$ cp ex.py ex/ex.py
$ ipython
ipy$ run opt ex/ex.py
}}}
The file ''ex.py'' specifies the cost function, parameters, and initial guess for the minimizer.
I am dedicated to broadening awareness of and participation in engineering, science, and mathematics.
[[Link to all outreach activities| index.html#tag:outreach]]
!!![[Open Make @ the Hall| Open Make]]
2013/04/20: Thanks to the [[Maker Education Initiative| http://makered.org/]] and the [[Lawrence Hall of Science| http://lawrencehallofscience.org]] for inviting me to be a featured maker at [[Open Make: Tiny Tech| http://lawrencehallofscience.org/visit/events/open_make]]!
<html>
<a href="http://www.flickr.com/photos/lhsingenuitylab/8672815725/" title="DSC_9082 by LHS Ingenuity Lab, on Flickr"><img src="http://farm9.staticflickr.com/8395/8672815725_10f9fa76ab.jpg" width="400" height="267" alt="DSC_9082"></a>
<a href="http://www.flickr.com/photos/lhsingenuitylab/8673917314/" title="DSC_9081 by LHS Ingenuity Lab, on Flickr"><img src="http://farm9.staticflickr.com/8264/8673917314_a5ecd99c90.jpg" width="400" height="267" alt="DSC_9081"></a>
</html>
!!!K-12 Classrooms
Together with [[Kevin Peterson| http://www.eecs.berkeley.edu/~kevincp/]] and the [[EEGSA Outreach| http://www-inst.eecs.berkeley.edu/~eegsa/or/]] organization I designed a ~1hr robotics activity for K-12 classrooms that combines [[lecture material| talks/or/2012robotics.pdf]] with hands-on robot design.
2013/04/03: [[Joaquin Miller Elementary School]] in Oakland, CA
2012/12/03: [[Boost!]] in West Oakland, CA
2012/11/27: [[Pittsburg High School]] in Pittsburg, CA
2012/11/09: [[Oakland Technical High School]] in North Oakland, CA
2012/11/02: [[Coliseum College Prep Academy]] in East Oakland, CA
2012/03/22: [[Coliseum College Prep Academy]] in East Oakland, CA
!!![[Summer Institute for Mathematics at the University of Washington| http://www.math.washington.edu/~simuw/]]
I regularly run a [[short course in robotics| talks/or/2009simuw.pdf]] at the [[Summer Institute for Mathematics at the University of Washington| http://www.math.washington.edu/~simuw/]]. This is a particular pleasure since I participated in the inaugural (2003) cohort of this program.
!!![[UW MathDay| http://www.math.washington.edu/~morrow/mathday.html]]
From 2009 -- 2012 I delivered a [[robotics presentation| talks/or/2012mathday]] at the University of Washington's huge [[MathDay| http://www.math.washington.edu/~morrow/mathday.html]], an annual event that draws thousands of high school students to campus.
<!--{{{-->
<div class='header'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div id='topMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
!!!In preparation
<<bibliography inprep.bib showAll>>
!!!Journals
<<bibliography journal.bib showAll>>
!!!Peer-reviewed conferences
<<bibliography conference.bib showAll>>
!!!Invited papers, tech reports, symposium abstracts, &c.
<<bibliography unpublished.bib showAll>>
!!!Nov 27, 2012
Sana Vaziri, [[Kevin Peterson| http://www.eecs.berkeley.edu/~kevincp/]] and I visited 2 robotics and 2 architectural design classes at [[Pittsburg High School| http://www.pittsburg.k12.ca.us/phs/]]. These students devised several unique designs, including a sideways wall-follower!
!!!Setup
First, [[install MacPorts| http://www.macports.org/install.php]]. Then:
{{{
sudo port install python27 py27-ipython py27-numpy py27-scipy py27-matplotlib
}}}
!!!Matlab
If you're recovering from [[Matlab| http://abandonmatlab.wordpress.com/]], note that there isn't a standard IDE for Python. Instead, you'll open an [[IPython| http://ipython.org/]] shell that is more flexible and informative than the Matlab shell, generate superior 2D plots using [[Matplotlib| http://matplotlib.org/]], and easily modify source files using [[your favorite text editor| http://www.vim.org/]].
!!!~IPython
I prefer the following default options for the [[IPython| http://ipython.org/]] shell:
{{{
alias ipython="ipython --automagic --pdb --no-confirm-exit --no-banner"
}}}
Put this in your ~/.bash_profile to make the settings permanent.
!!!Matplotlib
To ensure output .pdf and .eps files conform to IEEE and arXiv standards, add the following to ~/.matplotlib/matplotlibrc:
{{{
pdf.fonttype : 42
text.usetex : True
}}}
To support animations and enable easy window manipulation (see tk post below), also add:
{{{
backend : TkAgg
interactive : True
}}}
!!!Tk figure size & position
[[Shai Revzen| http://shrevzen.nfshost.com]] showed me these great functions for manipulating figure position and size (note that you likely need the TkAgg backend for these to work):
{{{
import pylab as plt
def get_geom(fig=None,n=None):
"""
Get figure geometry string.
"""
if fig is None:
if n is None:
fig = plt.gcf()
else:
fig = plt.figure(n)
# Access the Tk interface for the canvas
win = fig.canvas.manager.window
return win.geometry()
def fig_geom(geom="WxH+0+0",fig=None,n=None):
"""
Set figure geometry.
The magical constants W and H can be used for screen width and height
INPUT:
fig -- Figure object or None to use current figure
geom -- Tk window geometry string
"""
if fig is None:
if n is None:
fig = plt.gcf()
else:
fig = plt.figure(n)
# Access the Tk interface for the canvas
win = fig.canvas.manager.window
wid = win._w
Tk = win.tk.call
# Get screen and window dimensions
if "W" in geom:
geom = geom.replace("W",str(Tk("winfo","screenwidth",wid)))
if "H" in geom:
geom = geom.replace("H",str(Tk("winfo","screenheight",wid)))
Tk("wm","geometry",wid,geom)
}}}
!!!Profiling
Here are some instructions for profiling Python code collated from a [[few| http://stackoverflow.com/questions/843671/profiling-in-python-who-called-the-function]] [[posts| http://stackoverflow.com/questions/582336/how-can-you-profile-a-python-script]] on [[stackoverflow| http://stackoverflow.com/]].
To generate a text summary sorted by time:
{{{
python -m cProfile -s time blah.py arg1 arg2 > test.txt
}}}
To save a .pstats file from within Python:
{{{
import cProfile as profile
profile.run("test()", "test.pstats")
}}}
To save a .pstats file from the command line:
{{{
python -m cProfile -o test.pstats test.py arg1 arg2
}}}
To generate a graph in .svg format:
{{{
gprof2dot.py -f pstats test.pstats | dot -Tsvg -o test.svg
}}}
(this will require [[graphviz| http://www.graphviz.org/]] and [[Gprof2dot| http://code.google.com/p/jrfonseca/wiki/Gprof2Dot]]; using macports on OSX you can run:
{{{
sudo port install graphviz
git clone https://code.google.com/p/jrfonseca.gprof2dot/ ~/src/gprof2dot
ln -s ~/src/gprof2dot/gprof2dot.py ~/bin/gprof2dot.py
}}}
to get these packages)
[[Materials| talks/qual/]]
For the uninitiated, [[Radiolab| http://www.radiolab.org/]] is a fantastic science podcast. As I work my way through [[their free back-catalog| http://www.radiolab.org/series/podcasts/]] I'll highlight some of my favorites.
!!![[A 4-Track Mind| http://www.radiolab.org/blogs/radiolab-blog/2011/jul/26/4-track-mind/]]
Focusing on `national treasure' [[Bib Milne| http://en.wikipedia.org/wiki/Bob_Milne]]'s ability to play several pieces of music simultaneously (both manually and mentally), there are some striking connections with the memory segment of the [[Limits| http://www.radiolab.org/2010/apr/05/]] podcast.
!!![[A War We Need| http://www.radiolab.org/blogs/radiolab-blog/2012/mar/05/war-we-need/]]
Though the drama is a little overwrought, imagining the incredible complexity & importance of the life of [[phytoplankton| http://en.wikipedia.org/wiki/Phytoplankton]] was very compelling.
!!![[Limits| http://www.radiolab.org/2010/apr/05/]]
Possibly one of my favorite episodes -- fascinating anecdotes about limits on mind & body. I especially enjoyed thinking about [[Steve Strogatz's| www.amazon.com/dp/0738204536]] concern that we may (soon? eventually?) reach the limit on our ability to obtain scientific insight.
!!![[Placebo| http://www.radiolab.org/2007/may/17/]]
Fascinating anecdotes about the role of psychology in medicine.
!!![[Unraveling Bolero| http://www.radiolab.org/blogs/radiolab-blog/2012/jun/18/unraveling-bolero/]]
It's a bit of a reach when they retroactively diagnose Ravel with a very specific neurological disorder, but the vignettes in this podcast emphasize the dominion the language centers in the brain have over our consciousness.
[[This article| http://www.economist.com/node/21556234]] (recommended to me by [[Prof. Gonzalez| http://www.eecs.berkeley.edu/~hgonzale/]]) advocates imbuing robots with ethical principles.
I found the article timely, less because of the potential danger of [[autonomous car crashes| http://www.pcworld.com/article/237450/googles_selfdriving_car_crashes.html]] than the [[controversy| http://www.aljazeera.com/indepth/opinion/2012/02/201222791327288883.html]] surrounding our [[increased deployment| http://www.wired.com/dangerroom/2009/02/drone-surge-pre/]] of [[UAVs| http://topics.nytimes.com/top/reference/timestopics/subjects/u/unmanned_aerial_vehicles/index.html]] in countries we have not declared war on.
I have been using the [[Rosetta Stone| http://www.rosettastone.com/learn-spanish]] software for the past few months to start learning Spanish. My goals include expanding my [[outreach| http://www-inst.eecs.berkeley.edu/~eegsa/or/]] efforts to [[ESL| http://en.wikipedia.org/wiki/ESL]] students, comfortably traveling in Latin America, and reading --[[the Quixote| http://en.wikipedia.org/wiki/Quixote]]-- --[[2666| http://en.wikipedia.org/wiki/2666]]-- any Spanish book written above a fifth grade reading level.
Having only studied [[ASL| http://en.wikipedia.org/wiki/Asl]] in high school to satisfy the “foreign language” requirement for college admissions, I am starting from no experience learning to speak another language. Though many debate the [[efficacy| http://thelinguist.blogs.com/how_to_learn_english_and/2009/07/seven-reasons-why-i-would-not-use-rosetta-stone.html]] / [[price| http://www.amazon.com/Rosetta-Stone-Spanish-Latin-America/dp/1617160849/]] ratio of the software, I have found it to be a useful tool to begin learning vocabulary, pronunciation, and listening skills (the latter two of which are notoriously difficult to learn without a human instructor).
Since I found very little information online describing how to use Rosetta Stone (RS) in an effective and comprehensive self-study program, I will post my techniques here.
!!!Pace
RS divides its course into multiple Levels, each comprised of four Units, which are themselves comprised of four main Lessons and multiple reinforcement lessons spaced out (logarithmically?) between the main lessons. Devoting 30 -- 60 minutes per day, I was easily able to get through one Unit per week, and hence Levels 1 -- 3 ([[bundled together| http://www.amazon.com/Rosetta-Stone-Spanish-Latin-America/dp/1617160849/]] for ~$400) in approximately 3 months.
!!!Grammar
I am in full agreement with [[this YouTube video| http://www.youtube.com/watch?v=5YtI2SnAMdQ]] -- it is very difficult to learn grammar from RS. After the first few Levels you will start to intuit when a verb must be conjugated, but I am still unable to consistently recall the correct conjugation. I think an effective strategy is to buy the workbook from a first-year college-level Spanish course and do the exercises in parallel with RS.
!!!Listening
RS eases you into every new word & phrase gradually, so the lessons can quickly become tedious and repetitive. To make the Listening exercises more challenging, I close my eyes, visualize what is being said, and try to repeat it aloud before looking at the screen. This practice also seems to help me directly connect the Spanish language to my cognitive states, i.e. I do not need to first translate Spanish to English to understand what is being said.
!!Presentation Information
<<bibliography unpublished.bib BurdenRevzen2013>>
Links: [[slides| talks/2013sicb.pptx]], [[abstract| http://www.sicb.org/meetings/2013/schedule/abstractdetails.php?id=405]]
As a one-sentence summary to anyone who missed the talk: we propose a computationally-tractable nonlinear regression algorithm to estimate unknown parameters and states in reduced-order dynamic models from empirical time-series data (e.g. body or limb kinematic data collected from high-speed video or motion capture).
!!Theoretical and Computational Tools
The underlying approach appeared in two control theory conference publications: one describing the `smoothing' construction for piecewise-defined (or //hybrid//) dynamical models, and the other applying the construction to enable implementation of first-order (gradient descent) algorithms to estimate unknown model parameters and states.
The notation will be somewhat dense to someone outside the control theory community -- please feel free to contact me with any questions or requests for clarification. The sourcecode to generate the plots in the papers is available on the CDC2011 and SysID2012 pages.
''-- Smoothing piecewise-defined (//hybrid//) models:''
<<bibliography conference.bib BurdenRevzen2011>>
Theorem 1 contains the full statement of the result: under a non-degeneracy condition on the [[Poincaré map| http://en.wikipedia.org/wiki/Poincare_map]] associated with a periodic orbit in a hybrid dynamical system, one can extract a (generally lower-dimensional) smooth dynamical system whose dynamics are `equivalent' to that of the hybrid system after a finite amount of time has elapsed. This result is just a collation of Lemmas 1 -- 3 (applicable to smooth systems) interpreted in the context of hybrid dynamical systems.
''-- Estimating parameters and states in models of legged locomotion:''
<<bibliography conference.bib BurdenOhlsson2012>>
Section 4 contains the formulation of the prediction error minimization problem we aim to solve; Section 4.5 in particular provides details of the coordinates we actually search over and the algorithm we implement to do so. For my SICB talk I used a [[general-purpose least-squares solver| http://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.leastsq.html]].
''-- Numerical simulation for models of legged locomotion:''
<<bibliography inprep.bib BurdenGonzalezVasudevan2013>>
<<bibliography conference.bib BurdenGonzalez2011>>
As a final note: if you have ever tried to implement a simulation of legged locomotion, you likely came up against the difficult problem of accurately detecting and handling the discrete `events' that occur when limbs touch down or lift off from the substrate. In another series of papers we proposed a method that does not require root-finding or time-stepping and hence is particularly easy to implement; the details and simulation code are available on the CDC2011 page.
Aside from the simplicity of implementation, we also provide the first formal proof of convergence for a numerical simulation algorithm applied to piecewise-defined (//hybrid//) models -- no other piece of code (MATLAB, I'm looking at you!) has such a guarantee.
!!!A First Course in Robotics
Long relegated to performing menial jobs on assembly lines, robots are now poised to infiltrate our homes and classrooms. The introduction of automated vacuum cleaners and a host of programmable interactive toys witness this migration and give clues as to the roles robots will inevitably fill in our daily lives. During this short course, we'll discuss potential applications for this emerging robotic presence and explore some of the challenges facing engineers trying to build these systems. In particular, we'll learn fundamental principles of robot design and apply these ideas to build maze-navigating robots.
!!![[Reduction and Identification for Hybrid Dynamical Models of Terrestrial Locomotion| pubs/BurdenSastry2013.pdf]]
''To generate the schematic and plots in the paper:''
{{{
$ hg clone http://eecs.berkeley.edu/~sburden/code/spie2013 spie2013
$ cd spie2013
$ ipython
ipy$ run hop --fp
ipy$ run -i hop --sch
ipy$ run -i hop --ic
}}}
Links: [[conference| http://spie.org/x6765.xml]]; [[paper| pubs/BurdenSastry2013.pdf]]; [[slides| talks/2013spie.pdf]]
''Prerequisites''
{{{mercurial python ipython numpy scipy matplotlib}}}
<<search>>
<<closeAll>><<permaview>><<newTiddler>><<newJournal "MMM DD YYYY" "blog">><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel "options »" "Change TiddlyWiki advanced options">>
~PhD candidate in EECS at Berkeley
http://eecs.berkeley.edu/~sburden/index.html
~TiddlyWiki uses several "special tiddlers" to perform a number of essential functions as follows:
*[[Configuration]] tiddlers configure the layout of the page, including the MainMenu, the SiteTitle, the SiteSubtitle and other features.
*A tiddler called DefaultTiddlers is used to list the tiddlers that are shown at startup.
*A tiddler called SaveChanges is automatically displayed if there's a problem with saving. Any of them can be edited with the changes taking effect immediately.
* MoreTab, MissingTiddlers, OrphanTiddlers
/***
''Inspired by [[TiddlyPom|http://www.warwick.ac.uk/~tuspam/tiddlypom.html]]''
|Name|SplashScreenPlugin|
|Created by|SaqImtiaz|
|Location|http://tw.lewcid.org/#SplashScreenPlugin|
|Version|0.21 |
|Requires|~TW2.08+|
!Description:
Provides a simple splash screen that is visible while the TW is loading.
!Installation
Copy the source text of this tiddler to your TW in a new tiddler, tag it with systemConfig and save and reload. The SplashScreen will now be installed and will be visible the next time you reload your TW.
!Customizing
Once the SplashScreen has been installed and you have reloaded your TW, the splash screen html will be present in the MarkupPreHead tiddler. You can edit it and customize to your needs.
!History
* 20-07-06 : version 0.21, modified to hide contentWrapper while SplashScreen is displayed.
* 26-06-06 : version 0.2, first release
!Code
***/
//{{{
window.old_lewcid_splash_restart=window.restart;
function pausecomp(ms) {
ms += new Date().getTime();
while (new Date() < ms){}
}
window.restart = function()
{ if (document.getElementById("SplashScreen"))
document.getElementById("SplashScreen").style.display = "none";
if (document.getElementById("contentWrapper"))
document.getElementById("contentWrapper").style.display = "block";
pausecomp(0);
window.old_lewcid_splash_restart();
if (splashScreenInstall)
{if(config.options.chkAutoSave)
{saveChanges();}
displayMessage("TW SplashScreen has been installed, please save and refresh your TW.");
}
}
var oldText = store.getTiddlerText("MarkupPreHead");
if (oldText.indexOf("SplashScreen")==-1)
{var siteTitle = store.getTiddlerText("SiteTitle");
var splasher='\n\n<style type="text/css">#contentWrapper {display:none;}</style><div id="SplashScreen" style="border: 3px solid #ccc; display: block; text-align: center; width: 320px; margin: 100px auto; padding: 50px; color:#000; font-size: 28px; font-family:Tahoma; background-color:#eee;"><b>'+siteTitle +'</b> is loading<blink> ...</blink><br><br><span style="font-size: 14px; color:red;">Requires Javascript.</span></div>';
if (! store.tiddlerExists("MarkupPreHead"))
{var myTiddler = store.createTiddler("MarkupPreHead");}
else
{var myTiddler = store.getTiddler("MarkupPreHead");}
//myTiddler.set(myTiddler.title,oldText+splasher,config.options.txtUserName,null,null);
myTiddler.set(myTiddler.title,oldText,config.options.txtUserName,null,null);
store.setDirty(true);
var splashScreenInstall = true;
}
//}}}
I just discovered [[Kuhn's classic essay| http://en.wikipedia.org/wiki/The_Structure_of_Scientific_Revolutions]]. Though many of the ideas have been assimilated into academic culture -- the phrase “[[paradigm shift| http://en.wikipedia.org/wiki/Paradigm_shift]]” and [[science as a social phenomenon| http://www.jstor.org/stable/10.2307/985549]] -- I found the piece informative and highly relevant. It helped clarify and contextualize some frustrations I have as a student and researcher, and provoked more fundamental questions about the purpose and goal of academic research in engineering. This post will evolve as I discuss the ideas with colleagues.
!!!Narrative fallacy in science curriculum
Kuhn observes that the main pedagogical apparatus of a typical [[R1 university| http://en.wikipedia.org/wiki/Research_I_university]] -- textbooks -- efficiently indoctrinate students with the tools and perspectives of the dominant scientific paradigm while suppressing competing interpretations:
<<<
Because they aim quickly to acquaint the student with what the contemporary scientific community thinks it knows, textbooks treat the various experiments, concepts, laws, and theories of the current normal science as separately and as nearly seriatim as possible.
<<<
> <<cite Kuhn1970 bibliography:kuhn.bib>>, pg. 140
I found this narrative structure of physics and chemistry textbooks extremely misleading and difficult to follow as an undergraduate. Though difficult to implement, it strikes me that a better curriculum could be crafted around more open-ended exploration and assimilation of results of laboratory experiments.
!!!The human condition corrupts scientific progress
[[Resistance by scientists to scientific discovery| http://dx.doi.org/10.1126/science.134.3479.596]] is an acknowledged phenomenon. Kuhn contributes the observation that this resistance is necessary for the progress of [[normal science| http://en.wikipedia.org/wiki/Normal_science]], rather than a psychological failing attributable to ego or cognitive bias:
<<<
Though the historian can always find scientists who were unreasonable to resist for as long as they did, they will not find a point at which resistance becomes illogical or unscientific. At most one may wish to say that the person who continues to resist after the whole profession has been converted has //ipso facto// ceased to be a scientist.
<<<
> <<cite Kuhn1970 bibliography:kuhn.bib>>, pg. 159
This is refreshing since it redirects frustration one may feel when a progressive paper is rejected away from unproductive bitterness toward renewed progress.
!!!Open questions
*Does engineering research (an enormous enterprise today compared to the 1960's) fit Kuhn's `Structure` ?
*Regardless, does engineering research qualify as a `science` (either under Kuhn's definition or another) ?
!!!Notes
Kuhn wrote in a time when academia was utterly dominated by men; I elected to sanitize the gender bias in the quotes above.
The essay is a goldmine of landmark papers in the history, philosophy, psychology, & sociology of science -- many such citations are included below even if I haven't been able to assimilate them above.
!!!References
<<bibliography kuhn.bib showAll>>
/*{{{*/
/*Blackicity Theme for TiddlyWiki*/
/*Design and CSS by Saq Imtiaz*/
/*Version 1.0*/
/*}}}*/
/*{{{*/
body{ font-family: Monaco, Courier New, monospace, "Neue Helvetica", Helvetica, "Lucida Grande", Verdana, sans-serif;
background-color: #fff;
color: #333;}
img{ border: 2px solid #666; margin: 10px 10px 10px 10px }
.header { background: #000; color: #fff; }
.viewer table.bd0,
.viewer table.bd0 * { border:0;padding:0 4px 4px 0;vertical-align:top; }
#topMenu {position:relative; background:#282826; padding:10px; color:#fff;font-family:Monaco, Courier New, monospace,'Lucida Grande', Verdana, Sans-Serif;}
#topMenu br {display:none;}
#topMenu a{ color: #999;
padding: 0px 8px 0px 8px;
border-right: 1px solid #444;}
#topMenu a:hover {color:#fff; background:transparent;}
#displayArea {margin-left:1em; margin-bottom:2em; margin-top:0.5em;}
a{
color:#333;
text-decoration: none; background:transparent;
}
a:hover{
color:#000;
text-decoration: none; background:transparent;
}
.viewer a, .viewer a:hover {border-bottom:1px dotted #333; font-weight:bold; text-decoration:none}
.viewer .button, .editorFooter .button{
color: #333;
border: 1px solid #333;
}
.viewer .button:hover,
.editorFooter .button:hover, .viewer .button:active, .viewer .highlight,.editorFooter .button:active, .editorFooter .highlight{
color: #fff;
background: #333;
border-color: #333;
}
.tiddler .subtitle { display:none; }
.tiddler .viewer {line-height:1.45em; padding: 0px 0px 0px 20px}
.title {color:#222; border-bottom:2px solid#222; font-family:Monaco, Courier New, monospace,'Lucida Grande', Verdana, Sans-Serif; font-size:1.45em; margin-bottom: 10px}
.subtitle, .subtitle a { color: #999999; font-size: 0.85em;margin:0.2em;}
.shadow .title{color:#999;}
.toolbar {font-size:90%;}
.selected .toolbar a {color:#999999;}
.selected .toolbar a:hover {color:#333; background:transparent;border:1px solid #fff;}
.toolbar .button:hover, .toolbar .highlight, .toolbar .marked, .toolbar a.button:active{color:#333; background:transparent;border:1px solid #fff;}
/***
!Sidebar
***/
#sidebar { margin-bottom:2em !important; margin-bottom:1em; right:0;
}
/***
!SidebarOptions
***/
#sidebarOptions { padding-top:2em;background:#f3f3f3;padding-left:0.5em;}
#sidebarOptions a {
color:#333;
background:#f3f3f3;
border:1px solid #f3f3f3;
text-decoration: none;
}
#sidebarOptions a:hover, #sidebarOptions a:active {
color:#222;
background-color:#fff;border:1px solid #fff;
}
#sidebarOptions input {border:1px solid #ccc; }
#sidebarOptions .sliderPanel {
background: #f3f3f3; font-size: .9em;
}
#sidebarOptions .sliderPanel input {border:1px solid #999;}
#sidebarOptions .sliderPanel .txtOptionInput {border:1px solid #999;width:9em;}
#sidebarOptions .sliderPanel a {font-weight:normal; color:#555;background-color: #f3f3f3; border-bottom:1px dotted #333;}
#sidebarOptions .sliderPanel a:hover {
color:#111;
background-color: #f3f3f3;
border:none;
border-bottom:1px dotted #111;
}
/***
!SidebarTabs
***/
.listTitle {color:#222;}
#sidebarTabs {background:#f3f3f3;}
#sidebarTabs .tabContents {background:#cfcfcf;}
#sidebarTabs .tabUnselected:hover {color:#999;}
#sidebarTabs .tabSelected{background:#cfcfcf;}
#sidebarTabs .tabContents .tiddlyLink, #sidebarTabs .tabContents .button{color:#666;}
#sidebarTabs .tabContents .tiddlyLink:hover,#sidebarTabs .tabContents .button:hover{color:#222;background:transparent; text-decoration:none;border:none;}
#sidebarTabs .tabContents .button:hover, #sidebarTabs .tabContents .highlight, #sidebarTabs .tabContents .marked, #sidebarTabs .tabContents a.button:active{color:#222;background:transparent;}
#sidebarTabs .txtMoreTab .tabSelected,
#sidebarTabs .txtMoreTab .tab:hover,
#sidebarTabs .txtMoreTab .tabContents{
color: #111;
background: #f3f3f3; border:1px solid #f3f3f3;
}
#sidebarTabs .txtMoreTab .tabUnselected {
color: #555;
background: #AFAFAF;
}
/***
!Tabs
***/
.tabSelected{color:#fefefe; background:#999; padding-bottom:1px;}
.tabSelected, .tabSelected:hover {
color: #111;
background: #fefefe;
border: solid 1px #cfcfcf;
}
.tabUnselected {
color: #999;
background: #eee;
border: solid 1px #cfcfcf;
padding-bottom:1px;
}
.tabUnselected:hover {text-decoration:none; border:1px solid #cfcfcf;}
.tabContents {background:#fefefe;}
.tagging, .tagged {
border: 1px solid #eee;
background-color: #F7F7F7;
}
.selected .tagging, .selected .tagged {
background-color: #f3f3f3;
border: 1px solid #ccc;
}
.tagging .listTitle, .tagged .listTitle {
color: #bbb;
}
.selected .tagging .listTitle, .selected .tagged .listTitle {
color: #333;
}
.tagging .button, .tagged .button {
color:#ccc;
}
.selected .tagging .button, .selected .tagged .button {
color:#aaa;
}
.highlight, .marked {background:transparent; color:#111; border:none; text-decoration:none;}
.tagging .button:hover, .tagged .button:hover, .tagging .button:active, .tagged .button:active {
border: none; background:transparent; text-decoration:none; color:#333;
}
.popup {
background: #cfcfcf;
border: 1px solid #333;
}
.popup li.disabled {
color: #000;
}
.popup li a, .popup li a:visited {
color: #555;
border: none;
text-decoration: none;
}
.popup li a:hover {
background: #f3f3f3;
color: #555;
border: none;
text-decoration: none;
}
#messageArea {
border: 4px dotted #282826;
background: #F3F3F3;
color: #333;
font-size:90%;
}
#messageArea a:hover { background:#f5f5f5; border:none; text-decoration: none; }
#messageArea .button{
color: #333;
border: 1px solid #282826;
}
#messageArea .button:hover {
color: #fff;
background: #282826;
border-color: #282826;
}
.tiddler {padding-bottom:10px;}
.viewer blockquote {
border-left: 5px solid #282826;
}
.viewer table, .viewer td {
border: 1px solid #282826;
}
.viewer th, thead td {
background: #282826;
border: 1px solid #282826;
color: #fff;
}
.viewer pre {
border: 1px solid #ccc;
background: #f5f5f5;
}
.viewer code {
color: #111; background:#f5f5f5;
}
.viewer hr {
border-top: dashed 1px #222; margin:0 1em;
}
.editor input {
border: 1px solid #ccc; margin-top:5px;
}
.editor textarea {
border: 1px solid #ccc;
}
h1,h2,h3,h4,h5 { color: #282826; background: transparent; padding-bottom:2px; font-family:Monaco, Courier New, monospace, Arial, Helvetica, sans-serif; }
h1 {font-size:22px;}
h2 {font-size:14px;}
h3 {font-size: 14px;}
/*}}}*/
Just a quick script to streamline the creation of playlists on the [[SwiMP3| http://www.finisinc.com/support/electronics/swimp3/]] waterproof mp3 player. The player sorts songs alphabetically, so simply dragging files from your filesystem or iTunes will usually yield an incorrect order. Instead, create .m3u playlists directly on the USB device, then execute the following Python code in the same directory.
{{{
import os
from glob import glob
sfx = '.m3u'
lis = glob('*'+sfx)
for li in lis:
l = li.strip(sfx)
if not os.path.exists(l):
cmd = 'mkdir "{l}"'.format(l=l)
print cmd
os.system(cmd)
fis = open(li,'r').readline().split('\r')[::2][1:]
for n,fi in enumerate(fis):
f = fi.split('/')[-1]
cmd = 'cp "{fi}" "{l}/{n:04d}_{f}"'.format(fi=fi,l=l,n=n,f=f)
print cmd
os.system(cmd)
}}}
If you update a playlist, simply delete the corresponding folder and re-run the script.
!!![[Parameter Identification Near Periodic Orbits of Hybrid Dynamical Systems| pubs/BurdenOhlsson2012.pdf]]
''To generate the schematic and plots in the paper:''
{{{
$ hg clone http://eecs.berkeley.edu/~sburden/code/sysid2012 sysid2012
$ cd sysid2012
$ ipython
ipy$ run hop --fp
ipy$ run -i hop --sch
ipy$ run -i hop --ic
ipy$ run -i hop --icpar
}}}
Links: [[slides| talks/2012sysid.pdf]], [[paper| pubs/BurdenOhlsson2012.pdf]]
''Prerequisites''
{{{mercurial python ipython numpy scipy matplotlib}}}
chkAnimate: false
chkToggleLinks: false
txtBackupFolder: tmp
[[Using reduced-order models to study dynamic legged locomotion: Parameter identification and model validation| SICB2013]]
SICB Annual Meeting
San Francisco, CA, USA, 2013
[[Reduction and Robustness via Intermittent Contact| talks/2012cdc.pdf]]
Workshop: [[Control Systems in the Open World| http://purl.org/sburden/cdc2012]]
IEEE Conference on Decision and Control (CDC)
Maui, HI, USA, 2012
[[Parameter Identification Near Periodic Orbits of Hybrid Dynamical Systems| SysID2012]]
IFAC Symposium on System Identification (SysID)
Brussels, Belgium, 2012
[[Reduction and Identification for Hybrid Dynamical Models of Terrestrial Locomotion| talks/20130322umich.pdf]]
Johns Hopkins University, University of Pennsylvania, University of Delaware, 2011
University of Maryland, Massachusetts Institute of Technology, Harvard University, University of Washington, 2012
SRI International, University of Michigan, 2013
[[Dimension Reduction Near Periodic Orbits of Hybrid Systems| CDC2011]]
IEEE Conference on Decision and Control / European Control Conference (CDC/ECC)
Orlando, FL, USA, 2011
[[On State Estimation for Hybrid Abstractions of Legged Locomotion| talks/2010hscc.pdf]]
Hybrid Systems: Computation and Control (HSCC)
Stockholm, Sweden, 2010
[[A First Course in Robotics| talks/or/2009simuw.pdf]]
University of Washington [[Summer Institute for Mathematics| http://www.math.washington.edu/~simuw/thisyear/]] (SIMUW)
Seattle, Washington, USA, 2009, 2010, 2011, 2012
[[Robots that run, climb, flap, and swim| talks/or/2012mathday.pdf]]
University of Washington [[MathDay| http://www.math.washington.edu/~morrow/mathday.html]]
Seattle, Washington, USA, 2009, 2010, 2011, 2012 (plenary -- ''1000+ attendees!'')
Mathematical Contest in Modeling (MCM)
University of Washington [[Summer Institute for Mathematics| http://www.math.washington.edu/~simuw/thisyear/]] (SIMUW)
Seattle, Washington, USA, 2007, 2008
Heterogeneous Leg Stiffness and Roll in Dynamic Running
International Conference on Robotics and Automation (ICRA)
Rome, Italy, 2007
Pull Yourself Together: Creating Robots that ~Self-Assemble
University of Washington NASA Space Grant Reception
Seattle, Washington, USA, 2007
/%
!info
|Name|ToggleRightSidebar|
|Source|http://www.TiddlyTools.com/#ToggleRightSidebar|
|Version|2.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|show/hide right sidebar (SideBarOptions)|
Usage
<<<
{{{
<<tiddler ToggleRightSidebar>>
<<tiddler ToggleRightSidebar with: label tooltip>>
}}}
Try it: <<tiddler ToggleRightSidebar##show
with: {{config.options.chkShowRightSidebar?'►':'◄'}}>>
<<<
Configuration:
<<<
copy/paste the following settings into a tiddler tagged with <<tag systemConfig>> and then modify the values to suit your preferences:
{{{
config.options.chkShowRightSidebar=true;
config.options.txtToggleRightSideBarLabelShow="◄";
config.options.txtToggleRightSideBarLabelHide="►";
}}}
<<<
!end
!show
<<tiddler {{
var co=config.options;
if (co.chkShowRightSidebar===undefined) co.chkShowRightSidebar=true;
var sb=document.getElementById('sidebar');
var da=document.getElementById('displayArea');
if (sb) {
sb.style.display=co.chkShowRightSidebar?'block':'none';
da.style.marginRight=co.chkShowRightSidebar?'':'1em';
}
'';}}>><html><nowiki><a href='javascript:;' title="$2"
onmouseover="
this.href='javascript:void(eval(decodeURIComponent(%22(function(){try{('
+encodeURIComponent(encodeURIComponent(this.onclick))
+')()}catch(e){alert(e.description?e.description:e.toString())}})()%22)))';"
onclick="
var co=config.options;
var opt='chkShowRightSidebar';
var show=co[opt]=!co[opt];
var sb=document.getElementById('sidebar');
var da=document.getElementById('displayArea');
if (sb) {
sb.style.display=show?'block':'none';
da.style.marginRight=show?'':'1em';
}
saveOptionCookie(opt);
var labelShow=co.txtToggleRightSideBarLabelShow||'◄';
var labelHide=co.txtToggleRightSideBarLabelHide||'►';
if (this.innerHTML==labelShow||this.innerHTML==labelHide)
this.innerHTML=show?labelHide:labelShow;
this.title=(show?'hide':'show')+' right sidebar';
var sm=document.getElementById('storyMenu');
if (sm) config.refreshers.content(sm);
return false;
">$1</a></html>
!end
%/<<tiddler {{
var src='ToggleRightSidebar';
src+(tiddler&&tiddler.title==src?'##info':'##show');
}} with: {{
var co=config.options;
var labelShow=co.txtToggleRightSideBarLabelShow||'◄';
var labelHide=co.txtToggleRightSideBarLabelHide||'►';
'$1'!='$'+'1'?'$1':(co.chkShowRightSidebar?labelHide:labelShow);
}} {{
var tip=(config.options.chkShowRightSidebar?'hide':'show')+' right sidebar';
'$2'!='$'+'2'?'$2':tip;
}}>>
The following is a summary of notable user-level feature changes in ~TiddlyWiki v<<version>>:
*''FireFox "privilege" handling''<br>Catch and supress "privilege" error messages in the TWCore backstage Import functions that use FireFox local file I/O or "ajax" remote (http) file access.
*''TiddlySaver''<br>Changes in handling for filenames with Unicode/UTF-8 characters. Updated new signed security certificate.
*''backstage import''<br>Fixes for importing tiddlers from local files (must be in same directory as current document)
{{{
@inproceedings{BurdenOhlsson2012,
Author = {Burden, S A and Ohlsson, H and Sastry, S S},
Title = {Parameter Identification Near Periodic Orbits of Hybrid Dynamical Systems},
Booktitle = {IFAC Symposium on System Identification},
url = {SysID2012},
Year = {2012}}
@inproceedings{BurdenGonzalez2011,
Author = {Burden, S and Gonzalez, H and Vasudevan, R and Bajcsy, R and Sastry, S S},
Month = {dec.},
Pages = {3958--3965},
Title = {Numerical integration of hybrid dynamical systems via domain relaxation},
Booktitle = {IEEE Conference on Decision and Control},
url = {CDC2011},
Year = {2011}}
@inproceedings{BurdenRevzen2011,
Author = {Burden, S A and Revzen, S and Sastry, S S},
Month = {dec.},
Pages = {6116--6121},
Title = {Dimension reduction near periodic orbits of hybrid systems},
Booktitle = {IEEE Conference on Decision and Control},
url = {CDC2011},
Year = {2011}}
@inproceedings{HooverBurden2010,
Author = {Hoover, A and Burden, S A and Fu, X and Sastry, S S and Fearing, R},
Title = {Bio-inspired design and dynamic maneuverability of a minimally actuated six-legged robot},
Booktitle = {IEEE Conference on Biomedical Robotics and Biomechatronics},
url = {papers/HooverBurden2010.pdf},
Year = {2010}}
@inproceedings{NappBurden2009,
Author = {Napp, N and Burden, S A and Klavins, E},
Title = {Setpoint regulation for stochastically interacting robots},
Booktitle = {Robotics: Science and Systems},
url = {papers/NappBurden2009.pdf},
Year = {2009}}
@inproceedings{BurdenClark2007,
Author = {Burden, S A and Clark, J and Weingarten, J and Komsuoglu, H and Koditschek, D E},
Number = {605},
Title = {Heterogeneous Leg Stiffness and Roll in Dynamic Running},
Booktitle = {International Conference on Robotics and Automation},
url = {papers/BurdenClark2007.pdf},
Year = {2007}}
@inproceedings{KlavinsBurden2006,
Author = {Klavins, E and Burden, S A and Napp, N},
Title = {The Statistical Dynamics of Programmed Robotic Self-Assembly},
Booktitle = {International Conference on Robotics and Automation},
url = {papers/KlavinsBurden2006.pdf},
Year = {2006}}
@inproceedings{KlavinsBurden2006a,
Author = {Klavins, E and Burden, S A and Napp, N},
Title = {Optimal Rules for Programmed Stochastic Self-Assembly},
Booktitle = {Robotics: Science and Systems},
url = {papers/KlavinsBurden2006a.pdf},
Year = {2006}}
@inproceedings{BishopBurden2005,
Author = {Bishop, J and Burden, S A and Klavins, E and Kreisberg, R and Malone, W and Napp, N and Nguyen, T},
Organization = {IEEE},
Pages = {3684--3691},
Title = {Programmable parts: A demonstration of the grammatical approach to self-organization},
Booktitle = {International Conference on Intelligent Robots and Systems},
url = {papers/BishopBurden2005.pdf},
Year = {2005}}
}}}
{{{
@techreport{BurdenGonzalezVasudevan2013,
Author = {Burden, S A and Gonzalez, H and Vasudevan, R and Bajcsy, R and Sastry, S S},
Title = {{Metrization and Simulation of Controlled Hybrid Systems}},
Institution = {arXiv:1302.4402},
url = {http://arxiv.org/abs/1302.4402},
Year = {2013}}
@inproceedings{BurdenRevzen2013floq,
Author = {Burden, S A and Revzen, S and Sastry, S S},
Title = {Model Reduction Near Periodic Orbits of Hybrid Dynamical Systems},
Booktitle = {In preparation},
Year = {Q2 2013}}
@inproceedings{BurdenRevzen2013multi,
Author = {Burden, S A and Revzen, S and Koditschek, D E and Sastry, S S},
Title = {Robust Limit Cycles in Hybrid Systems with Simultaneous Transitions},
Booktitle = {In preparation},
Year = {Q2 2013}}
@inproceedings{HooverBurden2013,
Author = {Hoover, A and Burden, S A and Sastry, S S},
Title = {Biologically-Inspired Design and Maneuverability of a Minimally-Actuated Milliscale Hexapedal Robot},
Booktitle = {In preparation},
Year = {Q3 2013}}
@inproceedings{MooreBurden2013,
Author = {Moore, T Y and Burden, S A and Revzen, S and Full, R J},
Title = {Adding inertia and mass to test stability predictions in rapid running insects},
Booktitle = {In preparation},
Year = {Q4 2013}}
}}}
{{{
@article{RevzenBurden2013,
Author = {Revzen, S and Burden, S A and Moore, T Y and Mongeau, J M and Full, R J},
Title = {Instantaneous kinematic phase reflects neuromechanical response to lateral perturbations of running cockroaches},
Journal = {Biological Cybernetics},
Volume = {107},
Number = {2},
Pages = {179-200},
Year = {2013},
Doi = {10.1007/s00422-012-0545-z},
url = {papers/RevzenBurden2013.pdf}}
@article{NappBurden2011,
Author = {Napp, N and Burden, S A and Klavins, E},
Journal = {Autonomous Robots},
Pages = {57-71},
Title = {Setpoint regulation for stochastically interacting robots},
Volume = {30},
Year = {2011},
doi = {10.1007/s10514-010-9203-2},
url = {papers/NappBurden2011.pdf}}
}}}
{{{
@article{Barber1961,
Author = {Barber, B.},
Journal = {Science},
Pages = {596--602},
Title = {Resistance by Scientists to Scientific Discovery},
Volume = {134},
Year = {1961}}
@article{BrunerPostman1949,
Author = {Bruner, J. S. and Postman, L.},
Journal = {Journal of Personality},
Number = {2},
Pages = {206--223},
Title = {On the perception of incongruity: a paradigm},
Volume = {18},
Year = {1949}}
@article{Kubie1953,
Author = {Kubie, L. S.},
Journal = {American Scientist},
Number = {4},
Pages = {pp. 596-613},
Title = {Some unsolved problems of the scientific career},
Volume = {41},
Year = {1953}}
@book{Kuhn1970,
Author = {Kuhn, T.S.},
Edition = {Second},
Publisher = {University of Chicago Press},
Title = {The structure of scientific revolutions},
Year = {1970}}
@article{MacIver1961,
Author = {MacIver, R. M.},
Journal = {Proceedings of the American Philosophical Society},
Number = {5},
Pages = {pp. 500-505},
Title = {Science as a Social Phenomenon},
Volume = {105},
Year = {1961}}
@article{Schagrin1963,
Author = {Schagrin, M. L.},
Journal = {American Journal of Physics},
Pages = {536-547},
Title = {{Resistance to Ohm's Law}},
Volume = {31},
Year = {1963}}
@article{Solla-Price1965,
Author = {de Solla Price, D. J.},
Journal = {Science},
Number = {3683},
Pages = {510-515},
Title = {Networks of Scientific Papers},
Volume = {149},
Year = {1965}}
}}}
config.options.chkShowRightSidebar=false;
config.options.txtToggleRightSideBarLabelShow="◄";
config.options.txtToggleRightSideBarLabelHide="►";
{{{
@inproceedings{BurdenSastry2013,
Author = {Burden, S and Sastry, S S},
Title = {Reduction and Identification for Hybrid Dynamical Models of Terrestrial Locomotion},
Booktitle = {SPIE Conference on Micro-Nanotechnology Sensors, Systems, and Applications},
url = {SPIE2013},
Year = {2013}}
@inproceedings{BurdenRevzen2013dw,
Author = {Burden, S A and Revzen, S and Sastry, S Shankar},
Title = {From Anchors to Templates: Exact and Approximate Reduction in Models of Legged Locomotion},
Booktitle = {Dynamic Walking},
url = {DW2013},
Year = {2013}}
@inproceedings{BurdenRevzen2013,
Author = {Burden, S A and Revzen, S and Moore, T Y and Sastry, S S and Full, R J},
Title = {Using reduced-order models to study dynamic legged locomotion: Parameter identification and model validation},
Booktitle = {Society for Integrative and Comparative Biology},
url = {http://www.sicb.org/meetings/2013/schedule/abstractdetails.php?id=405},
Year = {2013}}
@techreport{BurdenRevzen2011arxiv,
Author = {Burden, S A and Revzen, S and Sastry, S S},
Institution = {arXiv:1109.1780},
Title = {Dimension Reduction Near Periodic Orbits of Hybrid Systems},
url = {http://arxiv.org/abs/1109.1780},
Year = {2011}}
@inproceedings{MooreRevzen2010,
Author = {Moore, T Y and Revzen, S and Burden, S A and Full, R J},
Title = {Adding inertia and mass to test stability predictions in rapid running insects},
Booktitle = {Society for Integrative and Comparative Biology},
url = {http://sicb.org/meetings/2010/schedule/abstractdetails.php3?id=1290},
Year = {2010}}
}}}