⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hoap2.rsg

📁 robocup rcssserver 运行防真机器人足球比赛所用的服务器端
💻 RSG
📖 第 1 页 / 共 2 页
字号:
; -*- mode: lisp; -*-;; approximation of the Fujitsu Hoap-2 robot;(RSG 0 1)(     ;    ; define constants for the robot parts    ;    ; feet    (def $FootLength 0.6)    (def $FootWidth 0.956)    (def $FootHeight 0.095)    (def $FootMass 0.1)    ; static box at the ankles    (def $AnkleBoxLength 0.355)    (def $AnkleBoxWidth 0.143)    (def $AnkleBoxHeight 0.476)    ; shanks    (def $ShankLength 0.56)    (def $ShankWidth 0.56)    (def $ShankHeight 0.964)    (def $ShankMass 0.25)    ; thighs    (def $ThighLength 0.56)    (def $ThighWidth 0.56)    (def $ThighHeight 1.3)    (def $ThighMass 0.25)    ; hips    (def $HipLength 0.273)    (def $HipWidth 0.273)    (def $HipHeight 0.2)    (def $HipMass 0.1)    ; hand1    (def $HandBox1Length 0.082)    (def $HandBox1Width 0.272)     (def $HandBox1Height 0.57)    ; hand2    (def $HandBox2Length 0.242)    (def $HandBox2Width 0.272)    (def $HandBox2Height 0.164)    ; hand3    (def $HandBox3Length 0.074)    (def $HandBox3Width 0.272)    (def $HandBox3Height 0.2)    ; lower arms    (def $LowerarmLength 0.445)    (def $LowerarmWidth 0.316)    (def $LowerarmHeight 0.6)    (def $LowerarmMass 0.2)    ; elbows    (def $ElbowDirection 1)    (def $ElbowRadius 0.134)    (def $ElbowLength 0.3)    ; upper arms    (def $UpperarmLength 0.445)    (def $UpperarmWidth 0.398)    (def $UpperarmHeight 0.506)    (def $UpperarmMass 0.2)    ; shoulders    (def $ShoulderLength 0.445)    (def $ShoulderWidth 1.017)    (def $ShoulderHeight 0.536)    (def $ShoulderMass 0.5)     ; head    (def $HeadRadius 0.39)    (def $HeadMass 0.3)    ; neck    (def $NeckLength 0.2)    (def $NeckWidth 0.2)    (def $NeckHeight 0.4)    (def $NeckMass 0.1)    ; torso1    (def $TorsoBox1Length 1.37)    (def $TorsoBox1Width 0.96)    (def $TorsoBox1Height 1.41)    (def $TorsoBox1Mass 1.8)    ; torso2    (def $TorsoBox2Length 1.37)    (def $TorsoBox2Width 0.54)    (def $TorsoBox2Height 1.81)    (def $TorsoBox2Mass 1.8)    (def $TorsoCylinderDirection 1)   ; oriented along x-axis    (def $TorsoCylinderRadius 0.1)    (def $TorsoCylinderLength 0.3)    ;    ; assemble the robot    ;    ; torso position (absolute)    (def $TorsoPosX 0)    (def $TorsoPosY -2)    (def $TorsoPosZ 3.5)    ; calculate offset of the battery pack    (def $offsetTorsoBox2X 0.0)    (def $offsetTorsoBox2Y (eval -1 * (eval (eval $TorsoBox1Width / 2.0) + (eval $TorsoBox2Width / 2.0))))    (def $offsetTorsoBox2Z (eval -1 * (eval (eval $TorsoBox1Height / 2.0) - (eval $TorsoBox2Height / 2.0))))    ; calculate offset for the left shoulder cylinder    (def $offsetLeftShoulderCylX (eval -1 * (eval $TorsoBox1Length / 2.0)))    (def $offsetLeftShoulderCylY 0.0)    (def $offsetLeftShoulderCylZ (eval (eval $TorsoBox1Height / 2.0) - (eval $ShoulderHeight / 2.0)))     ; calculate offset for the right shoulder cylinder    (def $offsetRightShoulderCylX (eval $TorsoBox1Length / 2.0))    (def $offsetRightShoulderCylY 0.0)    (def $offsetRightShoulderCylZ (eval (eval $TorsoBox1Height / 2.0) - (eval $ShoulderHeight / 2.0)))    ; create the torso    (nd AgentAspect        (setName body)        (setLocalPos $TorsoPosX $TorsoPosY $TorsoPosZ)        (importScene rsg/boxspheres/box.rsg $TorsoBox1Length $TorsoBox1Width $TorsoBox1Height $TorsoBox1Mass matGrey)	; install a node holding agent state data        (nd AgentState	     (setName AgentState)	)	; static cylinders for the shoulders	(nd Transform	     (setLocalPos $offsetLeftShoulderCylX $offsetLeftShoulderCylY $offsetLeftShoulderCylZ)	     (setLocalRotation 0 90 0)	     (nd CCylinder		   (setMaterial matGrey)		   (setParams $TorsoCylinderRadius $TorsoCylinderLength)	     )	)		(nd Transform	     (setLocalPos $offsetRightShoulderCylX $offsetRightShoulderCylY $offsetRightShoulderCylZ)	     (setLocalRotation 0 90 0)	     (nd CCylinder		   (setMaterial matGrey)		   (setParams $TorsoCylinderRadius $TorsoCylinderLength)	     )	)    )	    ;;; DEBUG    ;(nd FixedJoint	;  (attach ../body/boxBody 0) ; attach to the static environment	;  (setFixed)    ;)        ; add battery backpack    (nd Transform	(setName battery)	(setLocalPos (eval $TorsoPosX + $offsetTorsoBox2X) (eval $TorsoPosY + $offsetTorsoBox2Y + 0.01) (eval $TorsoPosZ + $offsetTorsoBox2Z))	(importScene rsg/boxspheres/box.rsg $TorsoBox2Length $TorsoBox2Width $TorsoBox2Height $TorsoBox2Mass matGrey)	; +++	; THIS IS A HACK SINCE WE DON'T HAVE COMPOUND OBJECTS YET !	; +++	; install hinge joint to connect to the torso        (nd HingeJoint            (attach ../boxBody ../../body/boxBody)            (setAnchor 0.0 0.0 0.0)               (setAxis 2) ; move around z-axis	    (setLowStopDeg 0 0.01)	    (setHighStopDeg 0 0.01)	)    )    ;;; -------------------------------------    ;;; HEAD    ;;; -------------------------------------        ; attach neck    (nd Transform        (setName neck)        (setLocalPos $TorsoPosX (eval $TorsoPosY - 0.1) (eval $TorsoPosZ + (eval $TorsoBox1Height / 2.0) + (eval $NeckHeight / 2.0)))        (importScene rsg/boxspheres/box.rsg $NeckLength $NeckWidth $NeckHeight $NeckMass matGrey)        ; install hinge joint to connect to the torso        (nd HingeJoint            (attach ../boxBody ../../body/boxBody)            (setAnchor $TorsoPosX (eval $TorsoPosY - 0.1) (eval $TorsoPosZ + (eval $TorsoBox1Height / 2.0)))               (setAxis 2) ; move around z-axis                        ; enable the joint motors            (setMaxMotorForce 0 100)            ; install a perceptor            (nd HingePerceptor                (setName head_joint_2)            )            ; install an effector to control the joint motors            (nd HingeEffector                (setName head_eff_2)            )        )    )    ; attach head    (nd Transform        (setName head)        (setLocalPos $TorsoPosX 		     (eval $TorsoPosY + 0.05) 		     (eval $TorsoPosZ + (eval $TorsoBox1Height / 2.0) + (eval $NeckHeight / 2.0) + (eval $HeadRadius / 2.0)))        (importScene rsg/boxspheres/sphere.rsg $HeadRadius $HeadMass matLightBlue)	(nd VisionPerceptor	      (setSenseMyPos false)	      (setStaticSenseAxis false)	      (addNoise false)        )	(nd TimePerceptor)        ; install hinge joint to connect to the neck        (nd HingeJoint            (attach ../sphereBody ../../neck/boxBody)            (setAnchor $TorsoPosX (eval $TorsoPosY - 0.1) (eval $TorsoPosZ + (eval $TorsoBox1Height / 2.0) + $NeckHeight))            (setAxis 0) ; move around the x-axis            ; enable the joint motor            (setMaxMotorForce 0 100)            ; install a perceptor            (nd HingePerceptor                (setName head_joint_1)            )            ; install an effector to control the joint motor            (nd HingeEffector                (setName head_eff_1)            )        )    )    ;;; -------------------------------------    ;;; ARMS    ;;; -------------------------------------    (def $LeftShoulderPosX (eval $TorsoPosX - 				    (eval $TorsoBox1Length / 2.0) - 				    (eval $ShoulderLength / 2.0) - 				    (eval $TorsoCylinderLength / 2.0)			       )    )    (def $LeftShoulderPosY $TorsoPosY)    (def $LeftShoulderPosZ (eval $TorsoPosZ + 				    (eval $TorsoBox1Height / 2.0) -				    (eval $ShoulderHeight / 2.0)			       )    )    (def $RightShoulderPosX (eval $TorsoPosX +				    (eval $TorsoBox1Length / 2.0) + 				    (eval $ShoulderLength / 2.0) + 				    (eval $TorsoCylinderLength / 2.0)			       )    )    (def $RightShoulderPosY $TorsoPosY)    (def $RightShoulderPosZ $LeftShoulderPosZ)     ; left shoulder    (nd Transform        (setName leftshoulder)        (setLocalPos $LeftShoulderPosX $LeftShoulderPosY $LeftShoulderPosZ)        (importScene rsg/boxspheres/box.rsg $ShoulderLength $ShoulderWidth $ShoulderHeight $ShoulderMass matGrey)        ; install universal joint to connect to the torso        (nd UniversalJoint            (attach ../boxBody ../../body/boxBody)            (setAnchor 0.0 0.0 0.0)               (setAxis1 1.0 0.0 0.0) ; move around the x-axis            (setAxis2 0.0 1.0 0.0) ; move around the y-axis            ; enable the joint motors            (setMaxMotorForce 0 100)            (setMaxMotorForce 1 100)                       ; install a perceptor            (nd UniversalJointPerceptor                (setName larm_joint_1_2)            )            ; install an effector to control the joint motors            (nd UniversalJointEffector                (setName larm_eff_1_2)            )        )    )    ; right shoulder    (nd Transform        (setName rightshoulder)        (setLocalPos $RightShoulderPosX $RightShoulderPosY $RightShoulderPosZ)        (importScene rsg/boxspheres/box.rsg $ShoulderLength $ShoulderWidth $ShoulderHeight $ShoulderMass matGrey)        (setLocalRotation 0 0 180)            ; install universal joint to connect to the torso	    (nd UniversalJoint		                (attach ../boxBody ../../body/boxBody)		(setAnchor 0.0 0.0 0.0)  		(setAxis1 1.0 0.0 0.0) ; move around the x-axis		(setAxis2 0.0 1.0 0.0) ; move around the y-axis                ; enable the joint motors		(setMaxMotorForce 0 100)		(setMaxMotorForce 1 100)                           ; install a perceptor                (nd UniversalJointPerceptor                    (setName rarm_joint_1_2)		)                ; install an effector to control the joint motors                (nd UniversalJointEffector                    (setName rarm_eff_1_2)                )            )    )    (def $LeftUpperArmPosX $LeftShoulderPosX)    (def $LeftUpperArmPosY (eval $LeftShoulderPosY + (eval $UpperarmWidth / 2.0)))    (def $LeftUpperArmPosZ (eval $LeftShoulderPosZ - (eval $ShoulderHeight / 2.0) - (eval $UpperarmHeight / 2.0)))    (def $RightUpperArmPosX $RightShoulderPosX)    (def $RightUpperArmPosY (eval $RightShoulderPosY + (eval $UpperarmWidth / 2.0)))    (def $RightUpperArmPosZ (eval $RightShoulderPosZ - (eval $ShoulderHeight / 2.0) - (eval $UpperarmHeight / 2.0)))        ; left upper arm    (nd Transform        (setName leftupperarm)        (setLocalPos $LeftUpperArmPosX $LeftUpperArmPosY $LeftUpperArmPosZ)        (importScene rsg/boxspheres/box.rsg $UpperarmLength $UpperarmWidth $UpperarmHeight $UpperarmMass matGrey)        ; install hinge joint to connect to the shoulder        (nd HingeJoint            (attach ../boxBody ../../leftshoulder/boxBody)            (setAnchor 0.0 0.0 (eval $UpperarmHeight / 2.0))               (setAxis 2) ; move around z-axis                        ; enable the joint motors            (setMaxMotorForce 0 100)            ; install a perceptor            (nd HingePerceptor                (setName larm_joint_3)            )            ; install an effector to control the joint motors            (nd HingeEffector                (setName larm_eff_3)            )        )	; static cylinder for the elbow	(nd Transform	     (setLocalPos 0 0 (eval -1 * (eval (eval $UpperarmHeight / 2.0) + (eval $ElbowRadius / 2.0))))	     (setLocalRotation 0 90 0)	     (nd CCylinder		   (setMaterial matGrey)		   (setParams $ElbowRadius $ElbowLength)	     )	)    )    ; right upper arm    (nd Transform        (setName rightupperarm)        (setLocalPos $RightUpperArmPosX $RightUpperArmPosY $RightUpperArmPosZ)	(importScene rsg/boxspheres/box.rsg $UpperarmLength $UpperarmWidth $UpperarmHeight $UpperarmMass matGrey)	        ; install hinge joint to connect to the shoulder        (nd HingeJoint            (attach ../boxBody ../../rightshoulder/boxBody)            (setAnchor 0 0 (eval $UpperarmHeight / 2.0))               (setAxis 2) ; move around z-axis                        ; enable the joint motors            (setMaxMotorForce 0 100)            ; install a perceptor            (nd HingePerceptor                (setName rarm_joint_3)            )            ; install an effector to control the joint motors            (nd HingeEffector                (setName rarm_eff_3)            )        )	; static cylinder for the elbow	(nd Transform	     (setLocalPos 0 0 (eval -1 * (eval (eval $UpperarmHeight / 2.0) + (eval $ElbowRadius / 2.0))))	     (setLocalRotation 0 90 0)	     (nd CCylinder		   (setMaterial matGrey)		   (setParams $ElbowRadius $ElbowLength)	     )	)    )    (def $LeftLowerArmPosX $LeftUpperArmPosX)    (def $LeftLowerArmPosY $LeftUpperArmPosY)    (def $LeftLowerArmPosZ (eval $LeftUpperArmPosZ -				    (eval $UpperarmHeight / 2.0) -				    $ElbowRadius -				    (eval $LowerarmHeight / 2.0)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -