├── CAD ├── Legolas │ ├── V1 │ │ ├── Full_Assembly.SLDASM │ │ └── Legolas_v1.SLDASM │ ├── V2 │ │ ├── Foot.SLDPRT │ │ ├── Foreleg.SLDPRT │ │ ├── Full Assembly.SLDASM │ │ ├── Hip Pitch.SLDPRT │ │ ├── Hip Roll.SLDPRT │ │ ├── Hip Yaw.SLDPRT │ │ ├── Legolas V2 Left Leg.SLDASM │ │ ├── M4 Linkage 1.SLDASM │ │ ├── M4 Linkage 2.SLDASM │ │ ├── STLs │ │ │ ├── Foot.STL │ │ │ ├── Foreleg A.STL │ │ │ ├── Foreleg B.STL │ │ │ ├── Foreleg C.STL │ │ │ ├── Hip 1 A.STL │ │ │ ├── Hip 1 B.STL │ │ │ ├── Hip 2.STL │ │ │ ├── Hip Pitch A.STL │ │ │ ├── Hip Pitch B.STL │ │ │ ├── Ma Shues.zip │ │ │ ├── Main body ADC Mount.STL │ │ │ ├── Main body Wire Connector Container.STL │ │ │ ├── Main body cover.STL │ │ │ ├── Main body.STL │ │ │ ├── Servo Cover.STL │ │ │ ├── Shin.STL │ │ │ ├── Shoe A.STL │ │ │ ├── Shoe B.STL │ │ │ ├── Test bench adaptor.STL │ │ │ ├── Thigh Inner.STL │ │ │ └── Thigh Outer.STL │ │ ├── Servo Cover.SLDPRT │ │ ├── Shin.SLDPRT │ │ ├── Thigh Inner.SLDPRT │ │ ├── Thigh Outer.SLDPRT │ │ ├── Thrust Bearing.SLDASM │ │ └── right_leg_redundant │ │ │ ├── Legolas V2 Right Leg.SLDASM │ │ │ ├── MirrorFoot.SLDPRT │ │ │ ├── MirrorForeleg.SLDPRT │ │ │ ├── MirrorHip Pitch.SLDPRT │ │ │ ├── MirrorHip Roll.SLDPRT │ │ │ ├── MirrorHip Yaw.SLDPRT │ │ │ ├── MirrorM4 Linkage 1.SLDASM │ │ │ ├── MirrorM4 Linkage 2.SLDASM │ │ │ ├── MirrorServo Cover.SLDPRT │ │ │ ├── MirrorShin.SLDPRT │ │ │ ├── MirrorThigh Inner.SLDPRT │ │ │ └── MirrorThigh Outer.SLDPRT │ └── V3 │ │ ├── Foot v3.SLDPRT │ │ ├── Foreleg v3.SLDPRT │ │ ├── Servo Cover v3.SLDPRT │ │ └── Shin v3.SLDPRT ├── Servo and electronics │ ├── 40 kg Servo Arm.SLDPRT │ ├── 40 kg Servo.SLDPRT │ ├── 80kg_servo.SLDPRT │ ├── 80kg_servo_arm.SLDPRT │ ├── ADS1115.SLDPRT │ ├── M4 Ball Joint Rod End.SLDPRT │ ├── M4 Connecting Rod.SLDPRT │ ├── M5 Ball Joint Rod End.SLDPRT │ ├── M5 Connecting Rod.SLDPRT │ ├── MPU 6050 IMU.SLDPRT │ ├── Mirror40 kg Servo Arm.SLDPRT │ ├── Mirror40 kg Servo.SLDPRT │ ├── Mirror80kg_servo.SLDPRT │ ├── Mirror80kg_servo_arm.SLDPRT │ ├── Raspberry Pi 4 Model B.SLDPRT │ ├── pca9685.SLDPRT │ ├── servo driver pca9685.SLDPRT │ ├── servo.SLDASM │ ├── ~$Mirror40 kg Servo Arm.SLDPRT │ ├── ~$Mirror40 kg Servo.SLDPRT │ ├── ~$Mirror80kg_servo.SLDPRT │ └── ~$Mirror80kg_servo_arm.SLDPRT └── Test_Bench │ └── Test_Bench_Mk2.SLDASM ├── LICENSE ├── Mujoco xml ├── Documentation for Solidworks to Mujoco.docx ├── References │ └── agility_cassie │ │ ├── LICENSE │ │ ├── README.md │ │ ├── assets │ │ ├── achilles-rod.obj │ │ ├── cassie-texture.png │ │ ├── foot-crank.obj │ │ ├── foot.obj │ │ ├── heel-spring.obj │ │ ├── hip-pitch.obj │ │ ├── hip-roll.obj │ │ ├── hip-yaw.obj │ │ ├── knee-spring.obj │ │ ├── knee.obj │ │ ├── pelvis.obj │ │ ├── plantar-rod.obj │ │ ├── shin.obj │ │ └── tarsus.obj │ │ ├── cassie.png │ │ ├── cassie.xml │ │ └── scene.xml └── Working Mk 5 - Old model - Demo only │ ├── CMU Mk 5.xml │ └── meshes │ ├── L_Foot.STL │ ├── L_Foot_collision.STL │ ├── L_Foreleg.STL │ ├── L_Hip_1.STL │ ├── L_Hip_2.STL │ ├── L_Linkage.STL │ ├── L_Servo.STL │ ├── L_Servo_Link.STL │ ├── L_Servo_collision.STL │ ├── L_Shin.STL │ ├── L_Thigh.STL │ ├── R_Foot.STL │ ├── R_Foot_collision.STL │ ├── R_Foreleg.STL │ ├── R_Hip_1.STL │ ├── R_Hip_2.STL │ ├── R_Linkage.STL │ ├── R_Servo.STL │ ├── R_Servo_Link.STL │ ├── R_Servo_collision.STL │ ├── R_Shin.STL │ ├── R_Thigh.STL │ ├── base_link.STL │ └── base_link_collision.STL ├── README.md ├── assets ├── Walking_Test_3.gif ├── Walking_Test_3.mp4 ├── cover_image_back.jpg └── cover_image_front.jpg └── static_analysis └── Leg_Static_Analysis.ipynb /CAD/Legolas/V1/Full_Assembly.SLDASM: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V1/Full_Assembly.SLDASM -------------------------------------------------------------------------------- /CAD/Legolas/V1/Legolas_v1.SLDASM: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V1/Legolas_v1.SLDASM -------------------------------------------------------------------------------- /CAD/Legolas/V2/Foot.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/Foot.SLDPRT -------------------------------------------------------------------------------- /CAD/Legolas/V2/Foreleg.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/Foreleg.SLDPRT -------------------------------------------------------------------------------- /CAD/Legolas/V2/Full Assembly.SLDASM: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/Full Assembly.SLDASM -------------------------------------------------------------------------------- /CAD/Legolas/V2/Hip Pitch.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/Hip Pitch.SLDPRT -------------------------------------------------------------------------------- /CAD/Legolas/V2/Hip Roll.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/Hip Roll.SLDPRT -------------------------------------------------------------------------------- /CAD/Legolas/V2/Hip Yaw.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/Hip Yaw.SLDPRT -------------------------------------------------------------------------------- /CAD/Legolas/V2/Legolas V2 Left Leg.SLDASM: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/Legolas V2 Left Leg.SLDASM -------------------------------------------------------------------------------- /CAD/Legolas/V2/M4 Linkage 1.SLDASM: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/M4 Linkage 1.SLDASM -------------------------------------------------------------------------------- /CAD/Legolas/V2/M4 Linkage 2.SLDASM: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/M4 Linkage 2.SLDASM -------------------------------------------------------------------------------- /CAD/Legolas/V2/STLs/Foot.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/STLs/Foot.STL -------------------------------------------------------------------------------- /CAD/Legolas/V2/STLs/Foreleg A.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/STLs/Foreleg A.STL -------------------------------------------------------------------------------- /CAD/Legolas/V2/STLs/Foreleg B.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/STLs/Foreleg B.STL -------------------------------------------------------------------------------- /CAD/Legolas/V2/STLs/Foreleg C.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/STLs/Foreleg C.STL -------------------------------------------------------------------------------- /CAD/Legolas/V2/STLs/Hip 1 A.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/STLs/Hip 1 A.STL -------------------------------------------------------------------------------- /CAD/Legolas/V2/STLs/Hip 1 B.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/STLs/Hip 1 B.STL -------------------------------------------------------------------------------- /CAD/Legolas/V2/STLs/Hip 2.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/STLs/Hip 2.STL -------------------------------------------------------------------------------- /CAD/Legolas/V2/STLs/Hip Pitch A.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/STLs/Hip Pitch A.STL -------------------------------------------------------------------------------- /CAD/Legolas/V2/STLs/Hip Pitch B.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/STLs/Hip Pitch B.STL -------------------------------------------------------------------------------- /CAD/Legolas/V2/STLs/Ma Shues.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/STLs/Ma Shues.zip -------------------------------------------------------------------------------- /CAD/Legolas/V2/STLs/Main body ADC Mount.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/STLs/Main body ADC Mount.STL -------------------------------------------------------------------------------- /CAD/Legolas/V2/STLs/Main body Wire Connector Container.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/STLs/Main body Wire Connector Container.STL -------------------------------------------------------------------------------- /CAD/Legolas/V2/STLs/Main body cover.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/STLs/Main body cover.STL -------------------------------------------------------------------------------- /CAD/Legolas/V2/STLs/Main body.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/STLs/Main body.STL -------------------------------------------------------------------------------- /CAD/Legolas/V2/STLs/Servo Cover.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/STLs/Servo Cover.STL -------------------------------------------------------------------------------- /CAD/Legolas/V2/STLs/Shin.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/STLs/Shin.STL -------------------------------------------------------------------------------- /CAD/Legolas/V2/STLs/Shoe A.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/STLs/Shoe A.STL -------------------------------------------------------------------------------- /CAD/Legolas/V2/STLs/Shoe B.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/STLs/Shoe B.STL -------------------------------------------------------------------------------- /CAD/Legolas/V2/STLs/Test bench adaptor.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/STLs/Test bench adaptor.STL -------------------------------------------------------------------------------- /CAD/Legolas/V2/STLs/Thigh Inner.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/STLs/Thigh Inner.STL -------------------------------------------------------------------------------- /CAD/Legolas/V2/STLs/Thigh Outer.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/STLs/Thigh Outer.STL -------------------------------------------------------------------------------- /CAD/Legolas/V2/Servo Cover.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/Servo Cover.SLDPRT -------------------------------------------------------------------------------- /CAD/Legolas/V2/Shin.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/Shin.SLDPRT -------------------------------------------------------------------------------- /CAD/Legolas/V2/Thigh Inner.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/Thigh Inner.SLDPRT -------------------------------------------------------------------------------- /CAD/Legolas/V2/Thigh Outer.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/Thigh Outer.SLDPRT -------------------------------------------------------------------------------- /CAD/Legolas/V2/Thrust Bearing.SLDASM: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/Thrust Bearing.SLDASM -------------------------------------------------------------------------------- /CAD/Legolas/V2/right_leg_redundant/Legolas V2 Right Leg.SLDASM: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/right_leg_redundant/Legolas V2 Right Leg.SLDASM -------------------------------------------------------------------------------- /CAD/Legolas/V2/right_leg_redundant/MirrorFoot.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/right_leg_redundant/MirrorFoot.SLDPRT -------------------------------------------------------------------------------- /CAD/Legolas/V2/right_leg_redundant/MirrorForeleg.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/right_leg_redundant/MirrorForeleg.SLDPRT -------------------------------------------------------------------------------- /CAD/Legolas/V2/right_leg_redundant/MirrorHip Pitch.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/right_leg_redundant/MirrorHip Pitch.SLDPRT -------------------------------------------------------------------------------- /CAD/Legolas/V2/right_leg_redundant/MirrorHip Roll.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/right_leg_redundant/MirrorHip Roll.SLDPRT -------------------------------------------------------------------------------- /CAD/Legolas/V2/right_leg_redundant/MirrorHip Yaw.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/right_leg_redundant/MirrorHip Yaw.SLDPRT -------------------------------------------------------------------------------- /CAD/Legolas/V2/right_leg_redundant/MirrorM4 Linkage 1.SLDASM: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/right_leg_redundant/MirrorM4 Linkage 1.SLDASM -------------------------------------------------------------------------------- /CAD/Legolas/V2/right_leg_redundant/MirrorM4 Linkage 2.SLDASM: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/right_leg_redundant/MirrorM4 Linkage 2.SLDASM -------------------------------------------------------------------------------- /CAD/Legolas/V2/right_leg_redundant/MirrorServo Cover.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/right_leg_redundant/MirrorServo Cover.SLDPRT -------------------------------------------------------------------------------- /CAD/Legolas/V2/right_leg_redundant/MirrorShin.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/right_leg_redundant/MirrorShin.SLDPRT -------------------------------------------------------------------------------- /CAD/Legolas/V2/right_leg_redundant/MirrorThigh Inner.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/right_leg_redundant/MirrorThigh Inner.SLDPRT -------------------------------------------------------------------------------- /CAD/Legolas/V2/right_leg_redundant/MirrorThigh Outer.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V2/right_leg_redundant/MirrorThigh Outer.SLDPRT -------------------------------------------------------------------------------- /CAD/Legolas/V3/Foot v3.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V3/Foot v3.SLDPRT -------------------------------------------------------------------------------- /CAD/Legolas/V3/Foreleg v3.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V3/Foreleg v3.SLDPRT -------------------------------------------------------------------------------- /CAD/Legolas/V3/Servo Cover v3.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V3/Servo Cover v3.SLDPRT -------------------------------------------------------------------------------- /CAD/Legolas/V3/Shin v3.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Legolas/V3/Shin v3.SLDPRT -------------------------------------------------------------------------------- /CAD/Servo and electronics/40 kg Servo Arm.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Servo and electronics/40 kg Servo Arm.SLDPRT -------------------------------------------------------------------------------- /CAD/Servo and electronics/40 kg Servo.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Servo and electronics/40 kg Servo.SLDPRT -------------------------------------------------------------------------------- /CAD/Servo and electronics/80kg_servo.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Servo and electronics/80kg_servo.SLDPRT -------------------------------------------------------------------------------- /CAD/Servo and electronics/80kg_servo_arm.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Servo and electronics/80kg_servo_arm.SLDPRT -------------------------------------------------------------------------------- /CAD/Servo and electronics/ADS1115.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Servo and electronics/ADS1115.SLDPRT -------------------------------------------------------------------------------- /CAD/Servo and electronics/M4 Ball Joint Rod End.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Servo and electronics/M4 Ball Joint Rod End.SLDPRT -------------------------------------------------------------------------------- /CAD/Servo and electronics/M4 Connecting Rod.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Servo and electronics/M4 Connecting Rod.SLDPRT -------------------------------------------------------------------------------- /CAD/Servo and electronics/M5 Ball Joint Rod End.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Servo and electronics/M5 Ball Joint Rod End.SLDPRT -------------------------------------------------------------------------------- /CAD/Servo and electronics/M5 Connecting Rod.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Servo and electronics/M5 Connecting Rod.SLDPRT -------------------------------------------------------------------------------- /CAD/Servo and electronics/MPU 6050 IMU.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Servo and electronics/MPU 6050 IMU.SLDPRT -------------------------------------------------------------------------------- /CAD/Servo and electronics/Mirror40 kg Servo Arm.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Servo and electronics/Mirror40 kg Servo Arm.SLDPRT -------------------------------------------------------------------------------- /CAD/Servo and electronics/Mirror40 kg Servo.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Servo and electronics/Mirror40 kg Servo.SLDPRT -------------------------------------------------------------------------------- /CAD/Servo and electronics/Mirror80kg_servo.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Servo and electronics/Mirror80kg_servo.SLDPRT -------------------------------------------------------------------------------- /CAD/Servo and electronics/Mirror80kg_servo_arm.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Servo and electronics/Mirror80kg_servo_arm.SLDPRT -------------------------------------------------------------------------------- /CAD/Servo and electronics/Raspberry Pi 4 Model B.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Servo and electronics/Raspberry Pi 4 Model B.SLDPRT -------------------------------------------------------------------------------- /CAD/Servo and electronics/pca9685.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Servo and electronics/pca9685.SLDPRT -------------------------------------------------------------------------------- /CAD/Servo and electronics/servo driver pca9685.SLDPRT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Servo and electronics/servo driver pca9685.SLDPRT -------------------------------------------------------------------------------- /CAD/Servo and electronics/servo.SLDASM: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Servo and electronics/servo.SLDASM -------------------------------------------------------------------------------- /CAD/Servo and electronics/~$Mirror40 kg Servo Arm.SLDPRT: -------------------------------------------------------------------------------- 1 | Ho -------------------------------------------------------------------------------- /CAD/Servo and electronics/~$Mirror40 kg Servo.SLDPRT: -------------------------------------------------------------------------------- 1 | Ho -------------------------------------------------------------------------------- /CAD/Servo and electronics/~$Mirror80kg_servo.SLDPRT: -------------------------------------------------------------------------------- 1 | Ho -------------------------------------------------------------------------------- /CAD/Servo and electronics/~$Mirror80kg_servo_arm.SLDPRT: -------------------------------------------------------------------------------- 1 | Ho -------------------------------------------------------------------------------- /CAD/Test_Bench/Test_Bench_Mk2.SLDASM: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/CAD/Test_Bench/Test_Bench_Mk2.SLDASM -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 David Ho 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Mujoco xml/Documentation for Solidworks to Mujoco.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/Mujoco xml/Documentation for Solidworks to Mujoco.docx -------------------------------------------------------------------------------- /Mujoco xml/References/agility_cassie/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2022 Agility Robotics 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to 5 | deal in the Software without restriction, including without limitation the 6 | rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | sell copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | IN THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /Mujoco xml/References/agility_cassie/README.md: -------------------------------------------------------------------------------- 1 | # Agility Cassie Description (MJCF) 2 | 3 | ## Overview 4 | 5 | This package contains a simplified robot description (MJCF) of the Cassie 6 | bipedal robot. The original MJCF and assets were provided directly by 7 | [Agility Robotics](http://www.agilityrobotics.com/) under an 8 | [MIT License](LICENSE). 9 | 10 |

11 | 12 |

