diff thesis/cortex.org @ 465:e4104ce9105c

working on body/joints.
author Robert McIntyre <rlm@mit.edu>
date Fri, 28 Mar 2014 11:08:32 -0400
parents 8bf4bb02ed05
children da311eefbb09
line wrap: on
line diff
     1.1 --- a/thesis/cortex.org	Fri Mar 28 00:42:42 2014 -0400
     1.2 +++ b/thesis/cortex.org	Fri Mar 28 11:08:32 2014 -0400
     1.3 @@ -5,7 +5,27 @@
     1.4  #+keywords: AI, clojure, embodiment
     1.5  #+LaTeX_CLASS_OPTIONS: [nofloat]
     1.6  
     1.7 -* Empathy and Embodiment as problem solving strategies
     1.8 +* COMMENT templates
     1.9 +  #+caption: 
    1.10 +  #+caption: 
    1.11 +  #+caption: 
    1.12 +  #+caption: 
    1.13 +  #+name: name
    1.14 +  #+begin_listing clojure
    1.15 +  #+begin_src clojure
    1.16 +  #+end_src
    1.17 +  #+end_listing
    1.18 +
    1.19 +  #+caption: 
    1.20 +  #+caption: 
    1.21 +  #+caption: 
    1.22 +  #+name: name
    1.23 +  #+ATTR_LaTeX: :width 10cm
    1.24 +  [[./images/Eve.jpg]]
    1.25 +
    1.26 +
    1.27 +
    1.28 +* COMMENT Empathy and Embodiment as problem solving strategies
    1.29    
    1.30    By the end of this thesis, you will have seen a novel approach to
    1.31    interpreting video using embodiment and empathy. You will have also
    1.32 @@ -339,7 +359,7 @@
    1.33    possible, so that =CORTEX= may be used for things I have not
    1.34    forseen.
    1.35  
    1.36 -** Simulation or Reality?
    1.37 +** COMMENT Simulation or Reality?
    1.38     
    1.39     The most important archetictural decision of all is the choice to
    1.40     use a computer-simulated environemnt in the first place! The world
    1.41 @@ -402,30 +422,30 @@
    1.42      doing everything in software is far cheaper than building custom
    1.43      real-time hardware. All you need is a laptop and some patience.
    1.44  
    1.45 -** Because of Time, simulation is perferable to reality
    1.46 +** COMMENT Because of Time, simulation is perferable to reality
    1.47  
    1.48     I envision =CORTEX= being used to support rapid prototyping and
    1.49     iteration of ideas. Even if I could put together a well constructed
    1.50     kit for creating robots, it would still not be enough because of
    1.51     the scourge of real-time processing. Anyone who wants to test their
    1.52     ideas in the real world must always worry about getting their
    1.53 -   algorithms to run fast enough to process information in real
    1.54 -   time. The need for real time processing only increases if multiple
    1.55 -   senses are involved. In the extreme case, even simple algorithms
    1.56 -   will have to be accelerated by ASIC chips or FPGAs, turning what
    1.57 -   would otherwise be a few lines of code and a 10x speed penality
    1.58 -   into a multi-month ordeal. For this reason, =CORTEX= supports
    1.59 +   algorithms to run fast enough to process information in real time.
    1.60 +   The need for real time processing only increases if multiple senses
    1.61 +   are involved. In the extreme case, even simple algorithms will have
    1.62 +   to be accelerated by ASIC chips or FPGAs, turning what would
    1.63 +   otherwise be a few lines of code and a 10x speed penality into a
    1.64 +   multi-month ordeal. For this reason, =CORTEX= supports
    1.65     /time-dialiation/, which scales back the framerate of the
    1.66 -   simulation in proportion to the amount of processing each
    1.67 -   frame. From the perspective of the creatures inside the simulation,
    1.68 -   time always appears to flow at a constant rate, regardless of how
    1.69 +   simulation in proportion to the amount of processing each frame.
    1.70 +   From the perspective of the creatures inside the simulation, time
    1.71 +   always appears to flow at a constant rate, regardless of how
    1.72     complicated the envorimnent becomes or how many creatures are in
    1.73     the simulation. The cost is that =CORTEX= can sometimes run slower
    1.74     than real time. This can also be an advantage, however ---
    1.75     simulations of very simple creatures in =CORTEX= generally run at
    1.76     40x on my machine!
    1.77  
    1.78 -** Video game engines are a great starting point
    1.79 +** COMMENT Video game engines are a great starting point
    1.80     
    1.81     I did not need to write my own physics simulation code or shader to
    1.82     build =CORTEX=. Doing so would lead to a system that is impossible
    1.83 @@ -448,7 +468,7 @@
    1.84     researchers can turn to this community for help when doing their
    1.85     research. 
    1.86     
    1.87 -** =CORTEX= is based on jMonkeyEngine3
    1.88 +** COMMENT =CORTEX= is based on jMonkeyEngine3
    1.89  
    1.90     While preparing to build =CORTEX= I studied several video game
    1.91     engines to see which would best serve as a base. The top contenders
    1.92 @@ -529,6 +549,7 @@
    1.93     #+caption: =EVE= from the movie WALL-E.  This body plan turns 
    1.94     #+caption: out to be much better suited to my purposes than a more 
    1.95     #+caption: human-like one.
    1.96 +   #+ATTR_LaTeX: :width 10cm
    1.97     [[./images/Eve.jpg]]
    1.98  
    1.99     =EVE='s body is composed of several rigid components that are held
   1.100 @@ -546,6 +567,31 @@
   1.101     splitting in two. This could be used to simulate retractable claws
   1.102     or =EVE='s hands, which are able to coalesce into one object in the
   1.103     movie.
   1.104 +
   1.105 +*** Solidifying/Connecting the body   
   1.106 +
   1.107 +   Importing bodies from =CORTEX= into blender involves encoding
   1.108 +   metadata into the blender file that specifies the mass of each
   1.109 +   component and the joints by which those components are connected. I
   1.110 +   do this in Blender in two ways. First is by using the ``metadata''
   1.111 +   field of each solid object to specify the mass. Second is by using
   1.112 +   Blender ``empty nodes'' to specify the position and type of each
   1.113 +   joint. Empty nodes have no mass, physical presence, or appearance,
   1.114 +   but they can hold metadata and have names. I use a tree structure
   1.115 +   of empty nodes to specify joints. There is a parent node named
   1.116 +   ``joints'', and a series of empty child nodes of the ``joints''
   1.117 +   node that each represent a single joint.
   1.118 +
   1.119 +   #+caption: View of the hand model in Blender showing the main ``joints''
   1.120 +   #+caption: node (highlighted in yellow) and its children which each
   1.121 +   #+caption: represent a joint in the hand. Each joint node has metadata
   1.122 +   #+caption: specifying what sort of joint it is.
   1.123 +   #+ATTR_LaTeX: :width 10cm
   1.124 +   [[./images/hand-screenshot1.png]]
   1.125 +
   1.126 +   
   1.127 +   
   1.128 +
   1.129     
   1.130     
   1.131  
   1.132 @@ -563,7 +609,7 @@
   1.133  
   1.134  ** =CORTEX= enables many possiblities for further research
   1.135  
   1.136 -* Empathy in a simulated worm
   1.137 +* COMMENT Empathy in a simulated worm
   1.138  
   1.139    Here I develop a computational model of empathy, using =CORTEX= as a
   1.140    base. Empathy in this context is the ability to observe another
   1.141 @@ -1343,7 +1389,7 @@
   1.142     completely scrambled. The cross shape is just for convienence. This
   1.143     example justifies the use of pre-defined touch regions in =EMPATH=.
   1.144  
   1.145 -* Contributions
   1.146 +* COMMENT Contributions
   1.147    
   1.148    In this thesis you have seen the =CORTEX= system, a complete
   1.149    environment for creating simulated creatures. You have seen how to