added eyes and eyelids to main urdf file

master
Jake Wilkinson 2025-11-25 16:37:24 +08:00
parent a6d901d3f0
commit 0905db8d77
8 changed files with 400 additions and 193 deletions

View File

@ -10,7 +10,8 @@
<visual> <visual>
<origin xyz="0 0 0" rpy="-1.5745 3.149 0" /> <origin xyz="0 0 0" rpy="-1.5745 3.149 0" />
<geometry> <geometry>
<mesh filename="package://Little_Sophia_Face/meshes/Little_Sophia_Torso_.glb" scale="0.001 0.001 0.001"/> <mesh filename="package://Little_Sophia_Face/meshes/Little_Sophia_Torso_.glb"
scale="0.001 0.001 0.001" />
</geometry> </geometry>
<material name="base_link-material"> <material name="base_link-material">
<color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" /> <color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" />
@ -25,7 +26,8 @@
<inertial> <inertial>
<origin xyz="0 0 0" rpy="0 0 0" /> <origin xyz="0 0 0" rpy="0 0 0" />
<mass value="1" /> <mass value="1" />
<inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666"/> <inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0"
izz="0.16666666666666666" />
</inertial> </inertial>
</link> </link>
<joint name="base_link_to_upper_arm_right" type="revolute"> <joint name="base_link_to_upper_arm_right" type="revolute">
@ -39,7 +41,8 @@
<visual> <visual>
<origin xyz="0 0 0" rpy="-1.5745 3.149 0" /> <origin xyz="0 0 0" rpy="-1.5745 3.149 0" />
<geometry> <geometry>
<mesh filename="package://Little_Sophia_Face/meshes/Little_Sophia_Arm_Right.glb" scale="0.001 0.001 0.001"/> <mesh filename="package://Little_Sophia_Face/meshes/Little_Sophia_Arm_Right.glb"
scale="0.001 0.001 0.001" />
</geometry> </geometry>
<material name="upper_arm_right-material"> <material name="upper_arm_right-material">
<color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" /> <color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" />
@ -54,7 +57,8 @@
<inertial> <inertial>
<origin xyz="0 0 0.03" rpy="0 0 0" /> <origin xyz="0 0 0.03" rpy="0 0 0" />
<mass value="1" /> <mass value="1" />
<inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666"/> <inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0"
izz="0.16666666666666666" />
</inertial> </inertial>
</link> </link>
@ -72,7 +76,8 @@
<visual> <visual>
<origin xyz="0 0 0" rpy="-1.5745 3.149 0" /> <origin xyz="0 0 0" rpy="-1.5745 3.149 0" />
<geometry> <geometry>
<mesh filename="package://Little_Sophia_Face/meshes/Little_Sophia_Arm_Left.glb" scale="0.001 0.001 0.001"/> <mesh filename="package://Little_Sophia_Face/meshes/Little_Sophia_Arm_Left.glb"
scale="0.001 0.001 0.001" />
</geometry> </geometry>
<material name="upper_arm_left-material"> <material name="upper_arm_left-material">
<color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" /> <color rgba="0.0021246888847058823 0.04970656597728775 0.48514994004665124 1" />
@ -87,7 +92,8 @@
<inertial> <inertial>
<origin xyz="0 0 0.03" rpy="0 0 0" /> <origin xyz="0 0 0.03" rpy="0 0 0" />
<mass value="1" /> <mass value="1" />
<inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0" izz="0.16666666666666666"/> <inertia ixx="0.16666666666666666" ixy="0" ixz="0" iyy="0.16666666666666666" iyz="0"
izz="0.16666666666666666" />
</inertial> </inertial>
</link> </link>
@ -102,7 +108,8 @@
<visual> <visual>
<origin xyz="0 0 0" rpy="-1.5745 3.149 0" /> <origin xyz="0 0 0" rpy="-1.5745 3.149 0" />
<geometry> <geometry>
<mesh filename="package://Little_Sophia_Face/meshes/Little_Sophia_Hip_Right.glb" scale="0.001 0.001 0.001"/> <mesh filename="package://Little_Sophia_Face/meshes/Little_Sophia_Hip_Right.glb"
scale="0.001 0.001 0.001" />
</geometry> </geometry>
<material name="upper_leg_right-material"> <material name="upper_leg_right-material">
<color rgba="0.0021 0.0497 0.4851 1" /> <color rgba="0.0021 0.0497 0.4851 1" />
@ -133,7 +140,8 @@
<visual> <visual>
<origin xyz="0 0 0" rpy="-1.5745 3.149 0" /> <origin xyz="0 0 0" rpy="-1.5745 3.149 0" />
<geometry> <geometry>
<mesh filename="package://Little_Sophia_Face/meshes/Little_Sophia_Upper_Leg_Right.glb" scale="0.001 0.001 0.001"/> <mesh filename="package://Little_Sophia_Face/meshes/Little_Sophia_Upper_Leg_Right.glb"
scale="0.001 0.001 0.001" />
</geometry> </geometry>
<material name="upper_leg_right-material"> <material name="upper_leg_right-material">
<color rgba="0.0021 0.0497 0.4851 1" /> <color rgba="0.0021 0.0497 0.4851 1" />
@ -179,7 +187,8 @@
<visual> <visual>
<origin xyz="0 0 0" rpy="-1.5745 3.149 0" /> <origin xyz="0 0 0" rpy="-1.5745 3.149 0" />
<geometry> <geometry>
<mesh filename="package://Little_Sophia_Face/meshes/Little_Sophia_Lower_Leg_Right.glb" scale="0.001 0.001 0.001"/> <mesh filename="package://Little_Sophia_Face/meshes/Little_Sophia_Lower_Leg_Right.glb"
scale="0.001 0.001 0.001" />
</geometry> </geometry>
<material name="lower_leg_right-material"> <material name="lower_leg_right-material">
<color rgba="0.0021 0.0497 0.4851 1" /> <color rgba="0.0021 0.0497 0.4851 1" />
@ -211,7 +220,8 @@
<visual> <visual>
<origin xyz="0 0 0" rpy="-1.5745 3.149 0" /> <origin xyz="0 0 0" rpy="-1.5745 3.149 0" />
<geometry> <geometry>
<mesh filename="package://Little_Sophia_Face/meshes/Little_Sophia_Foot_Right.glb" scale="0.001 0.001 0.001"/> <mesh filename="package://Little_Sophia_Face/meshes/Little_Sophia_Foot_Right.glb"
scale="0.001 0.001 0.001" />
</geometry> </geometry>
<material name="foot_right-material"> <material name="foot_right-material">
<color rgba="0.0021 0.0497 0.4851 1" /> <color rgba="0.0021 0.0497 0.4851 1" />
@ -244,7 +254,8 @@
<visual> <visual>
<origin xyz="0 0 0" rpy="-1.5745 3.149 0" /> <origin xyz="0 0 0" rpy="-1.5745 3.149 0" />
<geometry> <geometry>
<mesh filename="package://Little_Sophia_Face/meshes/Little_Sophia_Hip_Left.glb" scale="0.001 0.001 0.001"/> <mesh filename="package://Little_Sophia_Face/meshes/Little_Sophia_Hip_Left.glb"
scale="0.001 0.001 0.001" />
</geometry> </geometry>
<material name="upper_leg_left-material"> <material name="upper_leg_left-material">
<color rgba="0.0021 0.0497 0.4851 1" /> <color rgba="0.0021 0.0497 0.4851 1" />
@ -275,7 +286,8 @@
<visual> <visual>
<origin xyz="0 0 0" rpy="-1.5745 3.149 0" /> <origin xyz="0 0 0" rpy="-1.5745 3.149 0" />
<geometry> <geometry>
<mesh filename="package://Little_Sophia_Face/meshes/Little_Sophia_Upper_Leg_Left.glb" scale="0.001 0.001 0.001"/> <mesh filename="package://Little_Sophia_Face/meshes/Little_Sophia_Upper_Leg_Left.glb"
scale="0.001 0.001 0.001" />
</geometry> </geometry>
<material name="upper_leg_left-material"> <material name="upper_leg_left-material">
<color rgba="0.0021 0.0497 0.4851 1" /> <color rgba="0.0021 0.0497 0.4851 1" />
@ -320,7 +332,8 @@
<visual> <visual>
<origin xyz="0 0 0" rpy="-1.5745 3.149 0" /> <origin xyz="0 0 0" rpy="-1.5745 3.149 0" />
<geometry> <geometry>
<mesh filename="package://Little_Sophia_Face/meshes/Little_Sophia_Lower_Leg_Left.glb" scale="0.001 0.001 0.001"/> <mesh filename="package://Little_Sophia_Face/meshes/Little_Sophia_Lower_Leg_Left.glb"
scale="0.001 0.001 0.001" />
</geometry> </geometry>
<material name="lower_leg_right-material"> <material name="lower_leg_right-material">
<color rgba="0.0021 0.0497 0.4851 1" /> <color rgba="0.0021 0.0497 0.4851 1" />
@ -352,7 +365,8 @@
<visual> <visual>
<origin xyz="0 0 0" rpy="-1.5745 3.149 0" /> <origin xyz="0 0 0" rpy="-1.5745 3.149 0" />
<geometry> <geometry>
<mesh filename="package://Little_Sophia_Face/meshes/Little_Sophia_Foot_Left.glb" scale="0.001 0.001 0.001"/> <mesh filename="package://Little_Sophia_Face/meshes/Little_Sophia_Foot_Left.glb"
scale="0.001 0.001 0.001" />
</geometry> </geometry>
<material name="foot_left-material"> <material name="foot_left-material">
<color rgba="0.0021 0.0497 0.4851 1" /> <color rgba="0.0021 0.0497 0.4851 1" />
@ -406,7 +420,8 @@
<visual> <visual>
<origin xyz="0 0 0" rpy="-1.5745 3.149 0" /> <origin xyz="0 0 0" rpy="-1.5745 3.149 0" />
<geometry> <geometry>
<mesh filename="package://Little_Sophia_Face/meshes/Little_Sophia_Face.glb" scale="0.001 0.001 0.001"/> <mesh filename="package://Little_Sophia_Face/meshes/Little_Sophia_Face.glb"
scale="0.001 0.001 0.001" />
</geometry> </geometry>
<material name="head-material"> <material name="head-material">
<color rgba="0.002 0.05 0.48 1" /> <color rgba="0.002 0.05 0.48 1" />
@ -425,6 +440,122 @@
</inertial> </inertial>
</link> </link>
<!-- Left eye joint -->
<joint name="eye_left_yaw" type="revolute">
<parent link="head" />
<child link="eye_left" />
<!-- Position the eye relative to the head -->
<origin xyz="-0.0198 0.024 0.065" rpy="0 0 0" />
<!-- yaw axis: adjust depending on your coordinate system -->
<axis xyz="0 0 1" />
<limit effort="10.0" lower="-1.0" upper="1.0" velocity="1.0" />
</joint>
<link name="eye_left">
<visual>
<origin xyz="0 0 0" rpy="-1.5745 3.149 0" />
<geometry>
<mesh filename="package://Little_Sophia_Face/meshes/Little_Sophia_Eye_Left.glb"
scale="0.001 0.001 0.001" />
</geometry>
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<sphere radius="0.01" />
</geometry>
</collision>
<inertial>
<mass value="0.01" />
<inertia ixx="1e-5" iyy="1e-5" izz="1e-5" ixy="0" ixz="0" iyz="0" />
</inertial>
</link>
<!-- Right eye joint -->
<joint name="eye_right_yaw" type="revolute">
<parent link="head" />
<child link="eye_right" />
<origin xyz="0.0193 0.024 0.065" rpy="0 0 0" />
<axis xyz="0 0 1" />
<limit effort="10.0" lower="-1.0" upper="1.0" velocity="1.0" />
</joint>
<link name="eye_right">
<visual>
<origin xyz="0 0 0" rpy="-1.5745 3.149 0" />
<geometry>
<mesh filename="package://Little_Sophia_Face/meshes/Little_Sophia_Eye_Right.glb"
scale="0.001 0.001 0.001" />
</geometry>
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<sphere radius="0.01" />
</geometry>
</collision>
<inertial>
<mass value="0.01" />
<inertia ixx="1e-5" iyy="1e-5" izz="1e-5" ixy="0" ixz="0" iyz="0" />
</inertial>
</link>
<joint name="eyelid_upper_pitch" type="revolute">
<parent link="head" />
<child link="eyelid_upper" />
<origin xyz="-0.0005 0.024 0.056" rpy="0 0 0" />
<axis xyz="1 0 0" />
<limit effort="10.0" lower="-1.0" upper="1.0" velocity="1.0" />
</joint>
<link name="eyelid_upper">
<visual>
<origin xyz="0 0 0" rpy="-1.5745 3.149 0" />
<geometry>
<mesh filename="package://Little_Sophia_Face/meshes/Little_Sophia_Eyelid_Upper.glb"
scale="0.001 0.001 0.001" />
</geometry>
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<sphere radius="0.01" />
</geometry>
</collision>
<inertial>
<mass value="0.01" />
<inertia ixx="1e-5" iyy="1e-5" izz="1e-5" ixy="0" ixz="0" iyz="0" />
</inertial>
</link>
<joint name="eyelid_lower_pitch" type="revolute">
<parent link="head" />
<child link="eyelid_lower" />
<origin xyz="-0.0005 0.024 0.056" rpy="0 0 0" />
<axis xyz="1 0 0" />
<limit effort="10.0" lower="-1.0" upper="1.0" velocity="1.0" />
</joint>
<link name="eyelid_lower">
<visual>
<origin xyz="0 0 0" rpy="-1.5745 3.149 0" />
<geometry>
<mesh filename="package://Little_Sophia_Face/meshes/Little_Sophia_Eyelid_Lower.glb"
scale="0.001 0.001 0.001" />
</geometry>
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<sphere radius="0.01" />
</geometry>
</collision>
<inertial>
<mass value="0.01" />
<inertia ixx="1e-5" iyy="1e-5" izz="1e-5" ixy="0" ixz="0" iyz="0" />
</inertial>
</link>
<transmission name="upper_arm_left"> <transmission name="upper_arm_left">
<type>transmission_interface/SimpleTransmission</type> <type>transmission_interface/SimpleTransmission</type>
@ -438,7 +569,8 @@
<encoderValidMin>200</encoderValidMin> <encoderValidMin>200</encoderValidMin>
<encoderValidMax>3500</encoderValidMax> <encoderValidMax>3500</encoderValidMax>
<encoderRange>300</encoderRange> <encoderRange>300</encoderRange>
<motorID>23</motorID></actuator> <motorID>23</motorID>
</actuator>
</transmission> </transmission>
<transmission name="hand_left"> <transmission name="hand_left">
<type>transmission_interface/SimpleTransmission</type> <type>transmission_interface/SimpleTransmission</type>
@ -467,7 +599,8 @@
<encoderValidMin>200</encoderValidMin> <encoderValidMin>200</encoderValidMin>
<encoderValidMax>3500</encoderValidMax> <encoderValidMax>3500</encoderValidMax>
<encoderRange>300</encoderRange> <encoderRange>300</encoderRange>
<motorID>25</motorID></actuator> <motorID>25</motorID>
</actuator>
</transmission> </transmission>
@ -483,7 +616,8 @@
<encoderValidMin>200</encoderValidMin> <encoderValidMin>200</encoderValidMin>
<encoderValidMax>3500</encoderValidMax> <encoderValidMax>3500</encoderValidMax>
<encoderRange>300</encoderRange> <encoderRange>300</encoderRange>
<motorID>34</motorID></actuator> <motorID>34</motorID>
</actuator>
</transmission> </transmission>
<transmission name="upper_leg_right"> <transmission name="upper_leg_right">
@ -498,7 +632,8 @@
<encoderValidMin>200</encoderValidMin> <encoderValidMin>200</encoderValidMin>
<encoderValidMax>3500</encoderValidMax> <encoderValidMax>3500</encoderValidMax>
<encoderRange>300</encoderRange> <encoderRange>300</encoderRange>
<motorID>33</motorID></actuator> <motorID>33</motorID>
</actuator>
</transmission> </transmission>
<transmission name="lower_leg_right"> <transmission name="lower_leg_right">
@ -513,7 +648,8 @@
<encoderValidMin>200</encoderValidMin> <encoderValidMin>200</encoderValidMin>
<encoderValidMax>3500</encoderValidMax> <encoderValidMax>3500</encoderValidMax>
<encoderRange>300</encoderRange> <encoderRange>300</encoderRange>
<motorID>32</motorID></actuator> <motorID>32</motorID>
</actuator>
</transmission> </transmission>
<transmission name="foot_right"> <transmission name="foot_right">
@ -528,7 +664,8 @@
<encoderValidMin>200</encoderValidMin> <encoderValidMin>200</encoderValidMin>
<encoderValidMax>3500</encoderValidMax> <encoderValidMax>3500</encoderValidMax>
<encoderRange>300</encoderRange> <encoderRange>300</encoderRange>
<motorID>30</motorID></actuator> <motorID>30</motorID>
</actuator>
</transmission> </transmission>
<transmission name="hip_left"> <transmission name="hip_left">
@ -543,7 +680,8 @@
<encoderValidMin>200</encoderValidMin> <encoderValidMin>200</encoderValidMin>
<encoderValidMax>3500</encoderValidMax> <encoderValidMax>3500</encoderValidMax>
<encoderRange>300</encoderRange> <encoderRange>300</encoderRange>
<motorID>39</motorID></actuator> <motorID>39</motorID>
</actuator>
</transmission> </transmission>
<transmission name="upper_leg_left"> <transmission name="upper_leg_left">
@ -558,7 +696,8 @@
<encoderValidMin>200</encoderValidMin> <encoderValidMin>200</encoderValidMin>
<encoderValidMax>3500</encoderValidMax> <encoderValidMax>3500</encoderValidMax>
<encoderRange>300</encoderRange> <encoderRange>300</encoderRange>
<motorID>38</motorID></actuator> <motorID>38</motorID>
</actuator>
</transmission> </transmission>
<transmission name="lower_leg_left"> <transmission name="lower_leg_left">
@ -573,7 +712,8 @@
<encoderValidMin>200</encoderValidMin> <encoderValidMin>200</encoderValidMin>
<encoderValidMax>3500</encoderValidMax> <encoderValidMax>3500</encoderValidMax>
<encoderRange>300</encoderRange> <encoderRange>300</encoderRange>
<motorID>37</motorID></actuator> <motorID>37</motorID>
</actuator>
</transmission> </transmission>
@ -589,7 +729,8 @@
<encoderValidMin>200</encoderValidMin> <encoderValidMin>200</encoderValidMin>
<encoderValidMax>3500</encoderValidMax> <encoderValidMax>3500</encoderValidMax>
<encoderRange>300</encoderRange> <encoderRange>300</encoderRange>
<motorID>35</motorID></actuator> <motorID>35</motorID>
</actuator>
</transmission> </transmission>
<!-- Yaw (pan) transmission --> <!-- Yaw (pan) transmission -->
@ -605,7 +746,8 @@
<encoderValidMin>200</encoderValidMin> <encoderValidMin>200</encoderValidMin>
<encoderValidMax>3500</encoderValidMax> <encoderValidMax>3500</encoderValidMax>
<encoderRange>300</encoderRange> <encoderRange>300</encoderRange>
<motorID>27</motorID></actuator> <motorID>27</motorID>
</actuator>
</transmission> </transmission>
<!-- Pitch transmission --> <!-- Pitch transmission -->
@ -621,7 +763,8 @@
<encoderValidMin>500</encoderValidMin> <encoderValidMin>500</encoderValidMin>
<encoderValidMax>4095</encoderValidMax> <encoderValidMax>4095</encoderValidMax>
<encoderRange>300</encoderRange> <encoderRange>300</encoderRange>
<motorID>41</motorID></actuator> <motorID>41</motorID>
</actuator>
</transmission> </transmission>
<!-- Roll transmission --> <!-- Roll transmission -->
@ -637,8 +780,72 @@
<encoderValidMin>100</encoderValidMin> <encoderValidMin>100</encoderValidMin>
<encoderValidMax>3900</encoderValidMax> <encoderValidMax>3900</encoderValidMax>
<encoderRange>300</encoderRange> <encoderRange>300</encoderRange>
<motorID>42</motorID></actuator> <motorID>42</motorID>
</actuator>
</transmission> </transmission>
<transmission name="eye_left_yaw">
<type>transmission_interface/SimpleTransmission</type>
<joint name="eye_left_yaw">
<hardwareInterface>PositionJointInterface</hardwareInterface>
</joint>
<actuator name="eye_left_yaw">
<mechanicalReduction>1</mechanicalReduction>
<hardwareInterface>PositionJointInterface</hardwareInterface>
<encoderTicks>4095</encoderTicks>
<encoderValidMin>100</encoderValidMin>
<encoderValidMax>3900</encoderValidMax>
<encoderRange>300</encoderRange>
<motorID>99</motorID>
</actuator>
</transmission>
<transmission name="eye_right_yaw">
<type>transmission_interface/SimpleTransmission</type>
<joint name="eye_right_yaw">
<hardwareInterface>PositionJointInterface</hardwareInterface>
</joint>
<actuator name="eye_right_yaw">
<mechanicalReduction>1</mechanicalReduction>
<hardwareInterface>PositionJointInterface</hardwareInterface>
<encoderTicks>4095</encoderTicks>
<encoderValidMin>100</encoderValidMin>
<encoderValidMax>3900</encoderValidMax>
<encoderRange>300</encoderRange>
<motorID>98</motorID>
</actuator>
</transmission>
<transmission name="eyelid_upper_pitch">
<type>transmission_interface/SimpleTransmission</type>
<joint name="eyelid_upper_pitch">
<hardwareInterface>PositionJointInterface</hardwareInterface>
</joint>
<actuator name="eyelid_upper_pitch">
<mechanicalReduction>1</mechanicalReduction>
<hardwareInterface>PositionJointInterface</hardwareInterface>
<encoderTicks>4095</encoderTicks>
<encoderValidMin>100</encoderValidMin>
<encoderValidMax>3900</encoderValidMax>
<encoderRange>300</encoderRange>
<motorID>98</motorID>
</actuator>
</transmission>
<transmission name="eyelid_lower_pitch">
<type>transmission_interface/SimpleTransmission</type>
<joint name="eyelid_lower_pitch">
<hardwareInterface>PositionJointInterface</hardwareInterface>
</joint>
<actuator name="eyelid_lower_pitch">
<mechanicalReduction>1</mechanicalReduction>
<hardwareInterface>PositionJointInterface</hardwareInterface>
<encoderTicks>4095</encoderTicks>
<encoderValidMin>100</encoderValidMin>
<encoderValidMax>3900</encoderValidMax>
<encoderRange>300</encoderRange>
<motorID>98</motorID>
</actuator>
</transmission>
</robot> </robot>

View File

@ -74,7 +74,7 @@ export class URDFEditor {
this.setupScene(); this.setupScene();
//this.loadURDF(); this.loadURDF();
//this.loadURDFFromIndexedDB(); //this.loadURDFFromIndexedDB();
this.setupEvents(); this.setupEvents();