13 | 14 | ## Modifications made to the original model 15 | 16 | 1. Replaced single quotes with double quotes. 17 | 2. Made collision geoms visible, put them in hidden group 3. 18 | 3. Removed `nuser_actuator` and `nuser_sensor` (automatically inferred since 19 | MuJoCo 2.1.2). 20 | 4. Changed solver from PGS to Newton. 21 | 5. Removed `` clause. 22 | 6. Removed attribute specs which are already default. 23 | 7. Improved collision geometry. 24 | 8. Added `scene.xml` which includes the robot, with a textured groundplane, skybox, and haze. 25 | 26 | ## License 27 | 28 | This model is released under an [MIT License](LICENSE). 29 | -------------------------------------------------------------------------------- /Mujoco xml/References/agility_cassie/assets/cassie-texture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/Mujoco xml/References/agility_cassie/assets/cassie-texture.png -------------------------------------------------------------------------------- /Mujoco xml/References/agility_cassie/assets/foot-crank.obj: -------------------------------------------------------------------------------- 1 | # Blender v3.0.1 OBJ File: 'cassie-meshes.blend' 2 | # www.blender.org 3 | o foot-crank 4 | v 0.010112 0.006500 -0.012100 5 | v 0.013631 0.006500 -0.010024 6 | v 0.015140 0.006500 -0.014033 7 | v 0.011655 0.006500 -0.015195 8 | v 0.045881 0.009829 0.004350 9 | v 0.058340 0.009674 0.003165 10 | v 0.058320 0.009776 -0.002873 11 | v 0.010199 0.009850 -0.012440 12 | v 0.011151 0.009850 -0.014928 13 | v 0.007261 0.009862 -0.017347 14 | v 0.014829 0.009853 -0.014520 15 | v 0.017547 0.009850 -0.007428 16 | v 0.014904 0.009850 -0.011291 17 | v 0.011854 0.009850 -0.010143 18 | v 0.007184 0.009819 0.018008 19 | v 0.014211 0.009850 0.015182 20 | v 0.010320 0.009850 0.013934 21 | v 0.014583 0.009850 0.010591 22 | v 0.018888 0.009850 0.007083 23 | v 0.014979 0.009850 0.005865 24 | v -0.014673 0.009850 -0.004259 25 | v 0.016142 0.009850 0.002145 26 | v 0.024922 0.009841 -0.002128 27 | v 0.019642 0.009850 0.003271 28 | v 0.023921 0.009850 0.008141 29 | v 0.014698 0.009850 -0.004818 30 | v 0.016975 0.009850 -0.001961 31 | v 0.023760 0.009728 -0.008461 32 | v 0.020101 0.009850 -0.004259 33 | v -0.012382 0.009695 -0.015353 34 | v -0.005558 0.009850 -0.014676 35 | v -0.006936 0.009509 -0.019030 36 | v -0.002146 0.009850 -0.016551 37 | v -0.010239 0.009850 -0.013483 38 | v 0.004741 0.009850 -0.014532 39 | v 0.002113 0.009960 -0.018665 40 | v -0.003226 0.009649 -0.019677 41 | v 0.025909 0.009713 -0.010863 42 | v 0.045679 0.009820 -0.004959 43 | v 0.025482 0.009812 0.010659 44 | v 0.010970 0.009850 0.010748 45 | v -0.010040 0.009850 0.012887 46 | v -0.011691 0.009850 0.010335 47 | v 0.002539 0.009850 0.015386 48 | v 0.006452 0.009850 0.015493 49 | v -0.007319 0.009934 0.017050 50 | v -0.003503 0.009850 0.014710 51 | v -0.017273 0.009901 0.007318 52 | v -0.014710 0.009905 0.010934 53 | v -0.012712 0.009585 0.015460 54 | v -0.002333 0.009877 0.018559 55 | v 0.002815 0.009809 0.019199 56 | v -0.017103 0.009926 -0.007334 57 | v -0.011892 0.009850 -0.009935 58 | v -0.015242 0.009763 -0.012038 59 | v 0.058395 -0.002886 0.001583 60 | v 0.060941 -0.003150 -0.001941 61 | v 0.059731 -0.003150 0.004084 62 | v 0.054124 -0.002906 0.003515 63 | v 0.053668 -0.003072 0.006377 64 | v 0.056665 -0.002911 -0.003360 65 | v 0.056736 -0.003188 -0.005845 66 | v 0.052146 -0.002946 -0.002382 67 | v 0.051788 -0.003124 -0.005201 68 | v 0.051412 -0.002875 0.000623 69 | v 0.048546 -0.003174 -0.000656 70 | v 0.042186 0.003939 0.010004 71 | v 0.008658 0.004352 0.019841 72 | v 0.016932 0.004350 0.013583 73 | v 0.021852 0.004350 0.001363 74 | v 0.036187 0.004177 0.001313 75 | v 0.018555 0.004350 -0.011265 76 | v 0.010044 0.004349 -0.019303 77 | v 0.039204 0.004232 -0.010872 78 | v 0.000796 0.008033 0.021628 79 | v 0.002963 0.000853 0.021900 80 | v 0.016317 0.000850 0.014316 81 | v 0.022128 0.000850 0.000586 82 | v 0.015864 0.000850 -0.015091 83 | v 0.002194 0.000851 -0.021767 84 | v 0.001657 0.007707 -0.021533 85 | v -0.009686 0.007857 0.019190 86 | v -0.014615 0.000850 0.016616 87 | v -0.014810 0.008777 0.015014 88 | v -0.019442 0.008196 0.009242 89 | v -0.021430 0.000850 0.003368 90 | v -0.021306 0.008222 0.001557 91 | v -0.019698 0.000850 -0.009627 92 | v -0.020572 0.008560 -0.005243 93 | v -0.017562 0.008172 -0.012271 94 | v -0.011650 0.007907 -0.018061 95 | v -0.010489 0.000850 -0.018978 96 | v -0.005737 0.007387 -0.020753 97 | v -0.017214 0.006500 0.007322 98 | v -0.019810 0.009057 0.005769 99 | v -0.019754 0.006500 0.005747 100 | v -0.019279 0.006500 0.002756 101 | v -0.019195 0.009787 0.002801 102 | v -0.014887 0.006500 0.005402 103 | v -0.014767 0.009850 0.005046 104 | v -0.015780 0.006500 0.002497 105 | v -0.016318 0.009850 0.002187 106 | v -0.013463 0.006500 0.015444 107 | v -0.015341 0.006500 0.012070 108 | v -0.009875 0.006500 0.012794 109 | v -0.012654 0.006500 0.010081 110 | v -0.002294 0.006500 0.018954 111 | v -0.005419 0.009001 0.020027 112 | v -0.006206 0.006500 0.019580 113 | v -0.007009 0.006500 0.015800 114 | v -0.003271 0.006500 0.015131 115 | v 0.006858 0.006500 0.018950 116 | v 0.004746 0.009058 0.020067 117 | v 0.003524 0.006500 0.019839 118 | v 0.002078 0.006500 0.017360 119 | v 0.006723 0.006500 0.015732 120 | v 0.003590 0.006500 0.014915 121 | v 0.011423 0.006500 0.010316 122 | v 0.010314 0.006500 0.014031 123 | v 0.014712 0.006500 0.014883 124 | v 0.014622 0.006500 0.010935 125 | v 0.018500 0.006500 0.007218 126 | v 0.019801 0.006500 0.003355 127 | v 0.015865 0.006500 0.002300 128 | v 0.015058 0.006500 0.005918 129 | v 0.016200 0.006500 -0.002233 130 | v 0.019548 0.006500 -0.003052 131 | v 0.018698 0.006500 -0.007254 132 | v 0.014806 0.006500 -0.005429 133 | v 0.002071 0.006500 -0.018026 134 | v 0.004514 0.006500 -0.020072 135 | v 0.005706 0.009038 -0.019846 136 | v 0.007253 0.006500 -0.018068 137 | v 0.004573 0.006500 -0.014413 138 | v -0.003886 0.006500 -0.020080 139 | v -0.007214 0.006500 -0.018211 140 | v -0.002078 0.006500 -0.017360 141 | v -0.004745 0.006500 -0.014413 142 | v -0.015369 0.006500 -0.012196 143 | v -0.014067 0.009230 -0.015061 144 | v -0.013412 0.006500 -0.015446 145 | v -0.010228 0.006500 -0.013622 146 | v -0.011829 0.006500 -0.010018 147 | v -0.019887 0.009471 -0.003604 148 | v -0.018124 0.006500 -0.002161 149 | v -0.020155 0.006500 -0.005107 150 | v -0.016022 0.006500 -0.007228 151 | v -0.017245 0.009872 -0.002028 152 | v -0.015225 0.006500 -0.003052 153 | v 0.057162 0.007571 0.005588 154 | v 0.048665 0.000661 0.007974 155 | v 0.046786 0.001933 -0.008632 156 | v 0.058501 0.007656 -0.005057 157 | v 0.060812 0.008242 -0.001021 158 | v 0.060024 0.007766 0.003425 159 | v 0.042021 0.002240 0.001512 160 | v 0.046524 -0.000719 -0.000820 161 | v 0.026055 0.007407 0.008351 162 | v 0.044269 0.007535 0.003459 163 | v 0.026593 0.007565 -0.000062 164 | v 0.025716 0.007448 -0.008216 165 | v 0.044273 0.007624 -0.004157 166 | v 0.044259 0.008502 0.005160 167 | v 0.045361 0.008609 -0.002678 168 | v 0.026228 0.008408 0.010209 169 | v 0.024386 0.008625 0.008167 170 | v 0.026370 0.007950 -0.009665 171 | v 0.005195 0.009005 0.019447 172 | v 0.006975 0.008933 0.017818 173 | v 0.005627 0.009018 0.015476 174 | v 0.003079 0.008919 0.015641 175 | v 0.002739 0.008997 0.018524 176 | v 0.006172 0.006409 0.017382 177 | v 0.006284 0.006520 0.015982 178 | v 0.006512 0.006543 0.018959 179 | v 0.004060 0.006413 0.018754 180 | v 0.002789 0.006543 0.018939 181 | v 0.003434 0.006426 0.016660 182 | v 0.003300 0.006551 0.015423 183 | v 0.004621 0.007500 0.018277 184 | v 0.004800 0.007500 0.016203 185 | v -0.015115 0.008922 0.012549 186 | v -0.013498 0.008936 0.014879 187 | v -0.013884 0.008786 0.013051 188 | v -0.010949 0.009009 0.014077 189 | v -0.013095 0.009002 0.010642 190 | v -0.010983 0.008922 0.011149 191 | v -0.012961 0.006377 0.014273 192 | v -0.011131 0.006528 0.014564 193 | v -0.014872 0.006526 0.013878 194 | v -0.013926 0.006424 0.011928 195 | v -0.014107 0.006497 0.011059 196 | v -0.011185 0.006556 0.010853 197 | v -0.011345 0.006424 0.012325 198 | v -0.011937 0.007500 0.012316 199 | v -0.006149 0.008933 0.019313 200 | v -0.003156 0.008911 0.019109 201 | v -0.006634 0.009023 0.016520 202 | v -0.002418 0.008963 0.017174 203 | v -0.003394 0.006422 0.018115 204 | v -0.003020 0.006532 0.019295 205 | v -0.005385 0.006426 0.018611 206 | v -0.006568 0.006536 0.018695 207 | v -0.005924 0.006422 0.016658 208 | v -0.006213 0.006568 0.015523 209 | v -0.003932 0.006426 0.016162 210 | v -0.003051 0.006548 0.015725 211 | v -0.004011 0.008994 0.015286 212 | v -0.003607 0.007500 0.016862 213 | v -0.005711 0.007500 0.017912 214 | v -0.015318 0.008932 0.005779 215 | v -0.015680 0.008923 0.003142 216 | v -0.016224 0.008735 0.004957 217 | v -0.017827 0.009002 0.002575 218 | v -0.019436 0.008934 0.003721 219 | v -0.019207 0.009010 0.005673 220 | v -0.017772 0.008936 0.006910 221 | v -0.015985 0.006408 0.005128 222 | v -0.017999 0.006560 0.006886 223 | v -0.018577 0.006385 0.005666 224 | v -0.019733 0.006568 0.004674 225 | v -0.017451 0.006407 0.003148 226 | v -0.018310 0.006542 0.002609 227 | v -0.016034 0.006570 0.002785 228 | v -0.015229 0.006551 0.005680 229 | v -0.018277 0.007500 0.004621 230 | v 0.012584 0.008937 0.015118 231 | v 0.015115 0.008922 0.012907 232 | v 0.012226 0.009000 0.013791 233 | v 0.013940 0.008972 0.010924 234 | v 0.010555 0.008934 0.013327 235 | v 0.011432 0.008990 0.010858 236 | v 0.013919 0.006385 0.011721 237 | v 0.014957 0.006571 0.012120 238 | v 0.013601 0.006528 0.014999 239 | v 0.012792 0.006407 0.014239 240 | v 0.010256 0.006513 0.012869 241 | v 0.011326 0.006408 0.012258 242 | v 0.012765 0.006566 0.010381 243 | v 0.013442 0.007500 0.011773 244 | v 0.012249 0.007500 0.013480 245 | v 0.019569 0.008922 0.005643 246 | v 0.018758 0.009017 0.003081 247 | v 0.017729 0.009019 0.006683 248 | v 0.015380 0.009021 0.004240 249 | v 0.015537 0.008915 0.006056 250 | v 0.016777 0.008942 0.002423 251 | v 0.018115 0.006422 0.003394 252 | v 0.019401 0.006544 0.003449 253 | v 0.018664 0.006427 0.005195 254 | v 0.018537 0.006526 0.006802 255 | v 0.017221 0.006424 0.006072 256 | v 0.014988 0.006544 0.005253 257 | v 0.015941 0.006407 0.004264 258 | v 0.016779 0.006571 0.002430 259 | v 0.018035 0.007500 0.003678 260 | v 0.016738 0.007500 0.005639 261 | v 0.015318 0.008932 -0.005779 262 | v 0.016031 0.009003 -0.002945 263 | v 0.016224 0.008735 -0.004957 264 | v 0.018812 0.008939 -0.002736 265 | v 0.019342 0.009012 -0.005390 266 | v 0.017924 0.008925 -0.006913 267 | v 0.016725 0.006413 -0.005996 268 | v 0.016124 0.006547 -0.006596 269 | v 0.019275 0.006554 -0.006186 270 | v 0.018769 0.006424 -0.005062 271 | v 0.018772 0.006563 -0.002716 272 | v 0.017790 0.006424 -0.003276 273 | v 0.015301 0.006528 -0.003405 274 | v 0.016136 0.006430 -0.004046 275 | v 0.018277 0.007500 -0.004621 276 | v 0.014243 0.009000 -0.010990 277 | v 0.014638 0.008929 -0.014044 278 | v 0.012778 0.009017 -0.014798 279 | v 0.010646 0.008919 -0.013828 280 | v 0.011117 0.008994 -0.011233 281 | v 0.011196 0.006377 -0.012419 282 | v 0.010501 0.006560 -0.013340 283 | v 0.012349 0.006563 -0.014972 284 | v 0.013582 0.006392 -0.014012 285 | v 0.014665 0.006547 -0.013990 286 | v 0.013580 0.006424 -0.011567 287 | v 0.014602 0.006570 -0.011376 288 | v 0.011707 0.006551 -0.010570 289 | v 0.013518 0.007500 -0.013140 290 | v 0.011632 0.007500 -0.012258 291 | v 0.002902 0.009010 -0.016096 292 | v 0.005119 0.008923 -0.015150 293 | v 0.006720 0.008980 -0.016668 294 | v 0.003276 0.006424 -0.016984 295 | v 0.003051 0.006517 -0.019323 296 | v 0.004256 0.006424 -0.018769 297 | v 0.006596 0.006547 -0.018649 298 | v 0.006041 0.006424 -0.017790 299 | v 0.006273 0.006544 -0.015626 300 | v 0.005062 0.006424 -0.016004 301 | v 0.003122 0.006566 -0.015613 302 | v 0.006289 0.008997 -0.018889 303 | v 0.003103 0.008982 -0.019145 304 | v 0.003607 0.007500 -0.016862 305 | v 0.005711 0.007500 -0.017912 306 | v -0.005671 0.008999 -0.019404 307 | v -0.006870 0.008945 -0.016572 308 | v -0.004485 0.008996 -0.015203 309 | v -0.002956 0.008998 -0.018704 310 | v -0.002492 0.008923 -0.016667 311 | v -0.005924 0.006422 -0.018115 312 | v -0.006640 0.006499 -0.016990 313 | v -0.005967 0.006536 -0.019296 314 | v -0.003859 0.006424 -0.018584 315 | v -0.002771 0.006554 -0.018914 316 | v -0.003579 0.006413 -0.016356 317 | v -0.002926 0.006563 -0.015911 318 | v -0.005271 0.006560 -0.015160 319 | v -0.004621 0.007500 -0.018277 320 | v -0.004800 0.007500 -0.016203 321 | v -0.010589 0.008999 -0.013104 322 | v -0.012584 0.008937 -0.015118 323 | v -0.014867 0.009008 -0.013178 324 | v -0.013828 0.008919 -0.010646 325 | v -0.011545 0.009010 -0.010977 326 | v -0.013919 0.006385 -0.011721 327 | v -0.013668 0.006548 -0.010532 328 | v -0.014971 0.006548 -0.013289 329 | v -0.012792 0.006407 -0.014239 330 | v -0.012507 0.006551 -0.015105 331 | v -0.011326 0.006408 -0.012258 332 | v -0.010334 0.006546 -0.012114 333 | v -0.013709 0.007500 -0.013377 334 | v -0.011747 0.007500 -0.012079 335 | v -0.019474 0.008989 -0.005331 336 | v -0.018391 0.008955 -0.002484 337 | v -0.016290 0.009007 -0.002784 338 | v -0.015303 0.009005 -0.005116 339 | v -0.017243 0.008939 -0.007048 340 | v -0.018769 0.006424 -0.004256 341 | v -0.019168 0.006497 -0.003353 342 | v -0.019260 0.006570 -0.006011 343 | v -0.017451 0.006407 -0.006170 344 | v -0.016774 0.006560 -0.006886 345 | v -0.015985 0.006408 -0.004189 346 | v -0.015040 0.006557 -0.004645 347 | v -0.016779 0.006571 -0.002430 348 | v -0.016213 0.007500 -0.004587 349 | v -0.018560 0.007500 -0.004730 350 | v 0.059855 -0.015745 0.000714 351 | v 0.056740 -0.015760 -0.000579 352 | v 0.057468 -0.015697 -0.004239 353 | v 0.051237 -0.015757 0.002934 354 | v 0.055407 -0.015749 0.001924 355 | v 0.055933 -0.015763 0.004819 356 | v 0.055444 -0.015801 -0.001806 357 | v 0.053155 -0.015743 -0.004352 358 | v 0.053620 -0.015815 -0.001255 359 | v 0.050382 -0.015747 -0.001445 360 | v 0.053260 -0.015761 0.000585 361 | v 0.050731 -0.012675 0.002687 362 | v 0.056517 -0.012675 0.004901 363 | v 0.060040 -0.012675 -0.000192 364 | v 0.056136 -0.012675 -0.005003 365 | v 0.050826 -0.012675 -0.002695 366 | v 0.057466 -0.012675 0.002558 367 | v 0.057462 -0.012675 -0.002375 368 | v 0.052534 -0.012675 -0.002558 369 | v 0.052539 -0.012675 0.002375 370 | v 0.052136 0.003073 0.001708 371 | v 0.055533 0.003118 0.003061 372 | v 0.057850 0.003065 0.001528 373 | v 0.057772 0.003060 -0.001413 374 | v 0.055501 0.003048 -0.003197 375 | v 0.052574 0.003103 -0.001978 376 | v 0.054255 -0.014263 -0.001752 377 | v 0.055745 -0.014263 0.001752 378 | vt 0.750000 0.250000 379 | vt 0.750000 0.250000 380 | vt 0.750000 0.250000 381 | vt 0.750000 0.250000 382 | vt 0.750000 0.250000 383 | vt 0.750000 0.250000 384 | vt 0.750000 0.250000 385 | vt 0.750000 0.250000 386 | vt 0.750000 0.250000 387 | vt 0.750000 0.250000 388 | vt 0.750000 0.250000 389 | vt 0.750000 0.250000 390 | vt 0.750000 0.250000 391 | vt 0.750000 0.250000 392 | vt 0.750000 0.250000 393 | vt 0.750000 0.250000 394 | vt 0.750000 0.250000 395 | vt 0.750000 0.250000 396 | vt 0.750000 0.250000 397 | vt 0.750000 0.250000 398 | vt 0.750000 0.250000 399 | vt 0.750000 0.250000 400 | vt 0.750000 0.250000 401 | vt 0.750000 0.250000 402 | vt 0.750000 0.250000 403 | vt 0.750000 0.250000 404 | vt 0.750000 0.250000 405 | vt 0.750000 0.250000 406 | vt 0.750000 0.250000 407 | vt 0.750000 0.250000 408 | vt 0.750000 0.250000 409 | vt 0.750000 0.250000 410 | vt 0.750000 0.250000 411 | vt 0.750000 0.250000 412 | vt 0.750000 0.250000 413 | vt 0.750000 0.250000 414 | vt 0.750000 0.250000 415 | vt 0.750000 0.250000 416 | vt 0.750000 0.250000 417 | vt 0.750000 0.250000 418 | vt 0.750000 0.250000 419 | vt 0.750000 0.250000 420 | vt 0.750000 0.250000 421 | vt 0.750000 0.250000 422 | vt 0.750000 0.250000 423 | vt 0.750000 0.250000 424 | vt 0.750000 0.250000 425 | vt 0.750000 0.250000 426 | vt 0.750000 0.250000 427 | vt 0.750000 0.250000 428 | vt 0.750000 0.250000 429 | vt 0.750000 0.250000 430 | vt 0.750000 0.250000 431 | vt 0.750000 0.250000 432 | vt 0.750000 0.250000 433 | vt 0.750000 0.250000 434 | vt 0.750000 0.250000 435 | vt 0.750000 0.250000 436 | vt 0.750000 0.250000 437 | vt 0.750000 0.250000 438 | vt 0.750000 0.250000 439 | vt 0.750000 0.250000 440 | vt 0.750000 0.250000 441 | vt 0.750000 0.250000 442 | vt 0.750000 0.250000 443 | vt 0.750000 0.250000 444 | vt 0.750000 0.250000 445 | vt 0.750000 0.250000 446 | vt 0.750000 0.250000 447 | vt 0.750000 0.250000 448 | vt 0.750000 0.250000 449 | vt 0.750000 0.250000 450 | vt 0.750000 0.250000 451 | vt 0.750000 0.250000 452 | vt 0.750000 0.250000 453 | vt 0.750000 0.250000 454 | vt 0.750000 0.250000 455 | vt 0.750000 0.250000 456 | vt 0.750000 0.250000 457 | vt 0.750000 0.250000 458 | vt 0.750000 0.250000 459 | vt 0.750000 0.250000 460 | vt 0.750000 0.250000 461 | vt 0.750000 0.250000 462 | vt 0.750000 0.250000 463 | vt 0.750000 0.250000 464 | vt 0.750000 0.250000 465 | vt 0.750000 0.250000 466 | vt 0.750000 0.250000 467 | vt 0.750000 0.250000 468 | vt 0.750000 0.250000 469 | vt 0.750000 0.250000 470 | vt 0.750000 0.250000 471 | vt 0.750000 0.250000 472 | vt 0.750000 0.250000 473 | vt 0.750000 0.250000 474 | vt 0.750000 0.250000 475 | vt 0.750000 0.250000 476 | vt 0.750000 0.250000 477 | vt 0.750000 0.250000 478 | vt 0.750000 0.250000 479 | vt 0.750000 0.250000 480 | vt 0.750000 0.250000 481 | vt 0.750000 0.250000 482 | vt 0.750000 0.250000 483 | vt 0.750000 0.250000 484 | vt 0.750000 0.250000 485 | vt 0.750000 0.250000 486 | vt 0.750000 0.250000 487 | vt 0.750000 0.250000 488 | vt 0.750000 0.250000 489 | vt 0.750000 0.250000 490 | vt 0.750000 0.250000 491 | vt 0.750000 0.250000 492 | vt 0.750000 0.250000 493 | vt 0.750000 0.250000 494 | vt 0.750000 0.250000 495 | vt 0.750000 0.250000 496 | vt 0.750000 0.250000 497 | vt 0.750000 0.250000 498 | vt 0.750000 0.250000 499 | vt 0.750000 0.250000 500 | vt 0.750000 0.250000 501 | vt 0.750000 0.250000 502 | vt 0.750000 0.250000 503 | vt 0.750000 0.250000 504 | vt 0.750000 0.250000 505 | vt 0.750000 0.250000 506 | vt 0.750000 0.250000 507 | vt 0.750000 0.250000 508 | vt 0.750000 0.250000 509 | vt 0.750000 0.250000 510 | vt 0.750000 0.250000 511 | vt 0.750000 0.250000 512 | vt 0.750000 0.250000 513 | vt 0.750000 0.250000 514 | vt 0.750000 0.250000 515 | vt 0.750000 0.250000 516 | vt 0.750000 0.250000 517 | vt 0.750000 0.250000 518 | vt 0.750000 0.250000 519 | vt 0.750000 0.250000 520 | vt 0.750000 0.250000 521 | vt 0.750000 0.250000 522 | vt 0.750000 0.250000 523 | vt 0.750000 0.250000 524 | vt 0.750000 0.250000 525 | vt 0.750000 0.250000 526 | vt 0.750000 0.250000 527 | vt 0.750000 0.250000 528 | vt 0.750000 0.250000 529 | vt 0.750000 0.250000 530 | vt 0.750000 0.250000 531 | vt 0.750000 0.250000 532 | vt 0.750000 0.250000 533 | vt 0.750000 0.250000 534 | vt 0.750000 0.250000 535 | vt 0.750000 0.250000 536 | vt 0.750000 0.250000 537 | vt 0.750000 0.250000 538 | vt 0.750000 0.250000 539 | vt 0.750000 0.250000 540 | vt 0.750000 0.250000 541 | vt 0.750000 0.250000 542 | vt 0.750000 0.250000 543 | vt 0.750000 0.250000 544 | vt 0.750000 0.250000 545 | vt 0.250000 0.250000 546 | vt 0.250000 0.250000 547 | vt 0.250000 0.250000 548 | vt 0.250000 0.250000 549 | vt 0.250000 0.250000 550 | vt 0.250000 0.250000 551 | vt 0.250000 0.250000 552 | vt 0.250000 0.250000 553 | vt 0.250000 0.250000 554 | vt 0.250000 0.250000 555 | vt 0.250000 0.250000 556 | vt 0.250000 0.250000 557 | vt 0.250000 0.250000 558 | vt 0.250000 0.250000 559 | vt 0.250000 0.250000 560 | vt 0.250000 0.250000 561 | vt 0.250000 0.250000 562 | vt 0.250000 0.250000 563 | vt 0.250000 0.250000 564 | vt 0.250000 0.250000 565 | vt 0.250000 0.250000 566 | vt 0.250000 0.250000 567 | vt 0.250000 0.250000 568 | vt 0.250000 0.250000 569 | vt 0.250000 0.250000 570 | vt 0.250000 0.250000 571 | vt 0.250000 0.250000 572 | vt 0.250000 0.250000 573 | vt 0.250000 0.250000 574 | vt 0.250000 0.250000 575 | vt 0.250000 0.250000 576 | vt 0.250000 0.250000 577 | vt 0.250000 0.250000 578 | vt 0.250000 0.250000 579 | vt 0.250000 0.250000 580 | vt 0.250000 0.250000 581 | vt 0.250000 0.250000 582 | vt 0.250000 0.250000 583 | vt 0.250000 0.250000 584 | vt 0.250000 0.250000 585 | vt 0.250000 0.250000 586 | vt 0.250000 0.250000 587 | vt 0.250000 0.250000 588 | vt 0.250000 0.250000 589 | vt 0.250000 0.250000 590 | vt 0.250000 0.250000 591 | vt 0.250000 0.250000 592 | vt 0.250000 0.250000 593 | vt 0.250000 0.250000 594 | vt 0.250000 0.250000 595 | vt 0.250000 0.250000 596 | vt 0.250000 0.250000 597 | vt 0.250000 0.250000 598 | vt 0.250000 0.250000 599 | vt 0.250000 0.250000 600 | vt 0.250000 0.250000 601 | vt 0.250000 0.250000 602 | vt 0.250000 0.250000 603 | vt 0.250000 0.250000 604 | vt 0.250000 0.250000 605 | vt 0.250000 0.250000 606 | vt 0.250000 0.250000 607 | vt 0.250000 0.250000 608 | vt 0.250000 0.250000 609 | vt 0.250000 0.250000 610 | vt 0.250000 0.250000 611 | vt 0.250000 0.250000 612 | vt 0.250000 0.250000 613 | vt 0.250000 0.250000 614 | vt 0.250000 0.250000 615 | vt 0.250000 0.250000 616 | vt 0.250000 0.250000 617 | vt 0.250000 0.250000 618 | vt 0.250000 0.250000 619 | vt 0.250000 0.250000 620 | vt 0.250000 0.250000 621 | vt 0.250000 0.250000 622 | vt 0.250000 0.250000 623 | vt 0.250000 0.250000 624 | vt 0.250000 0.250000 625 | vt 0.250000 0.250000 626 | vt 0.250000 0.250000 627 | vt 0.250000 0.250000 628 | vt 0.250000 0.250000 629 | vt 0.250000 0.250000 630 | vt 0.250000 0.250000 631 | vt 0.250000 0.250000 632 | vt 0.250000 0.250000 633 | vt 0.250000 0.250000 634 | vt 0.250000 0.250000 635 | vt 0.250000 0.250000 636 | vt 0.250000 0.250000 637 | vt 0.250000 0.250000 638 | vt 0.250000 0.250000 639 | vt 0.250000 0.250000 640 | vt 0.250000 0.250000 641 | vt 0.250000 0.250000 642 | vt 0.250000 0.250000 643 | vt 0.250000 0.250000 644 | vt 0.250000 0.250000 645 | vt 0.250000 0.250000 646 | vt 0.250000 0.250000 647 | vt 0.250000 0.250000 648 | vt 0.250000 0.250000 649 | vt 0.250000 0.250000 650 | vt 0.250000 0.250000 651 | vt 0.250000 0.250000 652 | vt 0.250000 0.250000 653 | vt 0.250000 0.250000 654 | vt 0.250000 0.250000 655 | vt 0.250000 0.250000 656 | vt 0.250000 0.250000 657 | vt 0.250000 0.250000 658 | vt 0.250000 0.250000 659 | vt 0.250000 0.250000 660 | vt 0.250000 0.250000 661 | vt 0.250000 0.250000 662 | vt 0.250000 0.250000 663 | vt 0.250000 0.250000 664 | vt 0.250000 0.250000 665 | vt 0.250000 0.250000 666 | vt 0.250000 0.250000 667 | vt 0.250000 0.250000 668 | vt 0.250000 0.250000 669 | vt 0.250000 0.250000 670 | vt 0.250000 0.250000 671 | vt 0.250000 0.250000 672 | vt 0.250000 0.250000 673 | vt 0.250000 0.250000 674 | vt 0.250000 0.250000 675 | vt 0.250000 0.250000 676 | vt 0.250000 0.250000 677 | vt 0.250000 0.250000 678 | vt 0.250000 0.250000 679 | vt 0.250000 0.250000 680 | vt 0.250000 0.250000 681 | vt 0.250000 0.250000 682 | vt 0.250000 0.250000 683 | vt 0.250000 0.250000 684 | vt 0.250000 0.250000 685 | vt 0.250000 0.250000 686 | vt 0.250000 0.250000 687 | vt 0.250000 0.250000 688 | vt 0.250000 0.250000 689 | vt 0.250000 0.250000 690 | vt 0.250000 0.250000 691 | vt 0.250000 0.250000 692 | vt 0.250000 0.250000 693 | vt 0.250000 0.250000 694 | vt 0.250000 0.250000 695 | vt 0.250000 0.250000 696 | vt 0.250000 0.250000 697 | vt 0.250000 0.250000 698 | vt 0.250000 0.250000 699 | vt 0.250000 0.250000 700 | vt 0.250000 0.250000 701 | vt 0.250000 0.250000 702 | vt 0.250000 0.250000 703 | vt 0.250000 0.250000 704 | vt 0.250000 0.250000 705 | vt 0.250000 0.250000 706 | vt 0.250000 0.250000 707 | vt 0.250000 0.250000 708 | vt 0.250000 0.250000 709 | vt 0.250000 0.250000 710 | vt 0.250000 0.250000 711 | vt 0.250000 0.250000 712 | vt 0.250000 0.250000 713 | vt 0.250000 0.250000 714 | vt 0.250000 0.250000 715 | vt 0.250000 0.250000 716 | vt 0.250000 0.250000 717 | vt 0.250000 0.250000 718 | vt 0.250000 0.250000 719 | vt 0.250000 0.250000 720 | vt 0.250000 0.250000 721 | vt 0.250000 0.250000 722 | vt 0.250000 0.250000 723 | vt 0.250000 0.250000 724 | vt 0.250000 0.250000 725 | vt 0.250000 0.250000 726 | vt 0.250000 0.250000 727 | vt 0.250000 0.250000 728 | vt 0.250000 0.250000 729 | vt 0.250000 0.250000 730 | vt 0.250000 0.250000 731 | vt 0.250000 0.250000 732 | vt 0.250000 0.250000 733 | vt 0.250000 0.250000 734 | vt 0.250000 0.250000 735 | vt 0.250000 0.250000 736 | vt 0.250000 0.250000 737 | vt 0.250000 0.250000 738 | vt 0.250000 0.250000 739 | vt 0.250000 0.250000 740 | vt 0.250000 0.250000 741 | vt 0.250000 0.250000 742 | vt 0.250000 0.250000 743 | vt 0.250000 0.250000 744 | vt 0.250000 0.250000 745 | vt 0.250000 0.250000 746 | vt 0.250000 0.250000 747 | vt 0.250000 0.250000 748 | vt 0.250000 0.250000 749 | vt 0.250000 0.250000 750 | vt 0.250000 0.250000 751 | vt 0.250000 0.250000 752 | vn -0.0000 1.0000 0.0000 753 | vn 0.0133 0.9994 0.0323 754 | vn 0.0163 0.9995 0.0269 755 | vn 0.1023 0.9457 -0.3084 756 | vn 0.0003 1.0000 0.0007 757 | vn -0.0000 1.0000 0.0050 758 | vn 0.0585 0.9776 -0.2023 759 | vn 0.0029 1.0000 -0.0047 760 | vn 0.0106 0.9999 -0.0055 761 | vn -0.0008 1.0000 0.0006 762 | vn 0.0001 1.0000 -0.0000 763 | vn 0.0953 0.9421 0.3215 764 | vn 0.0134 0.9991 0.0410 765 | vn -0.0087 1.0000 0.0009 766 | vn 0.0034 0.9999 0.0095 767 | vn 0.0003 1.0000 -0.0002 768 | vn 0.0042 1.0000 -0.0068 769 | vn 0.0005 1.0000 -0.0008 770 | vn 0.0032 1.0000 0.0039 771 | vn 0.0006 1.0000 0.0003 772 | vn 0.0135 0.9999 -0.0064 773 | vn 0.0084 0.9999 -0.0087 774 | vn -0.0158 0.9975 -0.0689 775 | vn -0.0048 0.9997 -0.0219 776 | vn -0.0154 0.9972 -0.0732 777 | vn -0.0172 0.9998 -0.0096 778 | vn -0.0080 0.9995 -0.0314 779 | vn -0.0017 1.0000 0.0055 780 | vn -0.0206 0.9997 0.0104 781 | vn -0.0492 0.9977 -0.0472 782 | vn -0.1517 0.8571 0.4923 783 | vn 0.0113 0.9999 -0.0022 784 | vn 0.0113 0.9999 0.0039 785 | vn 0.0054 0.9999 -0.0117 786 | vn -0.0079 0.9996 -0.0281 787 | vn -0.0001 1.0000 0.0004 788 | vn -0.0211 0.9998 0.0044 789 | vn 0.0023 1.0000 0.0088 790 | vn 0.0028 1.0000 0.0012 791 | vn 0.0047 1.0000 0.0045 792 | vn -0.0995 0.9747 0.2003 793 | vn 0.0013 1.0000 -0.0058 794 | vn -0.2691 0.9495 0.1612 795 | vn -0.1872 0.9735 0.1316 796 | vn -0.2987 0.8284 0.4738 797 | vn -0.0227 0.9670 0.2539 798 | vn 0.0112 0.9126 0.4087 799 | vn 0.0010 1.0000 -0.0077 800 | vn -0.0009 0.9997 -0.0241 801 | vn -0.0034 0.9993 -0.0360 802 | vn -0.0652 -0.9975 -0.0275 803 | vn -0.0860 -0.9958 0.0326 804 | vn -0.0701 -0.9956 -0.0629 805 | vn 0.0028 -0.9990 -0.0451 806 | vn 0.0114 -0.9979 -0.0639 807 | vn -0.0338 -0.9972 0.0664 808 | vn -0.0334 -0.9934 0.1098 809 | vn 0.0476 -0.9979 0.0447 810 | vn 0.0383 -0.9969 0.0683 811 | vn 0.0763 -0.9968 -0.0246 812 | vn 0.1017 -0.9948 0.0089 813 | vn -0.2313 -0.9667 0.1093 814 | vn -0.0200 -0.9995 -0.0261 815 | vn -0.0192 -0.9996 -0.0206 816 | vn -0.0122 -0.9999 -0.0056 817 | vn -0.1251 -0.9921 0.0029 818 | vn -0.0058 -1.0000 0.0046 819 | vn -0.0058 -1.0000 0.0063 820 | vn -0.1416 -0.9889 -0.0454 821 | vn 0.3765 -0.0186 0.9262 822 | vn 0.2747 0.1182 0.9542 823 | vn 0.3395 0.0010 0.9406 824 | vn 0.5827 -0.0077 0.8126 825 | vn 0.6021 0.0609 0.7961 826 | vn 0.9195 -0.0705 0.3866 827 | vn 0.9180 -0.0799 0.3885 828 | vn 0.9262 -0.0226 0.3764 829 | vn 0.9276 -0.0098 0.3735 830 | vn 0.9592 0.1312 -0.2504 831 | vn 0.9605 0.0627 -0.2711 832 | vn 0.9045 -0.2489 -0.3462 833 | vn 0.8874 -0.2947 -0.3546 834 | vn 0.6634 0.2578 -0.7025 835 | vn 0.3374 -0.0959 -0.9364 836 | vn 0.4139 -0.3319 -0.8477 837 | vn 0.0944 -0.0426 -0.9946 838 | vn 0.0981 0.0697 -0.9927 839 | vn -0.2495 -0.0770 0.9653 840 | vn -0.2262 -0.0171 0.9739 841 | vn -0.3784 -0.0252 0.9253 842 | vn -0.6497 -0.0117 0.7601 843 | vn -0.7111 0.1224 0.6923 844 | vn -0.9037 0.0244 0.4276 845 | vn -0.9883 -0.0242 0.1506 846 | vn -0.9105 0.4111 0.0436 847 | vn -0.8985 0.0097 -0.4388 848 | vn -0.9761 0.0218 -0.2164 849 | vn -0.7879 0.0422 -0.6143 850 | vn -0.5292 0.3367 -0.7789 851 | vn -0.5002 -0.0301 -0.8654 852 | vn -0.2371 0.2434 -0.9405 853 | vn 0.5192 0.0080 -0.8546 854 | vn 0.5227 0.0129 -0.8524 855 | vn 0.5228 0.0131 -0.8524 856 | vn 0.5269 0.0189 -0.8497 857 | vn 0.9841 -0.0047 0.1774 858 | vn 0.9874 0.0203 0.1568 859 | vn 0.9839 -0.0063 0.1788 860 | vn 0.9802 -0.0277 0.1963 861 | vn -0.6364 -0.0119 -0.7713 862 | vn -0.6553 -0.0347 -0.7545 863 | vn -0.6541 -0.0331 -0.7557 864 | vn -0.6713 -0.0545 -0.7392 865 | vn -0.9538 0.0653 0.2932 866 | vn -0.9191 -0.0215 0.3935 867 | vn -0.9231 -0.0133 0.3844 868 | vn -0.8749 -0.0966 0.4746 869 | vn 0.0734 0.1036 0.9919 870 | vn 0.1394 0.0448 0.9892 871 | vn 0.1360 0.0479 0.9896 872 | vn 0.2091 -0.0187 0.9777 873 | vn 0.2261 -0.0500 -0.9728 874 | vn 0.8041 0.3912 -0.4476 875 | vn 0.9811 -0.1914 -0.0289 876 | vn -0.5876 0.1472 -0.7956 877 | vn -0.6337 0.0820 -0.7692 878 | vn -0.6494 0.0580 -0.7582 879 | vn -0.6928 -0.0141 -0.7210 880 | vn -0.7683 0.0518 0.6380 881 | vn -0.8383 -0.0563 0.5423 882 | vn -0.7674 0.0530 0.6390 883 | vn -0.6912 0.1450 0.7080 884 | vn 0.1907 -0.1286 0.9732 885 | vn 0.5877 0.1560 0.7939 886 | vn -0.4010 -0.1110 -0.9093 887 | vn -0.3060 0.0260 -0.9517 888 | vn -0.2675 0.0778 -0.9604 889 | vn -0.1541 0.2206 -0.9631 890 | vn 0.8103 -0.1539 -0.5654 891 | vn 0.9146 -0.0016 -0.4045 892 | vn 0.9325 0.0376 -0.3592 893 | vn 0.9653 0.1618 -0.2051 894 | vn -0.9624 -0.0033 0.2715 895 | vn -0.9566 0.0229 0.2906 896 | vn -0.9636 -0.0091 0.2673 897 | vn -0.9682 -0.0360 0.2474 898 | vn 0.1746 0.1347 0.9754 899 | vn 0.5013 -0.2557 0.8267 900 | vn -0.6069 -0.1613 -0.7782 901 | vn -0.2522 0.2048 -0.9458 902 | vn 0.3762 -0.0976 -0.9214 903 | vn 0.8605 0.0873 -0.5019 904 | vn -0.9931 0.1094 0.0417 905 | vn -0.9855 0.0215 0.1683 906 | vn -0.9890 0.0398 0.1423 907 | vn -0.9587 -0.0577 0.2783 908 | vn -0.2520 0.0486 0.9665 909 | vn -0.1374 -0.0533 0.9891 910 | vn -0.1322 -0.0578 0.9895 911 | vn -0.0270 -0.1475 0.9887 912 | vn 0.8351 0.1894 0.5164 913 | vn 0.9813 -0.1780 -0.0729 914 | vn -0.0690 -0.0168 0.9975 915 | vn -0.0712 -0.0147 0.9974 916 | vn 0.0431 -0.1220 0.9916 917 | vn 0.9541 0.0923 0.2848 918 | vn 0.9677 0.0522 0.2467 919 | vn 0.9686 0.0492 0.2438 920 | vn 0.9798 0.0040 0.1999 921 | vn 0.2553 0.0350 -0.9662 922 | vn 0.3053 -0.0281 -0.9518 923 | vn 0.2373 0.0571 -0.9698 924 | vn 0.1889 0.1153 -0.9752 925 | vn -0.9953 -0.0885 -0.0391 926 | vn -0.9869 -0.1404 -0.0800 927 | vn -0.9973 -0.0691 -0.0240 928 | vn -0.9997 -0.0093 0.0228 929 | vn -0.1891 0.0981 0.9771 930 | vn -0.9433 0.0965 -0.3177 931 | vn -0.9638 0.0319 -0.2647 932 | vn -0.9678 0.0158 -0.2513 933 | vn -0.9797 -0.0514 -0.1938 934 | vn -0.2838 0.0361 0.9582 935 | vn -0.3062 0.0093 0.9519 936 | vn -0.2795 0.0412 0.9593 937 | vn -0.2583 0.0660 0.9638 938 | vn 0.9648 -0.0237 0.2621 939 | vn 0.9524 -0.0650 0.2978 940 | vn 0.9666 -0.0164 0.2556 941 | vn 0.9757 0.0265 0.2176 942 | vn 0.3533 -0.0065 -0.9355 943 | vn 0.3269 -0.0377 -0.9443 944 | vn 0.3217 -0.0439 -0.9458 945 | vn 0.2967 -0.0727 -0.9522 946 | vn -0.2355 0.1327 -0.9628 947 | vn -0.4234 -0.0303 -0.9055 948 | vn -0.4329 -0.0392 -0.9006 949 | vn -0.5816 -0.1891 -0.7912 950 | vn -0.9545 0.2271 0.1931 951 | vn -0.7580 -0.2287 0.6109 952 | vn 0.4169 0.1894 0.8890 953 | vn 0.5377 0.0618 0.8409 954 | vn 0.5667 0.0277 0.8235 955 | vn 0.6713 -0.1120 0.7327 956 | vn 0.9118 0.1019 -0.3977 957 | vn 0.8576 -0.0123 -0.5142 958 | vn 0.8537 -0.0188 -0.5204 959 | vn 0.7755 -0.1292 -0.6180 960 | vn 0.8906 0.0986 0.4440 961 | vn 0.9138 0.0561 0.4022 962 | vn 0.9110 0.0618 0.4078 963 | vn 0.9339 0.0120 0.3573 964 | vn 0.6523 0.0997 -0.7514 965 | vn 0.8087 -0.0801 -0.5827 966 | vn 0.6615 0.0909 -0.7444 967 | vn 0.4942 0.2324 -0.8377 968 | vn -0.3440 -0.2150 -0.9140 969 | vn -0.9136 0.2171 -0.3439 970 | vn -0.9791 0.0829 -0.1855 971 | vn -0.9819 0.0737 -0.1745 972 | vn -0.9958 -0.0890 0.0230 973 | vn -0.3145 0.1078 0.9431 974 | vn -0.2198 0.0117 0.9755 975 | vn -0.2086 0.0006 0.9780 976 | vn -0.1097 -0.0954 0.9894 977 | vn 0.6364 0.1326 0.7599 978 | vn 0.2577 -0.2051 0.9442 979 | vn -0.7272 0.0369 0.6854 980 | vn -0.7208 0.0452 0.6916 981 | vn -0.5784 0.2013 0.7905 982 | vn -0.8256 -0.1164 0.5521 983 | vn 0.8167 -0.1144 -0.5656 984 | vn 0.8276 -0.0920 -0.5537 985 | vn 0.8322 -0.0822 -0.5484 986 | vn 0.8415 -0.0613 -0.5367 987 | vn -0.7728 0.0671 -0.6311 988 | vn -0.7450 0.0137 -0.6669 989 | vn -0.7798 0.0819 -0.6206 990 | vn -0.7998 0.1277 -0.5865 991 | vn 0.3182 -0.0083 0.9480 992 | vn 0.3560 0.0350 0.9338 993 | vn 0.4809 0.1886 0.8563 994 | vn 0.1755 -0.1611 0.9712 995 | vn -0.8951 0.0017 0.4458 996 | vn -0.8964 -0.0007 0.4432 997 | vn -0.8284 0.1032 0.5506 998 | vn 0.9177 -0.0360 -0.3957 999 | vn 0.9440 -0.1650 -0.2858 1000 | vn 0.8916 0.0357 -0.4515 1001 | vn 0.8278 0.1586 -0.5381 1002 | vn -0.6089 -0.0334 -0.7925 1003 | vn -0.4735 -0.1826 -0.8617 1004 | vn -0.6327 -0.0033 -0.7744 1005 | vn -0.7336 0.1454 -0.6639 1006 | vn -0.9386 -0.0989 0.3306 1007 | vn 0.8991 0.0296 0.4368 1008 | vn 0.8909 0.0490 0.4515 1009 | vn 0.9275 -0.0540 0.3700 1010 | vn 0.8492 0.1316 0.5114 1011 | vn 0.1944 -0.0911 0.9767 1012 | vn -0.5722 0.0575 0.8181 1013 | vn -0.5758 0.0538 0.8158 1014 | vn -0.4926 0.1338 0.8599 1015 | vn 0.5279 0.0251 -0.8490 1016 | vn 0.5312 0.0203 -0.8470 1017 | vn 0.5269 0.0264 -0.8495 1018 | vn 0.5238 0.0309 -0.8513 1019 | vn -0.9139 -0.0071 -0.4060 1020 | vn -0.9106 0.0026 -0.4133 1021 | vn -0.9098 0.0048 -0.4149 1022 | vn -0.9064 0.0145 -0.4223 1023 | vn -0.6557 -0.0334 0.7542 1024 | vn 0.7407 0.0780 -0.6673 1025 | vn 0.6910 0.0602 -0.7203 1026 | vn 0.8331 0.1880 -0.5203 1027 | vn 0.8804 0.1485 -0.4505 1028 | vn 0.4562 0.1649 0.8745 1029 | vn 0.4543 0.1587 0.8766 1030 | vn 0.4514 0.1495 0.8797 1031 | vn 0.4582 0.1715 0.8722 1032 | vn 0.5210 -0.1024 -0.8474 1033 | vn -0.2919 0.1135 -0.9497 1034 | vn -0.5027 -0.0389 -0.8636 1035 | vn -0.4773 -0.0192 -0.8785 1036 | vn -0.6474 -0.1617 -0.7448 1037 | vn -0.9574 0.2236 0.1827 1038 | vn -0.7674 -0.2235 0.6009 1039 | vn 0.2768 0.0299 0.9605 1040 | vn 0.3881 0.3300 0.8605 1041 | vn 0.2880 -0.0236 0.9573 1042 | vn 0.3204 -0.0350 0.9466 1043 | vn 0.2851 0.0151 -0.9584 1044 | vn 0.2791 0.0551 -0.9587 1045 | vn 0.5141 0.2917 -0.8066 1046 | vn 0.5024 -0.0190 -0.8644 1047 | vn 0.7324 -0.0307 -0.6801 1048 | vn 0.8635 0.0503 -0.5018 1049 | vn 0.9815 -0.0115 0.1911 1050 | vn 0.9847 -0.0029 0.1742 1051 | vn 0.9834 -0.0064 0.1811 1052 | vn 0.9803 -0.0144 0.1969 1053 | vn 0.4058 -0.0309 0.9134 1054 | vn 0.5715 0.2570 0.7793 1055 | vn -0.1083 -0.6293 -0.7696 1056 | vn -0.4430 -0.8759 -0.1912 1057 | vn -0.3918 -0.9181 0.0594 1058 | vn -0.6235 -0.7129 -0.3209 1059 | vn -0.6203 -0.7376 0.2668 1060 | vn -0.4795 -0.8340 0.2730 1061 | vn -0.6082 -0.7193 -0.3359 1062 | vn -0.6619 -0.5771 -0.4785 1063 | vn -0.6639 -0.6799 0.3113 1064 | vn -0.4806 -0.7989 0.3616 1065 | vn -0.0020 0.9998 0.0186 1066 | vn -0.0062 0.9999 0.0081 1067 | vn 0.0018 1.0000 -0.0003 1068 | vn -0.0391 0.9874 0.1535 1069 | vn -0.0149 0.9996 0.0250 1070 | vn -0.7957 0.5853 -0.1557 1071 | vn -0.7720 0.6199 -0.1402 1072 | vn -0.6918 0.6260 -0.3599 1073 | vn -0.8705 0.4746 0.1306 1074 | vn -0.8440 0.5342 0.0483 1075 | vn -0.7508 0.6496 0.1197 1076 | vn -0.2695 0.1380 -0.9531 1077 | vn -0.2883 -0.2169 -0.9327 1078 | vn -0.2882 -0.2063 -0.9351 1079 | vn -0.2668 0.1627 -0.9499 1080 | vn -0.1335 0.8776 -0.4604 1081 | vn -0.1374 0.8618 -0.4883 1082 | vn -0.1337 0.8766 -0.4622 1083 | vn -0.1377 0.8607 -0.4901 1084 | vn 0.8133 0.2981 -0.4997 1085 | vn 0.7077 0.4643 -0.5324 1086 | vn 0.7935 0.5737 -0.2031 1087 | vn 0.6271 0.5952 -0.5024 1088 | vn 0.5924 0.7833 -0.1886 1089 | vn -0.0739 0.9522 0.2965 1090 | vn -0.2464 0.4998 0.8304 1091 | vn -0.2543 0.4729 0.8436 1092 | vn -0.2472 0.4969 0.8319 1093 | vn -0.2547 0.4714 0.8443 1094 | vn 0.8162 0.5762 -0.0416 1095 | vn 0.9304 0.3551 0.0904 1096 | vn 0.7583 0.6343 -0.1504 1097 | vn 0.7807 0.6095 -0.1378 1098 | vn 0.7696 0.6366 0.0496 1099 | vn 0.6274 0.5432 0.5579 1100 | vn 0.6307 0.5668 0.5301 1101 | vn 0.6310 0.5696 0.5267 1102 | vn 0.6336 0.5965 0.4926 1103 | vn 0.3694 0.6031 0.7070 1104 | vn 0.5173 0.8557 0.0127 1105 | vn 0.6573 0.7416 0.1344 1106 | vn 0.5757 0.8154 0.0610 1107 | vn 0.7212 0.6636 0.1989 1108 | vn 0.6895 0.5475 -0.4743 1109 | vn 0.2418 0.4974 -0.8331 1110 | vn 0.1443 0.8604 0.4888 1111 | vn 0.2844 0.2937 0.9126 1112 | vn 0.2742 0.3706 0.8874 1113 | vn -0.6137 0.7879 0.0502 1114 | vn -0.8169 0.5474 0.1816 1115 | vn -0.0319 0.8553 0.5172 1116 | vn -0.0883 0.5930 -0.8004 1117 | vn -0.2835 0.5482 -0.7869 1118 | vn -0.5806 0.4723 -0.6632 1119 | vn -0.2265 0.1397 0.9639 1120 | vn 0.0128 0.7440 -0.6680 1121 | vn -0.5091 0.7918 -0.3375 1122 | vn -0.5152 0.8126 -0.2725 1123 | vn -0.5203 0.8018 -0.2940 1124 | vn -0.0012 0.7865 -0.6176 1125 | vn 0.0353 0.7832 -0.6208 1126 | vn -0.3922 0.6711 0.6291 1127 | vn -0.3239 0.7305 0.6012 1128 | vn -0.0092 0.8108 0.5852 1129 | vn 0.0348 0.7928 0.6085 1130 | vn -0.4827 0.8385 -0.2530 1131 | vn -0.4943 0.8326 -0.2498 1132 | vn -0.7541 0.6549 -0.0488 1133 | vn -0.7305 0.6820 -0.0358 1134 | vn -0.4439 0.8577 0.2597 1135 | vn -0.4407 0.8581 0.2636 1136 | vn -0.3098 0.8088 -0.4998 1137 | vn -0.1296 0.9910 -0.0349 1138 | vn -0.0569 0.9984 -0.0054 1139 | vn -0.0485 0.9988 -0.0111 1140 | vn -0.3962 0.8819 0.2556 1141 | vn -0.2483 0.8282 0.5024 1142 | vn -0.0059 1.0000 0.0037 1143 | vn 0.0020 1.0000 -0.0088 1144 | vn 0.0482 0.9988 0.0085 1145 | vn -0.0409 0.9987 -0.0318 1146 | vn 0.3619 -0.9322 0.0012 1147 | vn 0.4855 -0.8737 -0.0304 1148 | vn 0.0899 -0.9913 0.0958 1149 | vn 0.0064 -0.8774 0.4797 1150 | vn -0.0030 -0.8278 0.5610 1151 | vn -0.0984 -0.9949 0.0232 1152 | vn -0.1278 -0.9917 0.0147 1153 | vn -0.2213 -0.9733 -0.0606 1154 | vn -0.0566 -0.9939 -0.0943 1155 | vn 0.0087 -0.9948 -0.1015 1156 | vn -0.1429 -0.0641 0.9877 1157 | vn -0.1871 -0.0198 0.9821 1158 | vn -0.0053 -0.1971 0.9804 1159 | vn 0.6643 0.2133 0.7164 1160 | vn 0.9721 -0.2230 -0.0727 1161 | vn 0.8616 0.1271 -0.4913 1162 | vn 0.0746 -0.0490 -0.9960 1163 | vn 0.1806 -0.1494 -0.9721 1164 | vn 0.0562 -0.0316 -0.9979 1165 | vn -0.0677 0.0852 -0.9941 1166 | vn -0.9890 -0.0640 -0.1330 1167 | vn -0.9865 -0.0789 -0.1436 1168 | vn -0.9901 -0.0571 -0.1282 1169 | vn -0.9925 -0.0398 -0.1160 1170 | vn -0.3483 0.1494 0.9254 1171 | vn -0.9026 0.4195 -0.0968 1172 | vn -0.8963 0.4350 -0.0862 1173 | vn -0.8997 0.4267 -0.0919 1174 | vn -0.8905 0.4484 -0.0769 1175 | vn 0.3009 0.5111 -0.8051 1176 | vn 0.7245 -0.0662 0.6861 1177 | vn 0.6259 0.7780 0.0540 1178 | vn 0.0956 0.9948 0.0350 1179 | vn -0.0067 0.9967 -0.0804 1180 | vn 0.0814 0.9961 -0.0328 1181 | vn -0.0509 0.9962 -0.0710 1182 | vn 0.0647 0.9918 0.1101 1183 | vn 0.0451 0.9985 -0.0302 1184 | vn -0.1733 0.2805 0.9441 1185 | vn -0.0804 -0.9967 0.0131 1186 | vn -0.0946 -0.9955 0.0062 1187 | vn -0.1644 -0.9860 -0.0282 1188 | vn -0.1927 -0.9803 -0.0422 1189 | vn 0.0139 -0.9960 -0.0878 1190 | vn 0.4621 -0.8868 -0.0030 1191 | vn 0.5545 -0.8321 -0.0143 1192 | vn 0.1098 -0.9933 0.0356 1193 | vn 0.0760 -0.9963 0.0390 1194 | vn -0.8009 0.2263 0.5544 1195 | vn -0.1723 -0.2924 0.9406 1196 | vn 0.2918 0.1636 0.9424 1197 | vn 0.9968 -0.0789 -0.0129 1198 | vn 0.9970 -0.0761 -0.0151 1199 | vn 0.9967 -0.0804 -0.0118 1200 | vn 0.9964 -0.0839 -0.0091 1201 | vn 0.2358 0.1008 -0.9666 1202 | vn 0.0710 -0.0305 -0.9970 1203 | vn 0.0725 -0.0294 -0.9969 1204 | vn -0.0669 -0.1375 -0.9882 1205 | vn -0.6813 0.1562 -0.7151 1206 | vn -0.9386 -0.2351 -0.2523 1207 | vn -0.8463 -0.0631 0.5289 1208 | vn 0.1918 0.6895 -0.6984 1209 | vn 0.5990 0.7560 0.2640 1210 | vn 0.0094 0.9995 0.0306 1211 | vn 0.0095 0.9995 0.0305 1212 | vn 0.1903 -0.9815 0.0232 1213 | vn 0.0758 -0.9930 0.0904 1214 | vn -0.0616 -0.9707 0.2321 1215 | vn -0.1143 -0.9910 0.0699 1216 | vn -0.1894 -0.9800 -0.0615 1217 | vn -0.0882 -0.9887 -0.1211 1218 | vn 0.0475 -0.9867 -0.1557 1219 | vn 0.1026 -0.9894 -0.1030 1220 | vn -0.0786 -0.1098 0.9908 1221 | vn -0.1629 -0.2195 0.9619 1222 | vn -0.0336 -0.0513 0.9981 1223 | vn 0.0684 0.0816 0.9943 1224 | vn 0.9305 0.0811 0.3571 1225 | vn 0.9819 -0.1065 0.1566 1226 | vn 0.9827 -0.1207 0.1406 1227 | vn 0.9687 -0.2482 -0.0095 1228 | vn 0.7530 0.1820 -0.6323 1229 | vn 0.0620 -0.1527 -0.9863 1230 | vn -0.4057 0.2833 -0.8690 1231 | vn -0.9998 -0.0171 0.0108 1232 | vn -0.9860 -0.1238 -0.1116 1233 | vn -0.9991 0.0104 0.0422 1234 | vn -0.9767 0.1260 0.1737 1235 | vn -0.6857 0.4324 0.5856 1236 | vn 0.1098 -0.6335 -0.7659 1237 | vn -0.3906 0.4844 -0.7828 1238 | vn 0.2976 0.7298 0.6155 1239 | vn 0.3000 0.7332 0.6102 1240 | vn 0.2995 0.7326 0.6113 1241 | vn 0.3021 0.7364 0.6054 1242 | vn -0.0757 0.9938 -0.0813 1243 | vn -0.0462 0.9949 0.0892 1244 | vn -0.0833 0.9931 -0.0828 1245 | vn -0.0644 0.9974 -0.0313 1246 | vn 0.0213 0.9986 -0.0474 1247 | vn 0.0190 0.9991 0.0377 1248 | vn 0.0087 0.9944 0.1056 1249 | vn 0.1414 -0.9895 0.0301 1250 | vn -0.0212 -0.9868 0.1606 1251 | vn -0.2299 -0.9559 0.1829 1252 | vn -0.1471 -0.9890 -0.0144 1253 | vn 0.0003 -0.9857 -0.1687 1254 | vn -0.0794 -0.9894 -0.1212 1255 | vn 0.1044 -0.9883 -0.1109 1256 | vn 0.1354 -0.9883 0.0706 1257 | vn -0.9800 0.1667 0.1085 1258 | vn -0.7263 -0.0179 0.6872 1259 | vn -0.7845 -0.0825 0.6147 1260 | vn -0.7338 -0.0257 0.6789 1261 | vn -0.6503 0.0545 0.7577 1262 | vn 0.4071 -0.0367 0.9127 1263 | vn 0.3986 -0.0473 0.9159 1264 | vn 0.4094 -0.0337 0.9118 1265 | vn 0.4184 -0.0221 0.9080 1266 | vn 0.9898 0.0427 -0.1360 1267 | vn 0.9800 -0.0252 -0.1976 1268 | vn 0.9763 -0.0414 -0.2122 1269 | vn 0.9581 -0.1036 -0.2671 1270 | vn 0.2575 0.1070 -0.9603 1271 | vn 0.1617 0.0341 -0.9862 1272 | vn 0.1725 0.0422 -0.9841 1273 | vn 0.0774 -0.0290 -0.9966 1274 | vn -0.5799 0.1027 -0.8082 1275 | vn -0.7311 -0.0272 -0.6818 1276 | vn -0.7094 -0.0063 -0.7048 1277 | vn -0.8178 -0.1237 -0.5620 1278 | vn -0.1590 0.4965 -0.8533 1279 | vn 0.8800 0.2694 0.3913 1280 | vn -0.5160 0.7407 0.4303 1281 | vn 0.0056 0.9989 0.0459 1282 | vn 0.0315 0.9994 0.0148 1283 | vn -0.0145 0.9992 0.0375 1284 | vn 0.0294 0.9995 0.0078 1285 | vn -0.0452 0.9988 0.0206 1286 | vn -0.0416 0.9991 0.0079 1287 | vn 0.1915 -0.9619 -0.1953 1288 | vn 0.1852 -0.9824 -0.0240 1289 | vn 0.1143 -0.9920 0.0544 1290 | vn 0.0989 -0.9937 0.0529 1291 | vn -0.2385 -0.8970 0.3722 1292 | vn -0.2618 -0.8703 0.4172 1293 | vn -0.1179 -0.9930 0.0084 1294 | vn -0.1582 -0.9773 -0.1409 1295 | vn -0.0072 -0.9876 -0.1569 1296 | vn 0.6404 0.2342 0.7315 1297 | vn 0.8878 -0.1986 0.4152 1298 | vn 0.8562 0.1113 -0.5045 1299 | vn 0.7461 -0.0155 -0.6657 1300 | vn 0.7504 -0.0114 -0.6609 1301 | vn 0.6167 -0.1258 -0.7770 1302 | vn 0.0272 0.2074 -0.9779 1303 | vn -0.6813 -0.2385 -0.6921 1304 | vn -0.9288 0.1764 -0.3259 1305 | vn -0.6605 -0.0600 0.7484 1306 | vn -0.5965 -0.1573 0.7870 1307 | vn -0.5716 -0.1913 0.7979 1308 | vn -0.5180 -0.2589 0.8153 1309 | vn 0.4637 0.8246 0.3241 1310 | vn -0.0191 0.5044 0.8633 1311 | vn -0.8542 0.0930 -0.5116 1312 | vn -0.8377 0.0144 -0.5459 1313 | vn -0.8472 0.0557 -0.5284 1314 | vn -0.8185 -0.0530 -0.5720 1315 | vn 0.9629 0.0689 -0.2609 1316 | vn 0.0624 0.9979 0.0173 1317 | vn -0.0655 0.9958 0.0638 1318 | vn -0.0186 0.9982 -0.0577 1319 | vn 0.0723 -0.9803 -0.1840 1320 | vn 0.1215 -0.9901 -0.0696 1321 | vn 0.2468 -0.9670 0.0640 1322 | vn 0.0851 -0.9941 0.0680 1323 | vn 0.0414 -0.9970 0.0647 1324 | vn -0.2462 -0.7946 0.5549 1325 | vn -0.0769 -0.9950 0.0638 1326 | vn -0.1316 -0.9912 0.0105 1327 | vn -0.2565 -0.9551 -0.1483 1328 | vn -0.0463 -0.9880 -0.1473 1329 | vn 0.9286 -0.2850 0.2377 1330 | vn 0.9361 0.2004 -0.2889 1331 | vn 0.3406 -0.0255 -0.9399 1332 | vn 0.3615 -0.0446 -0.9313 1333 | vn 0.3410 -0.0258 -0.9397 1334 | vn 0.3153 -0.0025 -0.9490 1335 | vn -0.8240 -0.0513 -0.5643 1336 | vn -0.8444 -0.0023 -0.5357 1337 | vn -0.8207 -0.0585 -0.5684 1338 | vn -0.7895 -0.1211 -0.6017 1339 | vn -0.9764 0.1937 0.0957 1340 | vn -0.3503 -0.1512 0.9244 1341 | vn -0.3918 -0.2125 0.8952 1342 | vn -0.3378 -0.1332 0.9318 1343 | vn -0.2729 -0.0426 0.9611 1344 | vn 0.4901 0.1994 0.8485 1345 | vn 0.3173 0.2125 0.9242 1346 | vn 0.5205 0.7814 0.3443 1347 | vn -0.7502 0.5562 -0.3575 1348 | vn -0.9075 0.3304 -0.2594 1349 | vn -0.8391 0.4463 -0.3110 1350 | vn -0.6128 0.6784 -0.4053 1351 | vn 0.7208 0.0061 -0.6931 1352 | vn 0.0824 0.9948 0.0601 1353 | vn 0.4588 0.8855 -0.0739 1354 | vn 0.2383 0.9696 0.0549 1355 | vn 0.0206 0.9993 0.0316 1356 | vn -0.0237 0.9989 0.0393 1357 | vn -0.0158 0.9990 -0.0424 1358 | vn -0.0504 -0.9875 -0.1494 1359 | vn -0.0907 -0.9874 -0.1297 1360 | vn 0.1066 -0.9905 -0.0874 1361 | vn 0.2342 -0.9722 0.0065 1362 | vn 0.0978 -0.9879 0.1203 1363 | vn 0.0005 -0.9752 0.2212 1364 | vn -0.0948 -0.9938 0.0585 1365 | vn -0.0996 -0.9948 0.0223 1366 | vn 0.9856 -0.0443 0.1629 1367 | vn 0.9840 -0.0543 0.1696 1368 | vn 0.9772 -0.0890 0.1927 1369 | vn 0.7116 0.1988 -0.6739 1370 | vn 0.1262 -0.2244 -0.9663 1371 | vn -0.3923 0.1766 -0.9027 1372 | vn -0.9410 -0.2344 -0.2441 1373 | vn -0.9439 0.2354 0.2316 1374 | vn -0.1481 -0.0738 0.9862 1375 | vn -0.1920 -0.1243 0.9735 1376 | vn -0.1295 -0.0526 0.9902 1377 | vn -0.0747 0.0097 0.9972 1378 | vn 0.9895 -0.0155 0.1435 1379 | vn 0.0912 0.3997 0.9121 1380 | vn -0.5940 0.0093 -0.8044 1381 | vn 0.5220 0.8506 -0.0632 1382 | vn 0.0538 0.9984 -0.0163 1383 | vn -0.0545 0.9983 -0.0190 1384 | vn -0.0883 -0.9898 -0.1120 1385 | vn -0.1030 -0.9876 -0.1185 1386 | vn -0.0420 -0.9895 -0.1381 1387 | vn 0.0942 -0.9784 -0.1840 1388 | vn 0.1422 -0.9879 -0.0616 1389 | vn 0.0879 -0.9835 0.1579 1390 | vn 0.1263 -0.9888 0.0800 1391 | vn -0.0010 -0.9922 0.1245 1392 | vn -0.0154 -0.9951 0.0979 1393 | vn -0.5095 -0.8321 0.2191 1394 | vn 0.3831 -0.0083 -0.9237 1395 | vn 0.3902 -0.0164 -0.9206 1396 | vn 0.3838 -0.0091 -0.9234 1397 | vn 0.3757 0.0000 -0.9267 1398 | vn -0.4154 0.1364 -0.8993 1399 | vn -0.5487 0.0093 -0.8360 1400 | vn -0.5452 0.0129 -0.8382 1401 | vn -0.6576 -0.1137 -0.7448 1402 | vn -0.9798 0.0964 0.1751 1403 | vn -0.9586 -0.0039 0.2847 1404 | vn -0.9525 -0.0219 0.3038 1405 | vn -0.9112 -0.1125 0.3963 1406 | vn -0.0756 0.2441 0.9668 1407 | vn 0.0724 0.0953 0.9928 1408 | vn 0.1183 0.0476 0.9918 1409 | vn 0.2672 -0.1126 0.9570 1410 | vn 0.9940 0.0817 0.0730 1411 | vn 0.9895 0.1426 0.0226 1412 | vn 0.9941 0.0693 0.0832 1413 | vn 0.9917 0.0141 0.1279 1414 | vn 0.6694 0.6722 0.3162 1415 | vn 0.3826 -0.4294 0.8181 1416 | vn -0.9316 -0.0630 0.3581 1417 | vn 0.0621 0.5791 -0.8129 1418 | vn -0.1000 0.7381 -0.6672 1419 | vn -0.0730 0.7149 -0.6954 1420 | vn -0.2346 0.8326 -0.5017 1421 | vn 0.0160 0.9984 0.0544 1422 | vn -0.0615 -0.9975 -0.0337 1423 | vn -0.0368 -0.9955 -0.0871 1424 | vn 0.0244 -0.9796 -0.1993 1425 | vn 0.1160 -0.9896 -0.0848 1426 | vn 0.1648 -0.9862 -0.0172 1427 | vn 0.0901 -0.9913 0.0960 1428 | vn 0.0138 -0.9782 0.2073 1429 | vn -0.0466 -0.9906 0.1284 1430 | vn -0.0532 -0.9939 0.0970 1431 | vn -0.5663 -0.8239 0.0217 1432 | vn 0.1468 -0.0186 -0.9890 1433 | vn 0.1869 -0.0726 -0.9797 1434 | vn 0.1250 0.0104 -0.9921 1435 | vn 0.0796 0.0701 -0.9944 1436 | vn -0.9975 0.0258 -0.0660 1437 | vn -0.9993 -0.0227 -0.0286 1438 | vn -0.9989 -0.0446 -0.0117 1439 | vn -0.9961 -0.0857 0.0202 1440 | vn -0.3834 0.1457 0.9120 1441 | vn 0.0027 -0.1949 0.9808 1442 | vn 0.6730 0.1831 0.7167 1443 | vn 0.9992 -0.0277 -0.0285 1444 | vn 0.9851 -0.1358 0.1051 1445 | vn 0.9992 -0.0236 -0.0335 1446 | vn 0.9765 0.1039 -0.1887 1447 | vn 0.9154 0.3986 0.0567 1448 | vn -0.0688 0.5637 0.8231 1449 | vn 0.2443 0.8371 0.4895 1450 | vn -0.8755 0.4511 0.1733 1451 | vn -0.1328 0.3984 -0.9076 1452 | vn -0.2437 0.6112 -0.7530 1453 | vn -0.1903 0.5103 -0.8387 1454 | vn -0.3070 0.7263 -0.6151 1455 | vn -0.0260 0.9996 0.0081 1456 | vn 0.0545 0.9982 0.0244 1457 | vn -0.1613 -0.9829 -0.0890 1458 | vn -0.2373 -0.9677 -0.0848 1459 | vn -0.0548 -0.9920 -0.1141 1460 | vn 0.0581 -0.9863 -0.1547 1461 | vn 0.1101 -0.9910 -0.0765 1462 | vn 0.1108 -0.9889 0.0994 1463 | vn 0.1488 -0.9824 0.1128 1464 | vn -0.0227 -0.9957 0.0902 1465 | vn -0.0413 -0.9971 0.0641 1466 | vn 0.1733 0.0082 -0.9848 1467 | vn 0.1898 0.0284 -0.9814 1468 | vn 0.1188 -0.0577 -0.9912 1469 | vn -0.9411 0.0406 -0.3357 1470 | vn -0.9553 0.1027 -0.2772 1471 | vn -0.9389 0.0331 -0.3426 1472 | vn -0.9206 -0.0199 -0.3901 1473 | vn -0.7855 -0.1753 0.5935 1474 | vn -0.4930 0.1741 0.8524 1475 | vn 0.4582 0.0351 0.8882 1476 | vn 0.3041 -0.0814 0.9492 1477 | vn 0.4523 0.0305 0.8913 1478 | vn 0.5891 0.1462 0.7947 1479 | vn 0.9963 -0.0515 -0.0694 1480 | vn 0.9850 -0.1647 0.0513 1481 | vn 0.9962 -0.0479 -0.0731 1482 | vn 0.9716 0.0923 -0.2179 1483 | vn 0.2484 0.1016 -0.9633 1484 | vn 0.8710 0.4255 -0.2456 1485 | vn 0.9625 -0.2582 0.0831 1486 | vn -0.2183 0.4841 0.8473 1487 | vn -0.8325 0.4182 -0.3634 1488 | vn -0.7663 0.6109 -0.1991 1489 | vn -0.8024 0.5300 -0.2742 1490 | vn -0.6759 0.7347 -0.0583 1491 | vn 0.0027 0.9994 -0.0334 1492 | vn -0.0328 0.9983 0.0485 1493 | vn -0.2458 -0.9587 0.1434 1494 | vn -0.0386 -0.9869 0.1569 1495 | vn -0.1308 -0.9905 -0.0433 1496 | vn -0.0158 -0.9888 -0.1484 1497 | vn 0.0306 -0.9876 -0.1541 1498 | vn 0.1219 -0.9907 0.0602 1499 | vn 0.1336 -0.9906 0.0291 1500 | vn -0.6164 0.0131 -0.7873 1501 | vn -0.5931 -0.0235 -0.8048 1502 | vn -0.6238 0.0252 -0.7812 1503 | vn -0.6452 0.0616 -0.7615 1504 | vn -0.9135 -0.0076 0.4069 1505 | vn -0.9039 0.0189 0.4272 1506 | vn -0.9158 -0.0147 0.4014 1507 | vn -0.9248 -0.0442 0.3779 1508 | vn 0.1410 0.0570 0.9884 1509 | vn 0.2940 -0.0814 0.9523 1510 | vn 0.3165 -0.1025 0.9430 1511 | vn 0.4198 -0.2020 0.8849 1512 | vn 0.8833 0.2515 0.3957 1513 | vn 0.7713 -0.0891 -0.6302 1514 | vn 0.7996 -0.1514 -0.5812 1515 | vn 0.7559 -0.0592 -0.6521 1516 | vn 0.7100 0.0191 -0.7039 1517 | vn 0.4870 0.4710 -0.7355 1518 | vn 0.4867 0.4714 -0.7355 1519 | vn 0.4869 0.4712 -0.7355 1520 | vn 0.4865 0.4716 -0.7354 1521 | vn -0.0174 -0.1439 0.9894 1522 | vn -0.3908 0.7059 0.5908 1523 | vn -0.8395 0.3891 -0.3793 1524 | vn -0.0218 0.9996 0.0202 1525 | vn -0.0022 0.9995 -0.0319 1526 | vn -0.1882 -0.9817 -0.0290 1527 | vn -0.2216 -0.9749 -0.0191 1528 | vn -0.1140 -0.9897 -0.0872 1529 | vn -0.0266 -0.9812 -0.1909 1530 | vn 0.0618 -0.9869 -0.1493 1531 | vn 0.1586 -0.9841 0.0806 1532 | vn 0.1489 -0.9887 -0.0145 1533 | vn 0.0298 -0.9940 0.1056 1534 | vn -0.0041 -0.9959 0.0904 1535 | vn -0.9807 0.0327 0.1929 1536 | vn -0.9948 -0.0969 0.0318 1537 | vn -0.9758 0.0494 0.2131 1538 | vn -0.9209 0.1666 0.3523 1539 | vn -0.3463 -0.2135 0.9135 1540 | vn 0.1376 0.1153 0.9837 1541 | vn 0.8552 0.0441 0.5164 1542 | vn 0.7845 -0.0679 0.6164 1543 | vn 0.8607 0.0547 0.5061 1544 | vn 0.9073 0.1713 0.3839 1545 | vn 0.7532 0.0227 -0.6574 1546 | vn 0.7904 -0.0328 -0.6117 1547 | vn 0.7458 0.0329 -0.6653 1548 | vn 0.7012 0.0901 -0.7072 1549 | vn -0.4694 0.0132 -0.8829 1550 | vn -0.3297 -0.1287 -0.9353 1551 | vn -0.4877 0.0333 -0.8724 1552 | vn -0.5990 0.1672 -0.7831 1553 | vn -0.8491 0.3870 -0.3597 1554 | vn 0.0390 0.7675 -0.6398 1555 | vn 0.6230 0.0679 -0.7793 1556 | vn -0.0494 0.3577 0.9325 1557 | vn -0.0538 0.3496 0.9353 1558 | vn -0.0511 0.3546 0.9336 1559 | vn -0.0571 0.3433 0.9375 1560 | vn 0.0049 -1.0000 -0.0051 1561 | vn 0.0145 -0.9999 -0.0059 1562 | vn 0.0184 -0.9996 -0.0216 1563 | vn -0.0005 -1.0000 -0.0009 1564 | vn 0.0010 -1.0000 -0.0015 1565 | vn 0.0002 -1.0000 -0.0049 1566 | vn 0.0198 -0.9996 -0.0212 1567 | vn -0.0036 -0.9997 -0.0256 1568 | vn -0.0138 -0.9999 -0.0059 1569 | vn -0.0149 -0.9999 -0.0022 1570 | vn -0.0061 -1.0000 0.0078 1571 | vn -0.3669 0.0239 0.9299 1572 | vn -0.3725 0.0132 0.9280 1573 | vn -0.3615 0.0343 0.9317 1574 | vn -0.3571 0.0427 0.9331 1575 | vn 0.7546 -0.0694 0.6525 1576 | vn 0.7148 -0.1533 0.6823 1577 | vn 0.7954 0.0400 0.6048 1578 | vn 0.8167 0.1175 0.5649 1579 | vn 0.8639 -0.0668 -0.4992 1580 | vn 0.8855 -0.1798 -0.4285 1581 | vn 0.8142 0.0776 -0.5754 1582 | vn 0.7638 0.1800 -0.6198 1583 | vn 0.0280 -0.2334 -0.9720 1584 | vn -0.3914 0.1892 -0.9005 1585 | vn -0.7125 -0.1737 -0.6799 1586 | vn -0.9905 0.1361 -0.0175 1587 | vn -0.9977 0.0440 0.0516 1588 | vn -0.9931 -0.0372 0.1115 1589 | vn -0.9713 -0.1443 0.1893 1590 | vn -0.3702 0.0299 0.9285 1591 | vn -0.0851 -0.0271 0.9960 1592 | vn -0.3117 0.0178 0.9500 1593 | vn -0.0371 -0.0363 0.9987 1594 | vn 0.5520 0.0410 0.8328 1595 | vn 0.9996 -0.0193 -0.0216 1596 | vn 0.9997 -0.0244 -0.0008 1597 | vn 0.9997 -0.0237 -0.0039 1598 | vn 0.9995 -0.0181 -0.0265 1599 | vn 0.6172 0.0359 -0.7860 1600 | vn -0.3117 0.0202 -0.9500 1601 | vn 0.0371 -0.0476 -0.9982 1602 | vn -0.0160 -0.0376 -0.9992 1603 | vn -0.3837 0.0349 -0.9228 1604 | vn -0.9930 0.0069 -0.1179 1605 | vn -0.9996 -0.0207 -0.0168 1606 | vn -0.9954 0.0007 -0.0955 1607 | vn -0.9997 -0.0255 0.0010 1608 | vn 0.0014 1.0000 -0.0012 1609 | vn 0.0003 0.9994 -0.0341 1610 | vn 0.0044 1.0000 -0.0073 1611 | vn 0.0053 1.0000 -0.0009 1612 | vn 0.0090 0.9999 -0.0064 1613 | vn 0.0104 0.9997 -0.0200 1614 | vn 0.5829 -0.7738 -0.2479 1615 | vn -0.5831 -0.7736 0.2479 1616 | vn -0.6051 -0.6796 0.4146 1617 | vn -0.6023 -0.7021 0.3799 1618 | vn 0.5178 -0.2137 -0.8284 1619 | vn 0.9284 -0.3187 0.1910 1620 | vn 0.2828 0.1856 0.9410 1621 | vn -0.5943 -0.4820 0.6438 1622 | vn -0.8731 0.1447 -0.4656 1623 | s 1 1624 | f 1/1/1 2/2/1 3/3/1 1625 | f 1/1/1 3/3/1 4/4/1 1626 | f 5/5/2 6/6/3 7/7/4 1627 | f 8/8/5 9/9/6 10/10/7 1628 | f 10/10/7 9/9/6 11/11/8 1629 | f 12/12/9 13/13/10 14/14/11 1630 | f 15/15/12 16/16/13 17/17/14 1631 | f 18/18/1 19/19/1 20/20/1 1632 | f 21/21/15 20/20/1 22/22/16 1633 | f 23/23/17 24/24/18 25/25/19 1634 | f 25/25/19 24/24/18 19/19/1 1635 | f 21/21/15 26/26/1 14/14/11 1636 | f 21/21/15 27/27/20 26/26/1 1637 | f 14/14/11 26/26/1 12/12/9 1638 | f 28/28/21 12/12/9 29/29/22 1639 | f 28/28/21 29/29/22 23/23/17 1640 | f 29/29/22 27/27/20 23/23/17 1641 | f 30/30/23 31/31/24 32/32/25 1642 | f 8/8/5 33/33/26 31/31/24 1643 | f 8/8/5 31/31/24 34/34/27 1644 | f 10/10/7 35/35/28 8/8/5 1645 | f 35/35/28 33/33/26 8/8/5 1646 | f 34/34/27 31/31/24 30/30/23 1647 | f 33/33/26 35/35/28 36/36/29 1648 | f 36/36/29 37/37/30 33/33/26 1649 | f 11/11/31 38/38/31 39/39/31 1650 | f 11/11/32 13/13/10 12/12/9 1651 | f 11/11/32 12/12/9 28/28/21 1652 | f 11/11/32 28/28/21 38/38/33 1653 | f 7/7/4 39/39/34 5/5/2 1654 | f 5/5/2 40/40/35 16/16/13 1655 | f 18/18/1 16/16/13 19/19/1 1656 | f 19/19/1 16/16/13 25/25/19 1657 | f 25/25/19 16/16/13 40/40/35 1658 | f 17/17/14 41/41/36 15/15/12 1659 | f 42/42/37 41/41/36 43/43/38 1660 | f 41/41/36 44/44/39 45/45/40 1661 | f 41/41/36 45/45/40 15/15/12 1662 | f 42/42/37 46/46/41 47/47/42 1663 | f 48/48/43 49/49/44 43/43/38 1664 | f 42/42/37 47/47/42 41/41/36 1665 | f 47/47/42 44/44/39 41/41/36 1666 | f 46/46/41 42/42/37 50/50/45 1667 | f 44/44/39 47/47/42 51/51/46 1668 | f 44/44/39 51/51/46 52/52/47 1669 | f 43/43/38 41/41/36 48/48/43 1670 | f 14/14/11 53/53/48 21/21/15 1671 | f 34/34/27 54/54/49 14/14/11 1672 | f 14/14/11 54/54/49 53/53/48 1673 | f 53/53/48 54/54/49 55/55/50 1674 | f 21/21/15 18/18/1 20/20/1 1675 | f 8/8/5 34/34/27 14/14/11 1676 | f 27/27/20 21/21/15 22/22/16 1677 | f 27/27/20 22/22/16 23/23/17 1678 | f 23/23/17 22/22/16 24/24/18 1679 | f 56/56/51 57/57/52 58/58/53 1680 | f 56/56/51 58/58/53 59/59/54 1681 | f 59/59/54 58/58/53 60/60/55 1682 | f 61/61/56 62/62/57 57/57/52 1683 | f 61/61/56 57/57/52 56/56/51 1684 | f 63/63/58 64/64/59 61/61/56 1685 | f 61/61/56 64/64/59 62/62/57 1686 | f 65/65/60 66/66/61 63/63/58 1687 | f 63/63/58 66/66/61 64/64/59 1688 | f 65/65/60 60/60/55 66/66/61 1689 | f 59/59/54 60/60/55 65/65/60 1690 | f 67/67/62 68/68/63 69/69/64 1691 | f 67/67/62 70/70/65 71/71/66 1692 | f 67/67/62 69/69/64 70/70/65 1693 | f 72/72/67 73/73/68 74/74/69 1694 | f 72/72/67 74/74/69 70/70/65 1695 | f 70/70/65 74/74/69 71/71/66 1696 | f 68/68/70 75/75/71 76/76/72 1697 | f 68/68/70 76/76/72 77/77/73 1698 | f 68/68/70 77/77/73 69/69/74 1699 | f 69/69/75 77/77/76 78/78/77 1700 | f 69/69/75 78/78/77 70/70/78 1701 | f 70/70/79 78/78/80 72/72/81 1702 | f 72/72/81 78/78/80 79/79/82 1703 | f 72/72/83 79/79/83 73/73/83 1704 | f 73/73/84 79/79/85 80/80/86 1705 | f 80/80/86 81/81/87 73/73/84 1706 | f 76/76/88 75/75/89 82/82/90 1707 | f 76/76/88 82/82/90 83/83/91 1708 | f 84/84/92 83/83/91 82/82/90 1709 | f 85/85/93 83/83/91 84/84/92 1710 | f 83/83/91 85/85/93 86/86/94 1711 | f 87/87/95 86/86/94 85/85/93 1712 | f 88/88/96 89/89/97 90/90/98 1713 | f 88/88/96 90/90/98 91/91/99 1714 | f 88/88/96 91/91/99 92/92/100 1715 | f 93/93/101 92/92/100 91/91/99 1716 | f 92/92/100 93/93/101 80/80/86 1717 | f 80/80/86 93/93/101 81/81/87 1718 | f 48/48/102 94/94/103 95/95/104 1719 | f 95/95/104 94/94/103 96/96/105 1720 | f 95/95/106 96/96/107 97/97/108 1721 | f 95/95/106 97/97/108 98/98/109 1722 | f 94/94/110 48/48/111 99/99/112 1723 | f 99/99/112 48/48/111 100/100/113 1724 | f 99/99/114 100/100/115 101/101/116 1725 | f 101/101/116 100/100/115 102/102/117 1726 | f 101/101/118 102/102/119 97/97/120 1727 | f 97/97/120 102/102/119 98/98/121 1728 | f 103/103/122 84/84/122 50/50/122 1729 | f 84/84/123 103/103/123 104/104/123 1730 | f 84/84/124 104/104/124 49/49/124 1731 | f 103/103/125 50/50/126 105/105/127 1732 | f 105/105/127 50/50/126 42/42/128 1733 | f 105/105/129 42/42/130 43/43/131 1734 | f 105/105/129 43/43/131 106/106/132 1735 | f 106/106/133 43/43/133 49/49/133 1736 | f 106/106/134 49/49/134 104/104/134 1737 | f 51/51/135 107/107/136 108/108/137 1738 | f 109/109/138 108/108/137 107/107/136 1739 | f 108/108/139 109/109/140 46/46/141 1740 | f 46/46/141 109/109/140 110/110/142 1741 | f 107/107/143 51/51/144 47/47/145 1742 | f 107/107/143 47/47/145 111/111/146 1743 | f 111/111/147 47/47/147 110/110/147 1744 | f 110/110/148 47/47/148 46/46/148 1745 | f 15/15/149 112/112/149 113/113/149 1746 | f 113/113/150 112/112/150 114/114/150 1747 | f 114/114/151 52/52/151 113/113/151 1748 | f 115/115/152 52/52/152 114/114/152 1749 | f 112/112/153 15/15/154 116/116/155 1750 | f 116/116/155 15/15/154 45/45/156 1751 | f 116/116/157 45/45/158 117/117/159 1752 | f 117/117/159 45/45/158 44/44/160 1753 | f 117/117/161 44/44/161 115/115/161 1754 | f 115/115/162 44/44/162 52/52/162 1755 | f 118/118/163 18/18/164 41/41/165 1756 | f 118/118/166 41/41/167 119/119/168 1757 | f 119/119/168 41/41/167 17/17/169 1758 | f 119/119/170 17/17/171 16/16/172 1759 | f 119/119/170 16/16/172 120/120/173 1760 | f 120/120/174 16/16/175 18/18/176 1761 | f 120/120/174 18/18/176 121/121/177 1762 | f 121/121/178 18/18/164 118/118/163 1763 | f 122/122/179 19/19/180 123/123/181 1764 | f 123/123/181 19/19/180 24/24/182 1765 | f 123/123/183 24/24/184 22/22/185 1766 | f 123/123/183 22/22/185 124/124/186 1767 | f 124/124/187 22/22/188 20/20/189 1768 | f 124/124/187 20/20/189 125/125/190 1769 | f 125/125/191 20/20/192 122/122/193 1770 | f 122/122/193 20/20/192 19/19/194 1771 | f 126/126/195 27/27/196 127/127/197 1772 | f 127/127/197 27/27/196 29/29/198 1773 | f 127/127/199 29/29/199 128/128/199 1774 | f 128/128/200 29/29/200 12/12/200 1775 | f 128/128/201 12/12/202 129/129/203 1776 | f 129/129/203 12/12/202 26/26/204 1777 | f 129/129/205 26/26/206 126/126/207 1778 | f 126/126/207 26/26/206 27/27/208 1779 | f 4/4/209 9/9/210 1/1/211 1780 | f 9/9/210 8/8/212 1/1/211 1781 | f 1/1/213 8/8/214 14/14/215 1782 | f 1/1/213 14/14/215 2/2/216 1783 | f 2/2/217 14/14/217 13/13/217 1784 | f 2/2/218 13/13/219 3/3/220 1785 | f 13/13/219 11/11/221 3/3/220 1786 | f 3/3/222 11/11/223 4/4/224 1787 | f 4/4/224 11/11/223 9/9/225 1788 | f 36/36/226 130/130/226 131/131/226 1789 | f 36/36/227 131/131/227 132/132/227 1790 | f 133/133/228 132/132/229 131/131/230 1791 | f 133/133/228 10/10/231 132/132/229 1792 | f 130/130/232 36/36/233 134/134/234 1793 | f 134/134/234 36/36/233 35/35/235 1794 | f 134/134/236 35/35/237 10/10/238 1795 | f 134/134/236 10/10/238 133/133/239 1796 | f 135/135/240 32/32/241 136/136/242 1797 | f 37/37/243 32/32/241 135/135/240 1798 | f 137/137/244 37/37/245 135/135/246 1799 | f 136/136/247 32/32/248 31/31/249 1800 | f 136/136/247 31/31/249 138/138/250 1801 | f 138/138/251 31/31/252 33/33/253 1802 | f 138/138/251 33/33/253 137/137/254 1803 | f 137/137/244 33/33/255 37/37/245 1804 | f 139/139/256 140/140/257 55/55/258 1805 | f 141/141/259 140/140/257 139/139/256 1806 | f 141/141/260 30/30/260 140/140/260 1807 | f 142/142/261 30/30/262 141/141/263 1808 | f 139/139/264 55/55/265 54/54/266 1809 | f 139/139/264 54/54/266 143/143/267 1810 | f 143/143/268 54/54/269 142/142/270 1811 | f 142/142/270 54/54/269 34/34/271 1812 | f 142/142/261 34/34/272 30/30/262 1813 | f 134/134/1 133/133/1 130/130/1 1814 | f 144/144/273 145/145/274 146/146/275 1815 | f 144/144/273 146/146/275 89/89/276 1816 | f 147/147/277 89/89/278 146/146/279 1817 | f 147/147/277 53/53/280 89/89/278 1818 | f 145/145/274 144/144/273 148/148/281 1819 | f 145/145/282 148/148/283 149/149/284 1820 | f 149/149/284 148/148/283 21/21/285 1821 | f 149/149/286 21/21/286 147/147/286 1822 | f 147/147/287 21/21/287 53/53/287 1823 | f 67/67/288 150/150/289 75/75/71 1824 | f 67/67/288 75/75/71 68/68/70 1825 | f 150/150/289 67/67/288 151/151/290 1826 | f 60/60/291 150/150/289 151/151/290 1827 | f 152/152/292 74/74/293 153/153/294 1828 | f 73/73/84 81/81/87 74/74/293 1829 | f 74/74/293 81/81/87 153/153/294 1830 | f 152/152/292 153/153/294 62/62/295 1831 | f 62/62/295 153/153/294 57/57/296 1832 | f 57/57/296 153/153/294 154/154/297 1833 | f 57/57/298 154/154/299 155/155/300 1834 | f 57/57/298 155/155/300 58/58/301 1835 | f 58/58/302 155/155/303 150/150/289 1836 | f 58/58/302 150/150/289 60/60/291 1837 | f 152/152/304 62/62/304 64/64/304 1838 | f 74/74/69 152/152/305 156/156/306 1839 | f 74/74/69 156/156/306 71/71/66 1840 | f 71/71/66 156/156/306 67/67/62 1841 | f 152/152/305 157/157/307 156/156/306 1842 | f 156/156/306 157/157/308 151/151/309 1843 | f 156/156/306 151/151/309 67/67/62 1844 | f 152/152/305 64/64/310 157/157/307 1845 | f 64/64/310 66/66/311 157/157/307 1846 | f 157/157/308 66/66/312 151/151/309 1847 | f 151/151/309 66/66/312 60/60/313 1848 | f 158/158/314 159/159/315 160/160/316 1849 | f 160/160/316 159/159/315 161/161/317 1850 | f 161/161/317 159/159/315 162/162/318 1851 | f 5/5/319 159/159/320 163/163/321 1852 | f 5/5/319 39/39/322 164/164/323 1853 | f 5/5/319 164/164/323 159/159/320 1854 | f 164/164/323 162/162/324 159/159/320 1855 | f 40/40/325 5/5/326 163/163/327 1856 | f 165/165/328 40/40/325 163/163/327 1857 | f 165/165/329 163/163/330 158/158/331 1858 | f 158/158/331 163/163/330 159/159/332 1859 | f 39/39/322 162/162/324 164/164/323 1860 | f 25/25/333 40/40/334 166/166/335 1861 | f 40/40/334 165/165/336 166/166/335 1862 | f 166/166/335 165/165/336 158/158/337 1863 | f 161/161/317 162/162/318 167/167/338 1864 | f 167/167/339 162/162/340 38/38/341 1865 | f 38/38/341 162/162/340 39/39/342 1866 | f 23/23/343 25/25/344 166/166/335 1867 | f 28/28/345 23/23/343 161/161/346 1868 | f 23/23/343 160/160/347 161/161/346 1869 | f 23/23/343 166/166/335 160/160/347 1870 | f 166/166/335 158/158/337 160/160/347 1871 | f 38/38/348 28/28/349 167/167/350 1872 | f 28/28/349 161/161/351 167/167/350 1873 | f 104/104/1 103/103/1 105/105/1 1874 | f 107/107/1 111/111/1 110/110/1 1875 | f 110/110/1 109/109/1 107/107/1 1876 | f 114/114/1 112/112/1 115/115/1 1877 | f 115/115/1 112/112/1 116/116/1 1878 | f 117/117/1 115/115/1 116/116/1 1879 | f 120/120/1 118/118/1 119/119/1 1880 | f 120/120/1 121/121/1 118/118/1 1881 | f 125/125/1 122/122/1 123/123/1 1882 | f 123/123/1 124/124/1 125/125/1 1883 | f 129/129/1 127/127/1 128/128/1 1884 | f 126/126/1 127/127/1 129/129/1 1885 | f 56/56/51 65/65/60 61/61/56 1886 | f 61/61/56 65/65/60 63/63/58 1887 | f 59/59/54 65/65/60 56/56/51 1888 | f 150/150/289 155/155/303 6/6/352 1889 | f 7/7/353 6/6/354 154/154/355 1890 | f 154/154/355 6/6/354 155/155/356 1891 | f 154/154/357 153/153/357 7/7/357 1892 | f 10/10/7 11/11/8 7/7/4 1893 | f 11/11/8 39/39/34 7/7/4 1894 | f 7/7/4 132/132/358 10/10/7 1895 | f 132/132/358 7/7/4 153/153/294 1896 | f 132/132/358 153/153/294 81/81/87 1897 | f 6/6/3 15/15/12 113/113/359 1898 | f 6/6/3 5/5/2 16/16/13 1899 | f 6/6/3 16/16/13 15/15/12 1900 | f 113/113/360 75/75/361 6/6/352 1901 | f 6/6/352 75/75/361 150/150/289 1902 | f 87/87/95 89/89/97 86/86/94 1903 | f 88/88/96 86/86/94 89/89/97 1904 | f 98/98/362 87/87/95 95/95/363 1905 | f 52/52/47 51/51/46 108/108/364 1906 | f 37/37/365 93/93/101 32/32/366 1907 | f 91/91/99 90/90/98 140/140/367 1908 | f 87/87/95 85/85/93 95/95/363 1909 | f 82/82/90 75/75/89 108/108/368 1910 | f 81/81/369 93/93/101 37/37/365 1911 | f 93/93/101 91/91/99 32/32/366 1912 | f 32/32/366 91/91/99 140/140/367 1913 | f 140/140/370 90/90/371 55/55/372 1914 | f 132/132/373 81/81/369 36/36/374 1915 | f 84/84/375 82/82/376 50/50/45 1916 | f 52/52/47 75/75/377 113/113/378 1917 | f 90/90/371 89/89/379 53/53/380 1918 | f 89/89/381 87/87/95 144/144/382 1919 | f 144/144/382 87/87/95 98/98/362 1920 | f 95/95/383 85/85/384 48/48/43 1921 | f 81/81/369 37/37/365 36/36/374 1922 | f 32/32/366 140/140/367 30/30/385 1923 | f 55/55/372 90/90/371 53/53/380 1924 | f 144/144/386 98/98/387 148/148/388 1925 | f 48/48/43 85/85/384 84/84/389 1926 | f 48/48/43 84/84/389 49/49/44 1927 | f 82/82/376 108/108/390 50/50/45 1928 | f 50/50/45 108/108/390 46/46/41 1929 | f 108/108/364 75/75/377 52/52/47 1930 | f 130/130/1 133/133/1 131/131/1 1931 | f 138/138/1 137/137/1 136/136/1 1932 | f 136/136/1 137/137/1 135/135/1 1933 | f 143/143/1 142/142/1 139/139/1 1934 | f 141/141/1 139/139/1 142/142/1 1935 | f 146/146/1 149/149/1 147/147/1 1936 | f 145/145/1 149/149/1 146/146/1 1937 | f 96/96/1 94/94/1 99/99/1 1938 | f 96/96/1 99/99/1 97/97/1 1939 | f 99/99/1 101/101/1 97/97/1 1940 | f 104/104/1 105/105/1 106/106/1 1941 | f 21/21/15 102/102/391 100/100/392 1942 | f 41/41/36 100/100/392 48/48/43 1943 | f 18/18/1 21/21/15 41/41/36 1944 | f 102/102/391 148/148/388 98/98/387 1945 | f 148/148/388 102/102/391 21/21/15 1946 | f 41/41/36 21/21/15 100/100/392 1947 | f 168/168/393 169/169/393 170/170/393 1948 | f 170/170/394 171/171/394 172/172/394 1949 | f 173/173/395 174/174/396 175/175/397 1950 | f 173/173/395 175/175/397 176/176/398 1951 | f 176/176/398 175/175/397 177/177/399 1952 | f 176/176/400 177/177/401 178/178/402 1953 | f 178/178/402 177/177/401 179/179/403 1954 | f 178/178/402 179/179/403 174/174/404 1955 | f 168/168/405 177/177/406 175/175/407 1956 | f 168/168/408 175/175/408 169/169/408 1957 | f 169/169/409 175/175/409 174/174/409 1958 | f 169/169/410 174/174/410 170/170/410 1959 | f 170/170/411 174/174/412 179/179/413 1960 | f 170/170/411 179/179/413 171/171/414 1961 | f 171/171/415 179/179/416 177/177/417 1962 | f 171/171/415 177/177/417 172/172/418 1963 | f 172/172/419 177/177/406 168/168/405 1964 | f 168/168/420 170/170/421 180/180/422 1965 | f 180/180/422 170/170/421 181/181/423 1966 | f 172/172/424 168/168/424 180/180/424 1967 | f 170/170/425 172/172/425 181/181/425 1968 | f 181/181/426 172/172/426 180/180/426 1969 | f 182/182/427 183/183/428 184/184/429 1970 | f 184/184/429 183/183/428 185/185/430 1971 | f 184/184/429 186/186/431 182/182/427 1972 | f 185/185/432 187/187/432 186/186/432 1973 | f 188/188/433 189/189/433 190/190/433 1974 | f 188/188/434 190/190/435 191/191/436 1975 | f 191/191/436 190/190/435 192/192/437 1976 | f 192/192/438 193/193/438 194/194/438 1977 | f 194/194/439 193/193/440 189/189/441 1978 | f 194/194/439 189/189/441 188/188/442 1979 | f 182/182/443 190/190/443 183/183/443 1980 | f 183/183/444 190/190/444 189/189/444 1981 | f 183/183/445 189/189/445 185/185/445 1982 | f 185/185/446 189/189/447 193/193/448 1983 | f 185/185/446 193/193/448 187/187/449 1984 | f 187/187/450 193/193/451 186/186/452 1985 | f 186/186/452 193/193/451 192/192/453 1986 | f 186/186/454 192/192/454 182/182/454 1987 | f 182/182/455 192/192/455 190/190/455 1988 | f 185/185/456 186/186/456 195/195/456 1989 | f 184/184/457 185/185/457 195/195/457 1990 | f 186/186/458 184/184/458 195/195/458 1991 | f 196/196/459 197/197/460 198/198/460 1992 | f 198/198/460 197/197/460 199/199/460 1993 | f 200/200/461 201/201/462 202/202/463 1994 | f 202/202/463 201/201/462 203/203/464 1995 | f 202/202/463 203/203/464 204/204/465 1996 | f 204/204/465 203/203/464 205/205/466 1997 | f 204/204/465 205/205/466 206/206/467 1998 | f 206/206/467 205/205/466 207/207/468 1999 | f 206/206/467 207/207/468 200/200/461 2000 | f 200/200/461 207/207/468 201/201/462 2001 | f 196/196/469 203/203/470 201/201/471 2002 | f 196/196/469 201/201/471 197/197/472 2003 | f 197/197/473 201/201/474 199/199/475 2004 | f 199/199/475 201/201/474 207/207/476 2005 | f 199/199/477 207/207/477 208/208/477 2006 | f 208/208/478 207/207/478 205/205/478 2007 | f 208/208/479 205/205/479 198/198/479 2008 | f 198/198/480 205/205/481 203/203/482 2009 | f 198/198/480 203/203/482 196/196/483 2010 | f 199/199/484 208/208/484 209/209/484 2011 | f 198/198/485 199/199/485 210/210/485 2012 | f 210/210/486 199/199/486 209/209/486 2013 | f 208/208/487 198/198/488 209/209/489 2014 | f 209/209/489 198/198/488 210/210/490 2015 | f 211/211/491 212/212/492 213/213/493 2016 | f 214/214/494 215/215/494 216/216/494 2017 | f 216/216/495 217/217/496 211/211/491 2018 | f 216/216/495 211/211/491 213/213/493 2019 | f 213/213/493 212/212/492 214/214/497 2020 | f 218/218/498 219/219/499 220/220/500 2021 | f 220/220/500 219/219/499 221/221/501 2022 | f 220/220/500 221/221/501 222/222/502 2023 | f 222/222/502 221/221/501 223/223/503 2024 | f 222/222/502 223/223/503 224/224/504 2025 | f 222/222/502 224/224/504 218/218/498 2026 | f 218/218/498 224/224/504 225/225/505 2027 | f 218/218/498 225/225/505 219/219/499 2028 | f 215/215/506 221/221/506 216/216/506 2029 | f 216/216/507 221/221/508 219/219/509 2030 | f 216/216/507 219/219/509 217/217/510 2031 | f 217/217/511 219/219/512 225/225/513 2032 | f 217/217/511 225/225/513 211/211/514 2033 | f 211/211/515 225/225/516 212/212/517 2034 | f 212/212/517 225/225/516 224/224/518 2035 | f 212/212/519 224/224/520 214/214/521 2036 | f 214/214/521 224/224/520 223/223/522 2037 | f 214/214/523 223/223/524 215/215/525 2038 | f 215/215/525 223/223/524 221/221/526 2039 | f 216/216/527 213/213/527 226/226/527 2040 | f 214/214/528 216/216/528 226/226/528 2041 | f 213/213/529 214/214/529 226/226/529 2042 | f 227/227/530 228/228/531 229/229/532 2043 | f 229/229/532 228/228/531 230/230/533 2044 | f 229/229/532 231/231/534 227/227/530 2045 | f 229/229/532 232/232/535 231/231/534 2046 | f 233/233/536 234/234/537 235/235/538 2047 | f 233/233/536 235/235/538 236/236/539 2048 | f 236/236/540 235/235/541 237/237/542 2049 | f 236/236/540 237/237/542 238/238/543 2050 | f 238/238/543 237/237/542 239/239/544 2051 | f 238/238/543 239/239/544 233/233/536 2052 | f 233/233/536 239/239/544 234/234/537 2053 | f 227/227/545 235/235/545 228/228/545 2054 | f 228/228/546 235/235/546 234/234/546 2055 | f 228/228/547 234/234/548 230/230/549 2056 | f 230/230/549 234/234/548 239/239/550 2057 | f 230/230/551 239/239/551 232/232/551 2058 | f 232/232/552 239/239/552 237/237/552 2059 | f 232/232/553 237/237/553 231/231/553 2060 | f 231/231/554 237/237/555 227/227/556 2061 | f 227/227/556 237/237/555 235/235/557 2062 | f 240/240/558 232/232/558 241/241/558 2063 | f 230/230/559 232/232/559 240/240/559 2064 | f 229/229/560 230/230/561 241/241/562 2065 | f 241/241/562 230/230/561 240/240/563 2066 | f 232/232/564 229/229/564 241/241/564 2067 | f 242/242/565 243/243/565 244/244/565 2068 | f 245/245/566 246/246/566 244/244/566 2069 | f 243/243/567 247/247/567 245/245/567 2070 | f 248/248/568 249/249/569 250/250/570 2071 | f 250/250/570 249/249/569 251/251/571 2072 | f 250/250/570 251/251/571 252/252/572 2073 | f 252/252/573 251/251/573 253/253/573 2074 | f 252/252/574 253/253/575 254/254/576 2075 | f 254/254/576 253/253/575 255/255/577 2076 | f 254/254/576 255/255/577 248/248/568 2077 | f 248/248/568 255/255/577 249/249/569 2078 | f 242/242/578 251/251/578 249/249/578 2079 | f 242/242/579 249/249/579 243/243/579 2080 | f 243/243/580 249/249/581 255/255/582 2081 | f 243/243/580 255/255/582 247/247/583 2082 | f 247/247/584 255/255/585 253/253/586 2083 | f 247/247/584 253/253/586 245/245/587 2084 | f 245/245/588 253/253/588 246/246/588 2085 | f 246/246/589 253/253/590 251/251/591 2086 | f 246/246/589 251/251/591 244/244/592 2087 | f 244/244/593 251/251/593 242/242/593 2088 | f 243/243/594 245/245/594 256/256/594 2089 | f 256/256/595 245/245/595 257/257/595 2090 | f 244/244/596 243/243/597 256/256/598 2091 | f 257/257/599 244/244/596 256/256/598 2092 | f 245/245/600 244/244/600 257/257/600 2093 | f 258/258/601 259/259/602 260/260/603 2094 | f 259/259/604 261/261/604 262/262/604 2095 | f 262/262/605 263/263/606 258/258/601 2096 | f 262/262/605 258/258/601 260/260/603 2097 | f 264/264/607 265/265/608 266/266/609 2098 | f 264/264/607 266/266/609 267/267/610 2099 | f 267/267/610 266/266/609 268/268/611 2100 | f 267/267/610 268/268/611 269/269/612 2101 | f 269/269/612 268/268/611 270/270/613 2102 | f 269/269/612 270/270/613 271/271/614 2103 | f 271/271/614 270/270/613 264/264/607 2104 | f 264/264/607 270/270/613 265/265/608 2105 | f 261/261/615 266/266/616 262/262/617 2106 | f 262/262/618 266/266/618 263/263/618 2107 | f 263/263/619 266/266/619 265/265/619 2108 | f 263/263/620 265/265/620 258/258/620 2109 | f 258/258/621 265/265/621 270/270/621 2110 | f 258/258/622 270/270/622 259/259/622 2111 | f 259/259/623 270/270/624 268/268/625 2112 | f 259/259/623 268/268/625 261/261/626 2113 | f 261/261/615 268/268/627 266/266/616 2114 | f 262/262/628 260/260/628 272/272/628 2115 | f 259/259/629 262/262/629 272/272/629 2116 | f 260/260/603 259/259/602 272/272/630 2117 | f 273/273/631 274/274/631 275/275/631 2118 | f 275/275/632 276/276/632 277/277/632 2119 | f 278/278/633 279/279/634 280/280/635 2120 | f 278/278/633 280/280/635 281/281/636 2121 | f 281/281/636 280/280/635 282/282/637 2122 | f 281/281/636 282/282/637 283/283/638 2123 | f 283/283/638 282/282/637 284/284/639 2124 | f 283/283/638 284/284/639 285/285/640 2125 | f 283/283/638 285/285/640 278/278/641 2126 | f 278/278/642 285/285/642 279/279/642 2127 | f 274/274/643 282/282/644 280/280/645 2128 | f 274/274/643 280/280/645 275/275/646 2129 | f 275/275/647 280/280/648 276/276/649 2130 | f 276/276/649 280/280/648 279/279/650 2131 | f 276/276/651 279/279/652 277/277/653 2132 | f 277/277/653 279/279/652 285/285/654 2133 | f 277/277/655 285/285/656 273/273/657 2134 | f 273/273/657 285/285/656 284/284/658 2135 | f 273/273/659 284/284/660 282/282/661 2136 | f 273/273/659 282/282/661 274/274/662 2137 | f 275/275/663 277/277/663 286/286/663 2138 | f 286/286/664 277/277/664 287/287/664 2139 | f 273/273/665 275/275/665 286/286/665 2140 | f 277/277/666 273/273/667 287/287/668 2141 | f 287/287/668 273/273/667 286/286/669 2142 | f 288/288/670 289/289/670 290/290/670 2143 | f 291/291/671 292/292/672 293/293/673 2144 | f 293/293/673 292/292/672 294/294/674 2145 | f 293/293/673 294/294/674 295/295/675 2146 | f 295/295/675 294/294/674 296/296/676 2147 | f 295/295/675 296/296/676 297/297/677 2148 | f 297/297/677 296/296/676 298/298/678 2149 | f 297/297/677 298/298/678 291/291/679 2150 | f 291/291/680 298/298/680 292/292/680 2151 | f 299/299/681 294/294/682 292/292/683 2152 | f 299/299/681 292/292/683 300/300/684 2153 | f 300/300/685 292/292/686 288/288/687 2154 | f 288/288/687 292/292/686 298/298/688 2155 | f 288/288/689 298/298/689 289/289/689 2156 | f 289/289/690 298/298/690 296/296/690 2157 | f 289/289/691 296/296/691 290/290/691 2158 | f 290/290/692 296/296/693 294/294/694 2159 | f 290/290/692 294/294/694 299/299/695 2160 | f 300/300/696 288/288/696 301/301/696 2161 | f 299/299/697 300/300/697 302/302/697 2162 | f 302/302/698 300/300/698 301/301/698 2163 | f 290/290/699 299/299/699 302/302/699 2164 | f 288/288/700 290/290/701 301/301/702 2165 | f 301/301/702 290/290/701 302/302/703 2166 | f 303/303/704 304/304/704 305/305/704 2167 | f 306/306/705 305/305/705 307/307/705 2168 | f 308/308/706 309/309/707 310/310/708 2169 | f 308/308/706 310/310/708 311/311/709 2170 | f 311/311/709 310/310/708 312/312/710 2171 | f 311/311/709 312/312/710 313/313/711 2172 | f 313/313/711 312/312/710 314/314/712 2173 | f 313/313/711 314/314/712 315/315/713 2174 | f 313/313/711 315/315/713 309/309/714 2175 | f 303/303/715 312/312/716 310/310/717 2176 | f 303/303/718 310/310/719 309/309/720 2177 | f 303/303/718 309/309/720 304/304/721 2178 | f 304/304/722 309/309/722 315/315/722 2179 | f 304/304/723 315/315/723 305/305/723 2180 | f 305/305/724 315/315/725 314/314/726 2181 | f 305/305/724 314/314/726 307/307/727 2182 | f 307/307/728 314/314/729 312/312/730 2183 | f 307/307/728 312/312/730 306/306/731 2184 | f 306/306/732 312/312/716 303/303/715 2185 | f 303/303/733 305/305/733 316/316/733 2186 | f 316/316/734 305/305/734 317/317/734 2187 | f 306/306/735 303/303/735 316/316/735 2188 | f 305/305/736 306/306/737 317/317/738 2189 | f 317/317/738 306/306/737 316/316/739 2190 | f 318/318/740 319/319/740 320/320/740 2191 | f 320/320/741 321/321/741 322/322/741 2192 | f 323/323/742 324/324/743 325/325/744 2193 | f 323/323/742 325/325/744 326/326/745 2194 | f 326/326/745 325/325/744 327/327/746 2195 | f 326/326/745 327/327/746 328/328/747 2196 | f 328/328/747 327/327/746 329/329/748 2197 | f 328/328/747 329/329/748 324/324/743 2198 | f 328/328/747 324/324/743 323/323/742 2199 | f 319/319/749 327/327/750 325/325/751 2200 | f 319/319/749 325/325/751 320/320/752 2201 | f 320/320/753 325/325/754 324/324/755 2202 | f 320/320/753 324/324/755 321/321/756 2203 | f 321/321/757 324/324/758 322/322/759 2204 | f 322/322/759 324/324/758 329/329/760 2205 | f 322/322/761 329/329/761 318/318/761 2206 | f 318/318/762 329/329/763 327/327/764 2207 | f 318/318/762 327/327/764 319/319/765 2208 | f 320/320/766 322/322/767 330/330/768 2209 | f 330/330/768 322/322/767 331/331/769 2210 | f 318/318/770 320/320/770 330/330/770 2211 | f 331/331/771 318/318/771 330/330/771 2212 | f 322/322/772 318/318/772 331/331/772 2213 | f 332/332/773 333/333/773 334/334/773 2214 | f 335/335/774 336/336/774 332/332/774 2215 | f 337/337/775 338/338/776 339/339/777 2216 | f 337/337/775 339/339/777 340/340/778 2217 | f 340/340/778 339/339/777 341/341/779 2218 | f 340/340/778 341/341/779 342/342/780 2219 | f 342/342/780 341/341/779 343/343/781 2220 | f 342/342/780 343/343/781 344/344/782 2221 | f 342/342/780 344/344/782 338/338/783 2222 | f 332/332/784 339/339/785 338/338/786 2223 | f 332/332/784 338/338/786 333/333/787 2224 | f 333/333/788 338/338/788 344/344/788 2225 | f 333/333/789 344/344/789 334/334/789 2226 | f 334/334/790 344/344/791 343/343/792 2227 | f 334/334/790 343/343/792 335/335/793 2228 | f 335/335/794 343/343/795 341/341/796 2229 | f 335/335/794 341/341/796 336/336/797 2230 | f 336/336/798 341/341/799 339/339/800 2231 | f 336/336/798 339/339/800 332/332/801 2232 | f 334/334/802 335/335/802 345/345/802 2233 | f 346/346/803 334/334/803 345/345/803 2234 | f 332/332/804 334/334/804 346/346/804 2235 | f 335/335/805 332/332/806 345/345/807 2236 | f 345/345/807 332/332/806 346/346/808 2237 | f 347/347/809 348/348/810 349/349/811 2238 | f 350/350/812 351/351/813 352/352/814 2239 | f 352/352/814 351/351/813 347/347/809 2240 | f 347/347/809 351/351/813 348/348/810 2241 | f 348/348/810 353/353/815 349/349/811 2242 | f 349/349/811 353/353/815 354/354/816 2243 | f 353/353/815 355/355/817 354/354/816 2244 | f 354/354/816 355/355/817 356/356/818 2245 | f 355/355/817 357/357/819 356/356/818 2246 | f 356/356/818 357/357/819 350/350/812 2247 | f 350/350/812 357/357/819 351/351/813 2248 | f 358/358/820 350/350/821 352/352/822 2249 | f 358/358/820 352/352/822 359/359/823 2250 | f 359/359/824 352/352/825 347/347/826 2251 | f 359/359/824 347/347/826 360/360/827 2252 | f 360/360/828 347/347/829 349/349/830 2253 | f 360/360/828 349/349/830 361/361/831 2254 | f 361/361/832 349/349/832 354/354/832 2255 | f 361/361/833 354/354/833 362/362/833 2256 | f 362/362/834 354/354/834 356/356/834 2257 | f 362/362/835 356/356/836 358/358/837 2258 | f 358/358/837 356/356/836 350/350/838 2259 | f 363/363/1 359/359/1 360/360/1 2260 | f 363/363/1 360/360/1 364/364/1 2261 | f 364/364/1 360/360/1 361/361/1 2262 | f 364/364/1 361/361/1 365/365/1 2263 | f 365/365/1 361/361/1 362/362/1 2264 | f 365/365/1 362/362/1 358/358/1 2265 | f 365/365/1 358/358/1 366/366/1 2266 | f 366/366/1 358/358/1 359/359/1 2267 | f 366/366/1 359/359/1 363/363/1 2268 | f 367/367/839 366/366/840 368/368/841 2269 | f 368/368/841 366/366/840 363/363/842 2270 | f 368/368/843 363/363/843 369/369/843 2271 | f 369/369/844 363/363/845 364/364/846 2272 | f 369/369/844 364/364/846 370/370/847 2273 | f 370/370/848 364/364/848 371/371/848 2274 | f 371/371/849 364/364/850 365/365/851 2275 | f 371/371/849 365/365/851 372/372/852 2276 | f 372/372/853 365/365/854 367/367/855 2277 | f 367/367/855 365/365/854 366/366/856 2278 | f 367/367/857 368/368/858 369/369/859 2279 | f 367/367/857 369/369/859 372/372/860 2280 | f 369/369/859 370/370/861 372/372/860 2281 | f 372/372/860 370/370/861 371/371/862 2282 | f 357/357/863 373/373/863 374/374/863 2283 | f 374/374/864 373/373/865 348/348/866 2284 | f 374/374/867 351/351/867 357/357/867 2285 | f 357/357/868 355/355/868 373/373/868 2286 | f 355/355/869 353/353/869 373/373/869 2287 | f 373/373/865 353/353/870 348/348/866 2288 | f 348/348/871 351/351/871 374/374/871 2289 | -------------------------------------------------------------------------------- /Mujoco xml/References/agility_cassie/cassie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/Mujoco xml/References/agility_cassie/cassie.png -------------------------------------------------------------------------------- /Mujoco xml/References/agility_cassie/cassie.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 263 | -------------------------------------------------------------------------------- /Mujoco xml/References/agility_cassie/scene.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 30 | -------------------------------------------------------------------------------- /Mujoco xml/Working Mk 5 - Old model - Demo only/CMU Mk 5.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 244 | -------------------------------------------------------------------------------- /Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/L_Foot.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/L_Foot.STL -------------------------------------------------------------------------------- /Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/L_Foot_collision.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/L_Foot_collision.STL -------------------------------------------------------------------------------- /Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/L_Foreleg.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/L_Foreleg.STL -------------------------------------------------------------------------------- /Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/L_Hip_1.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/L_Hip_1.STL -------------------------------------------------------------------------------- /Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/L_Hip_2.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/L_Hip_2.STL -------------------------------------------------------------------------------- /Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/L_Linkage.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/L_Linkage.STL -------------------------------------------------------------------------------- /Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/L_Servo.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/L_Servo.STL -------------------------------------------------------------------------------- /Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/L_Servo_Link.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/L_Servo_Link.STL -------------------------------------------------------------------------------- /Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/L_Servo_collision.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/L_Servo_collision.STL -------------------------------------------------------------------------------- /Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/L_Shin.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/L_Shin.STL -------------------------------------------------------------------------------- /Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/L_Thigh.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/L_Thigh.STL -------------------------------------------------------------------------------- /Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/R_Foot.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/R_Foot.STL -------------------------------------------------------------------------------- /Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/R_Foot_collision.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/R_Foot_collision.STL -------------------------------------------------------------------------------- /Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/R_Foreleg.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/R_Foreleg.STL -------------------------------------------------------------------------------- /Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/R_Hip_1.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/R_Hip_1.STL -------------------------------------------------------------------------------- /Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/R_Hip_2.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/R_Hip_2.STL -------------------------------------------------------------------------------- /Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/R_Linkage.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/R_Linkage.STL -------------------------------------------------------------------------------- /Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/R_Servo.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/R_Servo.STL -------------------------------------------------------------------------------- /Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/R_Servo_Link.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/R_Servo_Link.STL -------------------------------------------------------------------------------- /Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/R_Servo_collision.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/R_Servo_collision.STL -------------------------------------------------------------------------------- /Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/R_Shin.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/R_Shin.STL -------------------------------------------------------------------------------- /Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/R_Thigh.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/R_Thigh.STL -------------------------------------------------------------------------------- /Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/base_link.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/base_link.STL -------------------------------------------------------------------------------- /Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/base_link_collision.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/Mujoco xml/Working Mk 5 - Old model - Demo only/meshes/base_link_collision.STL -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Legolas - An Open Source Bipedal Robot 2 | 3 | Legolas is a mini bipedal robot inspired by the Cassie by Agility Robotics. The project aims to provide an open-source platform for learning and applying reinforcement learning in robotics. 4 | 5 |

