[[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/]]
[[SIGVerse.org:http://sigverse.org]] | [[SIGVerse Forum:http://sigverse.org/sigverse/forum/]] | [[SIGVerse Web:http://web.iir.nii.ac.jp/sigverse/web/]]

----
日本語版の情報は[[SIGVerse Web (日本語)]]にあります.

%%%''&size(24){SIGVerse Web};''%%%
%%%''&size(24){Sorry! SIGVerse Web is now under maintenance.};''%%%

#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,80%);

** 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,90%);

** '''* 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 a permanent access account ''OR'' you can use the following method for temporary access (monthly renewal).
- Download the SSH-Key (On the main page after login to SIGVerse Web) and extract the files (id_rsa and id_rsa.pub) into (SIGViewer installed directory)\SIGViewer-<version>\SIGViewer\.ssh folder (* Default directory is C:\Program Files\).
- Please find the passphrase in the passphrase.txt.
- For security reason, the key and the passphrase will expired at the end of every month. Please renew the key at the beginning of every month.
- Follow the guide below (SSH Connection) to establish the SSH connection using SIGViewer.

----

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

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

- 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.

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

** SSH Connection [#f2e8ee8d]
- Input host name, user name and pass phrase
-- Run SIGViewer.exe on local machine.
-- From the top '''Setting''' menu, select '''SSH Connect'''.

#ref(SSH接続/ssh_connect1.jpg)

-- Input the server host name (or IP address), user name and passphrase on the dialogue box.
-- For temporary access,
--- Server host name: socio2.iir.nii.ac.jp
--- User name: testuser
--- Passphrase: (as written in passphrase.txt)

#ref(SSH接続/ssh_connect2.jpg)

-- Check the '''Use RSA key to login'''.
-- Enable port forwarding (in most cases blocked by firewall) by the following steps.
-- Check '''Local port forwarding with login''' and input the following details:
--- Local port: Port on local machine
--- Listen host:  Listening machine(normally '''localhost''')
--- Remote port: Port on server

#ref(SSH接続/ssh_connect3.jpg)

-- Check '''Remote port forwarding with login''' and input the following details:
--- Server port: Port on local machine
--- Listen host:  Listening machine(normally '''localhost''')
--- Local port: Port on server

#ref(SSH接続/ssh_connect4jpg.jpg)

-- * In normal cases, please use 9001 and above for local port forwarding, and 8001 and above for remote port forwarding. If the port number is currently in used, please try other number.
-- Check '''Download shape file''' for automatically update shape files from server.
-- Press '''Connect''', the SSH connection is established if the message "SSH Authentication succeeded (server host name)" appears on the bottom left of SIGViewer.

#ref(SSH接続/ssh_connect5.jpg)

----

* 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 $@   $<
}}

-- In the Control Panel, insert the project name "Tutorial01" for '''work/''' and click '''Make'''. Refresh the Project Directory to ensure the creation of "MoveController.so" file. If "MoveController.so" file is not created, means there is a compilation error during Make. Check your programming codes. Also, in the Makefile.txt, ensure that there is no any extra space in front and behind the lines, and the spacing in front of the last line (...g++) is a tab and not multiple space bar.

- 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.
-- If you see "cannot bind socket: Address already in use", just try another port number other than 9001.
Try bigger number, e.g. 9002, 9003, 9004, ... There are various reasons why the port is temporary being used.
-- 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.
-- * View controls for SIGViewer:
--- Turn around - Right click
--- Zoom - Ctrl + Right click
--- Pan - Shift + Right click

#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 - 

** Differences between SIGVerse Web and manual programming development [#cc401a50]

SIGVerse Web is developed with the aim to ease and reduce learning curve for novice users (who are not familiar to Linux environment) to begin with SIGVerse development. The development process explained above is slightly different to manual programming developments illustrated in the rest of the tutorials in this wiki.

- The files system in SIGVerse Web is organized based on "Project". You can develop all related files (.cpp, .so, .xml, .wrl, .x3d, etc.) under the same project folder. By using "Build", SIGVerse Web will automatically build all the files into the respective folders of the current SIGVerse version that you are working on. This files system will provide a better files organization and enables "Import" and "Export" of projects for backup and sharing purposes.

- ''*Difference*'' In World files (.xml), the path to the controller's shared object file (.so) is always at the current directory, example:

#highlight(xml){{
<set-attr-value name="implementation" value="./MoveController.so"/>
}}

- In SIGVerse Web, you can install and execute all available versions of SIGVerse servers in the same development environment. Because of the independent files system, the same project codes can be executed in different SIGVerse versions based on your selection when you enter the workspace.

- ''*Difference*'' To make sure the Makefile indicates the current SIGVerse version in your workspace during compilation, please make sure the first line of the Makefile.txt is as follows:

#highlight(xml){{
SIG_SRC  = ../sigverse-$(sigversion)/include/sigverse
}}

----

* 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].
For any inquiry, suggestion, and feedback, please kindly contact Jeffrey [i@jeffreytan.org].

#highlight(end)

#counter


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