From Simspark
Jump to: navigation, search

SimSpark comes with different robot models for use by agents. The physical representation of each model is stored in an .rsg file. The visual aspects of the model are stored in .obj and .mtl files.

See Creating New Robots for information on making your own models.



The Nao humanoid robot manufactured by Aldebaran Robotics. Its height is about 57cm and its weight is around 4.5kg. Its biped architecture with 22 degrees of freedom allows Nao to have great mobility. rcssserver3d simulates Nao nicely, as you can see.

The real Nao
The virtual Nao


Nao's anatomy

This section is quite important to the agent development for the specific perceptors and effectors used to represent this robot. The Nao robot model is equipped with a powerful selection of perceptors and effectors to provide a widespread information base for agent development.

  • The Nao robot possess a gyroscope and a accelerometer, to keep track of radial as well as axial movement of itself in the three dimensional space. Both are located at the center of the torso, therefore the only available identifier to these perceptors is “torso”.
  • In order to detect contact with the ground or other objects in the simulation, one force resistance perceptor in each foot indicates the actual pressure on it. Possible identifiers are “lf” and “rf”, for the left and the right foot.
  • To get visual information about different objects in its environment the Nao robot possess a restricted vision perceptor at the center of its head. Note: The visual perception is described in a right hand system facing the x-axis.
  • For communication purposes it is equipped with a say effector and the corresponding hear perceptor.
  • The position of each joint is represented by a hinge joint perceptor and manipulable through the corresponding hinge joint effector. A complete list of all available joints of the Nao robot and their corresponding identifiers is listed in the table below. The arrangement of the joints and their relative orientation is shown in figure Nao's anatomy.
  • The gamestate perceptor is used to inform about the actual play time and play mode.
No. Description Hinge Joint Perceptor name Effector name
1 Neck Yaw [0][0] hj1 he1
2 Neck Pitch [0][1] hj2 he2
3 Left Shoulder Pitch [1][0] laj1 lae1
4 Left Shoulder Yaw [1][1] laj2 lae2
5 Left Arm Roll [1][2] laj3 lae3
6 Left Arm Yaw [1][3] laj4 lae4
7 Left Hip YawPitch [2][0] llj1 lle1
8 Left Hip Roll [2][1] llj2 lle2
9 Left Hip Pitch [2][2] llj3 lle3
10 Left Knee Pitch [2][3] llj4 lle4
11 Left Foot Pitch [2][4] llj5 lle5
12 Left Foot Roll [2][5] llj6 lle6
13 Right Hip YawPitch [3][0] rlj1 rle1
14 Right Hip Roll [3][1] rlj2 rle2
15 Right Hip Pitch [3][2] rlj3 rle3
16 Right Knee Pitch [3][3] rlj4 rle4
17 Right Foot Pitch [3][4] rlj5 rle5
18 Right Foot Roll [3][5] rlj6 rle6
19 Right Shoulder Pitch [4][0] raj1 rae1
20 Right Shoulder Yaw [4][1] raj2 rae2
21 Right Arm Roll [4][2] raj3 rae3
22 Right Arm Yaw [4][3] raj4 rae4
Available hinge joints of the Nao robot.
(time (now 93.60))
(GS (t 0.00) (pm BeforeKickOff))
(hear 0.00 self 1000-501)
(GYR (n torso) (rt -0.35 -0.36 -0.01))
(ACC (n torso) (a 0.20 -0.20 9.79))
(HJ (n hj1) (ax 0.33))
(HJ (n hj2) (ax -3.31))
(See (G2R (pol 17.55 -3.33 4.31))
     (G1R (pol 17.52 3.27 4.07))
     (F1R (pol 18.52 18.94 1.54))
     (F2R (pol 18.52 -18.91 1.52))
     (B (pol 8.51 -0.21 -0.17))
     (P (team teamRed) (id 1)
        (head (pol 16.98 -0.21 3.19))
        (rlowerarm (pol 16.83 -0.06 2.80))
        (llowerarm (pol 16.86 -0.36 3.10))
        (rfoot (pol 17.00 0.29 1.68))
        (lfoot (pol 16.95 -0.51 1.32)))
     (P (team teamBlue) (id 1)
        (rlowerarm (pol 0.18 -33.55 -20.16))
        (llowerarm (pol 0.18 34.29 -19.80))))
