*******************************************************************************
*                                                                             *
*             SONY     A I B O  E R S - 7      FOR WEBOTS                     *
*                      Model Reference Guide                          v1.1    *
*                                                                             *
*******************************************************************************
 Author  : Sergei Poskriakov <poskria4@etu.unige.ch>
 Purpose : Webots Aibo ERS-7 model develloper's reference
 Date    : 09/09/2004 rev. 27/12/2004


  Copyright (C) Cyberbotics.com


*                                                                          *
* RELEASE NOTES:                                              v1.1         *
*                                                                          *
* Forelegs' lower parts currently enjoy a much fitter bounding object than *
* other moving parts. This decision is supported by the fact that if the   *
* robot is to be used for the RoboCup competition, it will certainly use   *
* its forelegs a lot, e.g. for ball control, therefore a precise collision *
* detection will be enjoyable if not required.                             *
*                                                                          *
* Limitations:                                                             *
*                                                                          *
* - Mass values are currently inherited from ERS-210 (where possible) or   *
* guesstimated (proportionately to other parts), and were not specifically *
* measured for ERS-7. This should be corrected in a future update. Same    *
* holds for joint max force and velocity measures, undocumented in Sony's  *
* own reference guides for ERS-7 (or ERS-210, for that matter).            *
* - Distance sensors [Distance] have linear lookup tables, within documen- *
* ted range, with max 10% white noise in mid-range; this will be refined   *
* when proper experimental results from a real ERS-7 become available.     *
* - Regarding the moveable jaw, the ERS-7 was designed so as to be able to *
* hold simple objects with its mouth. At this time, the model does not     *
* support it. (To implement this feature, we would need to reconfigure the *
* bounding object for the head, making it even more elaborate and thereby  *
* adding to the computational complexity of the model, for a task which in *
* typical research projects won't be used anyway. A separate elaborate     *
* version may be released at a later date.)                                *
* - Face and back LEDs are only partially supported (virtual LED).         *
*                                                                          *

===============================================================================
MODEL
-------------------------------------------------------------------------------
LEGEND:
 node: DEF "description"
 mass: [kg] "body part"
 phys: bounce/bounceVelocity coulombFriction forceDependentSlip
 joint: maxVelocity maxForce/acceleration minPosition:maxPosition->default

! Temporary empirical/inherited values are indicated in [] brackets.
! These should be approved/corrected for final model release.

Servos [*], unless otherwise specified, have:
 -phys: [0.5/0.01 0.99 0.011]
 -joint: ... [5.4542/0.852212] ... ->0(0)

Some parts come in symmetrical pairs: xxx={LEFT,RIGHT} (in that order)
-------------------------------------------------------------------------------
                                                    (formatted for tab width=4)
