Skip to content

Latest commit

 

History

History

doc

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
+-----------------------------------------------------------------------------+
|
|   SIMLOID Documentation Version 0.1.0
|
+-----------------------------------------------------------------------------+
|
|   Contents
|       Installation
|       Starting the Server
|       Robots
|       Scenes
|       TCP Status and Control Interface
|       Traits Message
|       Sensor Status Message
|       Motor Control Message
|           Voltage Control
|           PID Control
|           Max. Torque
|           Add Impulse
|           Other
|
|
+--------------+--------------------------------------------------------------+
| Installation |
+--------------+
|
|   Simloid uses the version 0.13 of ODE, be sure you have the provided file
|   'libode.a' installed in '/usr/local/lib/libode.a
|
|   Build the lib and install headers:
|   $ ./configure --enable-double-precision
|   $ make
|   $ make install
|
|
+---------------------+-------------------------------------------------------+
| Starting the Server |
+---------------------+
|
|   To start simloid type:
|
|   $ ./simloid --port <port> --robot <robot_id> --scene <scene_id>
|
|   Command line parameters can be omitted. Instead you can edit the
|   configuration file 'simloid.conf'.
|
|
+--------+--------------------------------------------------------------------+
| Robots |
+--------+
|
|   10: karlsims    : tadpole_0
|   11: karlsims    : tadpole_1
|   20: crawler     : crawler
|   30: fourlegged  : wildcat0
|   31: fourlegged  : wildcat1
|   40: biped       : ostrich
|   50: biped       : humanoid
|   60: nolegs      : worm
|
|   90: standard    : pendulum
|   91: standard    : double_pendulum
|   92: standard    : rotor_horizontal
|   93: standard    : rotor_vertical
|   94: standard    : rotor_axial
|   95: standard    : pendulum without accel
|
|
+--------+--------------------------------------------------------------------+
| Scenes |
+--------+
|
|    0: empty world     : flat, even, ground
|    1: hurdles         : bars with successively increasing step height
|    2: hills           : cosine hills with increasing slope and height
|    3: shaky ground    : small rocks all over the ground
|
|
+----------------------------------+------------------------------------------+
| TCP Status and Control Interface |
+----------------------------------+
|
|   The communication to simloid (server) starts with a traits handshake.
|
|       1.server sends traits
|       2.client sends "ACK\n"
|
|       3.server sends status message
|       4.client sends control message
|       (repeat 3+4)
|
|
+----------------+------------------------------------------------------------+
| Traits Message |
+----------------+
|
|   Description of the robot traits message:
|
|   Num_Bodies Num_Joints Num_Accels \n
|   joint_id_0   type symmetric_joint stop_lo stop_hi def_pos name \n
|   joint_id_1   type symmetric_joint stop_lo stop_hi def_pos name \n
|   ...
|   joint_id_N-1 type symmetric_joint stop_lo stop_hi def_pos name \n
|
|
+-----------------------+-----------------------------------------------------+
| Sensor Status Message |
+-----------------------+
|
|   The status message consists of floats only, separated by blanks,
|   terminated by '\n' and has always the same number of float elements.
|   However the message length varies with respect to the numbers being send.
|
|   time
|   joint position (pos)        1..Num_Joints
|   joint velocity (vel)        1..Num_Joints
|   acceleration sensors (xyz)  1..Num_Accels
|   body pos (xyz) + vel (xyz)  1..Num_Bodies
|
|
+-----------------------+-----------------------------------------------------+
| Motor Control Message |
+-----------------------+
|
|   A control message can carry multiple motor control commands and must be
|   terminated with the command "DONE\n".
|   Each motor control command must be terminated by a newline ('\n').
|
|
+-- VOLTAGE CONTROL ----------------------------------------------------------+
|
|   Applicable motor voltage must be in range [-1,+1].
|   If you set a motor voltage, the joint stays in VOLTAGE CONTROL mode
|   until a position (PID CONTROL mode) is being set.
|
|   1.) Set the same voltage to every joint
|
|       Command: UA <voltage>
|       Example: "UA 0.5\n"
|
|   2.) Set an individual voltage to each joint [0...N-1]
|
|       Command: UX <voltage_0> <voltage_1> ... <voltage_N-1>
|       Example: "UX 0.5 0.2 -0.4 1.0 -0.34\n"
|
|   3.) Set only voltage to a single joint with joint_ID
|
|       Command: UI <joint_ID> <voltage>
|       Example: "UI 2 0.1\n"
|
|
+-- PID CONTROL --------------------------------------------------------------+
|
|   Applicable positions must be from range [-1,+1] = [-pi,+pi].
|   Reachable range can be smaller if joint stops are set.
|   If you set a joint position, the joint stays in PID CONTROL mode
|   until a control voltage is being set.
|
|   1.) Set the same position to every joint
|
|       Command: PA <position>
|       Example: "PA 0.3\n"
|
|   2.) Set an individual position to each joint [0...N-1]
|
|       Command: PX <position_0> <position_1> ... <position_N-1>
|       Example: "PX 0.2 0.4 0.5 -1.0 -0.22\n"
|
|   3.) Set only position to joint with joint_ID
|
|       Command: PI <joint_ID> <position>
|       Example: "PI 1 1.0\n"
|
|
+-- MAX TORQUE ---------------------------------------------------------------+
|
|   This command is used in combination with the PID control mode to set
|   the maximal available torque for the position controller which can be
|   used to enforce the given set-point position.
|
|   1.) Set the same max. torque to every joint
|
|       Command: TA <maxtorque>
|       Example: "TA 0.5\n"
|
|   2.) Set an individual max. torque to each joint [0...N-1]
|
|       Command: TX <maxtorque_0> <maxtorque_1> ... <maxtorque_N-1>
|       Example: "TX 0.5 0.2 -0.4 1.0 -0.34\n"
|
|   3.) Set only max. torque to joint with joint_ID
|
|       Command: TI <joint_ID> <maxtorque>
|       Example: "TI 2 0.1\n"
|
|
+-- ADD IMPULSE --------------------------------------------------------------+
|
|   This command is used to set forces to the body segments of the robot.
|
|   1.) Set a force with given vector to the center of mass to the body
|       with body_ID.
|
|       Command: IM <body_ID> <Force_X> <Force_Y> <Force_Z>
|       Example: "IM 3 0.2 0.4 0.6\n"
|
|
+-- OTHER --------------------------------------------------------------------+
|
|   1.) Switch gravity on/off.
|
|       Command: GRAVITY <ON|OFF>
|       Example: "GRAVITY ON\n"
|
|   2.) Reset the simulation.
|
|       Command: RESET
|
|   3.) Save and simulation state.
|
|       Command: SAVE
|
|   4.) Restore previously saved simulation state.
|
|       Command: RESTORE
|
|   5.) Reset the clock (simulation time).
|
|       Command: NEWTIME
|
|   6.) Terminate a control message.
|
|       Command: DONE
|
|   7.) Exit the simulation and close the socket.
|
|       Command: EXIT
|
|
+-----------------------------------------------------------------------------+