annotate thesis/cortex.tex @ 430:5205535237fb

fix skew in self-organizing-touch, work on thesis.
author Robert McIntyre <rlm@mit.edu>
date Sat, 22 Mar 2014 16:10:34 -0400
parents b5d0f0adf19f
children 7410f0d8011c
rev   line source
rlm@422 1
rlm@425 2 \section{Artificial Imagination}
rlm@425 3 \label{sec-1}
rlm@422 4
rlm@425 5 Imagine watching a video of someone skateboarding. When you watch
rlm@425 6 the video, you can imagine yourself skateboarding, and your
rlm@425 7 knowledge of the human body and its dynamics guides your
rlm@425 8 interpretation of the scene. For example, even if the skateboarder
rlm@425 9 is partially occluded, you can infer the positions of his arms and
rlm@425 10 body from your own knowledge of how your body would be positioned if
rlm@425 11 you were skateboarding. If the skateboarder suffers an accident, you
rlm@425 12 wince in sympathy, imagining the pain your own body would experience
rlm@425 13 if it were in the same situation. This empathy with other people
rlm@425 14 guides our understanding of whatever they are doing because it is a
rlm@425 15 powerful constraint on what is probable and possible. In order to
rlm@425 16 make use of this powerful empathy constraint, I need a system that
rlm@425 17 can generate and make sense of sensory data from the many different
rlm@425 18 senses that humans possess. The two key proprieties of such a system
rlm@425 19 are \emph{embodiment} and \emph{imagination}.
rlm@422 20
rlm@425 21 \subsection{What is imagination?}
rlm@425 22 \label{sec-1-1}
rlm@425 23
rlm@425 24 One kind of imagination is \emph{sympathetic} imagination: you imagine
rlm@425 25 yourself in the position of something/someone you are
rlm@425 26 observing. This type of imagination comes into play when you follow
rlm@425 27 along visually when watching someone perform actions, or when you
rlm@425 28 sympathetically grimace when someone hurts themselves. This type of
rlm@425 29 imagination uses the constraints you have learned about your own
rlm@425 30 body to highly constrain the possibilities in whatever you are
rlm@425 31 seeing. It uses all your senses to including your senses of touch,
rlm@425 32 proprioception, etc. Humans are flexible when it comes to "putting
rlm@425 33 themselves in another's shoes," and can sympathetically understand
rlm@425 34 not only other humans, but entities ranging from animals to cartoon
rlm@425 35 characters to \href{http://www.youtube.com/watch?v=0jz4HcwTQmU}{single dots} on a screen!
rlm@425 36
rlm@425 37
rlm@425 38 \begin{figure}[htb]
rlm@425 39 \centering
rlm@425 40 \includegraphics[width=5cm]{./images/cat-drinking.jpg}
rlm@425 41 \caption{A cat drinking some water. Identifying this action is beyond the state of the art for computers.}
rlm@425 42 \end{figure}
rlm@425 43
rlm@425 44
rlm@429 45 \begin{listing}
rlm@429 46 \caption{This is a basic test for the vision system. It only tests the vision-pipeline and does not deal with loading eyes from a blender file. The code creates two videos of the same rotating cube from different angles.}
rlm@425 47 \begin{clojurecode}
rlm@425 48 (defn test-pipeline
rlm@425 49 "Testing vision:
rlm@425 50 Tests the vision system by creating two views of the same rotating
rlm@425 51 object from different angles and displaying both of those views in
rlm@425 52 JFrames.
rlm@425 53
rlm@425 54 You should see a rotating cube, and two windows,
rlm@425 55 each displaying a different view of the cube."
rlm@425 56 ([] (test-pipeline false))
rlm@425 57 ([record?]
rlm@425 58 (let [candy
rlm@425 59 (box 1 1 1 :physical? false :color ColorRGBA/Blue)]
rlm@425 60 (world
rlm@425 61 (doto (Node.)
rlm@425 62 (.attachChild candy))
rlm@425 63 {}
rlm@425 64 (fn [world]
rlm@425 65 (let [cam (.clone (.getCamera world))
rlm@425 66 width (.getWidth cam)
rlm@425 67 height (.getHeight cam)]
rlm@425 68 (add-camera! world cam
rlm@425 69 (comp
rlm@425 70 (view-image
rlm@425 71 (if record?
rlm@425 72 (File. "/home/r/proj/cortex/render/vision/1")))
rlm@425 73 BufferedImage!))
rlm@425 74 (add-camera! world
rlm@425 75 (doto (.clone cam)
rlm@425 76 (.setLocation (Vector3f. -10 0 0))
rlm@425 77 (.lookAt Vector3f/ZERO Vector3f/UNIT_Y))
rlm@425 78 (comp
rlm@425 79 (view-image
rlm@425 80 (if record?
rlm@425 81 (File. "/home/r/proj/cortex/render/vision/2")))
rlm@425 82 BufferedImage!))
rlm@425 83 (let [timer (IsoTimer. 60)]
rlm@425 84 (.setTimer world timer)
rlm@425 85 (display-dilated-time world timer))
rlm@425 86 ;; This is here to restore the main view
rlm@425 87 ;; after the other views have completed processing
rlm@425 88 (add-camera! world (.getCamera world) no-op)))
rlm@425 89 (fn [world tpf]
rlm@425 90 (.rotate candy (* tpf 0.2) 0 0))))))
rlm@425 91 \end{clojurecode}
rlm@429 92 \end{listing}
rlm@426 93
rlm@426 94 \begin{itemize}
rlm@426 95 \item This is test1 \cite{Tappert77}.
rlm@426 96 \end{itemize}
rlm@429 97
rlm@429 98 \cite{Tappert77}
rlm@429 99 lol
rlm@429 100 \citet{Tappert77}