(HJ (n raj1) (ax 31.72))
(HJ (n raj2) (ax -20.12))
(HJ (n raj3) (ax -0.01))
(HJ (n raj4) (ax 40.04))
(HJ (n laj1) (ax 64.37))
(HJ (n laj2) (ax 19.96))
(HJ (n laj3) (ax 0.09))
(HJ (n laj4) (ax -40.11))
(HJ (n rlj1) (ax -0.06))
(HJ (n rlj2) (ax 20.31))
(HJ (n rlj3) (ax -39.24))
(HJ (n rlj4) (ax 20.02))
(HJ (n rlj5) (ax 0.04))
(FRP (n rf) (c 0.01 -0.01 -0.02) (f -0.21 0.21 19.77))
(HJ (n rlj6) (ax 0.21))
(HJ (n llj1) (ax -0.01))
(HJ (n llj2) (ax 0.00))
(HJ (n llj3) (ax 19.70))
(HJ (n llj4) (ax -41.02))
(HJ (n llj5) (ax 20.31))
(FRP (n lf) (c 0.01 -0.01 -0.02) (f -0.21 0.20 25.45))
(HJ (n llj6) (ax -0.16))

Physical Properties

Nao's box model.

Besides the perceptors and effectors it’s also quite important to the agent development to be aware of the parameters used to construct the robot. The body measurements and the arrangement of the different body parts is shown in Nao's box model.

A detailed description of the Nao configuration is given by the following table:

Body part Hinge Joint
Name Parent Translation Mass Geometry Name Anchor Axis Min Max
torso 1.2171 Box
0.100, 0.100, 0.180
neck torso 0, 0, 0.090 0.05 Cylinder
L: 0.080 R: 0.015
HJ1 0, 0, 0 0,0,1 -120 120
head neck 0, 0, 0.065 0.35 Sphere
HJ2 0, 0, -0.005 1,0,0 -45 45
shoulder torso 0.098, 0, 0.075(r)
-0.098, 0, 0.075(l)
0.07 Sphere
AJ1 0, 0, 0 1,0,0 -120 120
upperarm shoulder 0.010, 0.020, 0(r)
-0.010, 0.020, 0(l)
0.15 Box
0.07, 0.08, 0.06
AJ2 -Translation 0,0,1 -95(r)
elbow upperarm -0.010, 0.070, 0.009(r)
0.010, 0.070, 0.009(l)
0.035 Sphere
AJ3 0, 0, 0 0,1,0 -120 120
lowerarm elbow 0, 0.050, 0 0.2 Box
0.050, 0.110, 0.050
AJ4 -Translation 0,0,1 -1(r)
hip1 torso 0.055, -0.010, -0.115(r)
-0.055, -0.010, -0.115(l)
0.09 Sphere
LJ1 0, 0, 0 -0.7071, 0, 0.7071(r)
-0.7071, 0, -0.7071(l)
-90 1
hip2 hip1 0, 0, 0 0.125 Sphere
LJ2 0, 0, 0 0,1,0 -45(r)
thigh hip2 0, 0.010, -0.040 0.275 Box
0.070, 0.070, 0.140
LJ3 -Translation 1,0,0 -25 100
shank thigh 0, 0.005, -0.125 0.225 Box
0.080, 0.070, 0.110
LJ4 0,-0.010, 0.045 1,0,0 -130 1
ankle shank 0, -0.010, -0.055 0.125 Sphere
LJ5 0, 0, 0 1,0,0 -45 75
foot ankle 0, 0.030, -0.040 0.2 Box
0.080, 0.160, 0.020
LJ6 -Translation 0,1,0 -25(r)


  • Name is the body part name of Nao
  • Parent is the parent of the body
  • Translation is the offset relative to its parent (in meter)
  • Mass is the mass of this body (in kilogram)
  • Geometry is the size of its geometry representation (in meter)
  • Name is the joint name installed on this body
  • Anchor is the offset of the joint anchor relative to the body that installed on in meter
  • Axis is the joint axis relative to the body that installed on (x, y, z-orientation of the axis)
  • Min is the min angle that the joint can reach (in degrees)
  • Max is the max angle that the joint can reach (in degrees)

Note: All values are relative to the torso coordinate system! (which faces the y-axis)


The Nao robot model is implemented in the rsg files under rcssserver3d/data/rsg/agent/nao in the following files.

File Name Description
box_appearance.rsg Install a box which is for the GL render
box_physics.rsg Install a box that has physics effect(ODE related)
box_physics_nocollider.rsg Install a box that only has dynamics effect (mass, linear velocity, etc). But it can never collide to the others
box_physics_with_handler.rsg Not only do the job as file box physics.rsg, but also install a touchperceptorhandler under the BoxCollider Node
ccylinder_appearance.rsg Install a capped cylinder which is for the GL render
ccylinder_physics.rsg Install a capped cylinder that has physics effect(ODE related)
ccylinder_physics_nocollider.rsg Install a capped cylinder that only has dynamics effect (mass, linear velocity, etc) so it can never collide to the others
contactjointhandler.rsg Install a contactjointhandler to handle the collisions
dragcontroller.rsg Install a DragController
goal.rsg Install the goal
hingejoint.rsg Install a hingejoint


