diff --git a/legged_gym/envs/__init__.py b/legged_gym/envs/__init__.py
index fcad6bf..29a2d9a 100644
--- a/legged_gym/envs/__init__.py
+++ b/legged_gym/envs/__init__.py
@@ -2,13 +2,16 @@ from legged_gym import LEGGED_GYM_ROOT_DIR, LEGGED_GYM_ENVS_DIR
from legged_gym.envs.go2.go2_config import GO2RoughCfg, GO2RoughCfgPPO
from legged_gym.envs.h1.h1_config import H1RoughCfg, H1RoughCfgPPO
+from legged_gym.envs.h1.h1_env import H1Robot
from legged_gym.envs.h1_2.h1_2_config import H1_2RoughCfg, H1_2RoughCfgPPO
+from legged_gym.envs.h1_2.h1_2_env import H1_2Robot
from legged_gym.envs.g1.g1_config import G1RoughCfg, G1RoughCfgPPO
+from legged_gym.envs.g1.g1_env import G1Robot
from .base.legged_robot import LeggedRobot
from legged_gym.utils.task_registry import task_registry
task_registry.register( "go2", LeggedRobot, GO2RoughCfg(), GO2RoughCfgPPO())
-task_registry.register( "h1", LeggedRobot, H1RoughCfg(), H1RoughCfgPPO())
-task_registry.register( "h1_2", LeggedRobot, H1_2RoughCfg(), H1_2RoughCfgPPO())
-task_registry.register( "g1", LeggedRobot, G1RoughCfg(), G1RoughCfgPPO())
+task_registry.register( "h1", H1Robot, H1RoughCfg(), H1RoughCfgPPO())
+task_registry.register( "h1_2", H1_2Robot, H1_2RoughCfg(), H1_2RoughCfgPPO())
+task_registry.register( "g1", G1Robot, G1RoughCfg(), G1RoughCfgPPO())
diff --git a/legged_gym/envs/g1/g1_config.py b/legged_gym/envs/g1/g1_config.py
index e21f852..6b88cc8 100644
--- a/legged_gym/envs/g1/g1_config.py
+++ b/legged_gym/envs/g1/g1_config.py
@@ -20,18 +20,29 @@ class G1RoughCfg( LeggedRobotCfg ):
}
class env(LeggedRobotCfg.env):
- num_observations = 48
+ num_observations = 47
+ num_privileged_obs = 50
num_actions = 12
+
+
+ class domain_rand(LeggedRobotCfg.domain_rand):
+ randomize_friction = True
+ friction_range = [0.1, 1.25]
+ randomize_base_mass = True
+ added_mass_range = [-1., 3.]
+ push_robots = True
+ push_interval_s = 5
+ max_push_vel_xy = 1.5
class control( LeggedRobotCfg.control ):
# PD Drive parameters:
control_type = 'P'
# PD Drive parameters:
- stiffness = {'hip_yaw': 150,
- 'hip_roll': 150,
- 'hip_pitch': 150,
- 'knee': 300,
+ stiffness = {'hip_yaw': 100,
+ 'hip_roll': 100,
+ 'hip_pitch': 100,
+ 'knee': 150,
'ankle': 40,
} # [N*m/rad]
damping = { 'hip_yaw': 2,
@@ -46,17 +57,18 @@ class G1RoughCfg( LeggedRobotCfg ):
decimation = 4
class asset( LeggedRobotCfg.asset ):
- file = '{LEGGED_GYM_ROOT_DIR}/resources/robots/g1/urdf/g1.urdf'
+ file = '{LEGGED_GYM_ROOT_DIR}/resources/robots/g1_description/g1_12dof.urdf'
name = "g1"
foot_name = "ankle_roll"
penalize_contacts_on = ["hip", "knee"]
- terminate_after_contacts_on = ["torso"]
- self_collisions = 1 # 1 to disable, 0 to enable...bitwise filter
+ terminate_after_contacts_on = ["pelvis"]
+ self_collisions = 0 # 1 to disable, 0 to enable...bitwise filter
flip_visual_attachments = False
class rewards( LeggedRobotCfg.rewards ):
soft_dof_pos_limit = 0.9
- base_height_target = 0.728
+ base_height_target = 0.78
+
class scales( LeggedRobotCfg.rewards.scales ):
tracking_lin_vel = 1.0
tracking_ang_vel = 0.5
@@ -64,19 +76,34 @@ class G1RoughCfg( LeggedRobotCfg ):
ang_vel_xy = -0.05
orientation = -1.0
base_height = -10.0
- dof_acc = -2.5e-8
- feet_air_time = 1.0
+ dof_acc = -2.5e-7
+ dof_vel = -1e-3
+ feet_air_time = 0.0
collision = 0.0
action_rate = -0.01
- # torques = -0.0001
dof_pos_limits = -5.0
+ alive = 0.15
+ hip_pos = -1.0
+ contact_no_vel = -0.2
+ feet_swing_height = -20.0
+ contact = 0.18
class G1RoughCfgPPO( LeggedRobotCfgPPO ):
class policy:
init_noise_std = 0.8
+ actor_hidden_dims = [32]
+ critic_hidden_dims = [32]
+ activation = 'elu' # can be elu, relu, selu, crelu, lrelu, tanh, sigmoid
+ # only for 'ActorCriticRecurrent':
+ rnn_type = 'lstm'
+ rnn_hidden_size = 64
+ rnn_num_layers = 1
+
class algorithm( LeggedRobotCfgPPO.algorithm ):
entropy_coef = 0.01
class runner( LeggedRobotCfgPPO.runner ):
+ policy_class_name = "ActorCriticRecurrent"
+ max_iterations = 10000
run_name = ''
experiment_name = 'g1'
diff --git a/legged_gym/envs/g1/g1_env.py b/legged_gym/envs/g1/g1_env.py
new file mode 100644
index 0000000..b91b9d6
--- /dev/null
+++ b/legged_gym/envs/g1/g1_env.py
@@ -0,0 +1,124 @@
+
+from legged_gym.envs.base.legged_robot import LeggedRobot
+
+from isaacgym.torch_utils import *
+from isaacgym import gymtorch, gymapi, gymutil
+import torch
+
+class G1Robot(LeggedRobot):
+
+ def _get_noise_scale_vec(self, cfg):
+ """ Sets a vector used to scale the noise added to the observations.
+ [NOTE]: Must be adapted when changing the observations structure
+
+ Args:
+ cfg (Dict): Environment config file
+
+ Returns:
+ [torch.Tensor]: Vector of scales used to multiply a uniform distribution in [-1, 1]
+ """
+ noise_vec = torch.zeros_like(self.obs_buf[0])
+ self.add_noise = self.cfg.noise.add_noise
+ noise_scales = self.cfg.noise.noise_scales
+ noise_level = self.cfg.noise.noise_level
+ noise_vec[:3] = noise_scales.ang_vel * noise_level * self.obs_scales.ang_vel
+ noise_vec[3:6] = noise_scales.gravity * noise_level
+ noise_vec[6:9] = 0. # commands
+ noise_vec[9:9+self.num_actions] = noise_scales.dof_pos * noise_level * self.obs_scales.dof_pos
+ noise_vec[9+self.num_actions:9+2*self.num_actions] = noise_scales.dof_vel * noise_level * self.obs_scales.dof_vel
+ noise_vec[9+2*self.num_actions:9+3*self.num_actions] = 0. # previous actions
+ noise_vec[9+3*self.num_actions:9+3*self.num_actions+2] = 0. # sin/cos phase
+
+ return noise_vec
+
+ def _init_foot(self):
+ self.feet_num = len(self.feet_indices)
+
+ rigid_body_state = self.gym.acquire_rigid_body_state_tensor(self.sim)
+ self.rigid_body_states = gymtorch.wrap_tensor(rigid_body_state)
+ self.rigid_body_states_view = self.rigid_body_states.view(self.num_envs, -1, 13)
+ self.feet_state = self.rigid_body_states_view[:, self.feet_indices, :]
+ self.feet_pos = self.feet_state[:, :, :3]
+ self.feet_vel = self.feet_state[:, :, 7:10]
+
+ def _init_buffers(self):
+ super()._init_buffers()
+ self._init_foot()
+
+ def update_feet_state(self):
+ self.gym.refresh_rigid_body_state_tensor(self.sim)
+
+ self.feet_state = self.rigid_body_states_view[:, self.feet_indices, :]
+ self.feet_pos = self.feet_state[:, :, :3]
+ self.feet_vel = self.feet_state[:, :, 7:10]
+
+ def _post_physics_step_callback(self):
+ self.update_feet_state()
+
+ period = 0.8
+ offset = 0.5
+ self.phase = (self.episode_length_buf * self.dt) % period / period
+ self.phase_left = self.phase
+ self.phase_right = (self.phase + offset) % 1
+ self.leg_phase = torch.cat([self.phase_left.unsqueeze(1), self.phase_right.unsqueeze(1)], dim=-1)
+
+ return super()._post_physics_step_callback()
+
+
+ def compute_observations(self):
+ """ Computes observations
+ """
+ sin_phase = torch.sin(2 * np.pi * self.phase ).unsqueeze(1)
+ cos_phase = torch.cos(2 * np.pi * self.phase ).unsqueeze(1)
+ self.obs_buf = torch.cat(( self.base_ang_vel * self.obs_scales.ang_vel,
+ self.projected_gravity,
+ self.commands[:, :3] * self.commands_scale,
+ (self.dof_pos - self.default_dof_pos) * self.obs_scales.dof_pos,
+ self.dof_vel * self.obs_scales.dof_vel,
+ self.actions,
+ sin_phase,
+ cos_phase
+ ),dim=-1)
+ self.privileged_obs_buf = torch.cat(( self.base_lin_vel * self.obs_scales.lin_vel,
+ self.base_ang_vel * self.obs_scales.ang_vel,
+ self.projected_gravity,
+ self.commands[:, :3] * self.commands_scale,
+ (self.dof_pos - self.default_dof_pos) * self.obs_scales.dof_pos,
+ self.dof_vel * self.obs_scales.dof_vel,
+ self.actions,
+ sin_phase,
+ cos_phase
+ ),dim=-1)
+ # add perceptive inputs if not blind
+ # add noise if needed
+ if self.add_noise:
+ self.obs_buf += (2 * torch.rand_like(self.obs_buf) - 1) * self.noise_scale_vec
+
+
+ def _reward_contact(self):
+ res = torch.zeros(self.num_envs, dtype=torch.float, device=self.device)
+ for i in range(self.feet_num):
+ is_stance = self.leg_phase[:, i] < 0.55
+ contact = self.contact_forces[:, self.feet_indices[i], 2] > 1
+ res += ~(contact ^ is_stance)
+ return res
+
+ def _reward_feet_swing_height(self):
+ contact = torch.norm(self.contact_forces[:, self.feet_indices, :3], dim=2) > 1.
+ pos_error = torch.square(self.feet_pos[:, :, 2] - 0.08) * ~contact
+ return torch.sum(pos_error, dim=(1))
+
+ def _reward_alive(self):
+ # Reward for staying alive
+ return 1.0
+
+ def _reward_contact_no_vel(self):
+ # Penalize contact with no velocity
+ contact = torch.norm(self.contact_forces[:, self.feet_indices, :3], dim=2) > 1.
+ contact_feet_vel = self.feet_vel * contact.unsqueeze(-1)
+ penalize = torch.square(contact_feet_vel[:, :, :3])
+ return torch.sum(penalize, dim=(1,2))
+
+ def _reward_hip_pos(self):
+ return torch.sum(torch.square(self.dof_pos[:,[1,2,7,8]]), dim=1)
+
\ No newline at end of file
diff --git a/legged_gym/envs/h1/h1_config.py b/legged_gym/envs/h1/h1_config.py
index ba4c3a1..709294b 100644
--- a/legged_gym/envs/h1/h1_config.py
+++ b/legged_gym/envs/h1/h1_config.py
@@ -6,14 +6,14 @@ class H1RoughCfg( LeggedRobotCfg ):
default_joint_angles = { # = target angles [rad] when action = 0.0
'left_hip_yaw_joint' : 0. ,
'left_hip_roll_joint' : 0,
- 'left_hip_pitch_joint' : -0.4,
- 'left_knee_joint' : 0.8,
- 'left_ankle_joint' : -0.4,
+ 'left_hip_pitch_joint' : -0.1,
+ 'left_knee_joint' : 0.3,
+ 'left_ankle_joint' : -0.2,
'right_hip_yaw_joint' : 0.,
'right_hip_roll_joint' : 0,
- 'right_hip_pitch_joint' : -0.4,
- 'right_knee_joint' : 0.8,
- 'right_ankle_joint' : -0.4,
+ 'right_hip_pitch_joint' : -0.1,
+ 'right_knee_joint' : 0.3,
+ 'right_ankle_joint' : -0.2,
'torso_joint' : 0.,
'left_shoulder_pitch_joint' : 0.,
'left_shoulder_roll_joint' : 0,
@@ -26,27 +26,38 @@ class H1RoughCfg( LeggedRobotCfg ):
}
class env(LeggedRobotCfg.env):
- num_observations = 42
+ # 3 + 3 + 3 + 10 + 10 + 10 + 2 = 41
+ num_observations = 41
+ num_privileged_obs = 44
num_actions = 10
+ class domain_rand(LeggedRobotCfg.domain_rand):
+ randomize_friction = True
+ friction_range = [0.1, 1.25]
+ randomize_base_mass = True
+ added_mass_range = [-1., 3.]
+ push_robots = True
+ push_interval_s = 5
+ max_push_vel_xy = 1.5
+
class control( LeggedRobotCfg.control ):
# PD Drive parameters:
control_type = 'P'
# PD Drive parameters:
- stiffness = {'hip_yaw': 200,
- 'hip_roll': 200,
- 'hip_pitch': 200,
- 'knee': 300,
+ stiffness = {'hip_yaw': 150,
+ 'hip_roll': 150,
+ 'hip_pitch': 150,
+ 'knee': 200,
'ankle': 40,
'torso': 300,
- 'shoulder': 100,
+ 'shoulder': 150,
"elbow":100,
} # [N*m/rad]
- damping = { 'hip_yaw': 5,
- 'hip_roll': 5,
- 'hip_pitch': 5,
- 'knee': 6,
+ damping = { 'hip_yaw': 2,
+ 'hip_roll': 2,
+ 'hip_pitch': 2,
+ 'knee': 4,
'ankle': 2,
'torso': 6,
'shoulder': 2,
@@ -63,30 +74,46 @@ class H1RoughCfg( LeggedRobotCfg ):
foot_name = "ankle"
penalize_contacts_on = ["hip", "knee"]
terminate_after_contacts_on = ["pelvis"]
- self_collisions = 1 # 1 to disable, 0 to enable...bitwise filter
+ self_collisions = 0 # 1 to disable, 0 to enable...bitwise filter
flip_visual_attachments = False
class rewards( LeggedRobotCfg.rewards ):
soft_dof_pos_limit = 0.9
- base_height_target = 0.98
+ base_height_target = 1.05
class scales( LeggedRobotCfg.rewards.scales ):
tracking_lin_vel = 1.0
tracking_ang_vel = 0.5
lin_vel_z = -2.0
- ang_vel_xy = -1.0
+ ang_vel_xy = -0.05
orientation = -1.0
- base_height = -100.0
- dof_acc = -3.5e-8
- feet_air_time = 1.0
- collision = 0.0
+ base_height = -10.0
+ dof_acc = -2.5e-7
+ feet_air_time = 0.0
+ collision = -1.0
action_rate = -0.01
torques = 0.0
- dof_pos_limits = -10.0
+ dof_pos_limits = -5.0
+ alive = 0.15
+ hip_pos = -1.0
+ contact_no_vel = -0.2
+ feet_swing_height = -20.0
+ contact = 0.18
class H1RoughCfgPPO( LeggedRobotCfgPPO ):
+ class policy:
+ init_noise_std = 0.8
+ actor_hidden_dims = [32]
+ critic_hidden_dims = [32]
+ activation = 'elu' # can be elu, relu, selu, crelu, lrelu, tanh, sigmoid
+ # only for 'ActorCriticRecurrent':
+ rnn_type = 'lstm'
+ rnn_hidden_size = 64
+ rnn_num_layers = 1
class algorithm( LeggedRobotCfgPPO.algorithm ):
entropy_coef = 0.01
class runner( LeggedRobotCfgPPO.runner ):
+ policy_class_name = "ActorCriticRecurrent"
+ max_iterations = 10000
run_name = ''
experiment_name = 'h1'
diff --git a/legged_gym/envs/h1/h1_env.py b/legged_gym/envs/h1/h1_env.py
new file mode 100644
index 0000000..ab9ca75
--- /dev/null
+++ b/legged_gym/envs/h1/h1_env.py
@@ -0,0 +1,124 @@
+
+from legged_gym.envs.base.legged_robot import LeggedRobot
+
+from isaacgym.torch_utils import *
+from isaacgym import gymtorch, gymapi, gymutil
+import torch
+
+class H1Robot(LeggedRobot):
+
+ def _get_noise_scale_vec(self, cfg):
+ """ Sets a vector used to scale the noise added to the observations.
+ [NOTE]: Must be adapted when changing the observations structure
+
+ Args:
+ cfg (Dict): Environment config file
+
+ Returns:
+ [torch.Tensor]: Vector of scales used to multiply a uniform distribution in [-1, 1]
+ """
+ noise_vec = torch.zeros_like(self.obs_buf[0])
+ self.add_noise = self.cfg.noise.add_noise
+ noise_scales = self.cfg.noise.noise_scales
+ noise_level = self.cfg.noise.noise_level
+ noise_vec[:3] = noise_scales.ang_vel * noise_level * self.obs_scales.ang_vel
+ noise_vec[3:6] = noise_scales.gravity * noise_level
+ noise_vec[6:9] = 0. # commands
+ noise_vec[9:9+self.num_actions] = noise_scales.dof_pos * noise_level * self.obs_scales.dof_pos
+ noise_vec[9+self.num_actions:9+2*self.num_actions] = noise_scales.dof_vel * noise_level * self.obs_scales.dof_vel
+ noise_vec[9+2*self.num_actions:9+3*self.num_actions] = 0. # previous actions
+ noise_vec[9+3*self.num_actions:9+3*self.num_actions+2] = 0. # sin/cos phase
+
+ return noise_vec
+
+ def _init_foot(self):
+ self.feet_num = len(self.feet_indices)
+
+ rigid_body_state = self.gym.acquire_rigid_body_state_tensor(self.sim)
+ self.rigid_body_states = gymtorch.wrap_tensor(rigid_body_state)
+ self.rigid_body_states_view = self.rigid_body_states.view(self.num_envs, -1, 13)
+ self.feet_state = self.rigid_body_states_view[:, self.feet_indices, :]
+ self.feet_pos = self.feet_state[:, :, :3]
+ self.feet_vel = self.feet_state[:, :, 7:10]
+
+ def _init_buffers(self):
+ super()._init_buffers()
+ self._init_foot()
+
+ def update_feet_state(self):
+ self.gym.refresh_rigid_body_state_tensor(self.sim)
+
+ self.feet_state = self.rigid_body_states_view[:, self.feet_indices, :]
+ self.feet_pos = self.feet_state[:, :, :3]
+ self.feet_vel = self.feet_state[:, :, 7:10]
+
+ def _post_physics_step_callback(self):
+ self.update_feet_state()
+
+ period = 0.8
+ offset = 0.5
+ self.phase = (self.episode_length_buf * self.dt) % period / period
+ self.phase_left = self.phase
+ self.phase_right = (self.phase + offset) % 1
+ self.leg_phase = torch.cat([self.phase_left.unsqueeze(1), self.phase_right.unsqueeze(1)], dim=-1)
+
+ return super()._post_physics_step_callback()
+
+
+ def compute_observations(self):
+ """ Computes observations
+ """
+ sin_phase = torch.sin(2 * np.pi * self.phase ).unsqueeze(1)
+ cos_phase = torch.cos(2 * np.pi * self.phase ).unsqueeze(1)
+ self.obs_buf = torch.cat(( self.base_ang_vel * self.obs_scales.ang_vel,
+ self.projected_gravity,
+ self.commands[:, :3] * self.commands_scale,
+ (self.dof_pos - self.default_dof_pos) * self.obs_scales.dof_pos,
+ self.dof_vel * self.obs_scales.dof_vel,
+ self.actions,
+ sin_phase,
+ cos_phase
+ ),dim=-1)
+ self.privileged_obs_buf = torch.cat(( self.base_lin_vel * self.obs_scales.lin_vel,
+ self.base_ang_vel * self.obs_scales.ang_vel,
+ self.projected_gravity,
+ self.commands[:, :3] * self.commands_scale,
+ (self.dof_pos - self.default_dof_pos) * self.obs_scales.dof_pos,
+ self.dof_vel * self.obs_scales.dof_vel,
+ self.actions,
+ sin_phase,
+ cos_phase
+ ),dim=-1)
+ # add perceptive inputs if not blind
+ # add noise if needed
+ if self.add_noise:
+ self.obs_buf += (2 * torch.rand_like(self.obs_buf) - 1) * self.noise_scale_vec
+
+
+ def _reward_contact(self):
+ res = torch.zeros(self.num_envs, dtype=torch.float, device=self.device)
+ for i in range(self.feet_num):
+ is_stance = self.leg_phase[:, i] < 0.55
+ contact = self.contact_forces[:, self.feet_indices[i], 2] > 1
+ res += ~(contact ^ is_stance)
+ return res
+
+ def _reward_feet_swing_height(self):
+ contact = torch.norm(self.contact_forces[:, self.feet_indices, :3], dim=2) > 1.
+ pos_error = torch.square(self.feet_pos[:, :, 2] - 0.08) * ~contact
+ return torch.sum(pos_error, dim=(1))
+
+ def _reward_alive(self):
+ # Reward for staying alive
+ return 1.0
+
+ def _reward_contact_no_vel(self):
+ # Penalize contact with no velocity
+ contact = torch.norm(self.contact_forces[:, self.feet_indices, :3], dim=2) > 1.
+ contact_feet_vel = self.feet_vel * contact.unsqueeze(-1)
+ penalize = torch.square(contact_feet_vel[:, :, :3])
+ return torch.sum(penalize, dim=(1,2))
+
+ def _reward_hip_pos(self):
+ return torch.sum(torch.square(self.dof_pos[:,[0,1,5,6]]), dim=1)
+
\ No newline at end of file
diff --git a/legged_gym/envs/h1_2/h1_2_config.py b/legged_gym/envs/h1_2/h1_2_config.py
index 200cc75..463646e 100644
--- a/legged_gym/envs/h1_2/h1_2_config.py
+++ b/legged_gym/envs/h1_2/h1_2_config.py
@@ -4,20 +4,20 @@ from legged_gym.envs.base.legged_robot_config import LeggedRobotCfg, LeggedRobot
class H1_2RoughCfg(LeggedRobotCfg):
class init_state(LeggedRobotCfg.init_state):
- pos = [0.0, 0.0, 1.0] # x,y,z [m]
+ pos = [0.0, 0.0, 1.05] # x,y,z [m]
default_joint_angles = { # = target angles [rad] when action = 0.0
'left_hip_yaw_joint': 0,
'left_hip_roll_joint': 0,
- 'left_hip_pitch_joint': -0.6,
- 'left_knee_joint': 1.2,
- 'left_ankle_pitch_joint': -0.6,
+ 'left_hip_pitch_joint': -0.16,
+ 'left_knee_joint': 0.36,
+ 'left_ankle_pitch_joint': -0.2,
'left_ankle_roll_joint': 0.0,
'right_hip_yaw_joint': 0,
'right_hip_roll_joint': 0,
- 'right_hip_pitch_joint': -0.6,
- 'right_knee_joint': 1.2,
- 'right_ankle_pitch_joint': -0.6,
+ 'right_hip_pitch_joint': -0.16,
+ 'right_knee_joint': 0.36,
+ 'right_ankle_pitch_joint': -0.2,
'right_ankle_roll_joint': 0.0,
'torso_joint': 0,
@@ -34,9 +34,11 @@ class H1_2RoughCfg(LeggedRobotCfg):
}
class env(LeggedRobotCfg.env):
- num_actions = 21
- num_observations = 12 + num_actions * 3
- num_envs = 8192
+ # 3 + 3 + 3 + 12 + 12 + 12 + 2 = 47
+ num_observations = 47
+ num_privileged_obs = 50
+ num_actions = 12
+
class control(LeggedRobotCfg.control):
# PD Drive parameters:
@@ -47,74 +49,82 @@ class H1_2RoughCfg(LeggedRobotCfg):
'hip_roll_joint': 200.,
'hip_pitch_joint': 200.,
'knee_joint': 300.,
- 'ankle_pitch_joint': 60.,
+ 'ankle_pitch_joint': 40.,
'ankle_roll_joint': 40.,
- 'torso_joint': 600.,
- 'shoulder_pitch_joint': 80.,
- 'shoulder_roll_joint': 80.,
- 'shoulder_yaw_joint': 40.,
- 'elbow_pitch_joint': 60.,
} # [N*m/rad]
damping = {
- 'hip_yaw_joint': 5.0,
- 'hip_roll_joint': 5.0,
- 'hip_pitch_joint': 5.0,
- 'knee_joint': 7.5,
- 'ankle_pitch_joint': 1.0,
- 'ankle_roll_joint': 0.3,
- 'torso_joint': 15.0,
- 'shoulder_pitch_joint': 2.0,
- 'shoulder_roll_joint': 2.0,
- 'shoulder_yaw_joint': 1.0,
- 'elbow_pitch_joint': 1.0,
+ 'hip_yaw_joint': 2.5,
+ 'hip_roll_joint': 2.5,
+ 'hip_pitch_joint': 2.5,
+ 'knee_joint': 4,
+ 'ankle_pitch_joint': 2.0,
+ 'ankle_roll_joint': 2.0,
} # [N*m/rad] # [N*m*s/rad]
# action scale: target angle = actionScale * action + defaultAngle
action_scale = 0.25
# decimation: Number of control action updates @ sim DT per policy DT
- decimation = 10
-
- class asset(LeggedRobotCfg.asset):
- file = '{LEGGED_GYM_ROOT_DIR}/resources/robots/h1_2/h1_2_simplified.urdf'
- name = "h1_2"
- foot_name = "ankle_roll"
- penalize_contacts_on = []
- terminate_after_contacts_on = []
- self_collisions = 1 # 1 to disable, 0 to enable...bitwise filter
- flip_visual_attachments = False
- armature = 6e-4 # stablize semi-euler integration for end effectors
+ decimation = 8
class sim(LeggedRobotCfg.sim):
- dt = 0.002 # stablize semi-euler integration for end effectors
+ dt = 0.0025
+
+ class domain_rand(LeggedRobotCfg.domain_rand):
+ randomize_friction = True
+ friction_range = [0.1, 1.25]
+ randomize_base_mass = True
+ added_mass_range = [-1., 3.]
+ push_robots = True
+ push_interval_s = 5
+ max_push_vel_xy = 1.5
+
+ class asset(LeggedRobotCfg.asset):
+ file = '{LEGGED_GYM_ROOT_DIR}/resources/robots/h1_2/h1_2_12dof.urdf'
+ name = "h1_2"
+ foot_name = "ankle_roll"
+ penalize_contacts_on = ["hip", "knee"]
+ terminate_after_contacts_on = ["pelvis"]
+ self_collisions = 0 # 1 to disable, 0 to enable...bitwise filter
+ flip_visual_attachments = False
+ armature = 1e-3
class rewards(LeggedRobotCfg.rewards):
soft_dof_pos_limit = 0.9
- base_height_target = 0.98
+ base_height_target = 1.0
class scales(LeggedRobotCfg.rewards.scales):
tracking_lin_vel = 1.0
tracking_ang_vel = 0.5
- lin_vel_z = -0.2
- ang_vel_xy = -0.1
- orientation = -0.1
+ lin_vel_z = -2.0
+ ang_vel_xy = -0.05
+ orientation = -1.0
base_height = -10.0
- dof_acc = -3e-8
- feet_air_time = 1.0
+ dof_acc = -2.5e-7
+ dof_vel = -1e-3
+ feet_air_time = 0.0
collision = 0.0
- action_rate = -0.1
- dof_pos_limits = -10.0
-
- only_positive_rewards = False # if true negative total rewards are clipped at zero (avoids early termination problems)
-
- class normalization(LeggedRobotCfg.normalization):
- clip_actions = 10.0
+ action_rate = -0.01
+ dof_pos_limits = -5.0
+ alive = 0.15
+ hip_pos = -1.0
+ contact_no_vel = -0.2
+ feet_swing_height = -20.0
+ contact = 0.18
class H1_2RoughCfgPPO(LeggedRobotCfgPPO):
-
- class policy(LeggedRobotCfgPPO.policy):
- init_noise_std = 0.3
- activation = 'tanh'
-
- class runner(LeggedRobotCfgPPO.runner):
+ class policy:
+ init_noise_std = 0.8
+ actor_hidden_dims = [32]
+ critic_hidden_dims = [32]
+ activation = 'elu' # can be elu, relu, selu, crelu, lrelu, tanh, sigmoid
+ # only for 'ActorCriticRecurrent':
+ rnn_type = 'lstm'
+ rnn_hidden_size = 64
+ rnn_num_layers = 1
+ class algorithm( LeggedRobotCfgPPO.algorithm ):
+ entropy_coef = 0.01
+ class runner( LeggedRobotCfgPPO.runner ):
+ policy_class_name = "ActorCriticRecurrent"
+ max_iterations = 10000
run_name = ''
- experiment_name = 'h1_2'
+ experiment_name = 'h1_2'
\ No newline at end of file
diff --git a/legged_gym/envs/h1_2/h1_2_env.py b/legged_gym/envs/h1_2/h1_2_env.py
new file mode 100644
index 0000000..2b6e759
--- /dev/null
+++ b/legged_gym/envs/h1_2/h1_2_env.py
@@ -0,0 +1,124 @@
+
+from legged_gym.envs.base.legged_robot import LeggedRobot
+
+from isaacgym.torch_utils import *
+from isaacgym import gymtorch, gymapi, gymutil
+import torch
+
+class H1_2Robot(LeggedRobot):
+
+ def _get_noise_scale_vec(self, cfg):
+ """ Sets a vector used to scale the noise added to the observations.
+ [NOTE]: Must be adapted when changing the observations structure
+
+ Args:
+ cfg (Dict): Environment config file
+
+ Returns:
+ [torch.Tensor]: Vector of scales used to multiply a uniform distribution in [-1, 1]
+ """
+ noise_vec = torch.zeros_like(self.obs_buf[0])
+ self.add_noise = self.cfg.noise.add_noise
+ noise_scales = self.cfg.noise.noise_scales
+ noise_level = self.cfg.noise.noise_level
+ noise_vec[:3] = noise_scales.ang_vel * noise_level * self.obs_scales.ang_vel
+ noise_vec[3:6] = noise_scales.gravity * noise_level
+ noise_vec[6:9] = 0. # commands
+ noise_vec[9:9+self.num_actions] = noise_scales.dof_pos * noise_level * self.obs_scales.dof_pos
+ noise_vec[9+self.num_actions:9+2*self.num_actions] = noise_scales.dof_vel * noise_level * self.obs_scales.dof_vel
+ noise_vec[9+2*self.num_actions:9+3*self.num_actions] = 0. # previous actions
+ noise_vec[9+3*self.num_actions:9+3*self.num_actions+2] = 0. # sin/cos phase
+
+ return noise_vec
+
+ def _init_foot(self):
+ self.feet_num = len(self.feet_indices)
+
+ rigid_body_state = self.gym.acquire_rigid_body_state_tensor(self.sim)
+ self.rigid_body_states = gymtorch.wrap_tensor(rigid_body_state)
+ self.rigid_body_states_view = self.rigid_body_states.view(self.num_envs, -1, 13)
+ self.feet_state = self.rigid_body_states_view[:, self.feet_indices, :]
+ self.feet_pos = self.feet_state[:, :, :3]
+ self.feet_vel = self.feet_state[:, :, 7:10]
+
+ def _init_buffers(self):
+ super()._init_buffers()
+ self._init_foot()
+
+ def update_feet_state(self):
+ self.gym.refresh_rigid_body_state_tensor(self.sim)
+
+ self.feet_state = self.rigid_body_states_view[:, self.feet_indices, :]
+ self.feet_pos = self.feet_state[:, :, :3]
+ self.feet_vel = self.feet_state[:, :, 7:10]
+
+ def _post_physics_step_callback(self):
+ self.update_feet_state()
+
+ period = 0.8
+ offset = 0.5
+ self.phase = (self.episode_length_buf * self.dt) % period / period
+ self.phase_left = self.phase
+ self.phase_right = (self.phase + offset) % 1
+ self.leg_phase = torch.cat([self.phase_left.unsqueeze(1), self.phase_right.unsqueeze(1)], dim=-1)
+
+ return super()._post_physics_step_callback()
+
+
+ def compute_observations(self):
+ """ Computes observations
+ """
+ sin_phase = torch.sin(2 * np.pi * self.phase ).unsqueeze(1)
+ cos_phase = torch.cos(2 * np.pi * self.phase ).unsqueeze(1)
+ self.obs_buf = torch.cat(( self.base_ang_vel * self.obs_scales.ang_vel,
+ self.projected_gravity,
+ self.commands[:, :3] * self.commands_scale,
+ (self.dof_pos - self.default_dof_pos) * self.obs_scales.dof_pos,
+ self.dof_vel * self.obs_scales.dof_vel,
+ self.actions,
+ sin_phase,
+ cos_phase
+ ),dim=-1)
+ self.privileged_obs_buf = torch.cat(( self.base_lin_vel * self.obs_scales.lin_vel,
+ self.base_ang_vel * self.obs_scales.ang_vel,
+ self.projected_gravity,
+ self.commands[:, :3] * self.commands_scale,
+ (self.dof_pos - self.default_dof_pos) * self.obs_scales.dof_pos,
+ self.dof_vel * self.obs_scales.dof_vel,
+ self.actions,
+ sin_phase,
+ cos_phase
+ ),dim=-1)
+ # add perceptive inputs if not blind
+ # add noise if needed
+ if self.add_noise:
+ self.obs_buf += (2 * torch.rand_like(self.obs_buf) - 1) * self.noise_scale_vec
+
+
+ def _reward_contact(self):
+ res = torch.zeros(self.num_envs, dtype=torch.float, device=self.device)
+ for i in range(self.feet_num):
+ is_stance = self.leg_phase[:, i] < 0.55
+ contact = self.contact_forces[:, self.feet_indices[i], 2] > 1
+ res += ~(contact ^ is_stance)
+ return res
+
+ def _reward_feet_swing_height(self):
+ contact = torch.norm(self.contact_forces[:, self.feet_indices, :3], dim=2) > 1.
+ pos_error = torch.square(self.feet_pos[:, :, 2] - 0.08) * ~contact
+ return torch.sum(pos_error, dim=(1))
+
+ def _reward_alive(self):
+ # Reward for staying alive
+ return 1.0
+
+ def _reward_contact_no_vel(self):
+ # Penalize contact with no velocity
+ contact = torch.norm(self.contact_forces[:, self.feet_indices, :3], dim=2) > 1.
+ contact_feet_vel = self.feet_vel * contact.unsqueeze(-1)
+ penalize = torch.square(contact_feet_vel[:, :, :3])
+ return torch.sum(penalize, dim=(1,2))
+
+ def _reward_hip_pos(self):
+ return torch.sum(torch.square(self.dof_pos[:,[0,2,6,8]]), dim=1)
+
\ No newline at end of file
diff --git a/resources/robots/g1/meshes/head_link.STL b/resources/robots/g1/meshes/head_link.STL
deleted file mode 100644
index 455274f..0000000
Binary files a/resources/robots/g1/meshes/head_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/left_ankle_pitch_link.STL b/resources/robots/g1/meshes/left_ankle_pitch_link.STL
deleted file mode 100644
index c291f60..0000000
Binary files a/resources/robots/g1/meshes/left_ankle_pitch_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/left_ankle_roll_link.STL b/resources/robots/g1/meshes/left_ankle_roll_link.STL
deleted file mode 100644
index f2b6ae7..0000000
Binary files a/resources/robots/g1/meshes/left_ankle_roll_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/left_elbow_pitch_link.STL b/resources/robots/g1/meshes/left_elbow_pitch_link.STL
deleted file mode 100644
index 5ba2fde..0000000
Binary files a/resources/robots/g1/meshes/left_elbow_pitch_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/left_elbow_roll_link.STL b/resources/robots/g1/meshes/left_elbow_roll_link.STL
deleted file mode 100644
index 9741ac0..0000000
Binary files a/resources/robots/g1/meshes/left_elbow_roll_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/left_five_link.STL b/resources/robots/g1/meshes/left_five_link.STL
deleted file mode 100644
index cc35d51..0000000
Binary files a/resources/robots/g1/meshes/left_five_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/left_four_link.STL b/resources/robots/g1/meshes/left_four_link.STL
deleted file mode 100644
index 6392be7..0000000
Binary files a/resources/robots/g1/meshes/left_four_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/left_hip_pitch_link.STL b/resources/robots/g1/meshes/left_hip_pitch_link.STL
deleted file mode 100644
index 1e56afc..0000000
Binary files a/resources/robots/g1/meshes/left_hip_pitch_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/left_hip_roll_link.STL b/resources/robots/g1/meshes/left_hip_roll_link.STL
deleted file mode 100644
index d1df2f4..0000000
Binary files a/resources/robots/g1/meshes/left_hip_roll_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/left_hip_yaw_link.STL b/resources/robots/g1/meshes/left_hip_yaw_link.STL
deleted file mode 100644
index deadd3c..0000000
Binary files a/resources/robots/g1/meshes/left_hip_yaw_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/left_knee_link.STL b/resources/robots/g1/meshes/left_knee_link.STL
deleted file mode 100644
index e0095a4..0000000
Binary files a/resources/robots/g1/meshes/left_knee_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/left_one_link.STL b/resources/robots/g1/meshes/left_one_link.STL
deleted file mode 100644
index 6ee97bd..0000000
Binary files a/resources/robots/g1/meshes/left_one_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/left_palm_link.STL b/resources/robots/g1/meshes/left_palm_link.STL
deleted file mode 100644
index 524a0e2..0000000
Binary files a/resources/robots/g1/meshes/left_palm_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/left_shoulder_pitch_link.STL b/resources/robots/g1/meshes/left_shoulder_pitch_link.STL
deleted file mode 100644
index e54d656..0000000
Binary files a/resources/robots/g1/meshes/left_shoulder_pitch_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/left_shoulder_roll_link.STL b/resources/robots/g1/meshes/left_shoulder_roll_link.STL
deleted file mode 100644
index 75dc809..0000000
Binary files a/resources/robots/g1/meshes/left_shoulder_roll_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/left_shoulder_yaw_link.STL b/resources/robots/g1/meshes/left_shoulder_yaw_link.STL
deleted file mode 100644
index 4e5a7c9..0000000
Binary files a/resources/robots/g1/meshes/left_shoulder_yaw_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/left_six_link.STL b/resources/robots/g1/meshes/left_six_link.STL
deleted file mode 100644
index 2739846..0000000
Binary files a/resources/robots/g1/meshes/left_six_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/left_three_link.STL b/resources/robots/g1/meshes/left_three_link.STL
deleted file mode 100644
index cc35d51..0000000
Binary files a/resources/robots/g1/meshes/left_three_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/left_two_link.STL b/resources/robots/g1/meshes/left_two_link.STL
deleted file mode 100644
index b85b645..0000000
Binary files a/resources/robots/g1/meshes/left_two_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/left_zero_link.STL b/resources/robots/g1/meshes/left_zero_link.STL
deleted file mode 100644
index f50147a..0000000
Binary files a/resources/robots/g1/meshes/left_zero_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/logo_link.STL b/resources/robots/g1/meshes/logo_link.STL
deleted file mode 100644
index 20f7bba..0000000
Binary files a/resources/robots/g1/meshes/logo_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/pelvis.STL b/resources/robots/g1/meshes/pelvis.STL
deleted file mode 100644
index 5877dee..0000000
Binary files a/resources/robots/g1/meshes/pelvis.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/pelvis_contour_link.STL b/resources/robots/g1/meshes/pelvis_contour_link.STL
deleted file mode 100644
index 72fa4ac..0000000
Binary files a/resources/robots/g1/meshes/pelvis_contour_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/right_ankle_pitch_link.STL b/resources/robots/g1/meshes/right_ankle_pitch_link.STL
deleted file mode 100644
index 36e3a64..0000000
Binary files a/resources/robots/g1/meshes/right_ankle_pitch_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/right_ankle_roll_link.STL b/resources/robots/g1/meshes/right_ankle_roll_link.STL
deleted file mode 100644
index d0a2657..0000000
Binary files a/resources/robots/g1/meshes/right_ankle_roll_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/right_elbow_pitch_link.STL b/resources/robots/g1/meshes/right_elbow_pitch_link.STL
deleted file mode 100644
index a62a422..0000000
Binary files a/resources/robots/g1/meshes/right_elbow_pitch_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/right_elbow_roll_link.STL b/resources/robots/g1/meshes/right_elbow_roll_link.STL
deleted file mode 100644
index 6010e8b..0000000
Binary files a/resources/robots/g1/meshes/right_elbow_roll_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/right_five_link.STL b/resources/robots/g1/meshes/right_five_link.STL
deleted file mode 100644
index 37f9dc2..0000000
Binary files a/resources/robots/g1/meshes/right_five_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/right_four_link.STL b/resources/robots/g1/meshes/right_four_link.STL
deleted file mode 100644
index be81a79..0000000
Binary files a/resources/robots/g1/meshes/right_four_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/right_hip_pitch_link.STL b/resources/robots/g1/meshes/right_hip_pitch_link.STL
deleted file mode 100644
index 66b47ea..0000000
Binary files a/resources/robots/g1/meshes/right_hip_pitch_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/right_hip_roll_link.STL b/resources/robots/g1/meshes/right_hip_roll_link.STL
deleted file mode 100644
index 021dd7f..0000000
Binary files a/resources/robots/g1/meshes/right_hip_roll_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/right_hip_yaw_link.STL b/resources/robots/g1/meshes/right_hip_yaw_link.STL
deleted file mode 100644
index 330e55a..0000000
Binary files a/resources/robots/g1/meshes/right_hip_yaw_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/right_knee_link.STL b/resources/robots/g1/meshes/right_knee_link.STL
deleted file mode 100644
index 7be6860..0000000
Binary files a/resources/robots/g1/meshes/right_knee_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/right_one_link.STL b/resources/robots/g1/meshes/right_one_link.STL
deleted file mode 100644
index 93e103a..0000000
Binary files a/resources/robots/g1/meshes/right_one_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/right_palm_link.STL b/resources/robots/g1/meshes/right_palm_link.STL
deleted file mode 100644
index 7cd39cd..0000000
Binary files a/resources/robots/g1/meshes/right_palm_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/right_shoulder_pitch_link.STL b/resources/robots/g1/meshes/right_shoulder_pitch_link.STL
deleted file mode 100644
index 7e1d01d..0000000
Binary files a/resources/robots/g1/meshes/right_shoulder_pitch_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/right_shoulder_roll_link.STL b/resources/robots/g1/meshes/right_shoulder_roll_link.STL
deleted file mode 100644
index f653871..0000000
Binary files a/resources/robots/g1/meshes/right_shoulder_roll_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/right_shoulder_yaw_link.STL b/resources/robots/g1/meshes/right_shoulder_yaw_link.STL
deleted file mode 100644
index 01aa95a..0000000
Binary files a/resources/robots/g1/meshes/right_shoulder_yaw_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/right_six_link.STL b/resources/robots/g1/meshes/right_six_link.STL
deleted file mode 100644
index be81a79..0000000
Binary files a/resources/robots/g1/meshes/right_six_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/right_three_link.STL b/resources/robots/g1/meshes/right_three_link.STL
deleted file mode 100644
index 37f9dc2..0000000
Binary files a/resources/robots/g1/meshes/right_three_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/right_two_link.STL b/resources/robots/g1/meshes/right_two_link.STL
deleted file mode 100644
index 1af670c..0000000
Binary files a/resources/robots/g1/meshes/right_two_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/right_zero_link.STL b/resources/robots/g1/meshes/right_zero_link.STL
deleted file mode 100644
index 4fd999b..0000000
Binary files a/resources/robots/g1/meshes/right_zero_link.STL and /dev/null differ
diff --git a/resources/robots/g1/meshes/torso_link.STL b/resources/robots/g1/meshes/torso_link.STL
deleted file mode 100644
index b6a6d12..0000000
Binary files a/resources/robots/g1/meshes/torso_link.STL and /dev/null differ
diff --git a/resources/robots/g1/urdf/g1.urdf b/resources/robots/g1/urdf/g1.urdf
deleted file mode 100644
index ce3a36a..0000000
--- a/resources/robots/g1/urdf/g1.urdf
+++ /dev/null
@@ -1,1295 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/resources/robots/g1_description/README.md b/resources/robots/g1_description/README.md
new file mode 100644
index 0000000..6fe48ce
--- /dev/null
+++ b/resources/robots/g1_description/README.md
@@ -0,0 +1,30 @@
+# Unitree G1 Description (URDF & MJCF)
+
+## Overview
+
+This package includes a universal humanoid robot description (URDF & MJCF) for the [Unitree G1](https://www.unitree.com/g1/), developed by [Unitree Robotics](https://www.unitree.com/).
+
+MJCF/URDF for the G1 robot:
+
+| MJCF/URDF file name | `mode_machine` | Hip roll reduction ratio | Update status | dof#leg | dof#waist | dof#arm | dof#hand |
+| ----------------------------- | :------------: | :----------------------: | ------------- | :-----: | :-------: | :-----: | :------: |
+| `g1_23dof` | 1 | 14.5 | Beta | 6*2 | 1 | 5*2 | 0 |
+| `g1_29dof` | 2 | 14.5 | Beta | 6*2 | 3 | 7*2 | 0 |
+| `g1_29dof_with_hand` | 2 | 14.5 | Beta | 6*2 | 3 | 7*2 | 7*2 |
+| `g1_29dof_lock_waist` | 3 | 14.5 | Beta | 6*2 | 1 | 7*2 | 0 |
+| `g1_23dof_rev_1_0` | 4 | 22.5 | Up-to-date | 6*2 | 1 | 5*2 | 0 |
+| `g1_29dof_rev_1_0` | 5 | 22.5 | Up-to-date | 6*2 | 3 | 7*2 | 0 |
+| `g1_29dof_with_hand_rev_1_0` | 5 | 22.5 | Up-to-date | 6*2 | 3 | 7*2 | 7*2 |
+| `g1_29dof_lock_waist_rev_1_0` | 6 | 22.5 | Up-to-date | 6*2 | 1 | 7*2 | 0 |
+| `g1_dual_arm` | 9 | null | Up-to-date | 0 | 0 | 7*2 | 0 |
+
+## Visulization with [MuJoCo](https://github.com/google-deepmind/mujoco)
+
+1. Open MuJoCo Viewer
+
+ ```bash
+ pip install mujoco
+ python -m mujoco.viewer
+ ```
+
+2. Drag and drop the MJCF/URDF model file (`g1_XXX.xml`/`g1_XXX.urdf`) to the MuJoCo Viewer.
diff --git a/resources/robots/g1_description/g1_12dof.urdf b/resources/robots/g1_description/g1_12dof.urdf
new file mode 100644
index 0000000..c312bf7
--- /dev/null
+++ b/resources/robots/g1_description/g1_12dof.urdf
@@ -0,0 +1,854 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/robots/g1_description/g1_12dof.xml b/resources/robots/g1_description/g1_12dof.xml
new file mode 100644
index 0000000..5f7354b
--- /dev/null
+++ b/resources/robots/g1_description/g1_12dof.xml
@@ -0,0 +1,166 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/resources/robots/g1_description/g1_23dof.urdf b/resources/robots/g1_description/g1_23dof.urdf
new file mode 100644
index 0000000..21184a2
--- /dev/null
+++ b/resources/robots/g1_description/g1_23dof.urdf
@@ -0,0 +1,903 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/robots/g1_description/g1_23dof.xml b/resources/robots/g1_description/g1_23dof.xml
new file mode 100644
index 0000000..a5516f6
--- /dev/null
+++ b/resources/robots/g1_description/g1_23dof.xml
@@ -0,0 +1,249 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/robots/g1_description/g1_23dof_rev_1_0.urdf b/resources/robots/g1_description/g1_23dof_rev_1_0.urdf
new file mode 100644
index 0000000..f2bbcfb
--- /dev/null
+++ b/resources/robots/g1_description/g1_23dof_rev_1_0.urdf
@@ -0,0 +1,854 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/robots/g1_description/g1_23dof_rev_1_0.xml b/resources/robots/g1_description/g1_23dof_rev_1_0.xml
new file mode 100644
index 0000000..8c6e569
--- /dev/null
+++ b/resources/robots/g1_description/g1_23dof_rev_1_0.xml
@@ -0,0 +1,244 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/robots/g1_description/g1_29dof.urdf b/resources/robots/g1_description/g1_29dof.urdf
new file mode 100644
index 0000000..1b765b5
--- /dev/null
+++ b/resources/robots/g1_description/g1_29dof.urdf
@@ -0,0 +1,1086 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/robots/g1_description/g1_29dof.xml b/resources/robots/g1_description/g1_29dof.xml
new file mode 100644
index 0000000..0e496cf
--- /dev/null
+++ b/resources/robots/g1_description/g1_29dof.xml
@@ -0,0 +1,297 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/robots/g1_description/g1_29dof_lock_waist.urdf b/resources/robots/g1_description/g1_29dof_lock_waist.urdf
new file mode 100644
index 0000000..fe2d57e
--- /dev/null
+++ b/resources/robots/g1_description/g1_29dof_lock_waist.urdf
@@ -0,0 +1,1086 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/robots/g1_description/g1_29dof_lock_waist.xml b/resources/robots/g1_description/g1_29dof_lock_waist.xml
new file mode 100644
index 0000000..423eb6a
--- /dev/null
+++ b/resources/robots/g1_description/g1_29dof_lock_waist.xml
@@ -0,0 +1,293 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/robots/g1_description/g1_29dof_lock_waist_rev_1_0.urdf b/resources/robots/g1_description/g1_29dof_lock_waist_rev_1_0.urdf
new file mode 100644
index 0000000..076c4bc
--- /dev/null
+++ b/resources/robots/g1_description/g1_29dof_lock_waist_rev_1_0.urdf
@@ -0,0 +1,1058 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/robots/g1_description/g1_29dof_lock_waist_rev_1_0.xml b/resources/robots/g1_description/g1_29dof_lock_waist_rev_1_0.xml
new file mode 100644
index 0000000..c326fbc
--- /dev/null
+++ b/resources/robots/g1_description/g1_29dof_lock_waist_rev_1_0.xml
@@ -0,0 +1,290 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/robots/g1_description/g1_29dof_rev_1_0.urdf b/resources/robots/g1_description/g1_29dof_rev_1_0.urdf
new file mode 100644
index 0000000..e7a551d
--- /dev/null
+++ b/resources/robots/g1_description/g1_29dof_rev_1_0.urdf
@@ -0,0 +1,1058 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/robots/g1_description/g1_29dof_rev_1_0.xml b/resources/robots/g1_description/g1_29dof_rev_1_0.xml
new file mode 100644
index 0000000..16b799d
--- /dev/null
+++ b/resources/robots/g1_description/g1_29dof_rev_1_0.xml
@@ -0,0 +1,294 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/robots/g1_description/g1_29dof_with_hand.urdf b/resources/robots/g1_description/g1_29dof_with_hand.urdf
new file mode 100644
index 0000000..853c84f
--- /dev/null
+++ b/resources/robots/g1_description/g1_29dof_with_hand.urdf
@@ -0,0 +1,1504 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/robots/g1_description/g1_29dof_with_hand.xml b/resources/robots/g1_description/g1_29dof_with_hand.xml
new file mode 100644
index 0000000..95f37f1
--- /dev/null
+++ b/resources/robots/g1_description/g1_29dof_with_hand.xml
@@ -0,0 +1,411 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/robots/g1_description/g1_29dof_with_hand_rev_1_0.urdf b/resources/robots/g1_description/g1_29dof_with_hand_rev_1_0.urdf
new file mode 100644
index 0000000..e3cdec9
--- /dev/null
+++ b/resources/robots/g1_description/g1_29dof_with_hand_rev_1_0.urdf
@@ -0,0 +1,1476 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/robots/g1_description/g1_29dof_with_hand_rev_1_0.xml b/resources/robots/g1_description/g1_29dof_with_hand_rev_1_0.xml
new file mode 100644
index 0000000..e522a9c
--- /dev/null
+++ b/resources/robots/g1_description/g1_29dof_with_hand_rev_1_0.xml
@@ -0,0 +1,408 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/robots/g1_description/g1_dual_arm.urdf b/resources/robots/g1_description/g1_dual_arm.urdf
new file mode 100644
index 0000000..2c205b6
--- /dev/null
+++ b/resources/robots/g1_description/g1_dual_arm.urdf
@@ -0,0 +1,650 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/robots/g1_description/g1_dual_arm.xml b/resources/robots/g1_description/g1_dual_arm.xml
new file mode 100644
index 0000000..1a4114b
--- /dev/null
+++ b/resources/robots/g1_description/g1_dual_arm.xml
@@ -0,0 +1,162 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/robots/g1_description/images/g1_23dof.png b/resources/robots/g1_description/images/g1_23dof.png
new file mode 100644
index 0000000..e4ed4f2
Binary files /dev/null and b/resources/robots/g1_description/images/g1_23dof.png differ
diff --git a/resources/robots/g1_description/images/g1_29dof.png b/resources/robots/g1_description/images/g1_29dof.png
new file mode 100644
index 0000000..911c886
Binary files /dev/null and b/resources/robots/g1_description/images/g1_29dof.png differ
diff --git a/resources/robots/g1_description/images/g1_29dof_with_hand.png b/resources/robots/g1_description/images/g1_29dof_with_hand.png
new file mode 100644
index 0000000..667397a
Binary files /dev/null and b/resources/robots/g1_description/images/g1_29dof_with_hand.png differ
diff --git a/resources/robots/g1_description/images/g1_dual_arm.png b/resources/robots/g1_description/images/g1_dual_arm.png
new file mode 100644
index 0000000..8dd9a5d
Binary files /dev/null and b/resources/robots/g1_description/images/g1_dual_arm.png differ
diff --git a/resources/robots/g1_description/meshes/head_link.STL b/resources/robots/g1_description/meshes/head_link.STL
new file mode 100644
index 0000000..2ee5fba
Binary files /dev/null and b/resources/robots/g1_description/meshes/head_link.STL differ
diff --git a/resources/robots/g1_description/meshes/left_ankle_pitch_link.STL b/resources/robots/g1_description/meshes/left_ankle_pitch_link.STL
new file mode 100644
index 0000000..69de849
Binary files /dev/null and b/resources/robots/g1_description/meshes/left_ankle_pitch_link.STL differ
diff --git a/resources/robots/g1_description/meshes/left_ankle_roll_link.STL b/resources/robots/g1_description/meshes/left_ankle_roll_link.STL
new file mode 100644
index 0000000..8864e9f
Binary files /dev/null and b/resources/robots/g1_description/meshes/left_ankle_roll_link.STL differ
diff --git a/resources/robots/g1_description/meshes/left_elbow_link.STL b/resources/robots/g1_description/meshes/left_elbow_link.STL
new file mode 100644
index 0000000..1a96d99
Binary files /dev/null and b/resources/robots/g1_description/meshes/left_elbow_link.STL differ
diff --git a/resources/robots/g1_description/meshes/left_hand_index_0_link.STL b/resources/robots/g1_description/meshes/left_hand_index_0_link.STL
new file mode 100644
index 0000000..8069369
Binary files /dev/null and b/resources/robots/g1_description/meshes/left_hand_index_0_link.STL differ
diff --git a/resources/robots/g1_description/meshes/left_hand_index_1_link.STL b/resources/robots/g1_description/meshes/left_hand_index_1_link.STL
new file mode 100644
index 0000000..89d231d
Binary files /dev/null and b/resources/robots/g1_description/meshes/left_hand_index_1_link.STL differ
diff --git a/resources/robots/g1_description/meshes/left_hand_middle_0_link.STL b/resources/robots/g1_description/meshes/left_hand_middle_0_link.STL
new file mode 100644
index 0000000..8069369
Binary files /dev/null and b/resources/robots/g1_description/meshes/left_hand_middle_0_link.STL differ
diff --git a/resources/robots/g1_description/meshes/left_hand_middle_1_link.STL b/resources/robots/g1_description/meshes/left_hand_middle_1_link.STL
new file mode 100644
index 0000000..89d231d
Binary files /dev/null and b/resources/robots/g1_description/meshes/left_hand_middle_1_link.STL differ
diff --git a/resources/robots/g1_description/meshes/left_hand_palm_link.STL b/resources/robots/g1_description/meshes/left_hand_palm_link.STL
new file mode 100644
index 0000000..7d595ed
Binary files /dev/null and b/resources/robots/g1_description/meshes/left_hand_palm_link.STL differ
diff --git a/resources/robots/g1_description/meshes/left_hand_thumb_0_link.STL b/resources/robots/g1_description/meshes/left_hand_thumb_0_link.STL
new file mode 100644
index 0000000..3028bb4
Binary files /dev/null and b/resources/robots/g1_description/meshes/left_hand_thumb_0_link.STL differ
diff --git a/resources/robots/g1_description/meshes/left_hand_thumb_1_link.STL b/resources/robots/g1_description/meshes/left_hand_thumb_1_link.STL
new file mode 100644
index 0000000..d1c080c
Binary files /dev/null and b/resources/robots/g1_description/meshes/left_hand_thumb_1_link.STL differ
diff --git a/resources/robots/g1_description/meshes/left_hand_thumb_2_link.STL b/resources/robots/g1_description/meshes/left_hand_thumb_2_link.STL
new file mode 100644
index 0000000..8b32e96
Binary files /dev/null and b/resources/robots/g1_description/meshes/left_hand_thumb_2_link.STL differ
diff --git a/resources/robots/g1_description/meshes/left_hip_pitch_link.STL b/resources/robots/g1_description/meshes/left_hip_pitch_link.STL
new file mode 100644
index 0000000..5b751c7
Binary files /dev/null and b/resources/robots/g1_description/meshes/left_hip_pitch_link.STL differ
diff --git a/resources/robots/g1_description/meshes/left_hip_roll_link.STL b/resources/robots/g1_description/meshes/left_hip_roll_link.STL
new file mode 100644
index 0000000..778437f
Binary files /dev/null and b/resources/robots/g1_description/meshes/left_hip_roll_link.STL differ
diff --git a/resources/robots/g1_description/meshes/left_hip_yaw_link.STL b/resources/robots/g1_description/meshes/left_hip_yaw_link.STL
new file mode 100644
index 0000000..383093a
Binary files /dev/null and b/resources/robots/g1_description/meshes/left_hip_yaw_link.STL differ
diff --git a/resources/robots/g1_description/meshes/left_knee_link.STL b/resources/robots/g1_description/meshes/left_knee_link.STL
new file mode 100644
index 0000000..f2e98e5
Binary files /dev/null and b/resources/robots/g1_description/meshes/left_knee_link.STL differ
diff --git a/resources/robots/g1_description/meshes/left_rubber_hand.STL b/resources/robots/g1_description/meshes/left_rubber_hand.STL
new file mode 100644
index 0000000..c44830f
Binary files /dev/null and b/resources/robots/g1_description/meshes/left_rubber_hand.STL differ
diff --git a/resources/robots/g1_description/meshes/left_shoulder_pitch_link.STL b/resources/robots/g1_description/meshes/left_shoulder_pitch_link.STL
new file mode 100644
index 0000000..e698311
Binary files /dev/null and b/resources/robots/g1_description/meshes/left_shoulder_pitch_link.STL differ
diff --git a/resources/robots/g1_description/meshes/left_shoulder_roll_link.STL b/resources/robots/g1_description/meshes/left_shoulder_roll_link.STL
new file mode 100644
index 0000000..80bca84
Binary files /dev/null and b/resources/robots/g1_description/meshes/left_shoulder_roll_link.STL differ
diff --git a/resources/robots/g1_description/meshes/left_shoulder_yaw_link.STL b/resources/robots/g1_description/meshes/left_shoulder_yaw_link.STL
new file mode 100644
index 0000000..281e699
Binary files /dev/null and b/resources/robots/g1_description/meshes/left_shoulder_yaw_link.STL differ
diff --git a/resources/robots/g1_description/meshes/left_wrist_pitch_link.STL b/resources/robots/g1_description/meshes/left_wrist_pitch_link.STL
new file mode 100644
index 0000000..82cc224
Binary files /dev/null and b/resources/robots/g1_description/meshes/left_wrist_pitch_link.STL differ
diff --git a/resources/robots/g1_description/meshes/left_wrist_roll_link.STL b/resources/robots/g1_description/meshes/left_wrist_roll_link.STL
new file mode 100644
index 0000000..f3c263a
Binary files /dev/null and b/resources/robots/g1_description/meshes/left_wrist_roll_link.STL differ
diff --git a/resources/robots/g1_description/meshes/left_wrist_roll_rubber_hand.STL b/resources/robots/g1_description/meshes/left_wrist_roll_rubber_hand.STL
new file mode 100644
index 0000000..8fa435b
Binary files /dev/null and b/resources/robots/g1_description/meshes/left_wrist_roll_rubber_hand.STL differ
diff --git a/resources/robots/g1_description/meshes/left_wrist_yaw_link.STL b/resources/robots/g1_description/meshes/left_wrist_yaw_link.STL
new file mode 100644
index 0000000..31be4fd
Binary files /dev/null and b/resources/robots/g1_description/meshes/left_wrist_yaw_link.STL differ
diff --git a/resources/robots/g1_description/meshes/logo_link.STL b/resources/robots/g1_description/meshes/logo_link.STL
new file mode 100644
index 0000000..e979209
Binary files /dev/null and b/resources/robots/g1_description/meshes/logo_link.STL differ
diff --git a/resources/robots/g1_description/meshes/pelvis.STL b/resources/robots/g1_description/meshes/pelvis.STL
new file mode 100644
index 0000000..691a779
Binary files /dev/null and b/resources/robots/g1_description/meshes/pelvis.STL differ
diff --git a/resources/robots/g1_description/meshes/pelvis_contour_link.STL b/resources/robots/g1_description/meshes/pelvis_contour_link.STL
new file mode 100644
index 0000000..4243433
Binary files /dev/null and b/resources/robots/g1_description/meshes/pelvis_contour_link.STL differ
diff --git a/resources/robots/g1_description/meshes/right_ankle_pitch_link.STL b/resources/robots/g1_description/meshes/right_ankle_pitch_link.STL
new file mode 100644
index 0000000..e77d8a2
Binary files /dev/null and b/resources/robots/g1_description/meshes/right_ankle_pitch_link.STL differ
diff --git a/resources/robots/g1_description/meshes/right_ankle_roll_link.STL b/resources/robots/g1_description/meshes/right_ankle_roll_link.STL
new file mode 100644
index 0000000..d4261dd
Binary files /dev/null and b/resources/robots/g1_description/meshes/right_ankle_roll_link.STL differ
diff --git a/resources/robots/g1_description/meshes/right_elbow_link.STL b/resources/robots/g1_description/meshes/right_elbow_link.STL
new file mode 100644
index 0000000..f259e38
Binary files /dev/null and b/resources/robots/g1_description/meshes/right_elbow_link.STL differ
diff --git a/resources/robots/g1_description/meshes/right_hand_index_0_link.STL b/resources/robots/g1_description/meshes/right_hand_index_0_link.STL
new file mode 100644
index 0000000..f87ad32
Binary files /dev/null and b/resources/robots/g1_description/meshes/right_hand_index_0_link.STL differ
diff --git a/resources/robots/g1_description/meshes/right_hand_index_1_link.STL b/resources/robots/g1_description/meshes/right_hand_index_1_link.STL
new file mode 100644
index 0000000..6dea51a
Binary files /dev/null and b/resources/robots/g1_description/meshes/right_hand_index_1_link.STL differ
diff --git a/resources/robots/g1_description/meshes/right_hand_middle_0_link.STL b/resources/robots/g1_description/meshes/right_hand_middle_0_link.STL
new file mode 100644
index 0000000..f87ad32
Binary files /dev/null and b/resources/robots/g1_description/meshes/right_hand_middle_0_link.STL differ
diff --git a/resources/robots/g1_description/meshes/right_hand_middle_1_link.STL b/resources/robots/g1_description/meshes/right_hand_middle_1_link.STL
new file mode 100644
index 0000000..6dea51a
Binary files /dev/null and b/resources/robots/g1_description/meshes/right_hand_middle_1_link.STL differ
diff --git a/resources/robots/g1_description/meshes/right_hand_palm_link.STL b/resources/robots/g1_description/meshes/right_hand_palm_link.STL
new file mode 100644
index 0000000..5ae00a7
Binary files /dev/null and b/resources/robots/g1_description/meshes/right_hand_palm_link.STL differ
diff --git a/resources/robots/g1_description/meshes/right_hand_thumb_0_link.STL b/resources/robots/g1_description/meshes/right_hand_thumb_0_link.STL
new file mode 100644
index 0000000..1cae7f1
Binary files /dev/null and b/resources/robots/g1_description/meshes/right_hand_thumb_0_link.STL differ
diff --git a/resources/robots/g1_description/meshes/right_hand_thumb_1_link.STL b/resources/robots/g1_description/meshes/right_hand_thumb_1_link.STL
new file mode 100644
index 0000000..c141fbf
Binary files /dev/null and b/resources/robots/g1_description/meshes/right_hand_thumb_1_link.STL differ
diff --git a/resources/robots/g1_description/meshes/right_hand_thumb_2_link.STL b/resources/robots/g1_description/meshes/right_hand_thumb_2_link.STL
new file mode 100644
index 0000000..e942923
Binary files /dev/null and b/resources/robots/g1_description/meshes/right_hand_thumb_2_link.STL differ
diff --git a/resources/robots/g1_description/meshes/right_hip_pitch_link.STL b/resources/robots/g1_description/meshes/right_hip_pitch_link.STL
new file mode 100644
index 0000000..998a0a0
Binary files /dev/null and b/resources/robots/g1_description/meshes/right_hip_pitch_link.STL differ
diff --git a/resources/robots/g1_description/meshes/right_hip_roll_link.STL b/resources/robots/g1_description/meshes/right_hip_roll_link.STL
new file mode 100644
index 0000000..47b2eeb
Binary files /dev/null and b/resources/robots/g1_description/meshes/right_hip_roll_link.STL differ
diff --git a/resources/robots/g1_description/meshes/right_hip_yaw_link.STL b/resources/robots/g1_description/meshes/right_hip_yaw_link.STL
new file mode 100644
index 0000000..3718564
Binary files /dev/null and b/resources/robots/g1_description/meshes/right_hip_yaw_link.STL differ
diff --git a/resources/robots/g1_description/meshes/right_knee_link.STL b/resources/robots/g1_description/meshes/right_knee_link.STL
new file mode 100644
index 0000000..76d21a3
Binary files /dev/null and b/resources/robots/g1_description/meshes/right_knee_link.STL differ
diff --git a/resources/robots/g1_description/meshes/right_rubber_hand.STL b/resources/robots/g1_description/meshes/right_rubber_hand.STL
new file mode 100644
index 0000000..0aacffb
Binary files /dev/null and b/resources/robots/g1_description/meshes/right_rubber_hand.STL differ
diff --git a/resources/robots/g1_description/meshes/right_shoulder_pitch_link.STL b/resources/robots/g1_description/meshes/right_shoulder_pitch_link.STL
new file mode 100644
index 0000000..3f5b4ed
Binary files /dev/null and b/resources/robots/g1_description/meshes/right_shoulder_pitch_link.STL differ
diff --git a/resources/robots/g1_description/meshes/right_shoulder_roll_link.STL b/resources/robots/g1_description/meshes/right_shoulder_roll_link.STL
new file mode 100644
index 0000000..179d617
Binary files /dev/null and b/resources/robots/g1_description/meshes/right_shoulder_roll_link.STL differ
diff --git a/resources/robots/g1_description/meshes/right_shoulder_yaw_link.STL b/resources/robots/g1_description/meshes/right_shoulder_yaw_link.STL
new file mode 100644
index 0000000..2ba6076
Binary files /dev/null and b/resources/robots/g1_description/meshes/right_shoulder_yaw_link.STL differ
diff --git a/resources/robots/g1_description/meshes/right_wrist_pitch_link.STL b/resources/robots/g1_description/meshes/right_wrist_pitch_link.STL
new file mode 100644
index 0000000..da19454
Binary files /dev/null and b/resources/robots/g1_description/meshes/right_wrist_pitch_link.STL differ
diff --git a/resources/robots/g1_description/meshes/right_wrist_roll_link.STL b/resources/robots/g1_description/meshes/right_wrist_roll_link.STL
new file mode 100644
index 0000000..26868d2
Binary files /dev/null and b/resources/robots/g1_description/meshes/right_wrist_roll_link.STL differ
diff --git a/resources/robots/g1_description/meshes/right_wrist_roll_rubber_hand.STL b/resources/robots/g1_description/meshes/right_wrist_roll_rubber_hand.STL
new file mode 100644
index 0000000..c365aa9
Binary files /dev/null and b/resources/robots/g1_description/meshes/right_wrist_roll_rubber_hand.STL differ
diff --git a/resources/robots/g1_description/meshes/right_wrist_yaw_link.STL b/resources/robots/g1_description/meshes/right_wrist_yaw_link.STL
new file mode 100644
index 0000000..d788902
Binary files /dev/null and b/resources/robots/g1_description/meshes/right_wrist_yaw_link.STL differ
diff --git a/resources/robots/g1_description/meshes/torso_constraint_L_link.STL b/resources/robots/g1_description/meshes/torso_constraint_L_link.STL
new file mode 100644
index 0000000..75d82f5
Binary files /dev/null and b/resources/robots/g1_description/meshes/torso_constraint_L_link.STL differ
diff --git a/resources/robots/g1_description/meshes/torso_constraint_L_rod_link.STL b/resources/robots/g1_description/meshes/torso_constraint_L_rod_link.STL
new file mode 100644
index 0000000..6747f3f
Binary files /dev/null and b/resources/robots/g1_description/meshes/torso_constraint_L_rod_link.STL differ
diff --git a/resources/robots/g1_description/meshes/torso_constraint_R_link.STL b/resources/robots/g1_description/meshes/torso_constraint_R_link.STL
new file mode 100644
index 0000000..5cb5958
Binary files /dev/null and b/resources/robots/g1_description/meshes/torso_constraint_R_link.STL differ
diff --git a/resources/robots/g1_description/meshes/torso_constraint_R_rod_link.STL b/resources/robots/g1_description/meshes/torso_constraint_R_rod_link.STL
new file mode 100644
index 0000000..95cf415
Binary files /dev/null and b/resources/robots/g1_description/meshes/torso_constraint_R_rod_link.STL differ
diff --git a/resources/robots/g1_description/meshes/torso_link.STL b/resources/robots/g1_description/meshes/torso_link.STL
new file mode 100644
index 0000000..17745af
Binary files /dev/null and b/resources/robots/g1_description/meshes/torso_link.STL differ
diff --git a/resources/robots/g1_description/meshes/torso_link_23dof_rev_1_0.STL b/resources/robots/g1_description/meshes/torso_link_23dof_rev_1_0.STL
new file mode 100644
index 0000000..079aa81
Binary files /dev/null and b/resources/robots/g1_description/meshes/torso_link_23dof_rev_1_0.STL differ
diff --git a/resources/robots/g1_description/meshes/torso_link_rev_1_0.STL b/resources/robots/g1_description/meshes/torso_link_rev_1_0.STL
new file mode 100644
index 0000000..8a759a7
Binary files /dev/null and b/resources/robots/g1_description/meshes/torso_link_rev_1_0.STL differ
diff --git a/resources/robots/g1_description/meshes/waist_constraint_L.STL b/resources/robots/g1_description/meshes/waist_constraint_L.STL
new file mode 100644
index 0000000..911410f
Binary files /dev/null and b/resources/robots/g1_description/meshes/waist_constraint_L.STL differ
diff --git a/resources/robots/g1_description/meshes/waist_constraint_R.STL b/resources/robots/g1_description/meshes/waist_constraint_R.STL
new file mode 100644
index 0000000..babe794
Binary files /dev/null and b/resources/robots/g1_description/meshes/waist_constraint_R.STL differ
diff --git a/resources/robots/g1_description/meshes/waist_roll_link.STL b/resources/robots/g1_description/meshes/waist_roll_link.STL
new file mode 100644
index 0000000..65831ab
Binary files /dev/null and b/resources/robots/g1_description/meshes/waist_roll_link.STL differ
diff --git a/resources/robots/g1_description/meshes/waist_roll_link_rev_1_0.STL b/resources/robots/g1_description/meshes/waist_roll_link_rev_1_0.STL
new file mode 100644
index 0000000..a64f330
Binary files /dev/null and b/resources/robots/g1_description/meshes/waist_roll_link_rev_1_0.STL differ
diff --git a/resources/robots/g1_description/meshes/waist_support_link.STL b/resources/robots/g1_description/meshes/waist_support_link.STL
new file mode 100644
index 0000000..63660fb
Binary files /dev/null and b/resources/robots/g1_description/meshes/waist_support_link.STL differ
diff --git a/resources/robots/g1_description/meshes/waist_yaw_link.STL b/resources/robots/g1_description/meshes/waist_yaw_link.STL
new file mode 100644
index 0000000..7d36b02
Binary files /dev/null and b/resources/robots/g1_description/meshes/waist_yaw_link.STL differ
diff --git a/resources/robots/g1_description/meshes/waist_yaw_link_rev_1_0.STL b/resources/robots/g1_description/meshes/waist_yaw_link_rev_1_0.STL
new file mode 100644
index 0000000..0fabb63
Binary files /dev/null and b/resources/robots/g1_description/meshes/waist_yaw_link_rev_1_0.STL differ
diff --git a/resources/robots/g1_description/scene.xml b/resources/robots/g1_description/scene.xml
new file mode 100644
index 0000000..d0e3c0a
--- /dev/null
+++ b/resources/robots/g1_description/scene.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/robots/h1/h1.xml b/resources/robots/h1/h1.xml
new file mode 100644
index 0000000..5b070f5
--- /dev/null
+++ b/resources/robots/h1/h1.xml
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/resources/robots/h1/scene.xml b/resources/robots/h1/scene.xml
new file mode 100644
index 0000000..3452583
--- /dev/null
+++ b/resources/robots/h1/scene.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/robots/h1/urdf/h1.urdf b/resources/robots/h1/urdf/h1.urdf
index f1b55f3..8f77c20 100644
--- a/resources/robots/h1/urdf/h1.urdf
+++ b/resources/robots/h1/urdf/h1.urdf
@@ -89,14 +89,14 @@ Stephen Brawner (brawner@gmail.com)
-
+
+ izz="0.01" />
-
+
+ izz="0.01" />
-
\ No newline at end of file
+
diff --git a/resources/robots/h1_2/h1_2_12dof.urdf b/resources/robots/h1_2/h1_2_12dof.urdf
new file mode 100644
index 0000000..727dd0c
--- /dev/null
+++ b/resources/robots/h1_2/h1_2_12dof.urdf
@@ -0,0 +1,1369 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/robots/h1_2/h1_2_12dof.xml b/resources/robots/h1_2/h1_2_12dof.xml
new file mode 100644
index 0000000..1d3c621
--- /dev/null
+++ b/resources/robots/h1_2/h1_2_12dof.xml
@@ -0,0 +1,360 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/robots/h1_2/scene.xml b/resources/robots/h1_2/scene.xml
index fad346e..d35c856 100644
--- a/resources/robots/h1_2/scene.xml
+++ b/resources/robots/h1_2/scene.xml
@@ -1,5 +1,5 @@
-
+