Mercurial > cortex
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