BODY	node: ERS7
 |	bbox: sphere+cylinder+sphere
 |	mass: 0.613 "body"
 |
 |
 +- S:CHEST[Distance]	node: CHEST_DISTANCE_SENSOR				PRM:/p1-Sensor:p1
 |    			 (30 towards the ground, facing forward)
 |  			lookup: (0.0 100 0)
 |  			        (0.1 100 0)
 |   			        (0.5 500 0.1)
 |   			        (0.9 900 0)
 |
 |
 +- NECK[*]	node: NECK_TILT	 "neck tilt"					PRM:/r1/c1-Joint2:11
 |  |		bbox: cylinder
 |  |		mass: [0.015] "neck"
 |  |		joint: [3.0107] ... -1.3963:0.0524(-80:3)
 |  |   	                     -> -0.5236(-30)
 |  |
 |  +- UPPER NECK[*]	node: HEAD_PAN "head pan"				PRM:/r1/c1/c2-Joint2:12
 |     |		bbox: sphere
 |     |		mass: [0.01] "head base"
 |     |		joint: [3.0107] ... -1.6232:1.6232(-93:93)
 |     |
 |     +- HEAD[*]	node: HEAD_TILT "head tilt"				PRM:/r1/c1/c2/c3-Joint2:13
 |        |		bbox: sphere+cylinder+sphere
 |        |		mass: [0.19] "head"
 |        |		joint: [3.0107] ... -0.349:0.8727(-20:50)
 |        | 		                     -> 0.5236(30)
 |        |
 |        +- JAW[*]	node: JAW "jaw"						PRM:/r1/c1/c2/c3/c4-Joint2:14
 |        |  		bbox: -
 |        |   		joint: 1 1/0.852212 -1.0472:0(-60:0)
 |        |
 |        +- S:NEAR[Distance]	node: HEAD_DISTANCE_SENSOR_NEAR		PRM:/r1/c1/c2/c3/p1-Sensor:p1
 |        |	 		lookup: (0.0   50  0)
 |        |			        (0.05  50  0)
 |        |	 		        (0.275 275 0.1)
 |        |			        (0.5   500 0)
 |        |
 |        +- S:FAR[Distance]	node: HEAD_DISTANCE_SENSOR_FAR			PRM:/r1/c1/c2/c3/p2-Sensor:p2
 |        |			 (same position as near sensor)
 |        |			lookup: (0.0  200  0)
 |        |			        (0.2  200  0)
 |        |			        (0.85 850  0.1)
 |        |			        (1.5  1500 0)
 |        |
 |        +- CAMERA	node: HEAD_CAM "head camera"				PRM:/r1/c1/c2/c3/i1-FbkImageSensor:F1
 |        |        	image: 416 x 320  30fps
 |        |            FoV: 0.993092(56.9) x 45.2
 |        |		pixFactor: 0.968346
 |        |
 |        +- EARS[*]	node: xxx_EAR "ear flip"				PRM:/r1/c1/c2/c3/e{5,6}-Joint4:1{5,6}
 |        |   		bbox: box
 |        |   		mass: [0.005] "ear"
 |        |   		joint: 1000 1000/1000 0:0.2618(0:15) "flip emulation"
 |        |
 |        + (FACE LIGHTS)	node: __FACE_LIGHTS
 |           |
 |           +- FACE LIGHTS[LED]	node: __FaceLight{n}			PRM:/r1/c1/c2/c3/la-LED3:l{x}
 |               n     x   face(A/B)  	colors: W: RGB[255,255,255] "white"
 |              1+2 ; a+b   W/G  l+r	        R: RGB[255,0,0]     "red"
 |              3+4 ; c+d * W/G  l+r	        G: RGB[0,150,0]     "dark green"
 |              5+6 ; e+f   W/W  l+r	        B: RGB[0,0,255]     "blue"
 |              7+8 ; g+h   W/W  l+r
 |             9+10 ; i+j   W/W  l+r		* = A/B changes shape
 |               11 ; k     W/W  center
 |               12 ; l     W/W  center
 |               13 ; m   * R/B  dual center
 |               14 ; n   * R/B  dual center
 |
 |
 +- (BACK)	node: __BACK
 |   |					(node)		(color)
 |   +- BACK FRONT LIGHTS[LED]
 |   |          "blue"        	__BackFrontLightCOLOR	RGB[0,0,255]		PRM:/lu-LED3:lu
 |   |                    	__BackFrontLightWHITE	RGB[255,255,255]	PRM:/lv-LED3:lv
 |   |
 |   +- BACK MIDDLE LIGHTS[LED]
 |   |          "yellow"      	__BackMiddleLightCOLOR	RGB[255,255,0]		PRM:/lw-LED3:lw
 |   |                    	__BackMiddleLightWHITE	RGB[255,255,255]	PRM:/lx-LED3:lx
 |   |
 |   +- BACK REAR LIGHTS[LED]
 |              "red"         	__BackRearLightCOLOR	RGB[255,0,0]		PRM:/ly-LED3:ly
 |                        	__BackRearLightWHITE	RGB[255,255,255]	PRM:/lz-LED3:lz
 |
 |
 +- FRONT SHOULDERS[*]	node: xxx_FORELEG_J1 "front leg swing"			PRM:/r{2,4}/c1-Joint2:{2,4}1
 |  |			bbox: cylinder
 |  |			mass: [0.05] "front shoulder"
 |  |			joint: [2.8143] ... -2.0944:2.3562(-120:135)
 |  |
 |  +- FRONT UPPER LEGS[*]	node: xxx_FORELEG_J2 "front leg flap"		PRM:/r{2,4}/c1/c2-Joint2:{2,4}2
 |     |			bbox: box
 |     |			mass: [0.073] "front upper leg"
 |     |			joint: [2.498] ... -0.2618:1.6232(-15:93)
 |     |
 |     +- FRONT LOWER LEGS[*]	node: xxx_FORLEG_J3 "front knee"		PRM:/r{2,4}/c1/c2/c3-Joint2:{2,4}3
 |        |			bbox: box+box+cylinder+sphere
 |        |			mass: [0.073] "front lower leg"
 |        |			joint: [2.8361] ... -0.5236:2.2166(-30:127)
 |        | 			                     -> 0.5236(30)
 |        |
 |        +- S:FRONT PAWS[Touch]	node: xxx_FOREPAW_SENSOR		PRM:/r{2,4}/c1/c2/c3/c4-Sensor:{2,4}4
 |         				bbox: sphere
 |					lookup: bumper "switch sensor"
 |
 |
 +- REAR SHOULDER[*]	node: xxx_HINDLEG_J1 "rear leg swing"			PRM:/r{3,5}/c1-Joint2:{3,5}1
 |  |			bbox: cylinder
 |  |			mass: [0.05] "rear shoulder"
 |  |			joint: [2.8143] ... -2.3562:2.0944(-135:120)
 |  |
 |  +- REAR UPPER LEGS[*]	node: xxx_HINDLEG_J2 "rear leg flap"		PRM:/r{3,5}/c1/c2-Joint2:{3,5}2
 |     |			bbox: box
 |     |			mass: [0.073] "rear upper leg"
 |     |			joint: [2.498] ... -0.2618:1.6232(-15:93)
 |     |
 |     +- REAR LOWER LEGS[*]	node: xxx_HINDLEG_J3 "hind knee"		PRM:/r{3,5}/c1/c2/c3-Joint2:{3,5}3
 |        |			bbox: box+box+cylinder+sphere
 |        |			mass: 0.073 "rear lower leg"
 |        |			joint: [2.8361] ... -0.5236:2.2166(-30:127)
 |        | 			                     -> 0.5236(30)
 |        |
 |        +- S:REAR PAWS[Touch]	node: xxx_HINDPAW_SENSOR		PRM:/r{3,5}/c1/c2/c3/c4-Sensor:{3,5}4
 |         				bbox: sphere
 |					lookup: bumper "switch sensor"
 |
 |
 +- TAIL BASE[*]	node: TAIL_TILT "tail tilt"				PRM:/r6/c1-Joint2:61
    |			bbox: cylinder
    |			mass: 0.001 "tail base"
    |			joint: [4.4724] ... 0:1.1345(0:65)
    |
    +- TAIL[*]		node: TAIL_PAN "tail pan"				PRM:/r6/c2-Joint2:62
      			bbox: box+box
    			mass: 0.005 "tail"
    			joint: [4.4724] ... -1.0472:1.0472(-60:60)


