📄 soccerbotcomp.rsg
字号:
; -*- mode: lisp; -*-;; soccerbot with composite bodies;(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.52) (def $ShankWidth 0.45) (def $ShankHeight 0.964) (def $ShankMass 0.25) ; thighs (def $ThighLength 0.56) (def $ThighWidth 0.45) (def $ThighHeight 1.3) (def $ThighMass 0.25) ; hips (def $HipLength 0.273) (def $HipWidth 0.273) (def $HipHeight 0.3) (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.265) (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) (def $UpperTorsoLength 1.37) (def $UpperTorsoWidth 0.96) (def $UpperTorsoHeight 1.00) (def $UpperTorsoMass 1.2) (def $LowerTorsoLength 1.32) (def $LowerTorsoWidth 0.55) (def $LowerTorsoHeight 0.55) (def $LowerTorsoMass 0.60) (def $TorsoCylinderDirection 1) ; oriented along x-axis (def $TorsoCylinderRadius 0.1) (def $TorsoCylinderLength 0.3) ; ; define joint stops ; (def $Rle1Min -90) (def $Rle1Max 60) (def $Rle2Min -45) (def $Rle2Max 120) (def $Rle3Min -75) (def $Rle3Max 45) (def $Rle4Min -160) (def $Rle4Max 10) (def $Rle5Min -90) (def $Rle5Max 90) (def $Rle6Min -45) (def $Rle6Max 45) (def $Lle1Min -60) (def $Lle1Max 90) (def $Lle2Min -45) (def $Lle2Max 120) (def $Lle3Min -45) (def $Lle3Max 75) (def $Lle4Min -160) (def $Lle4Max 10) (def $Lle5Min -90) (def $Lle5Max 90) (def $Lle6Min -45) (def $Lle6Max 45) (def $Rae1Min -90) (def $Rae1Max 180) (def $Rae2Min -180) (def $Rae2Max 10) (def $Rae3Min -135) (def $Rae3Max 135) (def $Rae4Min -10) (def $Rae4Max 130) (def $Lae1Min -90) (def $Lae1Max 180) (def $Lae2Min -10) (def $Lae2Max 180) (def $Lae3Min -135) (def $Lae3Max 135) (def $Lae4Min -10) (def $Lae4Max 130) ; ; assemble the robot ; (def $UpperTorsoPosX 5) (def $UpperTorsoPosY 5) (def $UpperTorsoPosZ 3.75) ; calculate offset for the left shoulder cylinder (def $offsetLeftShoulderCylX (eval -1 * (eval $UpperTorsoLength / 2.0))) (def $offsetLeftShoulderCylY 0.0) (def $offsetLeftShoulderCylZ (eval (eval $UpperTorsoHeight / 2.0) - (eval $ShoulderHeight / 2.0))) ; calculate offset for the right shoulder cylinder (def $offsetRightShoulderCylX (eval $UpperTorsoLength / 2.0)) (def $offsetRightShoulderCylY 0.0) (def $offsetRightShoulderCylZ (eval (eval $UpperTorsoHeight / 2.0) - (eval $ShoulderHeight / 2.0))) (nd Space (setName spaceman) ; assemble the upper torso ... (nd AgentAspect ; basics (setName body) (setLocalPos $UpperTorsoPosX $UpperTorsoPosY $UpperTorsoPosZ) ;(importScene rsg/boxspheres/box.rsg $UpperTorsoLength $UpperTorsoWidth $UpperTorsoHeight $UpperTorsoMass matRed) (importScene rsg/agent/soccerbottorsocomp.rsg $UpperTorsoLength $UpperTorsoWidth $UpperTorsoHeight $UpperTorsoMass $LowerTorsoLength $LowerTorsoWidth $LowerTorsoHeight $LowerTorsoMass $HeadRadius $HeadMass) ; we want to initialize (nd SingleMatInitEffector) ;add a time perceptor (nd TimePerceptor) ; install a node holding agent state data (nd AgentState (setName AgentState) ; add a gamestateperceptor (nd GameStatePerceptor) ; add hear perceptor (nd HearPerceptor) ) ; add beam effector (nd BeamEffector) ; add gyro rate sensor (nd GyroRatePerceptor (setName torso) ) ; add vision sensor (nd VisionPerceptor (setSenseMyPos false) (setStaticSenseAxis false) (addNoise false) ) ; add say effector (nd SayEffector) ; attach left shoulder cylinder (virtual) (nd Transform (setLocalPos $offsetLeftShoulderCylX $offsetLeftShoulderCylY $offsetLeftShoulderCylZ) (setLocalRotation 0 90 0) (nd CCylinder (setName leftshoulderpin) (setMaterial matDarkGrey) (setParams $TorsoCylinderRadius $TorsoCylinderLength) ) ) ; attach right shoulder cylinder (virtual) (nd Transform (setLocalPos $offsetRightShoulderCylX $offsetRightShoulderCylY $offsetRightShoulderCylZ) (setLocalRotation 0 90 0) (nd CCylinder (setName rightshoulderpin) (setMaterial matDarkGrey) (setParams $TorsoCylinderRadius $TorsoCylinderLength) ) ) ) ; done upper torso ... (def $LowerTorsoPosX $UpperTorsoPosX) (def $LowerTorsoPosY $UpperTorsoPosY) (def $LowerTorsoPosZ (eval $UpperTorsoPosZ - (eval $UpperTorsoHeight / 2.0) - (eval $LowerTorsoHeight / 2.0) + 0.25)) ;;; ------------------------------------- ;;; ARMS ;;; ------------------------------------- ; {{{ BEGIN --- Left Shoulder (Solid Part) --- ; ; (1) Define Position (def $LeftShoulderPosX (eval $UpperTorsoPosX - (eval $UpperTorsoLength / 2.0) - (eval $ShoulderLength / 2.0) - (eval $TorsoCylinderLength / 2.0) ) ) (def $LeftShoulderPosY $UpperTorsoPosY) (def $LeftShoulderPosZ (eval $UpperTorsoPosZ + (eval $UpperTorsoHeight / 2.0) - (eval $ShoulderHeight / 2.0) ) ) ; (2) Attach Left Shoulder (nd Transform ; basics (setName leftshoulder) (setLocalPos $LeftShoulderPosX $LeftShoulderPosY $LeftShoulderPosZ) (importScene rsg/boxspheres/box.rsg $ShoulderLength $ShoulderWidth $ShoulderHeight $ShoulderMass matDarkGrey) ; 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 laj1_2) ) ; install an effector to control the joint motors (nd UniversalJointEffector (setName lae1_2) ) ; set joint stops ;(setLowStopDeg 0 $Lae1Min) ;(setHighStopDeg 0 $Lae1Max) ;(setLowStopDeg 1 $Lae2Min) ;(setHighStopDeg 1 $Lae2Max) ) ) ; }}} END ; {{{ BEGIN --- Left Shoulder (Solid Part) --- ; (def $RightShoulderPosX (eval $UpperTorsoPosX + (eval $UpperTorsoLength / 2.0) + (eval $ShoulderLength / 2.0) + (eval $TorsoCylinderLength / 2.0) ) ) (def $RightShoulderPosY $UpperTorsoPosY) (def $RightShoulderPosZ $LeftShoulderPosZ) ; (2) Attach Right Shoulder (nd Transform ; basics (setName rightshoulder) (setLocalPos $RightShoulderPosX $RightShoulderPosY $RightShoulderPosZ) (importScene rsg/boxspheres/box.rsg $ShoulderLength $ShoulderWidth $ShoulderHeight $ShoulderMass matDarkGrey) ;(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 raj1_2) ) ; install an effector to control the joint motors (nd UniversalJointEffector (setName rae1_2) ) ; set joint stops ;(setLowStopDeg 0 $Rae1Min) ;(setHighStopDeg 0 $Rae1Max) ;(setLowStopDeg 1 $Rae2Min) ;(setHighStopDeg 1 $Rae2Max) ) ) ; }}} END ; {{{ BEGIN --- Left Upper Arm --- ; ; (1) Define Position (def $LeftUpperArmPosX $LeftShoulderPosX) (def $LeftUpperArmPosY (eval $LeftShoulderPosY)) (def $LeftUpperArmPosZ (eval $LeftShoulderPosZ - (eval $ShoulderHeight / 2.0) - (eval $UpperarmHeight / 2.0))) ; (2) Attach 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 laj3) ) ; install an effector to control the joint motors (nd HingeEffector (setName lae3) ) ; set joint stops ;(setLowStopDeg 0 $Lae3Min) ;(setHighStopDeg 0 $Lae3Max) ) ; 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) ) ) ) ; }}} END ; {{{ BEGIN --- Right Upper Arm --- ; ; (1) Define Position (def $RightUpperArmPosX $RightShoulderPosX) (def $RightUpperArmPosY (eval $RightShoulderPosY)) (def $RightUpperArmPosZ (eval $RightShoulderPosZ - (eval $ShoulderHeight / 2.0) - (eval $UpperarmHeight / 2.0))) ; (2) Attach 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 raj3) ) ; install an effector to control the joint motors (nd HingeEffector (setName rae3) ) ; set joint stops ;(setLowStopDeg 0 $Rae3Min) ;(setHighStopDeg 0 $Rae3Max) ) ; 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) ) ) ) ; }}} END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -