[[SIGVerse.org:http://sigverse.org]] | [[SIGVerse Forum:http://sigverse.org/sigverse/forum/]] | [[SIGVerse Wiki (JP):http://www.sociointelligenesis.org/SIGVerse/]] | [[SIGVerse Web:http://web.iir.nii.ac.jp/sigverse/web/]]

----

%%%''&size(24){SIGVerse Web};''%%%

#contents

----

* Introduction [#d01a4ae2]
SIGVerse Web is a ''Web Interface for SIGVerse Application Development''. Together with SIGViewer, SIGVerse application development can be done without command-line interface terminal (e.g. Cygwin). A light-weight programming editor with multiple languages support is equipped on the system to ease programming jobs. Code compiling (make), building of project files, and execution can be done with just a click. Furthermore, the web-based system also enable development to be carry out anywhere with just an internet browser.
Main feature of SIGVerse Web:
- Web-based Editor and Compiler
- Remote Control SIGServer
- Workspace on the Cloud

----

* Setup [#vd1221fc]
** Register and Login Webuser account [#b09c1ddd]
- Pull down the top panel for web registration and login http://web.iir.nii.ac.jp/sigverse/web/login/index.php

&ref(./Register&Login.png,alt-title-Register & Login on Top Panel);

** SIGVerse Installation/Uninstallation [#v8122c9a]
- On the main page, after '''Connect to Socio''', select the desired version and click to install/uninstall SIGVerse.
- ''*Important*'' After clicking the '''Install''' button, please allow some time (~5 mins) for the processing until a long list of output is displayed. Please do not press any other button during the processing.
- Once the installation is completed, you can click '''Go''' to access your '''Workspace'''.

&ref(./SetupPage.png,alt-title-Setup Page);

** '''* Socio Server Access''' [#e61d1f94]
- In order for SIGViewer to visualize your simulation running on Socio server, you are required to have an access account on the server. Please contact Professor Inamura (inamura@nii.ac.jp) to apply an access account and follow the guide here http://www.sociointelligenesis.org/SIGVerse/index.php?SSH%E6%8E%A5%E7%B6%9A to establish the SSH connection.

----

* Basic Development Guide [#g3744b5c]
** Workspace Overview [#s8df86d6]

&ref(./Workspace.png,alt-title-Workspace);

- Project Directory
-- The left panel consists of a file navigation for project directory. You can create new project folder and file, upload project file, and even import a whole project (Refer to '''Import''' below).

- Editor Area
-- The center area is the editor for programming code developments. It supports multiple programming languages with syntax highlight, search and replace, and multi-tab for working of several files in parallel.

- Control Panel
-- The lower panel is the Control Panel for code compiling and execution.
-- ''Make'' - To '''make''' controller codes with a Makefile. Please make sure to prepare the Makefile.txt as below (sample):

Makefile.txt

#highlight(xml){{
 #SIGVerseソースの場所指定
 SIG_SRC  = ../sigverse-$(sigversion)/include/sigverse
 
 #オブジェクトファイルの指定
 OBJS     = Controller.so
 
 all: $(OBJS)
 
 #コンパイルを行います。
 ./%.so: ./%.cpp
 	g++ -DCONTROLLER -DNDEBUG -DUSE_ODE -DdDOUBLE -I$(SIG_SRC) -I$(SIG_SRC)/comm/controller  -fPIC -shared -o $@   $<
}}

-- ''Build'' - To "build" the project files into the current SIGVerse version (indicated on the right end of Control Panel).
-- ''Import (.zip)'' - To import a project from local machine, upload the zip file of the project (with all files inside) onto Project Directory. Press '''Import''' to extract it (refresh to view the new folder).
-- ''Export'' - To download a project in zip format.
-- ''Delete'' - To delete a project (with all files inside).
-- Execute [Admin] - For administrative purpose only.

** Running Simulation [#ldee943d]
- ''Run'' - To execute SIGServer (./sigverse.sh).
- ''Check'' - To view output of the execution (for possible error).
- ''Kill'' - To terminate SIGServer.

----

* Tutorials [#i308f6c9]
** First Test (Tutorial01) [#yc3437d8]
- To simulate a falling object due to gravitational and external forces.
- Step 1: Create a new project
-- Click the '''Add Folder''' icon on the top of the left Project Directory.
-- Insert "Tutorial01" and click SAVE.
-- A new folder named "Tutorial01" appears on the Project Directory.

- Step 2: Create an agent controller
-- An agent is an autonomous object controlled by a controller.
-- Click into "Tutorial01" and click '''Add File''' to create the controller source code.
-- Insert "MoveController" and select "cpp" as the file type.
-- Insert the following codes into the Editor Area and click SAVE.

MoveController.cpp
 
#highlight(cpp){{
 #include "Controller.h"
 #include "Logger.h"
 
 //ControllerのサブクラスMoveControllerの宣言します。
 class MoveController : public Controller {
 public:
 
   //定期的な処理を行うonActionの利用を宣言します。
   double onAction(ActionEvent&);
 };
 
 
 double MoveController::onAction(ActionEvent &evt) {
   return 5.0;      //次にonActionが呼ばれるまでの時間を返します。
 }
 
 //自身のインスタンスをSIGVerseに返します。
 extern "C" Controller * createController() {
      return new MoveController;
 }
}}

-- The above controller codes do nothing except execute "onAction" on every 5 s.

- Step 3: Compiling the controller codes
-- Create a file named "Makefile" with "txt" file type.
-- Insert the following codes into the Editor Area and click SAVE.

Makefile.txt

#highlight(xml){{
 #SIGVerseソースの場所指定
 SIG_SRC  = ../sigverse-$(sigversion)/include/sigverse
 
 #オブジェクトファイルの指定
 OBJS     = MoveController.so
 
 all: $(OBJS)
 
 #コンパイルを行います。
 ./%.so: ./%.cpp
 	g++ -DCONTROLLER -DNDEBUG -DUSE_ODE -DdDOUBLE -I$(SIG_SRC) -I$(SIG_SRC)/comm/controller  -fPIC -shared -o $@   $<
}}

-- Click '''Make''' and refresh the Project Directory to ensure the creation of "MoveController.so" file.

- Step 4: Create a virtual world with the agent
-- Create a new file named "NewWorld" with "xml" file type.
-- Insert the following codes into the Editor Area and click SAVE.

NewWorld.xml

#highlight(xml){{

<?xml version="1.0" encoding="utf8"?>
 <world name="myworld">
 
 <!--重力の設定-->
   <gravity x="0.0" y="-9.8" z="0.0"/>  
  
 <!--エージェントToy_Dのインスタンス作成-->
   <instanciate class="seToy_D.xml">
 
 <!--エージェント名-->
         <set-attr-value name="name" value="Toy_D"/>  
 
 <!--C++言語の指定-->
         <set-attr-value name="language" value="c++"/> 
 
 <!--作成したコントローラの指定-->
         <set-attr-value name="implementation" value="./MoveController.so"/>
 
 <!--動力学演算フラグ-->
         <set-attr-value name="dynamics" value="true"/>
  
 <!--エージェントの最初の位置(x,y,z)-->
         <set-attr-value name="x" value="0.0"/>
         <set-attr-value name="y" value="18.0"/>
         <set-attr-value name="z" value="5.0"/>
 
 <!--エージェントの質量設定-->
         <set-attr-value name="mass" value="1.0"/>
 
  </instanciate>
</world>
}}

-- The above codes create a virtual world named "myworld".
-- In the world, an agent named "Toy_D" using the instance of "seToy_D.xml" is created.
-- The "implementation" attribute attaches "MoveController.so" as the controller of the agent.
-- With the "dynamics" attribute value set to "true", the agent is subjected to dynamics simulation.
-- The initial position (x,y,z) and mass are set.

- Step 5: Execute the simulation
-- On the Control Panel, build the project by using '''Build'''.
-- Set "Port" to 9001 and "World" to "NewWorld.xml"
-- Click '''Run''' to execute SIGVerse.
-- Click '''Check''' to check the last line of the output is " Java VM start ok" for successful execution.
-- Run SIGViewer. Establish SSH connection under Setting. Set host name as "localhost" and port no. to "9001". Click '''Connect to SimServer'''.
-- An agent in a virtual world appears as follows.

#ref(動力学シミュレーションのサンプル/toy_1.jpg)

-- Click '''Send''' under SIM_CTRL_CMD (START) to start the simulation.
-- The agent falls straight down the ground.
-- '''Disconnect SimServer''' in SIGViewer and '''Kill''' in the Control Panel to terminate the simulation.

- Step 6: Apply external force
-- To apply an external force to the agent, edit the agent controller as follows:

MoveController.cpp

#highlight(cpp:firstline[13]){{
 double MoveController::onAction(ActionEvent &evt) {
   return 5.0;      //次にonActionが呼ばれるまでの時間を返します。
 }
}}

                 ↓

#highlight(cpp:firstline[13]){{
 double MoveController::onAction(ActionEvent &evt) {
   SimObj *obj = getObj(myname());  //自分自身の取得
   obj->setForce(0,0,300);         //z軸方向に300[N]の力を加える
   return 5.0;      //次にonActionが呼ばれるまでの時間を返します。
 }
}}

-- '''Make''', '''Build''' and '''Run''' the simulation as above.
-- The agent moves forward as below.

#ref(動力学シミュレーションのサンプル/toy_3.jpg)

** Tutorial Project Files [#j3b3ff3e]
- Tutorial01 - &ref(./Tutorial01.zip);
- Tutorial02 - 
- Tutorial03 - 
- Tutorial04 - 
- Tutorial05 - 
- Tutorial06 - 
- Tutorial07 - 
- Tutorial08 - 
- Tutorial09 - 
- Tutorial10 - 

----

* Library [#j37e4e6a]
- Object Gallery

- World Gallery
-- Living Room (Small)
-- Living Room (Big)
-- Kitchen

- Controller Collection
-- Mobile Robot
-- Humanoid

- User Interface Systems
-- Kinect
-- Webcam

----

For any inquiry, suggestion, and feedback, please kindly contact Jeffrey [jeffrey@nii.ac.jp].

#highlight(end)

Front page   New List of pages Search Recent changes   Help   RSS of recent changes