=============================================================================================
PRIMITIVES
---------------------------------------------------------------------------------------------
  ( PRM:/ )					( Node )			( Description )

. = available
? = partially supported
- = not available, but may be
x = not available, and won't be in near future
# = not available for feasibility reasons

[Head]
. PRM:/r1/c1-Joint2:11				NECK_TILT			Neck tilt1
. PRM:/r1/c1/c2-Joint2:12 			HEAD_PAN			Neck pan
. PRM:/r1/c1/c2/c3-Joint2:13 			HEAD_TILT			Neck tilt2
? PRM:/r1/c1/c2/c3/c4-Joint2:14		JAW				Mouth /partial support/
. PRM:/r1/c1/c2/c3/e5-Joint4:15 		LEFT_EAR			Left ear
. PRM:/r1/c1/c2/c3/e6-Joint4:16 		RIGHT_EAR			Right ear
x PRM:/r1/c1/c2/c3/t1-Sensor:t1 		... Head sensor
. PRM:/r1/c1/c2/c3/p1-Sensor:p1 		HEAD_DISTANCE_NEAR		Head distance sensor(near)
. PRM:/r1/c1/c2/c3/p2-Sensor:p2 		HEAD_DISTANCE_FAR		Head distance sensor(far)
x PRM:/r1/c1/c2/c3/c4/s5-Sensor:s5 		... Chin sensor
? PRM:/r1/c1/c2/c3/l1-LED2:l1 			__HeadLightCOLOR		Head light(color) } 1 LED (large, top of head)
? PRM:/r1/c1/c2/c3/l2-LED2:l2 			__HeadLightWHITE		Head light(white) }       (orange=jam,white=sensor)
? PRM:/r1/c1/c2/c3/l3-LED2:l3 			__ModeIndicatorRED		Mode Indicator(red)   }
? PRM:/r1/c1/c2/c3/l4-LED2:l4 			__ModeIndicatorGREEN		Mode Indicator(green) } 2 LEDs (1 behind each ear)
? PRM:/r1/c1/c2/c3/l5-LED2:l5 			__ModeIndicatorBLUE		Mode Indicator(blue)  }
? PRM:/r1/c1/c2/c3/l6-LED2:l6 			__WirelessLight			Wireless light } 1 LED (small, back of head)
? PRM:/r1/c1/c2/c3/la-LED3:la 			__FaceLight1			Face light1
? PRM:/r1/c1/c2/c3/lb-LED3:lb 			__FaceLight2			Face light2
? PRM:/r1/c1/c2/c3/lc-LED3:lc 			__FaceLight3			Face light3
? PRM:/r1/c1/c2/c3/ld-LED3:ld 			__FaceLight4			Face light4
? PRM:/r1/c1/c2/c3/le-LED3:le 			__FaceLight5			Face light5
? PRM:/r1/c1/c2/c3/lf-LED3:lf 			__FaceLight6			Face light6
? PRM:/r1/c1/c2/c3/lg-LED3:lg 			__FaceLight7			Face light7
? PRM:/r1/c1/c2/c3/lh-LED3:lh 			__FaceLight8			Face light8
? PRM:/r1/c1/c2/c3/li-LED3:li 			__FaceLight9			Face light9
? PRM:/r1/c1/c2/c3/lj-LED3:lj 			__FaceLight10			Face light10
? PRM:/r1/c1/c2/c3/lk-LED3:lk 			__FaceLight11			Face light11
? PRM:/r1/c1/c2/c3/ll-LED3:ll 			__FaceLight12			Face light12
? PRM:/r1/c1/c2/c3/lm-LED3:lm 			__FaceLight13			Face light13
? PRM:/r1/c1/c2/c3/ln-LED3:ln 			__FaceLight14			Face light14
. PRM:/r1/c1/c2/c3/i1-FbkImageSensor:F1 	HEAD_CAM			Color Camera
# PRM:/r1/c1/c2/c3/m1-Mic:M1 			... Stereo microphones

