add ocs2 control for deep robotics

This commit is contained in:
Huang Zhenbiao 2024-10-18 16:23:49 +08:00
parent fe28277003
commit b8e6d1bec3
10 changed files with 771 additions and 387 deletions

View File

@ -30,7 +30,7 @@ ros2 launch lite3_description visualize.launch.py
* OCS2 Quadruped Controller
```bash
source ~/ros2_ws/install/setup.bash
ros2 launch a1_description ocs2_control.launch.py
ros2 launch ocs2_quadruped_controller mujoco.launch.py pkg_description:=lite3_description
```
* Legged Gym Controller
```bash

View File

@ -1,22 +1,22 @@
targetDisplacementVelocity 0.5;
targetRotationVelocity 1.57;
comHeight 0.33
comHeight 0.39
defaultJointState
{
(0,0) -0.20 ; FL_hip_joint
(1,0) 0.72 ; FL_thigh_joint
(2,0) -1.44 ; FL_calf_joint
(3,0) 0.20 ; FR_hip_joint
(4,0) 0.72 ; FR_thigh_joint
(5,0) -1.44 ; FR_calf_joint
(6,0) -0.20 ; RL_hip_joint
(7,0) 0.72 ; RL_thigh_joint
(8,0) -1.44 ; RL_calf_joint
(9,0) 0.20 ; RR_hip_joint
(10,0) 0.72 ; RR_thigh_joint
(11,0) -1.44 ; RR_calf_joint
(0,0) 0.1 ; FL_HipX
(1,0) -0.732 ; FL_HipY
(2,0) 1.361 ; FL_Knee
(3,0) -0.1 ; FR_HipX
(4,0) -0.732 ; FR_HipY
(5,0) 1.361 ; FR_Knee
(6,0) 0.1 ; HL_HipX
(7,0) -0.732 ; HL_HipY
(8,0) 1.361 ; HL_Knee
(9,0) -0.1 ; HR_HipX
(10,0) -0.732 ; HR_HipY
(11,0) 1.361 ; HR_Knee
}
initialModeSchedule

View File

@ -12,7 +12,7 @@ model_settings
verboseCppAd true
recompileLibrariesCppAd false
modelFolderCppAd /tmp/ocs2_quadruped_controller/a1
modelFolderCppAd /tmp/ocs2_quadruped_controller/lite3
}
swing_trajectory_config
@ -154,24 +154,24 @@ initialState
;; Base Pose: [position, orientation] ;;
(6,0) 0.0 ; p_base_x
(7,0) 0.0 ; p_base_y
(8,0) 0.33 ; p_base_z
(8,0) 0.39 ; p_base_z
(9,0) 0.0 ; theta_base_z
(10,0) 0.0 ; theta_base_y
(11,0) 0.0 ; theta_base_x
;; Leg Joint Positions: [FL, RL, FR, RR] ;;
(12,0) -0.20 ; FL_hip_joint
(13,0) 0.72 ; FL_thigh_joint
(14,0) -1.44 ; FL_calf_joint
(15,0) -0.20 ; RL_hip_joint
(16,0) 0.72 ; RL_thigh_joint
(17,0) -1.44 ; RL_calf_joint
(18,0) 0.20 ; FR_hip_joint
(19,0) 0.72 ; FR_thigh_joint
(20,0) -1.44 ; FR_calf_joint
(21,0) 0.20 ; RR_hip_joint
(22,0) 0.72 ; RR_thigh_joint
(23,0) -1.44 ; RR_calf_joint
;; Leg Joint Positions: [FL, HL, FR, HR] ;;
(12,0) 0.1 ; FL_HipX
(13,0) -0.732 ; FL_HipY
(14,0) 1.361 ; FL_Knee
(15,0) 0.1 ; HL_HipX
(16,0) -0.732 ; HL_HipY
(17,0) 1.361 ; HL_Knee
(18,0) -0.1 ; FR_HipX
(19,0) -0.732 ; FR_HipY
(20,0) 1.361 ; FR_Knee
(21,0) -0.1 ; HR_HipX
(22,0) -0.732 ; HR_HipY
(23,0) 1.361 ; HR_Knee
}
; standard state weight matrix
@ -195,19 +195,19 @@ Q
(10,10) 300.0 ; theta_base_y
(11,11) 300.0 ; theta_base_x
;; Leg Joint Positions: [FL, RL, FR, RR] ;;
(12,12) 5.0 ; FL_hip_joint
(13,13) 5.0 ; FL_thigh_joint
(14,14) 2.5 ; FL_calf_joint
(15,15) 5.0 ; RL_hip_joint
(16,16) 5.0 ; RL_thigh_joint
(17,17) 2.5 ; RL_calf_joint
(18,18) 5.0 ; FR_hip_joint
(19,19) 5.0 ; FR_thigh_joint
(20,20) 2.5 ; FR_calf_joint
(21,21) 5.0 ; RR_hip_joint
(22,22) 5.0 ; RR_thigh_joint
(23,23) 2.5 ; RR_calf_joint
;; Leg Joint Positions: [FL, HL, FR, HR] ;;
(12,12) 5.0 ; FL_HipX
(13,13) 5.0 ; FL_HipY
(14,14) 2.5 ; FL_Knee
(15,15) 5.0 ; HL_HipX
(16,16) 5.0 ; HL_HipY
(17,17) 2.5 ; HL_Knee
(18,18) 5.0 ; FR_HipX
(19,19) 5.0 ; FR_HipY
(20,20) 2.5 ; HR_Knee
(21,21) 5.0 ; HR_HipX
(22,22) 5.0 ; HR_HipY
(23,23) 2.5 ; HR_Knee
}
; control weight matrix
@ -215,7 +215,7 @@ R
{
scaling 1e-3
;; Feet Contact Forces: [FL, FR, RL, RR] ;;
;; Feet Contact Forces: [FL, FR, HL, HR] ;;
(0,0) 1.0 ; front_left_force
(1,1) 1.0 ; front_left_force
(2,2) 1.0 ; front_left_force
@ -229,7 +229,7 @@ R
(10,10) 1.0 ; rear_right_force
(11,11) 1.0 ; rear_right_force
;; foot velocity relative to base: [FL, RL, FR, RR] (uses the Jacobian at nominal configuration) ;;
;; foot velocity relative to base: [FL, HL, FR, HR] (uses the Jacobian at nominal configuration) ;;
(12,12) 5000.0 ; x
(13,13) 5000.0 ; y
(14,14) 5000.0 ; z
@ -263,14 +263,14 @@ selfCollision
; Self Collision pairs
collisionLinkPairs
{
[0] "FL_calf, FR_calf"
[1] "RL_calf, RR_calf"
[2] "FL_calf, RL_calf"
[3] "FR_calf, RR_calf"
[4] "FL_foot, FR_foot"
[5] "RL_foot, RR_foot"
[6] "FL_foot, RL_foot"
[7] "FR_foot, RR_foot"
[0] "FL_SHANK, FR_SHANK"
[1] "HL_SHANK, HR_SHANK"
[2] "FL_SHANK, HL_SHANK"
[3] "FR_SHANK, HR_SHANK"
[4] "FL_FOOT, FR_FOOT"
[5] "HL_FOOT, HR_FOOT"
[6] "FL_FOOT, HL_FOOT"
[7] "FR_FOOT, HR_FOOT"
}
minimumDistance 0.05
@ -283,9 +283,9 @@ selfCollision
; Whole body control
torqueLimitsTask
{
(0,0) 33.5 ; HAA
(1,0) 33.5 ; HFE
(2,0) 33.5 ; KFE
(0,0) 24.0 ; HAA
(1,0) 24.0 ; HFE
(2,0) 36.0 ; KFE
}
frictionConeTask
@ -309,7 +309,7 @@ weight
; State Estimation
kalmanFilter
{
footRadius 0.02
footRadius 0.01
imuProcessNoisePosition 0.02
imuProcessNoiseVelocity 0.02
footProcessNoisePosition 0.002

View File

@ -74,3 +74,62 @@ unitree_guide_controller:
- linear_acceleration.x
- linear_acceleration.y
- linear_acceleration.z
ocs2_quadruped_controller:
ros__parameters:
update_rate: 500 # Hz
default_kd: 1.2
joints:
- FL_HipX
- FL_HipY
- FL_Knee
- FR_HipX
- FR_HipY
- FR_Knee
- HL_HipX
- HL_HipY
- HL_Knee
- HR_HipX
- HR_HipY
- HR_Knee
command_interfaces:
- effort
- position
- velocity
- kp
- kd
state_interfaces:
- effort
- position
- velocity
feet:
- FL_FOOT
- FR_FOOT
- HL_FOOT
- HR_FOOT
imu_name: "imu_sensor"
base_name: "base"
imu_interfaces:
- orientation.w
- orientation.x
- orientation.y
- orientation.z
- angular_velocity.x
- angular_velocity.y
- angular_velocity.z
- linear_acceleration.x
- linear_acceleration.y
- linear_acceleration.z
foot_force_name: "foot_force"
foot_force_interfaces:
- FL
- HL
- FR
- HR

View File

@ -27,6 +27,11 @@ ros2 launch x30_description visualize.launch.py
source ~/ros2_ws/install/setup.bash
ros2 launch unitree_guide_controller mujoco.launch.py pkg_description:=x30_description
```
* OCS2 Quadruped Controller
```bash
source ~/ros2_ws/install/setup.bash
ros2 launch ocs2_quadruped_controller mujoco.launch.py pkg_description:=x30_description
```
### Gazebo Simulator
* Unitree Guide Controller