Soccerbot's anatomy

Soccerbot is a humanoid robot with 20 degrees of freedom (DOF). It was used in the RoboCup 3D Soccer Simulation League for many years, but has been replaced by Nao.

Soccerbot from the front

Its dimensions are quite unrealistic for a real humanoid robot which is due to instabilities in the physics simulation at the time the robot was first modeled. This is a serious shortcoming of this robot model. Another issue is that the joint ranges are not limited in the current model. This allows for very unrealistic movements which can be fun to watch, but can lead to unfair behavior in a competition.

The Soccerbot has several kinds of perceptors available. It uses a (omni-directional) vision perceptor to get information about objects in its environment. In order to detect the contact with the ground and the resulting force at the feet, it is equipped with a Force Resistance Perceptor in each foot. It can sense the current simulation time with a GameState Perceptor and the change in orientation of its torso with a GyroRate Perceptor. Furthermore, it has HingeJoint Perceptors and UniversalJoint Perceptors that sense the angle of each joint. An overview over the joint perceptors and effectors are tabulated below.

Example Message

Here is an example message received by agent from the server in a single simulation cycle including sense information from all the perceptors of the agent.

 (time (now 19.60))
 (GYR (n torso) (rt -0.02 -0.01 -0.00))
 (See (F1L (pol 10.34 45.02 -16.70)) 
      (F2L (pol 68.43 174.14 -2.56))
      (F1R (pol 103.28 -86.10 -1.66))
      (F2R (pol 123.46 -123.42 -1.43))
      (G1L (pol 27.94 165.40 -6.96))
      (G2L (pol 35.03 168.43 -5.56))
      (G1R (pol 106.49 -104.59 -1.83))
      (G2R (pol 108.57 -108.33 -1.80))
      (B (pol 56.95 -122.42 -3.02))
      (P (team RoboLog) (id 2) (pol 10.50 -179.98 -0.07)))
 (UJ (n laj1 2) (ax1 0.00) (ax2 90.63))
 (UJ (n raj1 2) (ax1 -0.00) (ax2 90.63))
 (HJ (n laj3) (ax 90.77))
 (HJ (n raj3) (ax -90.77))
 (HJ (n laj4) (ax 87.96))
 (HJ (n raj4) (ax 88.40))
 (HJ (n llj1) (ax 0.03))
 (HJ (n rlj1) (ax -0.02))
 (UJ (n llj2 3) (ax1 -0.03) (ax2 0.02))
 (UJ (n rlj2 3) (ax1 -0.02) (ax2 0.01))
 (HJ (n llj4) (ax 0.05))
 (HJ (n rlj4) (ax 0.04))
 (TCH (n lf) (val 1))
 (UJ (n llj5 6) (ax1 0.05) (ax2 -0.01))
 (TCH (n rf) (val 1))
 (UJ (n rlj5 6) (ax1 0.04) (ax2 -0.00))

Physical Properties

Name Width Depth Height Mass
head 0.39m 0.39m 0.39m 0.3kg
torso 1.37m 0.96m 1.41m 1.8kg
left shoulder 0.445m 1.017m 0.536m 0.5kg
right shoulder 0.445m 1.017m 0.536m 0.5kg
left upper arm 0.445m 0.398m 0.506m 0.2kg
right upper arm 0.445m 0.398m 0.506m 0.2kg
left lower arm 0.445m 0.316m 0.6m 0.2kg
left lower arm 0.445m 0.316m 0.6m 0.2kg
left hip 0.273m 0.273m 0.2m 0.1kg
right hip 0.273m 0.273m 0.2m 0.1kg
left thigh 0.56m 0.56m 1.3m 0.25kg
right thigh 0.56m 0.56m 1.3m 0.25kg
left shank 0.56m 0.56m 0.964m 0.25kg
right shank 0.56m 0.56m 0.964m 0.25kg
left foot 0.6m 0.956m 0.095m 0.1kg
right foot 0.6m 0.956m 0.095m 0.1kg

Perceptor and Effector Names

Connection between Joint type Perceptor name Effector name
Shoulder - body Universal joint laj1_2 raj1_2 lae1_2 rae1_2
Upper arm - shoulder Hinge joint laj3 raj3 lae3 rae3
Forearm - upper arm Hinge joint laj4 raj4 lae4 rae4
Hip - body Hinge joint llj1 rlj1 lle1 rle1
Upper leg - hip Universal joint llj2_3 rlj2_3 lle2_3 rle2_3
Lower leg - upper leg Hinge joint llj4 rlj4 lle4 rle4
foot - lower leg Universal joint llj5_6 rlj5_6 lle5_6 rle5_6
Personal tools