[Left front leg]
. PRM:/r2/c1-Joint2:21 			LEFT_FORELEG_J1			Left front legJ1
. PRM:/r2/c1/c2-Joint2:22 			LEFT_FORELEG_J2			Left front legJ2
. PRM:/r2/c1/c2/c3-Joint2:23			LEFT_FORELEG_J3			Left front legJ3
. PRM:/r2/c1/c2/c3/c4-Sensor:24		LEFT_FOREPAW_SENSOR		Left front leg, paw sensor

[Left rear leg]
. PRM:/r3/c1-Joint2:31				LEFT_HINDLEG_J1			Left rear legJ1
. PRM:/r3/c1/c2-Joint2:32 			LEFT_HINDLEG_J2			Left rear legJ2
. PRM:/r3/c1/c2/c3-Joint2:33 			LEFT_HINDLEG_J3			Left rear legJ3
. PRM:/r3/c1/c2/c3/c4-Sensor:34 		LEFT_HINDPAW_SENSOR		Left rear leg, paw sensor

[Right front leg]
. PRM:/r4/c1-Joint2:41				RIGHT_FORELEG_J1		Right front legJ1
. PRM:/r4/c1/c2-Joint2:42			RIGHT_FORELEG_J2		Right front legJ2
. PRM:/r4/c1/c2/c3-Joint2:43			RIGHT_FORELEG_J3		Right front legJ3
. PRM:/r4/c1/c2/c3/c4-Sensor:44		RIGHT_FOREPAW_SENSOR		Right front leg, paw sensor

