240 likes | 319 Views
Jacob an instruction agent in VR. Marc Evers (evers@cs.utwente.nl) 6 March 2000. Contents. context & project description approach & technology current state & next steps architecture of the system design details conclusions. Context. pilot project of VR Valley Twente
E N D
Jacoban instruction agent in VR Marc Evers (evers@cs.utwente.nl) 6 March 2000
Contents • context & project description • approach & technology • current state & next steps • architecture of the system • design details • conclusions
Context • pilot project of VR Valley Twente • objective: establishing a regional knowledge centre on VR • organisations: UT (INF, WB), HE, HSA, Carp, MST, ... • 6 pilot projects • http://www.vr-valley.com/
Jacob Project • Jacob as assistant • tasks: instruction, navigation, etc. • Jacob shows intelligent behaviour • multimodal interaction • interaction between multiple agents • manipulation of objects in the virtual world
Approach • use existing knowledge and theories • Intelligent Tutoring Systems, Computer Graphics, AI, … • software engineering focus • how to build such a system in a maintainable, adaptable, …, way • use OO techniques & software architecture knowledge
Technology • runs on any PC or Workstation with web browser+VRML browser+3D graphics card • programming languages • Java 1.1; VRML 97 • standards • H-Anim for Jacob’s body • under consideration: Java 3D, JavaSpeech
Current state • Jacob teaches construction task • Towers of Hanoi • manipulation of objects in virtual world • by Jacob and by user • Jacob has explicit model of the task • simulation of physical processes • gravity, collisions • simple animation
Next steps • natural language dialogue • ‘intelligence’ for Jacob • multi user Jacob (DeepMatrix) • integration in VMC, in 2 steps: • first, Jacob will play isolated role in VMC • second, Jacob interacts with VMC
Basic architecture ‘task’ layer (?) abstract 3D World: agents, cubes, tables, ... abstraction of 3D platform 3D platform: VRML/EAI; Java 3D; ...
Class VWorld • simulation of physical aspects • gravity, collisions • other physical constraints • management of VE objects • agents & objects • keeps track of the state of VE objects • observations
Class VEObject • defines general behaviour of VE objects • bounding box, position, size • gravity, (b)locking • relations like isOnTopOf
Subclasses of VEObject • Cube • detects picking, dropping, dragging by user • Avatar • knows position and orientation of user • Jacob • Jacob’s manifestation in the world • lookAt, moveObject, walktTo, shakeHead
: DraggingSensor : VWorld c : Cube : GravityThread : World NodeProxy Listener 1: drop performed 2: agentMovesObject(c) 3: enforceWorldConstraints( ) 4: startGravity( ) 5: start( ) 6: setPosition( ) 7: update( ) 8: worldStateChanged() ‘Physics’ protocol
c : Cube : VWorld : VEObject b1 : Bounding b2 : Bounding Box Box 1: setPosition(v) 2: avoidCollision(c,v) 3: avoidCollision(c,v) 4: canCollide( ) 5: getBoundingBox( ) 6: getBoundingBox( ) 7: avoidCollision(b2, v) 8: get... Collision avoidance protocol
Class Task • knows how to create the ‘scene’ • has knowledge on performing the task • Schema: hierarchical structure • Composite design pattern • action, explanation, pre/postcondition, invariant • schema interface is generic • SchemaIterator determines current task state
Class InstructionModel • InstructionRule • rules that fire other rules or start instruction methods based on conditions • InstructionMethod • executed until goal or state is reached • example: • while user does nothing: wait, give hint, wait, show move
: VWorld t : Task : Schema : Schema : Instruction Iterator Model 1: worldStateChanged( ) 2: updateCurrent( ) 3: precondition(t) 4: postcondition(t) 5: invariant(t) 6: getSubSchemas( ) 7: taskStateChanged( ) 8: currentSchema( ) Task update protocol
Concluding remarks • current results can be generalised • Jacob based on existing knowledge and theories • instruction agent concept is very general • instruction, assistance, design guidance… • demo & documentation • http://www.cs.utwente.nl/~evers/jacob/