View File

@ -1,22 +1,22 @@
targetDisplacementVelocity 0.5;
targetRotationVelocity 1.57;
comHeight 0.33
comHeight 0.54;
defaultJointState
{
(0,0) -0.20 ; FL_hip_joint
(1,0) 0.72 ; FL_thigh_joint
(2,0) -1.44 ; FL_calf_joint
(3,0) 0.20 ; FR_hip_joint
(4,0) 0.72 ; FR_thigh_joint
(5,0) -1.44 ; FR_calf_joint
(6,0) -0.20 ; RL_hip_joint
(7,0) 0.72 ; RL_thigh_joint
(8,0) -1.44 ; RL_calf_joint
(9,0) 0.20 ; RR_hip_joint
(10,0) 0.72 ; RR_thigh_joint
(11,0) -1.44 ; RR_calf_joint
(0,0) 0.0 ; FL_HipX
(1,0) -0.732 ; FL_HipY
(2,0) 1.361 ; FL_Knee
(3,0) -0.0 ; FR_HipX
(4,0) -0.732 ; FR_HipY
(5,0) 1.361 ; FR_Knee
(6,0) 0.0 ; HL_HipX
(7,0) -0.732 ; HL_HipY
(8,0) 1.361 ; HL_Knee
(9,0) -0.0 ; HR_HipX
(10,0) -0.732 ; HR_HipY
(11,0) 1.361 ; HR_Knee
}
initialModeSchedule

View File