[Right rear leg]
. PRM:/r5/c1-Joint2:51				RIGHT_HINDLEG_J1		Right rear legJ1
. PRM:/r5/c1/c2-Joint2:52			RIGHT_HINDLEG_J2 		Right rear legJ2
. PRM:/r5/c1/c2/c3-Joint2:53			RIGHT_HINDLEG_J3 		Right rear legJ3
. PRM:/r5/c1/c2/c3/c4-Sensor:54		RIGHT_HINDPAW_SENSOR 		Right rear leg, paw sensor

[Tail/Others]
. PRM:/r6/c1-Joint2:61 			TAIL_TILT			Tail tilt
. PRM:/r6/c2-Joint2:62				TAIL_PAN			Tail pan
# PRM:/s1-Speaker:S1 				... Speaker
. PRM:/p1-Sensor:p1				CHEST_DISTANCE_SENSOR	   	Chest distance sensor
# PRM:/b1-Sensor:b1				... Wireless LAN switch
x PRM:/t2-Sensor:t2 				... Back sensor(rear)
x PRM:/t3-Sensor:t3 				... Back sensor(middle)
x PRM:/t4-Sensor:t4 				... Back sensor(front)
? PRM:/lu-LED3:lu 	"blue"   [0,0,255]	__BackFrontLightCOLOR		Back light(front, color)
? PRM:/lv-LED3:lv 	        [255,255,255]	__BackFrontLightWHITE		Back light(front, white)
? PRM:/lw-LED3:lw 	"yellow" [255,255,0]	__BackMiddleLightCOLOR		Back light(middle, color)
? PRM:/lx-LED3:lx 	        [255,255,255]	__BackMiddleLightWHITE		Back light(middle, white)
? PRM:/ly-LED3:ly 	"red"    [255,0,0]	__BackRearLightCOLOR		Back light(rear, color)
? PRM:/lz-LED3:lz 	        [255,255,255]	__BackRearLightWHITE		Back light(rear, white)

[Acceleration sensor]
# PRM:/a1-Sensor:a1 				... Acceleration sensor(+front-back)
# PRM:/a2-Sensor:a2 				... Acceleration sensor(+right-left)
# PRM:/a3-Sensor:a3 				... Acceleration sensor(+up-down)


===============================================================================
REV. HISTORY
-------------------------------------------------------------------------------
v1.1
 + Fixed distance sensor output (response was a power of 10 too big)
 + Paw touch sensors tweaked to avoid 'no touch' situations in simulation
 + Paw bounding boxes tweaked for more realistic walk
 ? Face lights now properly modelled as 2-faced LEDs (virtual only, no graphics)
 ? Back lights now partially supported (virtual LEDs only, no graphics)
v1.0
 + Controllable parts are named after their real-life primitives (PRM:/...).
 + Most moveable joints are properly modelled, including ears and tail.
 + Paw touch sensors are properly modelled.
 + Head camera is properly modelled.
 + Head distance sensors (near/far) are properly modelled.
 + Chest distance sensor is properly modelled.
 ? Mass values for physical parts are inherited from ERS-210 model.
 ? Force and velocity limits are inherited from ERS-210 model.
 ? Head camera vertical angle is not taken into account. [modelling limitation]
 ? Jaw (mouth) moveable part is only partially supported (see Release notes).
 - Acceleration sensor is *not* modelled as yet. [no suitable node available]
 - Vibration sensor is *not* modelled as yet. [no suitable node available]
 - Face lights (LEDs) are *not* modelled as yet. [incomplete graphics only]
 - Head & wireless lights (LEDs) are *not* modelled as yet. [graphics only]
 - Back lights (LEDs) are *not* modelled as yet. [no graphics]
 - Mode indicators (behind ears) are *not* modelled as yet. [no graphics]
 - Back touch sensors are *not* modelled. [not important]
 - Head touch sensor is *not* modelled. [not important]
 - Chin touch sensor is *not* modelled. [not important]
 - Audio I/O devices (mic and speaker) are *not* modelled. [currently irrelevant]


-------------------------------------------------------------------------------
Cyberbotics: http://www.cyberbotics.com      Copyright (C) 2004 by Cyberbotics.
Sony Aibo: http://openr.aibo.com                           All rights reserved.