6 | 7 | 8 |

9 | 10 |

11 | Video 3 12 |

13 | 14 | ## Repository Contents 15 | 16 | This repository contains CAD files and 3D printing files for Legolas. 17 | 18 | The code for the robot is available at [Legolas Controller](https://github.com/daviddoo02/Legolas_Controller). 19 | 20 | ## Getting Started 21 | 22 | 1. **Clone this repository:** 23 | 24 | ```bash 25 | git clone https://github.com/daviddoo02/Legolas-an-open-source-biped/ 26 | ``` 27 | 28 | 2. **Modify the CAD files:** 29 | 30 | Modify the CAD files to fit your specific needs using Solidworks. 31 | 32 | 3. **3D Print your own robot:** 33 | 34 | Alternatively, use the provided STL files located in `CAD/Legolas/V2/STLs` to 3D print your own robot. 35 | 36 | 4. **Assemble the robot and have fun!** 37 | 38 | ## Required Materials 39 | 40 | Materials and components used are listed and linked below. 41 | 42 | ### Main Body 43 | 44 | 1. [3D printing filament x 1 kg](https://www.amazon.com/dp/B089S1HB8K) 45 | 2. [Metric Nuts and Bolts](https://www.amazon.com/Assortment-M2-M3-M4-M5/dp/B0CBMMPPKF) 46 | 3. [Metric Locknuts](https://www.amazon.com/dp/B0CHVTYLWC) 47 | 4. [Thrust Bearings](https://www.amazon.com/gp/product/B08FHTD8VT) 48 | 5. [Ball joint rod end](https://www.amazon.com/gp/product/B0828T1NNW) 49 | 6. [M4 threaded rod](https://www.amazon.com/gp/product/B01MAYQ12S) 50 | 51 | ### Electronics 52 | 53 | 1. [Raspberry Pi 4](https://www.amazon.com/Raspberry-Model-2019-Quad-Bluetooth/dp/B07TC2BK1X) 54 | 2. [PCA9685 Servo Driver Board](https://www.amazon.com/gp/product/B07BRS249H) 55 | 3. [40 kg Hobby Servos x 8](https://www.amazon.com/Servo-Torque-Waterproof-Degree-Compatible/dp/B0C95YMMQS) 56 | 4. [80 kg Hobby Servos x 2](https://www.amazon.com/GoolRC-Digital-Torque-Waterproof-Replacements/dp/B0B5H4MWZG/ref=sr_1_2?crid=1JM9GBMY97KTM&keywords=80%2Bkg%2Bservo&qid=1705472455&sprefix=80%2Bkg%2Bservo%2Caps%2C98&sr=8-2&th=1) 57 | 5. [MPU6050 IMU](https://www.amazon.com/Acceleration-Sensors-Accelerometer-Three-Axis-Quadcopter/dp/B07V67DQ5N) 58 | 6. [ADS1115 ADC](https://www.amazon.com/gp/product/B07VPFLSMX) 59 | 7. [Jumper Wires](https://www.amazon.com/Elegoo-EL-CP-004-Multicolored-Breadboard-arduino/dp/B01EV70C78) 60 | 8. [Power DIY Connector](https://www.amazon.com/dp/B09S3S6RYC) 61 | 9. [USB C Connector](https://www.amazon.com/dp/B0CCJRWKC5) 62 | 10. [4 to 1 Wire Connector](https://www.amazon.com/dp/B0B28GNVGZ) 63 | 64 | ## Assembly Instruction 65 | 66 | Instructions and examples for assembling Legolas will be added in future updates. 67 | 68 | ## License 69 | 70 | This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. 71 | 72 | ## Acknowledgments 73 | 74 | - Inspired by the Cassie robot by Agility Robotics. 75 | - Solidworks was used for the physical design of the robot. 76 | -------------------------------------------------------------------------------- /assets/Walking_Test_3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/assets/Walking_Test_3.gif -------------------------------------------------------------------------------- /assets/Walking_Test_3.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/assets/Walking_Test_3.mp4 -------------------------------------------------------------------------------- /assets/cover_image_back.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/assets/cover_image_back.jpg -------------------------------------------------------------------------------- /assets/cover_image_front.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daviddoo02/Legolas-an-open-source-biped/045709e962ce4961496d88216e251fe22fee955f/assets/cover_image_front.jpg -------------------------------------------------------------------------------- /static_analysis/Leg_Static_Analysis.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 2, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "from anastruct import SystemElements\n", 10 | "import numpy as np\n", 11 | "import matplotlib.pyplot as plt\n", 12 | "from scipy.optimize import least_squares\n", 13 | "from ipywidgets import interact, widgets\n", 14 | "from typing import Tuple\n", 15 | "import matplotlib.pyplot as plt\n", 16 | "from mpl_toolkits.mplot3d import Axes3D" 17 | ] 18 | }, 19 | { 20 | "cell_type": "markdown", 21 | "metadata": {}, 22 | "source": [ 23 | "Initializing parameters" 24 | ] 25 | }, 26 | { 27 | "cell_type": "code", 28 | "execution_count": 3, 29 | "metadata": {}, 30 | "outputs": [], 31 | "source": [ 32 | "def pol2cart(l : float, th: float, phi: float):\n", 33 | " \"\"\"\n", 34 | " Convert polar information to cartesian translation\n", 35 | "\n", 36 | " Parameters:\n", 37 | " l (float): linkage's length in mm\n", 38 | " th (float): angle in degrees\n", 39 | "\n", 40 | " Returns:\n", 41 | " Tuple[float, float]: Converted cartesian translation\n", 42 | " \"\"\"\n", 43 | "\n", 44 | " th = np.deg2rad(th)\n", 45 | " phi = np.deg2rad(phi)\n", 46 | "\n", 47 | " # Calculate Cartesian coordinates\n", 48 | " x = l * np.sin(th) * np.cos(phi)\n", 49 | " y = l * np.sin(th) * np.sin(phi)\n", 50 | " z = l * np.cos(th)\n", 51 | " return np.array([x, y, z], dtype=float)" 52 | ] 53 | }, 54 | { 55 | "cell_type": "code", 56 | "execution_count": 4, 57 | "metadata": {}, 58 | "outputs": [], 59 | "source": [ 60 | "# Function to update the plot\n", 61 | "class Create_Plot():\n", 62 | " def __init__(self):\n", 63 | " # Create sliders for joint angles\n", 64 | " self.th1_slider = widgets.FloatSlider(value=60, min=-180, max=180, step=1, description='Theta1 (degrees)', orientation='horizontal', layout=widgets.Layout(width='auto', height='auto'))\n", 65 | " self.th2_slider = widgets.FloatSlider(value=85, min=-180, max=180, step=1, description='Theta2 (degrees)', orientation='horizontal', layout=widgets.Layout(width='auto', height='auto'))\n", 66 | "\n", 67 | " self.prev_th1 = self.th1_slider.value\n", 68 | " self.prev_th2 = self.th2_slider.value\n", 69 | "\n", 70 | " # Create interactive plot with additional constant variables\n", 71 | " interact(self.update_plot, th1=self.th1_slider, th2=self.th2_slider)\n", 72 | "\n", 73 | " def update_plot(self, th1, th2):\n", 74 | "\n", 75 | " j1, j2, j3, j4, j5 = forward_kinematics(th1, th2)\n", 76 | " \n", 77 | " plt.figure(figsize=(10, 8))\n", 78 | " \n", 79 | " plt.plot([j1[0], j2[0], j3[0], j4[0], j3[0], j5[0], j1[0]], [j1[1], j2[1], j3[1], j4[1], j3[1], j5[1], j1[1]], marker='o', linestyle='-', color='b')\n", 80 | " plt.title(\"Biped Robot Forward Kinematics\")\n", 81 | " plt.xlabel('X-axis (m)')\n", 82 | " plt.ylabel('Y-axis (m)')\n", 83 | " plt.grid(True)\n", 84 | " \n", 85 | " # Set aspect ratio to be equal\n", 86 | " plt.axis('equal')\n", 87 | " \n", 88 | " # Set specific axis limits\n", 89 | " plt.xlim([-0.3, 0.3]) # Set your desired X-axis limits\n", 90 | " plt.ylim([-0.5, 0.1]) # Set your desired Y-axis limits\n", 91 | " \n", 92 | " # plt.show()\n", 93 | "\n", 94 | "# Create_Plot()" 95 | ] 96 | }, 97 | { 98 | "cell_type": "code", 99 | "execution_count": 5, 100 | "metadata": {}, 101 | "outputs": [], 102 | "source": [ 103 | "# Circle Equations and Find Intersection to close the loop\n", 104 | "\n", 105 | "def circle_equations(params: Tuple[float, float], center1: np.ndarray, r1: float, center2: np.ndarray, r2: float) -> Tuple[float, float]:\n", 106 | " \"\"\"\n", 107 | " System of equations representing the circles.\n", 108 | "\n", 109 | " Parameters:\n", 110 | " params (Tuple[float, float]): Coordinates (x, y) of the point to evaluate.\n", 111 | " center1 (np.ndarray): Center of the first circle.\n", 112 | " r1 (float): Radius of the first circle.\n", 113 | " center2 (np.ndarray): Center of the second circle.\n", 114 | " r2 (float): Radius of the second circle.\n", 115 | "\n", 116 | " Returns:\n", 117 | " Tuple[float, float]: Residuals for the system of equations.\n", 118 | " \"\"\"\n", 119 | " x, y = params\n", 120 | " eq1 = (x - center1[0])**2 + (y - center1[1])**2 - r1**2\n", 121 | " eq2 = (x - center2[0])**2 + (y - center2[1])**2 - r2**2\n", 122 | " return np.array([eq1, eq2], dtype=float)\n", 123 | "\n", 124 | "def find_circle_intersection(center1: np.ndarray, r1: float, center2: np.ndarray, r2: float) -> np.ndarray:\n", 125 | " \"\"\"\n", 126 | " Find the intersection points of two circles using the Levenberg-Marquardt algorithm.\n", 127 | "\n", 128 | " Parameters:\n", 129 | " center1 (np.ndarray): Center of the first circle.\n", 130 | " r1 (float): Radius of the first circle.\n", 131 | " center2 (np.ndarray): Center of the second circle.\n", 132 | " r2 (float): Radius of the second circle.\n", 133 | "\n", 134 | " Returns:\n", 135 | " np.ndarray: Coordinates of the intersection points.\n", 136 | " \"\"\"\n", 137 | " # Find the rightmost point among the two circles\n", 138 | " rightmost_point = max(center1[0] + r1, center2[0] + r2)\n", 139 | "\n", 140 | " # Initial guess (to the right of each circle center)\n", 141 | " current = np.array([rightmost_point, 0.0])\n", 142 | "\n", 143 | " # Use Levenberg-Marquardt to find the roots\n", 144 | " result = least_squares(circle_equations, current, args=(center1, r1, center2, r2))\n", 145 | "\n", 146 | " return result.x\n", 147 | "\n", 148 | "def angle_between_vectors(v1, v2):\n", 149 | " \"\"\"\n", 150 | " Find the angle (in degrees) between two vectors.\n", 151 | "\n", 152 | " Parameters:\n", 153 | " v1 (numpy.ndarray): First vector.\n", 154 | " v2 (numpy.ndarray): Second vector.\n", 155 | "\n", 156 | " Returns:\n", 157 | " float: Angle between the two vectors in degrees.\n", 158 | " \"\"\"\n", 159 | " dot_product = np.dot(v1, v2)\n", 160 | " norm_v1 = np.linalg.norm(v1)\n", 161 | " norm_v2 = np.linalg.norm(v2)\n", 162 | "\n", 163 | " cosine_angle = dot_product / (norm_v1 * norm_v2)\n", 164 | " angle_in_radians = np.arccos(np.clip(cosine_angle, -1.0, 1.0))\n", 165 | " angle_in_degrees = np.degrees(angle_in_radians)\n", 166 | "\n", 167 | " # Calculate the cross product to determine the direction\n", 168 | " cross_product = np.cross(v1, v2)\n", 169 | "\n", 170 | " # If the cross product is positive --> clockwise\n", 171 | " if cross_product > 0:\n", 172 | " angle_in_degrees *= -1\n", 173 | "\n", 174 | " return angle_in_degrees\n" 175 | ] 176 | }, 177 | { 178 | "cell_type": "code", 179 | "execution_count": 6, 180 | "metadata": {}, 181 | "outputs": [], 182 | "source": [ 183 | "def forward_kinematics(th1: float, th2: float) -> Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray, np.ndarray]:\n", 184 | " \"\"\"\n", 185 | " Perform forward kinematics for the biped\n", 186 | "\n", 187 | " Parameters:\n", 188 | " th1 (float): Joint angle 1 in radians.\n", 189 | " th2 (float): Joint angle 2 in radians.\n", 190 | "\n", 191 | " Returns:\n", 192 | " Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray, np.ndarray]: Joint coordinates (j1, j2, j3, j4, j5).\n", 193 | " \"\"\"\n", 194 | "\n", 195 | " th1 = th1 + 180\n", 196 | "\n", 197 | " th_s = 180 # Theta shin\n", 198 | "\n", 199 | " s = 1 # Scale\n", 200 | "\n", 201 | " l1 = 55.34 / 1000 * s\n", 202 | " l2 = 105 / 1000 * s\n", 203 | " l3 = 105 / 1000 * s\n", 204 | " l4 = 105 / 1000 * s\n", 205 | " l5 = 55.34 / 1000 * s\n", 206 | "\n", 207 | " j1 = np.array([0, 0])\n", 208 | " j2 = j1 + pol2cart(l1, th1)\n", 209 | " j3 = j2 + pol2cart(l2, th1 + th2)\n", 210 | "\n", 211 | " j5 = find_circle_intersection(j1, l4, j3, l5) # Closing the loop\n", 212 | "\n", 213 | " j4 = j3 + pol2cart(l3, (th_s + np.rad2deg(np.arctan2(j5[1] - j3[1], j5[0] - j3[0])))) # end-effector position\n", 214 | "\n", 215 | " return j1, j2, j3, j4, j5" 216 | ] 217 | }, 218 | { 219 | "cell_type": "code", 220 | "execution_count": 13, 221 | "metadata": {}, 222 | "outputs": [ 223 | { 224 | "data": { 225 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAksAAAGwCAYAAAC5ACFFAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy89olMNAAAACXBIWXMAAA9hAAAPYQGoP6dpAABRH0lEQVR4nO3dfXzN9f/H8ceZ2UazzRizjCi1KaUmM/km363sS5d0wXdd0H6k0AUloqRvfXXhm6Ii0oUQUVGKkstibIZci8j1SLONxjY7n98fn3ZYMRvn7HMunvfb7dy89zmfzzmvz8fOOc99zvv9/tgMwzAQERERkdPys7oAEREREXemsCQiIiJSBoUlERERkTIoLImIiIiUQWFJREREpAwKSyIiIiJlUFgSERERKYO/1QV4A7vdzr59+6hRowY2m83qckRERKQcDMPgyJEjREVF4ed35vNHCktOsG/fPqKjo60uQ0RERM7B7t27qV+//hnvV1hygho1agDmwQ4JCbG4GhERESmPvLw8oqOjHZ/jZ6Kw5AQlX72FhIQoLImIiHiYs3WhUQdvERERkTIoLImIiIiUQWFJREREpAwKSyIiIiJlUFgSERERKYPCkoiIiEgZFJZEREREyqCwJCIiIlIGhSURERGRMmgGb5FTFNsN0ndkc/DIcerUCKJlo3Cq+OniyCIiVnCX92SPO7P09ttvc9FFFxEUFER8fDzp6ellrj99+nRiYmIICgqiWbNmfPPNN6XuNwyD5557jnr16lGtWjWSkpLYunWrK3dB3NTc9ftp88oCuo5fzmNT19B1/HLavLKAuev3W12aiIjPcaf3ZI8KS9OmTaNfv34MHTqUVatWcdVVV9G+fXsOHjx42vWXLVtG165dSU1NZfXq1dx+++3cfvvtrF+/3rHOq6++yqhRoxg7diwrVqzgggsuoH379hw/fryydkvcwNz1+3l40ir255b+f8/KPc7Dk1YpMImIVCJ3e0+2GYZhVOoznof4+HiuvfZa3nrrLQDsdjvR0dH07duXgQMH/m39e+65hz/++IPZs2c7lrVq1YrmzZszduxYDMMgKiqK/v378+STTwKQm5tL3bp1+fDDD+nSpUu56srLyyM0NJTc3FxdSNcDFdsN2ryygP25xzEMOJEXxInDFxAYlQOADagbGsj3/W7QV3IiIi5WbDdIen0RWbkFABQd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BoUlERERkTIoLImIiIiUQWFJREREpAwKSyIiTrBo0SJsNhs5OTlWlyIiTqawJCJepbi4mNatW9OpU6dSy3Nzc4mOjmbw4MEued7WrVuzf/9+QkNDXfL4ImIdXe5ERLzOzz//TPPmzRk/fjwpKSkA3H///fz0009kZGQQEBBgcYUi4kl0ZklEvM6ll17Kyy+/TN++fdm/fz+zZs1i6tSpTJw48YxB6emnn+bSSy+levXqNG7cmGeffZaioiIADMMgKSmJ9u3bU/L3ZXZ2NvXr1+e5554D/v413M6dO7nllluoWbMmF1xwAZdffjnffPON63deRJzO3+oCRERcoW/fvnzxxRfcd999rFu3jueee46rrrrqjOvXqFGDDz/8kKioKNatW0ePHj2oUaMGAwYMwGaz8dFHH9GsWTNGjRrFY489Rq9evbjwwgsdYemvevfuTWFhIUuWLOGCCy5g48aNBAcHu2p3RcSF9DWciHitzZs3ExsbS7NmzVi1ahX+/uX/+3DEiBFMnTqVlStXOpZNnz6d+++/n8cff5zRo0ezevVqmjRpAphnltq1a8fhw4cJCwvjyiuvpHPnzgwdOtTp+yUilUtfw4mI13r//fepXr06O3bsYM+ePQD06tWL4OBgx63EtGnTuO6664iMjCQ4OJghQ4awa9euUo931113cccdd/Dyyy8zYsQIR1A6nUcffZQXX3yR6667jqFDh7J27VrX7KSIuJzCkoh4pWXLljFy5Ehmz55Ny5YtSU1NxTAMXnjhBdasWeO4AaSlpZGSkkKHDh2YPXs2q1evZvDgwRQWFpZ6zPz8fDIzM6lSpQpbt24t8/n/7//+j+3btzu+BmzRogWjR4921e6KiAspLImI18nPz6dbt248/PDDtGvXjgkTJpCens7YsWOpU6cOl1xyieMGZrBq2LAhgwcPpkWLFjRp0oSdO3f+7XH79++Pn58fc+bMYdSoUSxYsKDMOqKjo+nVqxeff/45/fv3Z/z48S7ZXxFxLYUlEfE6gwYNwjAMXn75ZQAuuugiRowYwYABA/j111//tn6TJk3YtWsXU6dO5ZdffmHUqFF88cUXpdb5+uuvef/995k8eTI33ngjTz31FA888ACHDx8+bQ2PP/443377LTt27GDVqlUsXLiQ2NhYp++riLieOniLiFdZvHgxiYmJLFq0iDZt2pS6r3379pw4cYLvv/8em81W6r4BAwbw/vvvU1BQQMeOHWnVqhXPP/88OTk5/PbbbzRr1ozHHnuMQYMGAVBUVERCQgIXX3wx06ZN+1sH7759+zJnzhz27NlDSEgIycnJjBw5klq1alXasRAR51BYEhERESmDvoYTERERKYPCkoiIiEgZFJZEREREyqCwJCIiIlIGhSURERGRMigsiYiIiJRBYUlERESkDApLIiIiImVQWBIREREpg8KSiIiISBkUlkRERETK8P9fpOGQnul6bgAAAABJRU5ErkJggg==", 226 | "text/plain": [ 227 | "
" 228 | ] 229 | }, 230 | "metadata": {}, 231 | "output_type": "display_data" 232 | } 233 | ], 234 | "source": [ 235 | "j1,j2,j3,j4,j5 = forward_kinematics(60, 120)\n", 236 | "\n", 237 | "# Create 3D plot\n", 238 | "fig = plt.figure()\n", 239 | "ax = fig.add_subplot()\n", 240 | "\n", 241 | "# Plot joints\n", 242 | "ax.scatter(*zip(j1, j2, j3, j4, j5), marker='o', label='Joints')\n", 243 | "\n", 244 | "# Connect joints with lines\n", 245 | "ax.plot([j1[0], j2[0]], [j1[1], j2[1]], color='b')\n", 246 | "ax.plot([j2[0], j3[0]], [j2[1], j3[1]], color='b')\n", 247 | "ax.plot([j3[0], j4[0]], [j3[1], j4[1]], color='b')\n", 248 | "ax.plot([j4[0], j5[0]], [j4[1], j5[1]], color='b')\n", 249 | "ax.plot([j5[0], j1[0]], [j5[1], j1[1]], color='b')\n", 250 | "\n", 251 | "# Set labels\n", 252 | "ax.set_xlabel('X-axis')\n", 253 | "ax.set_ylabel('Y-axis')\n", 254 | "# ax.set_zlabel('Z-axis')\n", 255 | "\n", 256 | "# Show plot\n", 257 | "plt.show()" 258 | ] 259 | }, 260 | { 261 | "cell_type": "code", 262 | "execution_count": 8, 263 | "metadata": {}, 264 | "outputs": [], 265 | "source": [ 266 | "# Gradient Descent\n", 267 | "def error_function(desired_pos: np.ndarray, current: np.ndarray) -> float:\n", 268 | " th1, th2 = current\n", 269 | " current_pos = forward_kinematics(th1, th2)[3]\n", 270 | " error = np.linalg.norm(current_pos - desired_pos)\n", 271 | " # print(th1, th2)\n", 272 | " # print(error)\n", 273 | " return error\n", 274 | "\n", 275 | "def inverse_kinematics(desired: np.ndarray, angles_guess: Tuple[float, float], max_iterations: int = 50, learning_rate: int = 10000) -> Tuple[float, float]:\n", 276 | " \"\"\"\n", 277 | " Perform inverse kinematics using gradient descent.\n", 278 | "\n", 279 | " Parameters:\n", 280 | " desired (np.ndarray): Target end-effector position [x, y].\n", 281 | " angles_guess (Tuple[float, float]): current joint angles.\n", 282 | " max_iterations (int): Maximum number of iterations for gradient descent.\n", 283 | " learning_rate (float): Learning rate for gradient descent.\n", 284 | "\n", 285 | " Returns:\n", 286 | " Tuple[float, float]: Joint angles (th1, th2).\n", 287 | " \"\"\"\n", 288 | " angle1, angle2 = angles_guess\n", 289 | "\n", 290 | " step1 = 0.5\n", 291 | " step2 = 0.5\n", 292 | "\n", 293 | " tolerance = 0.001 # stop when the error is less than this or when weve done max_iterations\n", 294 | " iter = 0\n", 295 | "\n", 296 | " for _ in range(max_iterations):\n", 297 | " # error is the distance between the desired point and our current point. We want to minimize this.\n", 298 | " error = error_function(desired, np.array([angle1, angle2]))\n", 299 | " \n", 300 | " # step in a direction to find the error of the 2 angles\n", 301 | " error_angle1 = error_function(desired, np.array([angle1+step1, angle2]))\n", 302 | " error_angle2 = error_function(desired, np.array([angle1, angle2+step2]))\n", 303 | "\n", 304 | " # this is the gradient\n", 305 | " grad1 = (error_angle1 - error) / step1\n", 306 | " grad2 = (error_angle2 - error) / step2\n", 307 | "\n", 308 | " # step in the direction of the gradient. grad is the slope (rate of change), error is the distance, so in theory grad*error is the distance we want to step to get to the desired point in one step, but lmao no, multiply by really small fraction. 0.00001 is the largest that doesnt overshoot.\n", 309 | " angle1 -= grad1 * error * learning_rate\n", 310 | " angle2 -= grad2 * error * learning_rate\n", 311 | "\n", 312 | " iter += 1\n", 313 | "\n", 314 | " # print(grad1, grad2)\n", 315 | " # print(iter)\n", 316 | " \n", 317 | " # every other iteration, step in the opposite direction. When the leg is up against 2 of the 4 walls, the gradient descent will get stuck trying to step into the wall and getting a gradient of 0.\n", 318 | " step1 *= -1\n", 319 | " step2 *= -1\n", 320 | "\n", 321 | " if abs(error) < tolerance:\n", 322 | " break\n", 323 | " \n", 324 | " return angle1, angle2" 325 | ] 326 | }, 327 | { 328 | "cell_type": "markdown", 329 | "metadata": {}, 330 | "source": [ 331 | "Building Trusses" 332 | ] 333 | }, 334 | { 335 | "cell_type": "code", 336 | "execution_count": null, 337 | "metadata": {}, 338 | "outputs": [], 339 | "source": [ 340 | "desired_pos = np.array([0, -0.3])\n", 341 | "guess = np.array([56, 120])\n", 342 | "theta1, theta2 = inverse_kinematics(desired_pos, guess)" 343 | ] 344 | }, 345 | { 346 | "cell_type": "code", 347 | "execution_count": null, 348 | "metadata": {}, 349 | "outputs": [], 350 | "source": [ 351 | "n1, n2, n3, n4, n5 = forward_kinematics(theta1, theta2)\n", 352 | "\n", 353 | "\n", 354 | "ss = SystemElements()\n", 355 | "\n", 356 | "ss.add_truss_element(location=[n1, n2])\n", 357 | "ss.add_truss_element(location=[n1, n5])\n", 358 | "ss.add_truss_element(location=[n2, n3])\n", 359 | "ss.add_truss_element(location=[n5, n3])\n", 360 | "ss.add_truss_element(location=[n3, n4])\n", 361 | "\n", 362 | "# Motor Torques:\n", 363 | "T1 = 40 * 9.8/100 # Convert 40 kgcm to Nm\n", 364 | "T2 = 80 * 9.8/100\n", 365 | "\n", 366 | "ss.moment_load(node_id=[1], Ty=T1)\n", 367 | "ss.moment_load(node_id=[2], Ty=-T2)\n", 368 | "\n", 369 | "# Main body's weight:\n", 370 | "Wt = 0 * 9.8 # Convert kg to N\n", 371 | "# ss.point_load(node_id=[1], Fx=Wt, rotation=90)\n", 372 | "\n", 373 | "ss.add_support_hinged(node_id=[5,1])\n", 374 | "\n", 375 | "ss.solve()\n", 376 | "ss.show_structure()\n", 377 | "ss.show_reaction_force()" 378 | ] 379 | }, 380 | { 381 | "cell_type": "code", 382 | "execution_count": null, 383 | "metadata": {}, 384 | "outputs": [], 385 | "source": [ 386 | "print(ss.get_node_results_system(node_id=5)['Fy'] * -1 / 9.8)" 387 | ] 388 | }, 389 | { 390 | "cell_type": "code", 391 | "execution_count": null, 392 | "metadata": {}, 393 | "outputs": [], 394 | "source": [] 395 | } 396 | ], 397 | "metadata": { 398 | "kernelspec": { 399 | "display_name": "Python 3", 400 | "language": "python", 401 | "name": "python3" 402 | }, 403 | "language_info": { 404 | "codemirror_mode": { 405 | "name": "ipython", 406 | "version": 3 407 | }, 408 | "file_extension": ".py", 409 | "mimetype": "text/x-python", 410 | "name": "python", 411 | "nbconvert_exporter": "python", 412 | "pygments_lexer": "ipython3", 413 | "version": "3.10.11" 414 | } 415 | }, 416 | "nbformat": 4, 417 | "nbformat_minor": 2 418 | } 419 | --------------------------------------------------------------------------------