@ -12,14 +12,14 @@ model_settings
verboseCppAd true
recompileLibrariesCppAd false
modelFolderCppAd /tmp/ocs2_quadruped_controller/a1
modelFolderCppAd /tmp/ocs2_quadruped_controller/x30
}
swing_trajectory_config
{
liftOffVelocity 0.05
touchDownVelocity -0.1
swingHeight 0.1
swingHeight 0.16
swingTimeScale 0.15
}
@ -154,24 +154,24 @@ initialState
;; Base Pose: [position, orientation] ;;
(6,0) 0.0 ; p_base_x
(7,0) 0.0 ; p_base_y
(8,0) 0.33 ; p_base_z
(8,0) 0.54 ; p_base_z
(9,0) 0.0 ; theta_base_z
(10,0) 0.0 ; theta_base_y
(11,0) 0.0 ; theta_base_x
;; Leg Joint Positions: [FL, RL, FR, RR] ;;
(12,0) -0.20 ; FL_hip_joint
(13,0) 0.72 ; FL_thigh_joint
(14,0) -1.44 ; FL_calf_joint
(15,0) -0.20 ; RL_hip_joint
(16,0) 0.72 ; RL_thigh_joint
(17,0) -1.44 ; RL_calf_joint
(18,0) 0.20 ; FR_hip_joint
(19,0) 0.72 ; FR_thigh_joint
(20,0) -1.44 ; FR_calf_joint
(21,0) 0.20 ; RR_hip_joint
(22,0) 0.72 ; RR_thigh_joint
(23,0) -1.44 ; RR_calf_joint
;; Leg Joint Positions: [FL, HL, FR, HR] ;;
(12,0) 0.0 ; FL_HipX
(13,0) -0.732 ; FL_HipY
(14,0) 1.361 ; FL_Knee
(15,0) 0.0 ; HL_HipX
(16,0) -0.732 ; HL_HipY
(17,0) 1.361 ; HL_Knee
(18,0) -0.0 ; FR_HipX
(19,0) -0.732 ; FR_HipY
(20,0) 1.361 ; FR_Knee
(21,0) -0.0 ; HR_HipX
(22,0) -0.732 ; HR_HipY
(23,0) 1.361 ; HR_Knee
}
; standard state weight matrix
@ -195,19 +195,19 @@ Q
(10,10) 300.0 ; theta_base_y
(11,11) 300.0 ; theta_base_x
;; Leg Joint Positions: [FL, RL, FR, RR] ;;
(12,12) 5.0 ; FL_hip_joint
(13,13) 5.0 ; FL_thigh_joint
(14,14) 2.5 ; FL_calf_joint
(15,15) 5.0 ; RL_hip_joint
(16,16) 5.0 ; RL_thigh_joint
(17,17) 2.5 ; RL_calf_joint
(18,18) 5.0 ; FR_hip_joint
(19,19) 5.0 ; FR_thigh_joint
(20,20) 2.5 ; FR_calf_joint
(21,21) 5.0 ; RR_hip_joint
(22,22) 5.0 ; RR_thigh_joint
(23,23) 2.5 ; RR_calf_joint
;; Leg Joint Positions: [FL, HL, FR, HR] ;;
(12,12) 5.0 ; FL_HipX
(13,13) 5.0 ; FL_HipY
(14,14) 2.5 ; FL_Knee
(15,15) 5.0 ; HL_HipX
(16,16) 5.0 ; HL_HipY
(17,17) 2.5 ; HL_Knee
(18,18) 5.0 ; FR_HipX
(19,19) 5.0 ; FR_HipY
(20,20) 2.5 ; HR_Knee
(21,21) 5.0 ; HR_HipX
(22,22) 5.0 ; HR_HipY
(23,23) 2.5 ; HR_Knee
}
; control weight matrix
@ -215,7 +215,7 @@ R
{
scaling 1e-3
;; Feet Contact Forces: [FL, FR, RL, RR] ;;
;; Feet Contact Forces: [FL, FR, HL, HR] ;;
(0,0) 1.0 ; front_left_force
(1,1) 1.0 ; front_left_force
(2,2) 1.0 ; front_left_force
@ -229,7 +229,7 @@ R
(10,10) 1.0 ; rear_right_force
(11,11) 1.0 ; rear_right_force
;; foot velocity relative to base: [FL, RL, FR, RR] (uses the Jacobian at nominal configuration) ;;
;; foot velocity relative to base: [FL, HL, FR, HR] (uses the Jacobian at nominal configuration) ;;
(12,12) 5000.0 ; x
(13,13) 5000.0 ; y
(14,14) 5000.0 ; z
@ -263,14 +263,14 @@ selfCollision
; Self Collision pairs
collisionLinkPairs
{
[0] "FL_calf, FR_calf"
[1] "RL_calf, RR_calf"
[2] "FL_calf, RL_calf"
[3] "FR_calf, RR_calf"
[4] "FL_foot, FR_foot"
[5] "RL_foot, RR_foot"
[6] "FL_foot, RL_foot"
[7] "FR_foot, RR_foot"
[0] "FL_SHANK, FR_SHANK"
[1] "HL_SHANK, HR_SHANK"
[2] "FL_SHANK, HL_SHANK"
[3] "FR_SHANK, HR_SHANK"
[4] "FL_FOOT, FR_FOOT"
[5] "HL_FOOT, HR_FOOT"
[6] "FL_FOOT, HL_FOOT"
[7] "FR_FOOT, HR_FOOT"
}
minimumDistance 0.05
@ -283,9 +283,9 @@ selfCollision
; Whole body control
torqueLimitsTask
{
(0,0) 33.5 ; HAA
(1,0) 33.5 ; HFE
(2,0) 33.5 ; KFE
(0,0) 84.0 ; Hip_X
(1,0) 84.0 ; Hip_Y
(2,0) 160.0 ; Knee
}
frictionConeTask
@ -309,7 +309,7 @@ weight
; State Estimation
kalmanFilter
{
footRadius 0.02
footRadius 0.0165
imuProcessNoisePosition 0.02
imuProcessNoiseVelocity 0.02
footProcessNoisePosition 0.002

View File

@ -74,3 +74,62 @@ unitree_guide_controller:
- linear_acceleration.x
- linear_acceleration.y
- linear_acceleration.z
ocs2_quadruped_controller:
ros__parameters:
update_rate: 500 # Hz
default_kd: 8.0
joints:
- FL_HipX
- FL_HipY
- FL_Knee
- FR_HipX
- FR_HipY
- FR_Knee
- HL_HipX
- HL_HipY
- HL_Knee
- HR_HipX
- HR_HipY
- HR_Knee
command_interfaces:
- effort
- position
- velocity
- kp
- kd
state_interfaces:
- effort
- position
- velocity
feet:
- FL_FOOT
- FR_FOOT
- HL_FOOT
- HR_FOOT
imu_name: "imu_sensor"
base_name: "base"
imu_interfaces:
- orientation.w
- orientation.x
- orientation.y
- orientation.z
- angular_velocity.x
- angular_velocity.y
- angular_velocity.z
- linear_acceleration.x
- linear_acceleration.y
- linear_acceleration.z
foot_force_name: "foot_force"
foot_force_interfaces:
- FL
- HL
- FR
- HR

View File

@ -1,135 +1,153 @@
<?xml version="1.0" encoding="utf-8"?>
<robot name="X30">
<!-- <link name="base_link">
<?xml version="1.0" ?>
<!-- =================================================================================== -->
<!-- | This document was autogenerated by xacro from robot.xacro | -->
<!-- | EDITING THIS FILE BY HAND IS NOT RECOMMENDED | -->
<!-- =================================================================================== -->
<robot name="x30">
<joint name="imu_joint" type="fixed">
<parent link="TORSO"/>
<child link="imu_link"/>
<origin rpy="0 0 0" xyz="0 0 0"/>
</joint>
<link name="imu_link">
<inertial>
<origin xyz="0.0 0.0 0.0"/>
<mass value="1e-12" />
<inertia ixx="1e-12" ixy="0" ixz="0" iyy="1e-12" iyz="0" izz="1e-12" />
</inertial>
</link> -->
<link name="TORSO">
<inertial>
<origin xyz="-0.0029257 7.5034e-06 0.020095" rpy="0 0 0" />
<mass value="30.7" />
<inertia ixx="0.364306" ixy="0.00018421" ixz="0.00027469" iyy="0.597627" iyz="0.00026784" izz="0.757267" />
<mass value="0.001"/>
<origin rpy="0 0 0" xyz="0 0 0"/>
<inertia ixx="0.0001" ixy="0" ixz="0" iyy="0.0001" iyz="0" izz="0.0001"/>
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="../meshes/torso.dae" />
<box size="0.001 0.001 0.001"/>
</geometry>
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0" />
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<box size=".001 .001 .001"/>
</geometry>
</collision>
</link>
<link name="base">
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<box size="0.001 0.001 0.001"/>
</geometry>
</visual>
</link>
<joint name="floating_base" type="fixed">
<origin rpy="0 0 0" xyz="0 0 0"/>
<parent link="base"/>
<child link="TORSO"/>
</joint>
<link name="TORSO">
<inertial>
<origin rpy="0 0 0" xyz="-0.0029257 7.5034e-06 0.020095"/>
<mass value="30.7"/>
<inertia ixx="0.364306" ixy="0.00018421" ixz="0.00027469" iyy="0.597627" iyz="0.00026784" izz="0.757267"/>
</inertial>
<visual>
<geometry>
<mesh filename="file:///home/hiverlab/ros2_ws/install/x30_description/share/x30_description/meshes/torso.dae"/>
</geometry>
<material name="silver"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<box size="0.44 0.26 0.15"/>
</geometry>
</collision>
</link>
<!-- <joint name="base_joint" type="fixed">
<parent link="base_link" />
<child link="torso" />
</joint> -->
<link name="FL_HIP">
<inertial>
<origin xyz="-0.0018591 -0.011377 0.00027039" rpy="0 0 0" />
<mass value="1.43" />
<inertia ixx="0.0014068" ixy="-1.8545e-05" ixz="2.7664e-06" iyy="0.0026782" iyz="2.1221e-06" izz="0.0015918" />
<origin rpy="0 0 0" xyz="-0.0018591 -0.011377 0.00027039"/>
<mass value="1.43"/>
<inertia ixx="0.0014068" ixy="-1.8545e-05" ixz="2.7664e-06" iyy="0.0026782" iyz="2.1221e-06" izz="0.0015918"/>
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="../meshes/hip.dae" />
<mesh filename="file:///home/hiverlab/ros2_ws/install/x30_description/share/x30_description/meshes/hip.dae"/>
</geometry>
<material name="grey"/>
</visual>
</link>
<joint name="FL_HipX_joint" type="revolute">
<origin xyz="0.291 0.08 0" rpy="0 0 0" />
<parent link="TORSO" />
<child link="FL_HIP" />
<axis xyz="-1 0 0" />
<dynamics damping="0.01" friction="0.03"/>
<limit lower="-0.323" upper="0.585" effort="84" velocity="17.5" />
<joint name="FL_HipX" type="revolute">
<origin rpy="0 0 0" xyz="0.291 0.08 0"/>
<parent link="TORSO"/>
<child link="FL_HIP"/>
<axis xyz="-1 0 0"/>
<limit effort="84" lower="-0.323" upper="0.323" velocity="17.5"/>
</joint>
<link name="FL_THIGH">
<inertial>
<origin xyz="-0.0087581 -0.023554 -0.055162" rpy="0 0 0" />
<mass value="4.0809" />
<inertia ixx="0.012604" ixy="0.00020291" ixz="-0.00030875" iyy="0.0164" iyz="0.00036593" izz="0.0061084" />
<origin rpy="0 0 0" xyz="-0.0087581 -0.023554 -0.055162"/>
<mass value="4.0809"/>
<inertia ixx="0.012604" ixy="0.00020291" ixz="-0.00030875" iyy="0.0164" iyz="0.00036593" izz="0.0061084"/>
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="../meshes/l_thigh.dae" />
<mesh filename="file:///home/hiverlab/ros2_ws/install/x30_description/share/x30_description/meshes/l_thigh.dae"/>
</geometry>
<material name="light-grey"/>
</visual>
<collision>
<origin xyz="-0.02 0 -0.13" />
<origin xyz="-0.02 0 -0.13"/>
<geometry>
<cylinder length="0.25" radius="0.04"/>
</geometry>
</collision>
</link>
<joint name="FL_HipY_joint" type="revolute">
<origin xyz="0 0.11675 0" rpy="0 0 0" />
<parent link="FL_HIP" />
<child link="FL_THIGH" />
<axis xyz="0 -1 0" />
<dynamics damping="0.01" friction="0.03"/>
<limit lower="-2.967" upper="0.262" effort="84" velocity="17.5" />
<joint name="FL_HipY" type="revolute">
<origin rpy="0 0 0" xyz="0 0.11675 0"/>
<parent link="FL_HIP"/>
<child link="FL_THIGH"/>
<axis xyz="0 -1 0"/>
<limit effort="84" lower="-2.967" upper="0.262" velocity="17.5"/>
</joint>
<link name="FL_SHANK">
<inertial>
<origin xyz="0.014851 2.0685e-05 -0.12283" rpy="0 0 0" />
<mass value="0.71386" />
<inertia ixx="0.0093039" ixy="1.7693e-07" ixz="0.00034843" iyy="0.0096272" iyz="-3.7717e-06" izz="0.00041542" />
<origin rpy="0 0 0" xyz="0.014851 2.0685e-05 -0.12283"/>
<mass value="0.71386"/>
<inertia ixx="0.0093039" ixy="1.7693e-07" ixz="0.00034843" iyy="0.0096272" iyz="-3.7717e-06" izz="0.00041542"/>
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="../meshes/shank.dae" />
<mesh filename="file:///home/hiverlab/ros2_ws/install/x30_description/share/x30_description/meshes/shank.dae"/>
</geometry>
<material name="silver"/>
</visual>
<collision>
<origin rpy="0. -0.40 0." xyz="0.02 0 -0.046" />
<origin rpy="0. -0.40 0." xyz="0.02 0 -0.046"/>
<geometry>
<cylinder length="0.1" radius="0.025"/>
</geometry>
</collision>
<collision>
<origin rpy="0. 0 0." xyz="0.045 0 -0.155" />
<origin rpy="0. 0 0." xyz="0.045 0 -0.155"/>
<geometry>
<cylinder length="0.12" radius="0.025"/>
</geometry>
</collision>
<collision>
<origin rpy="0. 0.45 0." xyz="0.025 0 -0.246" />
<origin rpy="0. 0.45 0." xyz="0.025 0 -0.246"/>
<geometry>
<cylinder length="0.08" radius="0.022"/>
</geometry>
</collision>
</link>
<joint name="FL_Knee_joint" type="revolute">
<origin xyz="0 0 -0.30" rpy="0 0 0" />
<parent link="FL_THIGH" />
<child link="FL_SHANK" />
<axis xyz="0 -1 0" />
<dynamics damping="0.01" friction="0.03"/>
<limit lower="0.349" upper="2.531" effort="180" velocity="16.1" />
<joint name="FL_Knee" type="revolute">
<origin rpy="0 0 0" xyz="0 0 -0.30"/>
<parent link="FL_THIGH"/>
<child link="FL_SHANK"/>
<axis xyz="0 -1 0"/>
<limit effort="160" lower="0.349" upper="2.531" velocity="16.1"/>
</joint>
<link name="FL_FOOT">
<inertial>
<mass value="0.06" />
<inertia ixx="1e-12" ixy="0" ixz="0" iyy="1e-12" iyz="0" izz="1e-12" />
<mass value="0.06"/>
<inertia ixx="1e-12" ixy="0" ixz="0" iyy="1e-12" iyz="0" izz="1e-12"/>
</inertial>
<collision>
<geometry>
@ -137,110 +155,99 @@
</geometry>
</collision>
</link>
<joint name="FL_Ankle" type="fixed" dont_collapse="true">
<joint dont_collapse="true" name="FL_Ankle" type="fixed">
<origin xyz="0 0 -0.31"/>
<parent link="FL_SHANK" />
<child link="FL_FOOT" />
<parent link="FL_SHANK"/>
<child link="FL_FOOT"/>
</joint>
<link name="FR_HIP">
<inertial>
<origin xyz="-0.0018591 0.011377 -2.7675e-05" rpy="3.14159 0 0" />
<mass value="1.43" />
<inertia ixx="0.0014068" ixy="1.8545e-05" ixz="-4.1487e-06" iyy="0.0026782" iyz="7.0795e-06" izz="0.0015918" />
<origin rpy="3.14159 0 0" xyz="-0.0018591 0.011377 -2.7675e-05"/>
<mass value="1.43"/>
<inertia ixx="0.0014068" ixy="1.8545e-05" ixz="-4.1487e-06" iyy="0.0026782" iyz="7.0795e-06" izz="0.0015918"/>
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="../meshes/hip.dae" />
<mesh filename="file:///home/hiverlab/ros2_ws/install/x30_description/share/x30_description/meshes/hip.dae"/>
</geometry>
<material name="grey"/>
</visual>
</link>
<joint name="FR_HipX_joint" type="revolute">
<origin xyz="0.291 -0.08 0" rpy="0 0 0" />
<parent link="TORSO" />
<child link="FR_HIP" />
<axis xyz="-1 0 0" />
<dynamics damping="0.01" friction="0.03"/>
<limit lower="-0.585" upper="0.323" effort="84" velocity="17.5" />
<joint name="FR_HipX" type="revolute">
<origin rpy="0 0 0" xyz="0.291 -0.08 0"/>
<parent link="TORSO"/>
<child link="FR_HIP"/>
<axis xyz="-1 0 0"/>
<limit effort="84" lower="-0.323" upper="0.323" velocity="17.5"/>
</joint>
<link name="FR_THIGH">
<inertial>
<origin xyz="-0.0087433 0.023551 -0.055154" rpy="0 0 0" />
<mass value="4.0809" />
<inertia ixx="0.012604" ixy="-0.00020374" ixz="-0.0003086" iyy="0.0164" iyz="-0.00036585" izz="0.0061086" />
<origin rpy="0 0 0" xyz="-0.0087433 0.023551 -0.055154"/>
<mass value="4.0809"/>
<inertia ixx="0.012604" ixy="-0.00020374" ixz="-0.0003086" iyy="0.0164" iyz="-0.00036585" izz="0.0061086"/>
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="../meshes/r_thigh.dae" />
<mesh filename="file:///home/hiverlab/ros2_ws/install/x30_description/share/x30_description/meshes/r_thigh.dae"/>
</geometry>
<material name="light-grey"/>
</visual>
<collision>
<origin xyz="-0.02 0 -0.13" />
<origin xyz="-0.02 0 -0.13"/>
<geometry>
<cylinder length="0.25" radius="0.04"/>
</geometry>
</collision>
</link>
<joint name="FR_HipY_joint" type="revolute">
<origin xyz="0 -0.11675 0" rpy="0 0 0" />
<parent link="FR_HIP" />
<child link="FR_THIGH" />
<axis xyz="0 -1 0" />
<dynamics damping="0.01" friction="0.03"/>
<limit lower="-2.967" upper="0.262" effort="84" velocity="17.5" />
<joint name="FR_HipY" type="revolute">
<origin rpy="0 0 0" xyz="0 -0.11675 0"/>
<parent link="FR_HIP"/>
<child link="FR_THIGH"/>
<axis xyz="0 -1 0"/>
<limit effort="84" lower="-2.967" upper="0.262" velocity="17.5"/>
</joint>
<link name="FR_SHANK">
<inertial>
<origin xyz="0.014851 2.0687e-05 -0.12283" rpy="0 0 0" />
<mass value="0.71386" />
<inertia ixx="0.0093039" ixy="1.7692e-07" ixz="0.00034843" iyy="0.0096272" iyz="-3.7714e-06" izz="0.00041542" />
<origin rpy="0 0 0" xyz="0.014851 2.0687e-05 -0.12283"/>
<mass value="0.71386"/>
<inertia ixx="0.0093039" ixy="1.7692e-07" ixz="0.00034843" iyy="0.0096272" iyz="-3.7714e-06" izz="0.00041542"/>
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="../meshes/shank.dae" />
<mesh filename="file:///home/hiverlab/ros2_ws/install/x30_description/share/x30_description/meshes/shank.dae"/>
</geometry>
<material name="silver"/>
</visual>
<collision>
<origin rpy="0. -0.40 0." xyz="0.02 0 -0.046" />
<origin rpy="0. -0.40 0." xyz="0.02 0 -0.046"/>
<geometry>
<cylinder length="0.1" radius="0.025"/>
</geometry>
</collision>
<collision>
<origin rpy="0. 0 0." xyz="0.045 0 -0.155" />
<origin rpy="0. 0 0." xyz="0.045 0 -0.155"/>
<geometry>
<cylinder length="0.12" radius="0.025"/>
</geometry>
</collision>
<collision>
<origin rpy="0. 0.45 0." xyz="0.025 0 -0.246" />
<origin rpy="0. 0.45 0." xyz="0.025 0 -0.246"/>
<geometry>
<cylinder length="0.08" radius="0.022"/>
</geometry>
</collision>
</link>
<joint name="FR_Knee_joint" type="revolute">
<origin xyz="0 0 -0.30" rpy="0 0 0" />
<parent link="FR_THIGH" />
<child link="FR_SHANK" />
<axis xyz="0 -1 0" />
<dynamics damping="0.01" friction="0.03"/>
<limit lower="0.349" upper="2.531" effort="180" velocity="16.1" />
<joint name="FR_Knee" type="revolute">
<origin rpy="0 0 0" xyz="0 0 -0.30"/>
<parent link="FR_THIGH"/>
<child link="FR_SHANK"/>
<axis xyz="0 -1 0"/>
<limit effort="160" lower="0.349" upper="2.531" velocity="16.1"/>
</joint>
<link name="FR_FOOT">
<inertial>
<mass value="0.06" />
<inertia ixx="1e-12" ixy="0" ixz="0" iyy="1e-12" iyz="0" izz="1e-12" />
<mass value="0.06"/>
<inertia ixx="1e-12" ixy="0" ixz="0" iyy="1e-12" iyz="0" izz="1e-12"/>
</inertial>
<collision>
<geometry>
@ -248,111 +255,99 @@
</geometry>
</collision>
</link>
<joint name="FR_Ankle" type="fixed" dont_collapse="true">
<joint dont_collapse="true" name="FR_Ankle" type="fixed">
<origin xyz="0 0 -0.31"/>
<parent link="FR_SHANK" />
<child link="FR_FOOT" />
<parent link="FR_SHANK"/>
<child link="FR_FOOT"/>
</joint>
<link name="HL_HIP">
<inertial>
<origin xyz="0.0018591 -0.011377 -2.7675e-05" rpy="0 3.14159 0" />
<mass value="1.43" />
<inertia ixx="0.0014068" ixy="1.8545e-05" ixz="4.1487e-06" iyy="0.0026782" iyz="-7.0795e-06" izz="0.0015918" />
<origin rpy="0 3.14159 0" xyz="0.0018591 -0.011377 -2.7675e-05"/>
<mass value="1.43"/>
<inertia ixx="0.0014068" ixy="1.8545e-05" ixz="4.1487e-06" iyy="0.0026782" iyz="-7.0795e-06" izz="0.0015918"/>
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="../meshes/hip.dae" />
<mesh filename="file:///home/hiverlab/ros2_ws/install/x30_description/share/x30_description/meshes/hip.dae"/>
</geometry>
<material name="grey"/>
</visual>
</link>
<joint name="HL_HipX_joint" type="revolute">
<origin xyz="-0.291 0.08 0" rpy="0 0 0" />
<parent link="TORSO" />
<child link="HL_HIP" />
<axis xyz="-1 0 0" />
<dynamics damping="0.01" friction="0.03"/>
<limit lower="-0.323" upper="0.585" effort="84" velocity="17.5" />
<joint name="HL_HipX" type="revolute">
<origin rpy="0 0 0" xyz="-0.291 0.08 0"/>
<parent link="TORSO"/>
<child link="HL_HIP"/>
<axis xyz="-1 0 0"/>
<limit effort="84" lower="-0.323" upper="0.323" velocity="17.5"/>
</joint>
<link name="HL_THIGH">
<inertial>
<origin xyz="-0.0087581 -0.023554 -0.055162" rpy="0 0 0" />
<mass value="4.0809" />
<inertia ixx="0.012604" ixy="0.00020291" ixz="-0.00030875" iyy="0.0164" iyz="0.00036593" izz="0.0061084" />
<origin rpy="0 0 0" xyz="-0.0087581 -0.023554 -0.055162"/>
<mass value="4.0809"/>
<inertia ixx="0.012604" ixy="0.00020291" ixz="-0.00030875" iyy="0.0164" iyz="0.00036593" izz="0.0061084"/>
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="../meshes/l_thigh.dae" />
<mesh filename="file:///home/hiverlab/ros2_ws/install/x30_description/share/x30_description/meshes/l_thigh.dae"/>
</geometry>
<material name="light-grey"/>
</visual>
<collision>
<origin xyz="-0.02 0 -0.13" />
<origin xyz="-0.02 0 -0.13"/>
<geometry>
<cylinder length="0.25" radius="0.04"/>
</geometry>
</collision>
</link>
<joint name="HL_HipY_joint" type="revolute">
<origin xyz="0 0.11675 0" rpy="0 0 0" />
<parent link="HL_HIP" />
<child link="HL_THIGH" />
<axis xyz="0 -1 0" />
<dynamics damping="0.01" friction="0.03"/>
<limit lower="-2.967" upper="0.262" effort="84" velocity="17.5" />
<joint name="HL_HipY" type="revolute">
<origin rpy="0 0 0" xyz="0 0.11675 0"/>
<parent link="HL_HIP"/>
<child link="HL_THIGH"/>
<axis xyz="0 -1 0"/>
<limit effort="84" lower="-2.967" upper="0.262" velocity="17.5"/>
</joint>
<link name="HL_SHANK">
<inertial>
<origin xyz="0.014851 2.0679e-05 -0.12283" rpy="0 0 0" />
<mass value="0.71386" />
<inertia ixx="0.0093039" ixy="1.7692e-07" ixz="0.00034843" iyy="0.0096272" iyz="-3.7714e-06" izz="0.00041542" />
<origin rpy="0 0 0" xyz="0.014851 2.0679e-05 -0.12283"/>
<mass value="0.71386"/>
<inertia ixx="0.0093039" ixy="1.7692e-07" ixz="0.00034843" iyy="0.0096272" iyz="-3.7714e-06" izz="0.00041542"/>
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="../meshes/shank.dae" />
<mesh filename="file:///home/hiverlab/ros2_ws/install/x30_description/share/x30_description/meshes/shank.dae"/>
</geometry>
<material name="silver"/>
</visual>
<collision>
<origin rpy="0. -0.40 0." xyz="0.02 0 -0.046" />
<origin rpy="0. -0.40 0." xyz="0.02 0 -0.046"/>
<geometry>
<cylinder length="0.1" radius="0.025"/>
</geometry>
</collision>
<collision>
<origin rpy="0. 0 0." xyz="0.045 0 -0.155" />
<origin rpy="0. 0 0." xyz="0.045 0 -0.155"/>
<geometry>
<cylinder length="0.12" radius="0.025"/>
</geometry>
</collision>
<collision>
<origin rpy="0. 0.45 0." xyz="0.025 0 -0.246" />
<origin rpy="0. 0.45 0." xyz="0.025 0 -0.246"/>
<geometry>
<cylinder length="0.08" radius="0.022"/>
</geometry>
</collision>
</link>
<joint name="HL_Knee_joint" type="revolute">
<origin xyz="0 0 -0.30" rpy="0 0 0" />
<parent link="HL_THIGH" />
<child link="HL_SHANK" />
<axis xyz="0 -1 0" />
<dynamics damping="0.01" friction="0.03"/>
<limit lower="0.349" upper="2.531" effort="180" velocity="16.1" />
<joint name="HL_Knee" type="revolute">
<origin rpy="0 0 0" xyz="0 0 -0.30"/>
<parent link="HL_THIGH"/>
<child link="HL_SHANK"/>
<axis xyz="0 -1 0"/>
<limit effort="160" lower="0.349" upper="2.531" velocity="16.1"/>
</joint>
<link name="HL_FOOT">
<inertial>
<mass value="0.06" />
<inertia ixx="1e-12" ixy="0" ixz="0" iyy="1e-12" iyz="0" izz="1e-12" />
<mass value="0.06"/>
<inertia ixx="1e-12" ixy="0" ixz="0" iyy="1e-12" iyz="0" izz="1e-12"/>
</inertial>
<collision>
<geometry>
@ -360,110 +355,99 @@
</geometry>
</collision>
</link>
<joint name="HL_Ankle" type="fixed" dont_collapse="true">
<joint dont_collapse="true" name="HL_Ankle" type="fixed">
<origin xyz="0 0 -0.31"/>
<parent link="HL_SHANK" />
<child link="HL_FOOT" />
<parent link="HL_SHANK"/>
<child link="HL_FOOT"/>
</joint>
<link name="HR_HIP">
<inertial>
<origin xyz="0.0018591 0.011377 0.00027039" rpy="3.14159 3.14159 0" />
<mass value="1.43" />
<inertia ixx="0.0014068" ixy="-1.8545e-05" ixz="-2.7664e-06" iyy="0.0026782" iyz="-2.1221e-06" izz="0.0015918" />
<origin rpy="3.14159 3.14159 0" xyz="0.0018591 0.011377 0.00027039"/>
<mass value="1.43"/>
<inertia ixx="0.0014068" ixy="-1.8545e-05" ixz="-2.7664e-06" iyy="0.0026782" iyz="-2.1221e-06" izz="0.0015918"/>
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="../meshes/hip.dae" />
<mesh filename="file:///home/hiverlab/ros2_ws/install/x30_description/share/x30_description/meshes/hip.dae"/>
</geometry>
<material name="grey"/>
</visual>
</link>
<joint name="HR_HipX_joint" type="revolute">
<origin xyz="-0.291 -0.08 0" rpy="0 0 0" />
<parent link="TORSO" />
<child link="HR_HIP" />
<axis xyz="-1 0 0" />
<dynamics damping="0.01" friction="0.03"/>
<limit lower="-0.585" upper="0.323" effort="84" velocity="17.5" />
<joint name="HR_HipX" type="revolute">
<origin rpy="0 0 0" xyz="-0.291 -0.08 0"/>
<parent link="TORSO"/>
<child link="HR_HIP"/>
<axis xyz="-1 0 0"/>
<limit effort="84" lower="-0.323" upper="0.323" velocity="17.5"/>
</joint>
<link name="HR_THIGH">
<inertial>
<origin xyz="-0.0087433 0.023551 -0.055154" rpy="0 0 0" />
<mass value="4.0809" />
<inertia ixx="0.012604" ixy="-0.00020374" ixz="-0.0003086" iyy="0.0164" iyz="-0.00036585" izz="0.0061086" />
<origin rpy="0 0 0" xyz="-0.0087433 0.023551 -0.055154"/>
<mass value="4.0809"/>
<inertia ixx="0.012604" ixy="-0.00020374" ixz="-0.0003086" iyy="0.0164" iyz="-0.00036585" izz="0.0061086"/>
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="../meshes/r_thigh.dae" />
<mesh filename="file:///home/hiverlab/ros2_ws/install/x30_description/share/x30_description/meshes/r_thigh.dae"/>
</geometry>
<material name="light-grey"/>
</visual>
<collision>
<origin xyz="-0.02 0 -0.13" />
<origin xyz="-0.02 0 -0.13"/>
<geometry>
<cylinder length="0.25" radius="0.04"/>
</geometry>
</collision>
</link>
<joint name="HR_HipY_joint" type="revolute">
<origin xyz="0 -0.11675 0" rpy="0 0 0" />
<parent link="HR_HIP" />
<child link="HR_THIGH" />
<axis xyz="0 -1 0" />
<dynamics damping="0.01" friction="0.03"/>
<limit lower="-2.967" upper="0.262" effort="84" velocity="17.5" />
<joint name="HR_HipY" type="revolute">
<origin rpy="0 0 0" xyz="0 -0.11675 0"/>
<parent link="HR_HIP"/>
<child link="HR_THIGH"/>
<axis xyz="0 -1 0"/>
<limit effort="84" lower="-2.967" upper="0.262" velocity="17.5"/>
</joint>
<link name="HR_SHANK">
<inertial>
<origin xyz="0.014851 2.0679e-05 -0.12283" rpy="0 0 0" />
<mass value="0.71386" />
<inertia ixx="0.0093039" ixy="1.7692e-07" ixz="0.00034843" iyy="0.0096272" iyz="-3.7714e-06" izz="0.00041542" />
<origin rpy="0 0 0" xyz="0.014851 2.0679e-05 -0.12283"/>
<mass value="0.71386"/>
<inertia ixx="0.0093039" ixy="1.7692e-07" ixz="0.00034843" iyy="0.0096272" iyz="-3.7714e-06" izz="0.00041542"/>
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="../meshes/shank.dae" />
<mesh filename="file:///home/hiverlab/ros2_ws/install/x30_description/share/x30_description/meshes/shank.dae"/>
</geometry>
<material name="silver"/>
</visual>
<collision>
<origin rpy="0. -0.40 0." xyz="0.02 0 -0.046" />
<origin rpy="0. -0.40 0." xyz="0.02 0 -0.046"/>
<geometry>
<cylinder length="0.1" radius="0.025"/>
</geometry>
</collision>
<collision>
<origin rpy="0. 0 0." xyz="0.045 0 -0.155" />
<origin rpy="0. 0 0." xyz="0.045 0 -0.155"/>
<geometry>
<cylinder length="0.12" radius="0.025"/>
</geometry>
</collision>
<collision>
<origin rpy="0. 0.45 0." xyz="0.025 0 -0.246" />
<origin rpy="0. 0.45 0." xyz="0.025 0 -0.246"/>
<geometry>
<cylinder length="0.08" radius="0.022"/>
</geometry>
</collision>
</link>
<joint name="HR_Knee_joint" type="revolute">
<origin xyz="0 0 -0.30" rpy="0 0 0" />
<parent link="HR_THIGH" />
<child link="HR_SHANK" />
<axis xyz="0 -1 0" />
<dynamics damping="0.01" friction="0.03"/>
<limit lower="0.349" upper="2.531" effort="180" velocity="16.1" />
<joint name="HR_Knee" type="revolute">
<origin rpy="0 0 0" xyz="0 0 -0.30"/>
<parent link="HR_THIGH"/>
<child link="HR_SHANK"/>
<axis xyz="0 -1 0"/>
<limit effort="160" lower="0.349" upper="2.531" velocity="16.1"/>
</joint>
<link name="HR_FOOT">
<inertial>
<mass value="0.06" />
<inertia ixx="1e-12" ixy="0" ixz="0" iyy="1e-12" iyz="0" izz="1e-12" />
<mass value="0.06"/>
<inertia ixx="1e-12" ixy="0" ixz="0" iyy="1e-12" iyz="0" izz="1e-12"/>
</inertial>
<collision>
<geometry>
@ -471,11 +455,288 @@
</geometry>
</collision>
</link>
<joint name="HR_Ankle" type="fixed" dont_collapse="true">
<joint dont_collapse="true" name="HR_Ankle" type="fixed">
<origin xyz="0 0 -0.31"/>
<parent link="HR_SHANK" />
<child link="HR_FOOT" />
<parent link="HR_SHANK"/>
<child link="HR_FOOT"/>
</joint>
<material name="black">
<color rgba="0.0 0.0 0.0 1.0"/>
</material>
<material name="blue">
<color rgba="0.0 0.0 0.8 1.0"/>
</material>
<material name="green">
<color rgba="0.0 0.8 0.0 1.0"/>
</material>
<material name="deep-grey">
<color rgba="0.1 0.1 0.1 1.0"/>
</material>
<material name="grey">
<color rgba="0.2 0.2 0.2 1.0"/>
</material>
<material name="light-grey">
<color rgba="0.35 0.35 0.35 1.0"/>
</material>
<material name="silver">
<color rgba="0.9137254901960784 0.9137254901960784 0.8470588235294118 1.0"/>
</material>
<material name="white">
<color rgba="1.0 1.0 1.0 1.0"/>
</material>
<!-- FL transmissions -->
<transmission name="FL_HipX_tran">
<type>transmission_interface/SimpleTransmission</type>
<joint name="FL_HipX">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="FL_HipX_motor">
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="FL_HipY_tran">
<type>transmission_interface/SimpleTransmission</type>
<joint name="FL_HipY">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="FL_HipY_motor">
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="FL_Knee_tran">
<type>transmission_interface/SimpleTransmission</type>
<joint name="FL_Knee">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="FL_Knee_motor">
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<!-- FR transmissions -->
<transmission name="FR_HipX_tran">
<type>transmission_interface/SimpleTransmission</type>
<joint name="FR_HipX">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="FR_HipX_motor">
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="FR_HipY_tran">
<type>transmission_interface/SimpleTransmission</type>
<joint name="FR_HipY">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="FR_HipY_motor">
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="FR_Knee_tran">
<type>transmission_interface/SimpleTransmission</type>
<joint name="FR_Knee">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="FR_Knee_motor">
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<!-- HL transmissions -->
<transmission name="HL_HipX_tran">
<type>transmission_interface/SimpleTransmission</type>
<joint name="HL_HipX">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="HL_HipX_motor">
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="HL_HipY_tran">
<type>transmission_interface/SimpleTransmission</type>
<joint name="HL_HipY">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="HL_HipY_motor">
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="HL_Knee_tran">
<type>transmission_interface/SimpleTransmission</type>
<joint name="HL_Knee">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="HL_Knee_motor">
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<!-- HR transmissions -->
<transmission name="HR_HipX_tran">
<type>transmission_interface/SimpleTransmission</type>
<joint name="HR_HipX">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="HR_HipX_motor">
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="HR_HipY_tran">
<type>transmission_interface/SimpleTransmission</type>
<joint name="HR_HipY">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="HR_HipY_motor">
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="HR_Knee_tran">
<type>transmission_interface/SimpleTransmission</type>
<joint name="HR_Knee">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="HR_Knee_motor">
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<ros2_control name="UnitreeSystem" type="system">
<hardware>
<plugin>hardware_unitree_mujoco/HardwareUnitree</plugin>
</hardware>
<joint name="FR_HipX">
<command_interface name="position"/>
<command_interface name="velocity"/>
<command_interface name="effort"/>
<command_interface name="kp"/>
<command_interface name="kd"/>
<state_interface name="position"/>
<state_interface name="velocity"/>
<state_interface name="effort"/>
</joint>
<joint name="FR_HipY">
<command_interface name="position"/>
<command_interface name="velocity"/>
<command_interface name="effort"/>
<command_interface name="kp"/>
<command_interface name="kd"/>
<state_interface name="position"/>
<state_interface name="velocity"/>
<state_interface name="effort"/>
</joint>
<joint name="FR_Knee">
<command_interface name="position"/>
<command_interface name="velocity"/>
<command_interface name="effort"/>
<command_interface name="kp"/>
<command_interface name="kd"/>
<state_interface name="position"/>
<state_interface name="velocity"/>
<state_interface name="effort"/>
</joint>
<joint name="FL_HipX">
<command_interface name="position"/>
<command_interface name="velocity"/>
<command_interface name="effort"/>
<command_interface name="kp"/>
<command_interface name="kd"/>
<state_interface name="position"/>
<state_interface name="velocity"/>
<state_interface name="effort"/>
</joint>
<joint name="FL_HipY">
<command_interface name="position"/>
<command_interface name="velocity"/>
<command_interface name="effort"/>
<command_interface name="kp"/>
<command_interface name="kd"/>
<state_interface name="position"/>
<state_interface name="velocity"/>
<state_interface name="effort"/>
</joint>
<joint name="FL_Knee">
<command_interface name="position"/>
<command_interface name="velocity"/>
<command_interface name="effort"/>
<command_interface name="kp"/>
<command_interface name="kd"/>
<state_interface name="position"/>
<state_interface name="velocity"/>
<state_interface name="effort"/>
</joint>
<joint name="HR_HipX">
<command_interface name="position"/>
<command_interface name="velocity"/>
<command_interface name="effort"/>
<command_interface name="kp"/>
<command_interface name="kd"/>
<state_interface name="position"/>
<state_interface name="velocity"/>
<state_interface name="effort"/>
</joint>
<joint name="HR_HipY">
<command_interface name="position"/>
<command_interface name="velocity"/>
<command_interface name="effort"/>
<command_interface name="kp"/>
<command_interface name="kd"/>
<state_interface name="position"/>
<state_interface name="velocity"/>
<state_interface name="effort"/>
</joint>
<joint name="HR_Knee">
<command_interface name="position"/>
<command_interface name="velocity"/>
<command_interface name="effort"/>
<command_interface name="kp"/>
<command_interface name="kd"/>
<state_interface name="position"/>
<state_interface name="velocity"/>
<state_interface name="effort"/>
</joint>
<joint name="HL_HipX">
<command_interface name="position"/>
<command_interface name="velocity"/>
<command_interface name="effort"/>
<command_interface name="kp"/>
<command_interface name="kd"/>
<state_interface name="position"/>
<state_interface name="velocity"/>
<state_interface name="effort"/>
</joint>
<joint name="HL_HipY">
<command_interface name="position"/>
<command_interface name="velocity"/>
<command_interface name="effort"/>
<command_interface name="kp"/>
<command_interface name="kd"/>
<state_interface name="position"/>
<state_interface name="velocity"/>
<state_interface name="effort"/>
</joint>
<joint name="HL_Knee">
<command_interface name="position"/>
<command_interface name="velocity"/>
<command_interface name="effort"/>
<command_interface name="kp"/>
<command_interface name="kd"/>
<state_interface name="position"/>
<state_interface name="velocity"/>
<state_interface name="effort"/>
</joint>
<sensor name="imu_sensor">
<state_interface name="orientation.w"/>
<state_interface name="orientation.x"/>
<state_interface name="orientation.y"/>
<state_interface name="orientation.z"/>
<state_interface name="angular_velocity.x"/>
<state_interface name="angular_velocity.y"/>
<state_interface name="angular_velocity.z"/>
<state_interface name="linear_acceleration.x"/>
<state_interface name="linear_acceleration.y"/>
<state_interface name="linear_acceleration.z"/>
</sensor>
<sensor name="foot_force">
<state_interface name="FR"/>
<state_interface name="FL"/>
<state_interface name="HR"/>
<state_interface name="HL"/>
</sensor>
</ros2_control>
</robot>

View File

@ -58,7 +58,7 @@
<parent link="TORSO"/>
<child link="FL_HIP"/>
<axis xyz="-1 0 0"/>
<limit lower="-0.323" upper="0.585" effort="84" velocity="17.5"/>
<limit lower="-0.323" upper="0.323" effort="84" velocity="17.5"/>
</joint>
<link name="FL_THIGH">
@ -126,7 +126,7 @@
<parent link="FL_THIGH" />
<child link="FL_SHANK" />
<axis xyz="0 -1 0" />
<limit lower="0.349" upper="2.531" effort="180" velocity="16.1" />
<limit lower="0.349" upper="2.531" effort="160" velocity="16.1" />
</joint>
<link name="FL_FOOT">
@ -166,7 +166,7 @@
<parent link="TORSO" />
<child link="FR_HIP" />
<axis xyz="-1 0 0" />
<limit lower="-0.585" upper="0.323" effort="84" velocity="17.5" />
<limit lower="-0.323" upper="0.323" effort="84" velocity="17.5" />
</joint>
<link name="FR_THIGH">
@ -234,7 +234,7 @@
<parent link="FR_THIGH" />
<child link="FR_SHANK" />
<axis xyz="0 -1 0" />
<limit lower="0.349" upper="2.531" effort="180" velocity="16.1" />
<limit lower="0.349" upper="2.531" effort="160" velocity="16.1" />
</joint>
<link name="FR_FOOT">
@ -274,7 +274,7 @@
<parent link="TORSO" />
<child link="HL_HIP" />
<axis xyz="-1 0 0" />
<limit lower="-0.323" upper="0.585" effort="84" velocity="17.5" />
<limit lower="-0.323" upper="0.323" effort="84" velocity="17.5" />
</joint>
<link name="HL_THIGH">
@ -342,7 +342,7 @@
<parent link="HL_THIGH" />
<child link="HL_SHANK" />
<axis xyz="0 -1 0" />
<limit lower="0.349" upper="2.531" effort="180" velocity="16.1" />
<limit lower="0.349" upper="2.531" effort="160" velocity="16.1" />
</joint>
<link name="HL_FOOT">
@ -382,7 +382,7 @@
<parent link="TORSO" />
<child link="HR_HIP" />
<axis xyz="-1 0 0" />
<limit lower="-0.585" upper="0.323" effort="84" velocity="17.5" />
<limit lower="-0.323" upper="0.323" effort="84" velocity="17.5" />
</joint>
<link name="HR_THIGH">
@ -450,7 +450,7 @@
<parent link="HR_THIGH" />
<child link="HR_SHANK" />
<axis xyz="0 -1 0" />
<limit lower="0.349" upper="2.531" effort="180" velocity="16.1" />
<limit lower="0.349" upper="2.531" effort="160" velocity="16.1" />
</joint>
<link name="HR_FOOT">