# HG changeset patch # User Robert McIntyre # Date 1396019312 14400 # Node ID e4104ce9105cfb829e1afc9bd06e200a9e2f4f9c # Parent 8bf4bb02ed0520470648376892df6056308f76b0 working on body/joints. diff -r 8bf4bb02ed05 -r e4104ce9105c thesis/cortex.org --- a/thesis/cortex.org Fri Mar 28 00:42:42 2014 -0400 +++ b/thesis/cortex.org Fri Mar 28 11:08:32 2014 -0400 @@ -5,7 +5,27 @@ #+keywords: AI, clojure, embodiment #+LaTeX_CLASS_OPTIONS: [nofloat] -* Empathy and Embodiment as problem solving strategies +* COMMENT templates + #+caption: + #+caption: + #+caption: + #+caption: + #+name: name + #+begin_listing clojure + #+begin_src clojure + #+end_src + #+end_listing + + #+caption: + #+caption: + #+caption: + #+name: name + #+ATTR_LaTeX: :width 10cm + [[./images/Eve.jpg]] + + + +* COMMENT Empathy and Embodiment as problem solving strategies By the end of this thesis, you will have seen a novel approach to interpreting video using embodiment and empathy. You will have also @@ -339,7 +359,7 @@ possible, so that =CORTEX= may be used for things I have not forseen. -** Simulation or Reality? +** COMMENT Simulation or Reality? The most important archetictural decision of all is the choice to use a computer-simulated environemnt in the first place! The world @@ -402,30 +422,30 @@ doing everything in software is far cheaper than building custom real-time hardware. All you need is a laptop and some patience. -** Because of Time, simulation is perferable to reality +** COMMENT Because of Time, simulation is perferable to reality I envision =CORTEX= being used to support rapid prototyping and iteration of ideas. Even if I could put together a well constructed kit for creating robots, it would still not be enough because of the scourge of real-time processing. Anyone who wants to test their ideas in the real world must always worry about getting their - algorithms to run fast enough to process information in real - time. The need for real time processing only increases if multiple - senses are involved. In the extreme case, even simple algorithms - will have to be accelerated by ASIC chips or FPGAs, turning what - would otherwise be a few lines of code and a 10x speed penality - into a multi-month ordeal. For this reason, =CORTEX= supports + algorithms to run fast enough to process information in real time. + The need for real time processing only increases if multiple senses + are involved. In the extreme case, even simple algorithms will have + to be accelerated by ASIC chips or FPGAs, turning what would + otherwise be a few lines of code and a 10x speed penality into a + multi-month ordeal. For this reason, =CORTEX= supports /time-dialiation/, which scales back the framerate of the - simulation in proportion to the amount of processing each - frame. From the perspective of the creatures inside the simulation, - time always appears to flow at a constant rate, regardless of how + simulation in proportion to the amount of processing each frame. + From the perspective of the creatures inside the simulation, time + always appears to flow at a constant rate, regardless of how complicated the envorimnent becomes or how many creatures are in the simulation. The cost is that =CORTEX= can sometimes run slower than real time. This can also be an advantage, however --- simulations of very simple creatures in =CORTEX= generally run at 40x on my machine! -** Video game engines are a great starting point +** COMMENT Video game engines are a great starting point I did not need to write my own physics simulation code or shader to build =CORTEX=. Doing so would lead to a system that is impossible @@ -448,7 +468,7 @@ researchers can turn to this community for help when doing their research. -** =CORTEX= is based on jMonkeyEngine3 +** COMMENT =CORTEX= is based on jMonkeyEngine3 While preparing to build =CORTEX= I studied several video game engines to see which would best serve as a base. The top contenders @@ -529,6 +549,7 @@ #+caption: =EVE= from the movie WALL-E. This body plan turns #+caption: out to be much better suited to my purposes than a more #+caption: human-like one. + #+ATTR_LaTeX: :width 10cm [[./images/Eve.jpg]] =EVE='s body is composed of several rigid components that are held @@ -546,6 +567,31 @@ splitting in two. This could be used to simulate retractable claws or =EVE='s hands, which are able to coalesce into one object in the movie. + +*** Solidifying/Connecting the body + + Importing bodies from =CORTEX= into blender involves encoding + metadata into the blender file that specifies the mass of each + component and the joints by which those components are connected. I + do this in Blender in two ways. First is by using the ``metadata'' + field of each solid object to specify the mass. Second is by using + Blender ``empty nodes'' to specify the position and type of each + joint. Empty nodes have no mass, physical presence, or appearance, + but they can hold metadata and have names. I use a tree structure + of empty nodes to specify joints. There is a parent node named + ``joints'', and a series of empty child nodes of the ``joints'' + node that each represent a single joint. + + #+caption: View of the hand model in Blender showing the main ``joints'' + #+caption: node (highlighted in yellow) and its children which each + #+caption: represent a joint in the hand. Each joint node has metadata + #+caption: specifying what sort of joint it is. + #+ATTR_LaTeX: :width 10cm + [[./images/hand-screenshot1.png]] + + + + @@ -563,7 +609,7 @@ ** =CORTEX= enables many possiblities for further research -* Empathy in a simulated worm +* COMMENT Empathy in a simulated worm Here I develop a computational model of empathy, using =CORTEX= as a base. Empathy in this context is the ability to observe another @@ -1343,7 +1389,7 @@ completely scrambled. The cross shape is just for convienence. This example justifies the use of pre-defined touch regions in =EMPATH=. -* Contributions +* COMMENT Contributions In this thesis you have seen the =CORTEX= system, a complete environment for creating simulated creatures. You have seen how to diff -r 8bf4bb02ed05 -r e4104ce9105c thesis/images/hand-screenshot1.png Binary file thesis/images/hand-screenshot1.png has changed diff -r 8bf4bb02ed05 -r e4104ce9105c thesis/rlm-cortex-meng.tex --- a/thesis/rlm-cortex-meng.tex Fri Mar 28 00:42:42 2014 -0400 +++ b/thesis/rlm-cortex-meng.tex Fri Mar 28 11:08:32 2014 -0400 @@ -47,9 +47,9 @@ \usepackage{rotating} \usepackage{caption} -%\usepackage{afterpage} +\usepackage{afterpage} -%\afterpage{\clearpage} % +\afterpage{\clearpage} % \usepackage[backend=bibtex,style=alphabetic]{biblatex} \addbibresource{cortex.bib} @@ -63,7 +63,6 @@ citecolor={dark-blue}, urlcolor={medium-blue} } -\newenvironment{code}{\captionsetup{type=listing}}{} \renewcommand{\thesection}{\arabic{section}} \renewcommand{\thefigure}{\arabic{figure}} @@ -90,24 +89,24 @@ \pagestyle{plain} -%% % Alter some LaTeX defaults for better treatment of figures: -%% % See p.105 of "TeX Unbound" for suggested values. -%% % See pp. 199-200 of Lamport's "LaTeX" book for details. -%% % General parameters, for ALL pages: -%% \renewcommand{\topfraction}{0.9} % max fraction of floats at top -%% \renewcommand{\bottomfraction}{0.8} % max fraction of floats at bottom -%% % Parameters for TEXT pages (not float pages): -%% \setcounter{topnumber}{2} -%% \setcounter{bottomnumber}{2} -%% \setcounter{totalnumber}{4} % 2 may work better -%% \setcounter{dbltopnumber}{2} % for 2-column pages -%% \renewcommand{\dbltopfraction}{0.9} % fit big float above 2-col. text -%% \renewcommand{\textfraction}{0.07} % allow minimal text w. figs -%% % Parameters for FLOAT pages (not text pages): -%% \renewcommand{\floatpagefraction}{0.7} % require fuller float pages -%% % N.B.: floatpagefraction MUST be less than topfraction !! -%% \renewcommand{\dblfloatpagefraction}{0.7} % require fuller float pages -%% % remember to use [htp] or [htpb] for placement +% Alter some LaTeX defaults for better treatment of figures: +% See p.105 of "TeX Unbound" for suggested values. +% See pp. 199-200 of Lamport's "LaTeX" book for details. +% General parameters, for ALL pages: +\renewcommand{\topfraction}{0.9} % max fraction of floats at top +\renewcommand{\bottomfraction}{0.8} % max fraction of floats at bottom +% Parameters for TEXT pages (not float pages): +\setcounter{topnumber}{2} +\setcounter{bottomnumber}{2} +\setcounter{totalnumber}{4} % 2 may work better +\setcounter{dbltopnumber}{2} % for 2-column pages +\renewcommand{\dbltopfraction}{0.9} % fit big float above 2-col. text +\renewcommand{\textfraction}{0.07} % allow minimal text w. figs +% Parameters for FLOAT pages (not text pages): +\renewcommand{\floatpagefraction}{0.7} % require fuller float pages +% N.B.: floatpagefraction MUST be less than topfraction !! +\renewcommand{\dblfloatpagefraction}{0.7} % require fuller float pages +% remember to use [htp] or [htpb] for placement \begin{document}