support MuJoCo sim2sim;

refactor resource files structure;
update readme;
This commit is contained in:
wertyuilife
2026-03-25 17:39:51 +08:00
parent d946c689da
commit d6a9c5949a
35 changed files with 761823 additions and 5 deletions

View File

@@ -2,7 +2,7 @@
## Overview
Train Unitree Go2 with MoE-CTS.
Train Unitree Go2 with MoE-CTS and deploy it on MuJoCo.
This is a reproduction version of [go2_rl_gym](https://github.com/wty-yy/go2_rl_gym) on RobotLab/IsaacLab.
@@ -11,7 +11,9 @@ This is a reproduction version of [go2_rl_gym](https://github.com/wty-yy/go2_rl_
### 1. Install IsaacLab
Install Isaac Lab by following the [installation guide](https://isaac-sim.github.io/IsaacLab/main/source/setup/installation/index.html).
Notice that we use certain version of IsaacLab packages, make sure:
Notice that we use certain version of IsaacLab packages, newer versions may cause compatibility issues with `rsl_rl` and `robot_lab`.
Please make sure to use the following versions or older ones:
```
isaacsim <= 5.1.0.0 # tested on 5.1.0.0
isaaclab <= 0.53.1 # tested on 0.53.1
@@ -26,7 +28,13 @@ python -m pip install -e source/robot_lab
python -m pip install -e source/rsl_rl
```
## Try examples
### 3. Install MuJoCo for Sim2Sim (optional)
If you want to use `mujoco` for Sim2Sim, install it by running the following command:
```bash
pip install mujoco # tested on mujoco 3.4.0 & 3.6.0
```
## Train and Play
Use the following commands to train and play:
@@ -57,6 +65,38 @@ python scripts/reinforcement_learning/rsl_rl/play.py --task=RobotLab-Go2-v0
```
for more usage, see [robot_lab](https://github.com/fan-ziqi/robot_lab.git).
## MuJoCo Sim2Sim
Use the following command to run the Sim2Sim with MuJoCo:
```bash
python deploy/deploy_mujoco/deploy_go2.py
```
- **Automatic detection**: When connecting the handle, the script automatically activates the handle control mode.
- **Controller not available**: The script will use the default commands in the configuration file.
Handle axis mapping:
- `LX/LY`: Forward/Lateral Speed Command
- `RX`: Angular velocity (steering) command
Modify the `xml_path` parameter in `deploy/deploy_mujoco/config/go2.yaml` to switch simulation scenarios:
```yaml
# Flat
xml_path: "{ROOT_DIR}/resources/go2/flat.xml"
# Stairs
xml_path: "{ROOT_DIR}/resources/go2/stairs.xml"
# Boxes
xml_path: "{ROOT_DIR}/resources/go2/boxes.xml"
# Custom
xml_path: "{ROOT_DIR}/resource/go2/your-custom-scene.xml"
```
## Differences with `go2_rl_gym`
- Terrain's composition are different(see code).
@@ -68,6 +108,7 @@ This repository would not exist without the following open-source projects:
- [isaac_lab](https://github.com/isaac-sim/IsaacLab): Unified framework for robot learning built on NVIDIA Isaac Sim.
- [rsl_rl](https://github.com/leggedrobotics/rsl_rl.git): Reinforcement learning algorithms.
- [robot_lab](https://github.com/fan-ziqi/robot_lab.git): RL Extension Library for Robots, Based on IsaacLab.
- [mujoco](https://github.com/google-deepmind/mujoco.git): High-performance CPU physics simulator.
Related publications implemented in this repo:
- [CTS: Concurrent Teacher-Student Reinforcement Learning for Legged Locomotion](https://arxiv.org/pdf/2405.10830)

View File

@@ -0,0 +1,65 @@
policy_path: "{ROOT_DIR}/deploy/pretrain/go2/wyh/go2_moe_cts_1500.pt"
xml_path: "{ROOT_DIR}/resources/go2/stairs.xml"
# Total simulation time
simulation_duration: 60000000.0
# Simulation time step
simulation_dt: 0.002
# Controller update frequency (meets the requirement of simulation_dt * controll_decimation=0.02; 50Hz)
control_decimation: 10
base_init_pos: [0.0, 0.0, 0.57]
base_init_quat: [1.0, 0.0, 0.0, 0.0]
# For IsaacLab DelayedPDActuatorCfg, if not used, set all delay to 0.
actuator_delay_min: 0
actuator_delay_max: 0
actuator_delay_seed: 0
kps: [20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 20.0]
kds: [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5]
default_angles: [0.1, 0.8, -1.5, -0.1, 0.8, -1.5,
0.1, 1.0, -1.5, -0.1, 1.0, -1.5]
lin_vel_scale: 2.0
ang_vel_scale: 0.25
dof_pos_scale: 1.0
dof_vel_scale: 0.05
action_pos_scale: 0.25
cmd_scale: [1.0, 1.0, 1.0]
num_actions: 12
num_obs: 45
max_cmd: [1.0, 1.0, 1.0]
cmd_init: [1.0, 0.0, 0.0]
history_len: 5
mujoco_joint_names: [
"FL_hip_joint",
"FL_thigh_joint",
"FL_calf_joint",
"FR_hip_joint",
"FR_thigh_joint",
"FR_calf_joint",
"RL_hip_joint",
"RL_thigh_joint",
"RL_calf_joint",
"RR_hip_joint",
"RR_thigh_joint",
"RR_calf_joint",
]
model_joint_names: [
"FL_hip_joint",
"FL_thigh_joint",
"FL_calf_joint",
"FR_hip_joint",
"FR_thigh_joint",
"FR_calf_joint",
"RL_hip_joint",
"RL_thigh_joint",
"RL_calf_joint",
"RR_hip_joint",
"RR_thigh_joint",
"RR_calf_joint",
]

View File

@@ -0,0 +1,379 @@
"""CTS Policy deployment for Unitree Go2 in MuJoCo."""
import time
from collections import deque
from dataclasses import dataclass
from pathlib import Path
from typing import NamedTuple
import imageio
import mujoco
import mujoco.viewer
import numpy as np
import pygame
import torch
import yaml
from argparse import ArgumentParser
# ============================================================================
# Types & Constants
# ============================================================================
ROOT_DIR = str(Path(__file__).parent.parent.parent)
CONFIG_DIR = f"{ROOT_DIR}/deploy/deploy_mujoco/configs"
VIDEO_DIR = Path(__file__).parent / "videos"
class CTSPolicyInputs(NamedTuple):
"""Input format for CTS policy."""
policy: torch.Tensor
single_obs: torch.Tensor
@dataclass
class ObsBlockCfg:
"""Configuration for observation block."""
name: str
dim: int # Single frame dimension
ACTUATOR_GROUPS = {
"hip": [0, 3, 6, 9],
"thigh": [1, 4, 7, 10],
"calf": [2, 5, 8, 11],
}
# ============================================================================
# Helper Functions
# ============================================================================
def get_gravity_orientation(quaternion: np.ndarray) -> np.ndarray:
"""Compute gravity vector in body frame from quaternion."""
qw, qx, qy, qz = quaternion
gravity = np.zeros(3)
gravity[0] = 2 * (-qz * qx + qw * qy)
gravity[1] = -2 * (qz * qy + qw * qx)
gravity[2] = 1 - 2 * (qw * qw + qz * qz)
return gravity
def pd_control(target_q: np.ndarray, q: np.ndarray, kp: np.ndarray,
target_dq: np.ndarray, dq: np.ndarray, kd: np.ndarray) -> np.ndarray:
"""Compute PD control torques."""
return (target_q - q) * kp + (target_dq - dq) * kd
def get_joystick_command(joystick, max_cmd: np.ndarray) -> np.ndarray:
"""Read command from Xbox controller."""
pygame.event.pump()
dead_zone = 0.1
axes = [joystick.get_axis(i) for i in [0, 1, 3]] # LX, LY, RX
axes = [0 if abs(a) < dead_zone else a for a in axes]
cmd = np.array([-axes[1] * max_cmd[0], -axes[0] * max_cmd[1], -axes[2] * max_cmd[2]], dtype=np.float32)
return cmd
def load_config(config_file: str) -> dict:
"""Load and parse YAML configuration."""
with open(f"{CONFIG_DIR}/{config_file}", "r") as f:
config = yaml.load(f, Loader=yaml.FullLoader)
# Replace path placeholders
config["policy_path"] = config["policy_path"].replace("{ROOT_DIR}", ROOT_DIR)
config["xml_path"] = config["xml_path"].replace("{ROOT_DIR}", ROOT_DIR)
return config
def build_observation(obs: np.ndarray, features: dict, obs_cfg: list, history_len: int) -> None:
"""Update stacked observation buffer with new frame features (in-place)."""
ptr = 0
for cfg in obs_cfg:
dim = cfg.dim
start, end = ptr, ptr + dim * history_len
# Roll history and insert new frame
obs[start:end] = np.roll(obs[start:end], shift=-dim, axis=0)
obs[end - dim:end] = features[cfg.name]
ptr = end
def extract_single_obs(obs: np.ndarray, obs_cfg: list, history_len: int) -> np.ndarray:
"""Extract most recent single-frame observation from stacked buffer."""
single = []
ptr = 0
for cfg in obs_cfg:
dim = cfg.dim
block = obs[ptr:ptr + dim * history_len]
single.append(block[-dim:]) # Get last dim elements (most recent frame)
ptr += dim * history_len
return np.concatenate(single, axis=0)
def apply_action(action: np.ndarray, default_angles: np.ndarray,
action_pos_scale: float) -> np.ndarray:
"""Transform policy action to position targets."""
return action * action_pos_scale + default_angles
def set_initial_state(data: mujoco.MjData, base_pos: np.ndarray, base_quat: np.ndarray,
joint_pos: np.ndarray) -> None:
"""Apply the Isaac-style initial pose before the first mj_forward."""
data.qpos[:] = 0.0
data.qvel[:] = 0.0
data.qpos[:3] = base_pos
data.qpos[3:7] = base_quat
data.qpos[7:] = joint_pos
def build_delay_buffers(default_pos: np.ndarray, delay_max: int) -> deque:
"""Create history buffers for delayed control targets."""
history_len = delay_max + 1
pos_history = deque((default_pos.copy() for _ in range(history_len)), maxlen=history_len)
return pos_history
def sample_delayed_targets(pos_history: deque, delay_min: int,
delay_max: int, rng: np.random.Generator) -> np.ndarray:
"""Apply per-actuator-group discrete control delays."""
delayed_pos = pos_history[-1].copy()
for joint_ids in ACTUATOR_GROUPS.values():
delay_steps = int(rng.integers(delay_min, delay_max + 1)) if delay_max > 0 else 0
pos_source = pos_history[-1 - delay_steps]
delayed_pos[joint_ids] = pos_source[joint_ids]
return delayed_pos
def init_joystick() -> tuple:
"""Initialize pygame and joystick if available."""
pygame.init()
if pygame.joystick.get_count() > 0:
joystick = pygame.joystick.Joystick(0)
joystick.init()
print(f"Detected Joystick: {joystick.get_name()}")
return joystick, True
print("No Joystick detected. Using default commands from config.")
return None, False
def setup_viewer_camera(viewer) -> None:
"""Configure tracking camera."""
viewer.cam.type = mujoco.mjtCamera.mjCAMERA_TRACKING
viewer.cam.trackbodyid = 1
viewer.cam.distance = 3.0
viewer.cam.elevation = -30.0
viewer.cam.azimuth = 0.0
# ============================================================================
# Main
# ============================================================================
def main():
parser = ArgumentParser()
parser.add_argument("--save-video", action="store_true", help="Save video of simulation.")
args = parser.parse_args()
# Configuration
config_file = "go2.yaml"
render_fps = 240
config = load_config(config_file)
# Extract config parameters
sim_cfg = {
"duration": config["simulation_duration"],
"dt": config["simulation_dt"],
"decimation": config["control_decimation"],
}
# PD controller gains
kps = np.array(config["kps"], dtype=np.float32)
kds = np.array(config["kds"], dtype=np.float32)
default_angles = np.array(config["default_angles"], dtype=np.float32)
base_init_pos = np.array(config["base_init_pos"], dtype=np.float32)
base_init_quat = np.array(config["base_init_quat"], dtype=np.float32)
delay_min = int(config.get("actuator_delay_min", 0))
delay_max = int(config.get("actuator_delay_max", 0))
delay_seed = int(config.get("actuator_delay_seed", 0))
if delay_min < 0 or delay_max < delay_min:
raise ValueError(
f"Invalid actuator delay range: min={delay_min}, max={delay_max}."
)
delay_rng = np.random.default_rng(delay_seed)
# Scaling factors
scales = {
"lin_vel": config["lin_vel_scale"],
"ang_vel": config["ang_vel_scale"],
"dof_pos": config["dof_pos_scale"],
"dof_vel": config["dof_vel_scale"],
"action_pos": config["action_pos_scale"],
"cmd": np.array(config["cmd_scale"], dtype=np.float32),
}
# Policy dimensions
num_actions = config["num_actions"]
num_obs = config["num_obs"]
history_len = config.get("history_len", 1)
max_cmd = np.array(config["max_cmd"], dtype=np.float32)
cmd = np.array(config["cmd_init"], dtype=np.float32)
# Joint name mapping
idx_model2mj = idx_mj2model = list(range(num_actions))
if "mujoco_joint_names" in config and "model_joint_names" in config:
mj_names = config["mujoco_joint_names"]
model_names = config["model_joint_names"]
idx_model2mj = [model_names.index(j) for j in mj_names]
idx_mj2model = [mj_names.index(j) for j in model_names]
# Initialize joystick
joystick, use_joystick = init_joystick()
# Prepare video output
VIDEO_DIR.mkdir(parents=True, exist_ok=True)
model_name = Path(config["policy_path"]).stem
cmd_str = f"cmd_{cmd[0]}_{cmd[1]}_{cmd[2]}"
# Initialize state
action = np.zeros(num_actions, dtype=np.float32)
target_dof_pos = default_angles.copy()
target_dof_vel = np.zeros(num_actions, dtype=np.float32)
obs = np.zeros(num_obs * history_len, dtype=np.float32)
pos_history = build_delay_buffers(target_dof_pos, delay_max)
# Build observation config dynamically
num_joints = num_actions
obs_cfg = [
ObsBlockCfg("ang_vel", 3),
ObsBlockCfg("gravity", 3),
ObsBlockCfg("cmd", 3),
ObsBlockCfg("joint_pos", num_joints),
ObsBlockCfg("joint_vel", num_actions),
ObsBlockCfg("last_action", num_actions),
]
# Load MuJoCo model
m = mujoco.MjModel.from_xml_path(config["xml_path"])
d = mujoco.MjData(m)
m.opt.timestep = sim_cfg["dt"]
set_initial_state(d, base_init_pos, base_init_quat, default_angles)
mujoco.mj_forward(m, d)
renderer = mujoco.Renderer(m, height=360, width=640)
# Load policy
policy = torch.jit.load(config["policy_path"])
# Setup video recording
writer = None
if args.save_video:
video_path = VIDEO_DIR / f"{model_name}_{cmd_str}.mp4"
video_fps = 50
sim_fps = 1.0 / sim_cfg["dt"]
frame_skip = max(1, int(sim_fps / video_fps))
writer = imageio.get_writer(video_path, fps=video_fps)
print(f"Recording: {video_path} (Sim FPS: {sim_fps:.1f}, Video FPS: {video_fps})")
render_substeps = int((1.0 / render_fps) / sim_cfg["dt"])
# Run simulation
with mujoco.viewer.launch_passive(m, d) as viewer:
setup_viewer_camera(viewer)
start_time = time.time()
counter = 0
while viewer.is_running() and time.time() - start_time < sim_cfg["duration"]:
step_start = time.time()
# Update command from joystick
if use_joystick and counter % sim_cfg["decimation"] == 0:
cmd = get_joystick_command(joystick, max_cmd)
# Compute and apply control
tau = pd_control(target_dof_pos, d.qpos[7:], kps, target_dof_vel, d.qvel[6:], kds)
d.ctrl[:] = tau
mujoco.mj_step(m, d)
# Record frame
if writer and counter % frame_skip == 0:
try:
renderer.update_scene(d, camera=viewer.cam)
writer.append_data(renderer.render())
except Exception as e:
print(f"Render error: {e}")
counter += 1
# Policy update at control frequency
if counter % sim_cfg["decimation"] == 0:
# Extract sensor data
qj = d.qpos[7:]
dqj = d.qvel[6:]
quat = d.qpos[3:7]
ang_vel = d.qvel[3:6]
# Scale observations
qj = (qj - default_angles) * scales["dof_pos"]
dqj = dqj * scales["dof_vel"]
ang_vel = ang_vel * scales["ang_vel"]
gravity = get_gravity_orientation(quat)
# Build observation features
features = {
"ang_vel": ang_vel,
"gravity": gravity,
"cmd": cmd * scales["cmd"],
"joint_pos": qj[idx_mj2model],
"joint_vel": dqj[idx_mj2model],
"last_action": action[idx_mj2model],
}
# Update stacked observation
build_observation(obs, features, obs_cfg, history_len)
# Extract single-frame observation
single_obs = extract_single_obs(obs, obs_cfg, history_len)
# Run policy
obs_tensor = torch.from_numpy(obs).unsqueeze(0)
single_tensor = torch.from_numpy(single_obs).unsqueeze(0)
result = policy(CTSPolicyInputs(policy=obs_tensor, single_obs=single_tensor))
action = result.detach().cpu().numpy().squeeze()[idx_model2mj]
# Apply action
latest_target_pos = apply_action(action, default_angles, scales["action_pos"])
pos_history.append(latest_target_pos.copy())
target_dof_pos = sample_delayed_targets(pos_history, delay_min, delay_max, delay_rng)
# Sync viewer
if counter % render_substeps == 0:
viewer.sync()
# Time management
sleep_time = sim_cfg["dt"] - (time.time() - step_start) - 0.1
if sleep_time > 0:
time.sleep(sleep_time)
# Cleanup
if writer:
print(f"Video saved: {video_path}")
writer.close()
if __name__ == "__main__":
main()

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

199205
resources/go2/assets/base_4.obj Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

30786
resources/go2/assets/foot.obj Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

76960
resources/go2/assets/hip_0.obj Normal file

File diff suppressed because it is too large Load Diff

73961
resources/go2/assets/hip_1.obj Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 919 KiB

696
resources/go2/boxes.xml Normal file
View File

@@ -0,0 +1,696 @@
<mujoco model="boxes">
<include file="go2.xml" />
<statistic center="0 0 0.1" extent="0.8" />
<visual>
<headlight diffuse="0.6 0.6 0.6" ambient="0.3 0.3 0.3" specular="0 0 0" />
<rgba haze="0.15 0.25 0.35 1" />
<global azimuth="-130" elevation="-20" />
</visual>
<asset>
<texture type="skybox" builtin="gradient" rgb1="0.3 0.5 0.7" rgb2="0 0 0" width="512" height="3072" />
<texture type="2d" name="groundplane" builtin="checker" mark="edge" rgb1="0.2 0.3 0.4" rgb2="0.1 0.2 0.3" markrgb="0.8 0.8 0.8" width="300" height="300" />
<material name="groundplane" texture="groundplane" texuniform="true" texrepeat="5 5" reflectance="0.2" />
</asset>
<worldbody>
<light pos="0 0 1.5" dir="0 0 -1" directional="true" />
<geom name="floor" size="0 0 0.05" type="plane" material="groundplane" />
<!-- Rough terrain: full coverage with dense bumps -->
<geom pos="0.5 -2.0 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="0.8 -2.0 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="1.1 -2.0 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="1.4 -2.0 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="1.7 -2.0 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="2.0 -2.0 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="2.3 -2.0 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="2.6 -2.0 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="2.9 -2.0 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="3.2 -2.0 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="3.5 -2.0 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="3.8 -2.0 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="4.1 -2.0 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="4.4 -2.0 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="4.7 -2.0 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="5.0 -2.0 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="5.3 -2.0 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="5.6 -2.0 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="5.9 -2.0 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="6.2 -2.0 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="6.5 -2.0 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="6.8 -2.0 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="7.1 -2.0 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="7.4 -2.0 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="7.7 -2.0 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="8.0 -2.0 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="8.3 -2.0 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="8.6 -2.0 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="8.9 -2.0 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="9.2 -2.0 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="9.5 -2.0 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="9.8 -2.0 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="10.1 -2.0 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="10.4 -2.0 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="10.7 -2.0 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="11.0 -2.0 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="11.3 -2.0 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="11.6 -2.0 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="11.9 -2.0 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="12.2 -2.0 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="12.5 -2.0 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="12.8 -2.0 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="13.1 -2.0 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="13.4 -2.0 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="13.7 -2.0 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="14.0 -2.0 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="14.3 -2.0 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="14.6 -2.0 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="0.5 -1.7 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="0.8 -1.7 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="1.1 -1.7 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="1.4 -1.7 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="1.7 -1.7 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="2.0 -1.7 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="2.3 -1.7 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="2.6 -1.7 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="2.9 -1.7 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="3.2 -1.7 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="3.5 -1.7 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="3.8 -1.7 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="4.1 -1.7 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="4.4 -1.7 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="4.7 -1.7 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="5.0 -1.7 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="5.3 -1.7 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="5.6 -1.7 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="5.9 -1.7 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="6.2 -1.7 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="6.5 -1.7 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="6.8 -1.7 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="7.1 -1.7 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="7.4 -1.7 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="7.7 -1.7 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="8.0 -1.7 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="8.3 -1.7 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="8.6 -1.7 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="8.9 -1.7 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="9.2 -1.7 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="9.5 -1.7 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="9.8 -1.7 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="10.1 -1.7 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="10.4 -1.7 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="10.7 -1.7 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="11.0 -1.7 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="11.3 -1.7 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="11.6 -1.7 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="11.9 -1.7 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="12.2 -1.7 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="12.5 -1.7 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="12.8 -1.7 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="13.1 -1.7 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="13.4 -1.7 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="13.7 -1.7 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="14.0 -1.7 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="14.3 -1.7 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="14.6 -1.7 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="0.5 -1.4 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="0.8 -1.4 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="1.1 -1.4 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="1.4 -1.4 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="1.7 -1.4 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="2.0 -1.4 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="2.3 -1.4 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="2.6 -1.4 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="2.9 -1.4 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="3.2 -1.4 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="3.5 -1.4 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="3.8 -1.4 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="4.1 -1.4 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="4.4 -1.4 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="4.7 -1.4 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="5.0 -1.4 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="5.3 -1.4 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="5.6 -1.4 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="5.9 -1.4 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="6.2 -1.4 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="6.5 -1.4 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="6.8 -1.4 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="7.1 -1.4 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="7.4 -1.4 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="7.7 -1.4 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="8.0 -1.4 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="8.3 -1.4 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="8.6 -1.4 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="8.9 -1.4 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="9.2 -1.4 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="9.5 -1.4 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="9.8 -1.4 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="10.1 -1.4 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="10.4 -1.4 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="10.7 -1.4 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="11.0 -1.4 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="11.3 -1.4 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="11.6 -1.4 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="11.9 -1.4 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="12.2 -1.4 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="12.5 -1.4 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="12.8 -1.4 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="13.1 -1.4 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="13.4 -1.4 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="13.7 -1.4 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="14.0 -1.4 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="14.3 -1.4 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="14.6 -1.4 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="0.5 -1.1 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="0.8 -1.1 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="1.1 -1.1 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="1.4 -1.1 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="1.7 -1.1 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="2.0 -1.1 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="2.3 -1.1 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="2.6 -1.1 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="2.9 -1.1 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="3.2 -1.1 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="3.5 -1.1 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="3.8 -1.1 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="4.1 -1.1 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="4.4 -1.1 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="4.7 -1.1 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="5.0 -1.1 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="5.3 -1.1 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="5.6 -1.1 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="5.9 -1.1 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="6.2 -1.1 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="6.5 -1.1 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="6.8 -1.1 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="7.1 -1.1 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="7.4 -1.1 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="7.7 -1.1 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="8.0 -1.1 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="8.3 -1.1 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="8.6 -1.1 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="8.9 -1.1 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="9.2 -1.1 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="9.5 -1.1 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="9.8 -1.1 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="10.1 -1.1 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="10.4 -1.1 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="10.7 -1.1 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="11.0 -1.1 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="11.3 -1.1 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="11.6 -1.1 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="11.9 -1.1 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="12.2 -1.1 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="12.5 -1.1 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="12.8 -1.1 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="13.1 -1.1 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="13.4 -1.1 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="13.7 -1.1 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="14.0 -1.1 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="14.3 -1.1 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="14.6 -1.1 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="0.5 -0.8 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="0.8 -0.8 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="1.1 -0.8 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="1.4 -0.8 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="1.7 -0.8 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="2.0 -0.8 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="2.3 -0.8 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="2.6 -0.8 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="2.9 -0.8 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="3.2 -0.8 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="3.5 -0.8 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="3.8 -0.8 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="4.1 -0.8 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="4.4 -0.8 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="4.7 -0.8 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="5.0 -0.8 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="5.3 -0.8 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="5.6 -0.8 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="5.9 -0.8 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="6.2 -0.8 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="6.5 -0.8 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="6.8 -0.8 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="7.1 -0.8 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="7.4 -0.8 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="7.7 -0.8 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="8.0 -0.8 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="8.3 -0.8 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="8.6 -0.8 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="8.9 -0.8 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="9.2 -0.8 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="9.5 -0.8 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="9.8 -0.8 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="10.1 -0.8 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="10.4 -0.8 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="10.7 -0.8 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="11.0 -0.8 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="11.3 -0.8 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="11.6 -0.8 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="11.9 -0.8 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="12.2 -0.8 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="12.5 -0.8 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="12.8 -0.8 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="13.1 -0.8 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="13.4 -0.8 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="13.7 -0.8 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="14.0 -0.8 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="14.3 -0.8 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="14.6 -0.8 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="0.5 -0.5 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="0.8 -0.5 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="1.1 -0.5 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="1.4 -0.5 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="1.7 -0.5 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="2.0 -0.5 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="2.3 -0.5 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="2.6 -0.5 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="2.9 -0.5 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="3.2 -0.5 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="3.5 -0.5 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="3.8 -0.5 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="4.1 -0.5 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="4.4 -0.5 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="4.7 -0.5 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="5.0 -0.5 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="5.3 -0.5 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="5.6 -0.5 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="5.9 -0.5 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="6.2 -0.5 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="6.5 -0.5 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="6.8 -0.5 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="7.1 -0.5 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="7.4 -0.5 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="7.7 -0.5 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="8.0 -0.5 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="8.3 -0.5 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="8.6 -0.5 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="8.9 -0.5 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="9.2 -0.5 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="9.5 -0.5 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="9.8 -0.5 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="10.1 -0.5 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="10.4 -0.5 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="10.7 -0.5 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="11.0 -0.5 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="11.3 -0.5 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="11.6 -0.5 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="11.9 -0.5 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="12.2 -0.5 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="12.5 -0.5 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="12.8 -0.5 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="13.1 -0.5 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="13.4 -0.5 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="13.7 -0.5 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="14.0 -0.5 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="14.3 -0.5 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="14.6 -0.5 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="0.5 -0.2 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="0.8 -0.2 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="1.1 -0.2 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="1.4 -0.2 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="1.7 -0.2 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="2.0 -0.2 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="2.3 -0.2 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="2.6 -0.2 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="2.9 -0.2 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="3.2 -0.2 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="3.5 -0.2 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="3.8 -0.2 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="4.1 -0.2 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="4.4 -0.2 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="4.7 -0.2 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="5.0 -0.2 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="5.3 -0.2 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="5.6 -0.2 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="5.9 -0.2 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="6.2 -0.2 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="6.5 -0.2 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="6.8 -0.2 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="7.1 -0.2 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="7.4 -0.2 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="7.7 -0.2 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="8.0 -0.2 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="8.3 -0.2 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="8.6 -0.2 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="8.9 -0.2 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="9.2 -0.2 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="9.5 -0.2 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="9.8 -0.2 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="10.1 -0.2 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="10.4 -0.2 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="10.7 -0.2 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="11.0 -0.2 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="11.3 -0.2 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="11.6 -0.2 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="11.9 -0.2 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="12.2 -0.2 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="12.5 -0.2 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="12.8 -0.2 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="13.1 -0.2 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="13.4 -0.2 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="13.7 -0.2 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="14.0 -0.2 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="14.3 -0.2 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="14.6 -0.2 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="0.5 0.1 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="0.8 0.1 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="1.1 0.1 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="1.4 0.1 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="1.7 0.1 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="2.0 0.1 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="2.3 0.1 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="2.6 0.1 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="2.9 0.1 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="3.2 0.1 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="3.5 0.1 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="3.8 0.1 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="4.1 0.1 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="4.4 0.1 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="4.7 0.1 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="5.0 0.1 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="5.3 0.1 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="5.6 0.1 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="5.9 0.1 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="6.2 0.1 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="6.5 0.1 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="6.8 0.1 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="7.1 0.1 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="7.4 0.1 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="7.7 0.1 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="8.0 0.1 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="8.3 0.1 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="8.6 0.1 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="8.9 0.1 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="9.2 0.1 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="9.5 0.1 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="9.8 0.1 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="10.1 0.1 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="10.4 0.1 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="10.7 0.1 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="11.0 0.1 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="11.3 0.1 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="11.6 0.1 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="11.9 0.1 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="12.2 0.1 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="12.5 0.1 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="12.8 0.1 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="13.1 0.1 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="13.4 0.1 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="13.7 0.1 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="14.0 0.1 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="14.3 0.1 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="14.6 0.1 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="0.5 0.4 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="0.8 0.4 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="1.1 0.4 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="1.4 0.4 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="1.7 0.4 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="2.0 0.4 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="2.3 0.4 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="2.6 0.4 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="2.9 0.4 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="3.2 0.4 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="3.5 0.4 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="3.8 0.4 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="4.1 0.4 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="4.4 0.4 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="4.7 0.4 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="5.0 0.4 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="5.3 0.4 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="5.6 0.4 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="5.9 0.4 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="6.2 0.4 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="6.5 0.4 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="6.8 0.4 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="7.1 0.4 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="7.4 0.4 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="7.7 0.4 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="8.0 0.4 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="8.3 0.4 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="8.6 0.4 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="8.9 0.4 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="9.2 0.4 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="9.5 0.4 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="9.8 0.4 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="10.1 0.4 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="10.4 0.4 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="10.7 0.4 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="11.0 0.4 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="11.3 0.4 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="11.6 0.4 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="11.9 0.4 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="12.2 0.4 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="12.5 0.4 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="12.8 0.4 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="13.1 0.4 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="13.4 0.4 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="13.7 0.4 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="14.0 0.4 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="14.3 0.4 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="14.6 0.4 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="0.5 0.7 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="0.8 0.7 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="1.1 0.7 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="1.4 0.7 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="1.7 0.7 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="2.0 0.7 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="2.3 0.7 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="2.6 0.7 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="2.9 0.7 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="3.2 0.7 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="3.5 0.7 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="3.8 0.7 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="4.1 0.7 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="4.4 0.7 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="4.7 0.7 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="5.0 0.7 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="5.3 0.7 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="5.6 0.7 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="5.9 0.7 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="6.2 0.7 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="6.5 0.7 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="6.8 0.7 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="7.1 0.7 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="7.4 0.7 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="7.7 0.7 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="8.0 0.7 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="8.3 0.7 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="8.6 0.7 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="8.9 0.7 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="9.2 0.7 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="9.5 0.7 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="9.8 0.7 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="10.1 0.7 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="10.4 0.7 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="10.7 0.7 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="11.0 0.7 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="11.3 0.7 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="11.6 0.7 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="11.9 0.7 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="12.2 0.7 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="12.5 0.7 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="12.8 0.7 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="13.1 0.7 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="13.4 0.7 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="13.7 0.7 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="14.0 0.7 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="14.3 0.7 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="14.6 0.7 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="0.5 1.0 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="0.8 1.0 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="1.1 1.0 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="1.4 1.0 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="1.7 1.0 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="2.0 1.0 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="2.3 1.0 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="2.6 1.0 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="2.9 1.0 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="3.2 1.0 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="3.5 1.0 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="3.8 1.0 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="4.1 1.0 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="4.4 1.0 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="4.7 1.0 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="5.0 1.0 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="5.3 1.0 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="5.6 1.0 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="5.9 1.0 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="6.2 1.0 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="6.5 1.0 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="6.8 1.0 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="7.1 1.0 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="7.4 1.0 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="7.7 1.0 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="8.0 1.0 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="8.3 1.0 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="8.6 1.0 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="8.9 1.0 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="9.2 1.0 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="9.5 1.0 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="9.8 1.0 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="10.1 1.0 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="10.4 1.0 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="10.7 1.0 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="11.0 1.0 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="11.3 1.0 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="11.6 1.0 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="11.9 1.0 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="12.2 1.0 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="12.5 1.0 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="12.8 1.0 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="13.1 1.0 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="13.4 1.0 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="13.7 1.0 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="14.0 1.0 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="14.3 1.0 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="14.6 1.0 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="0.5 1.3 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="0.8 1.3 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="1.1 1.3 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="1.4 1.3 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="1.7 1.3 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="2.0 1.3 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="2.3 1.3 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="2.6 1.3 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="2.9 1.3 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="3.2 1.3 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="3.5 1.3 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="3.8 1.3 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="4.1 1.3 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="4.4 1.3 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="4.7 1.3 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="5.0 1.3 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="5.3 1.3 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="5.6 1.3 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="5.9 1.3 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="6.2 1.3 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="6.5 1.3 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="6.8 1.3 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="7.1 1.3 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="7.4 1.3 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="7.7 1.3 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="8.0 1.3 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="8.3 1.3 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="8.6 1.3 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="8.9 1.3 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="9.2 1.3 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="9.5 1.3 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="9.8 1.3 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="10.1 1.3 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="10.4 1.3 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="10.7 1.3 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="11.0 1.3 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="11.3 1.3 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="11.6 1.3 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="11.9 1.3 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="12.2 1.3 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="12.5 1.3 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="12.8 1.3 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="13.1 1.3 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="13.4 1.3 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="13.7 1.3 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="14.0 1.3 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="14.3 1.3 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="14.6 1.3 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="0.5 1.6 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="0.8 1.6 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="1.1 1.6 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="1.4 1.6 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="1.7 1.6 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="2.0 1.6 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="2.3 1.6 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="2.6 1.6 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="2.9 1.6 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="3.2 1.6 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="3.5 1.6 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="3.8 1.6 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="4.1 1.6 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="4.4 1.6 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="4.7 1.6 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="5.0 1.6 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="5.3 1.6 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="5.6 1.6 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="5.9 1.6 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="6.2 1.6 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="6.5 1.6 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="6.8 1.6 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="7.1 1.6 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="7.4 1.6 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="7.7 1.6 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="8.0 1.6 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="8.3 1.6 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="8.6 1.6 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="8.9 1.6 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="9.2 1.6 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="9.5 1.6 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="9.8 1.6 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="10.1 1.6 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="10.4 1.6 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="10.7 1.6 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="11.0 1.6 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="11.3 1.6 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="11.6 1.6 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="11.9 1.6 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="12.2 1.6 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="12.5 1.6 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="12.8 1.6 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="13.1 1.6 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="13.4 1.6 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="13.7 1.6 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="14.0 1.6 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="14.3 1.6 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="14.6 1.6 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="0.5 1.9 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="0.8 1.9 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="1.1 1.9 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="1.4 1.9 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="1.7 1.9 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="2.0 1.9 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="2.3 1.9 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="2.6 1.9 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="2.9 1.9 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="3.2 1.9 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="3.5 1.9 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="3.8 1.9 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="4.1 1.9 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="4.4 1.9 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="4.7 1.9 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="5.0 1.9 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="5.3 1.9 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="5.6 1.9 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="5.9 1.9 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="6.2 1.9 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="6.5 1.9 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="6.8 1.9 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="7.1 1.9 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="7.4 1.9 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="7.7 1.9 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="8.0 1.9 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="8.3 1.9 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="8.6 1.9 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="8.9 1.9 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="9.2 1.9 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="9.5 1.9 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="9.8 1.9 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="10.1 1.9 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="10.4 1.9 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="10.7 1.9 0.03" type="box" size="0.15 0.15 0.03" />
<geom pos="11.0 1.9 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="11.3 1.9 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="11.6 1.9 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="11.9 1.9 0.1" type="box" size="0.15 0.15 0.1" />
<geom pos="12.2 1.9 0.04" type="box" size="0.15 0.15 0.04" />
<geom pos="12.5 1.9 0.08" type="box" size="0.15 0.15 0.08" />
<geom pos="12.8 1.9 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="13.1 1.9 0.09" type="box" size="0.15 0.15 0.09" />
<geom pos="13.4 1.9 0.05" type="box" size="0.15 0.15 0.05" />
<geom pos="13.7 1.9 0.07" type="box" size="0.15 0.15 0.07" />
<geom pos="14.0 1.9 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="14.3 1.9 0.06" type="box" size="0.15 0.15 0.06" />
<geom pos="14.6 1.9 0.09" type="box" size="0.15 0.15 0.09" />
</worldbody>
</mujoco>

22
resources/go2/flat.xml Normal file
View File

@@ -0,0 +1,22 @@
<mujoco model="flat">
<include file="go2.xml"/>
<statistic center="1.0 0.7 1.0" extent="0.8"/>
<visual>
<headlight diffuse="0.6 0.6 0.6" ambient="0.1 0.1 0.1" specular="0.9 0.9 0.9"/>
<rgba haze="0.15 0.25 0.35 1"/>
<global azimuth="-140" elevation="-20"/>
</visual>
<asset>
<texture type="skybox" builtin="flat" rgb1="0 0 0" rgb2="0 0 0" width="512" height="3072"/>
<texture type="2d" name="groundplane" builtin="checker" mark="edge" rgb1="0.2 0.3 0.4" rgb2="0.1 0.2 0.3" markrgb="0.8 0.8 0.8" width="300" height="300"/>
<material name="groundplane" texture="groundplane" texuniform="true" texrepeat="5 5" reflectance="0.2"/>
</asset>
<worldbody>
<light pos="1 0 3.5" dir="0 0 -1" directional="true"/>
<geom name="floor" size="0 0 0.05" type="plane" material="groundplane"/>
</worldbody>
</mujoco>

183
resources/go2/go2.xml Normal file
View File

@@ -0,0 +1,183 @@
<mujoco model="go2_description">
<compiler angle="radian" meshdir="assets"/>
<statistic meansize="0.144785" extent="1.23314" center="0.025392 2.0634e-05 -0.245975"/>
<default>
<joint damping="0.001" armature="0.01" frictionloss="0.1"/>
<default class="visual">
<geom type="mesh" contype="0" conaffinity="0" group="2"/>
</default>
</default>
<asset>
<material name="metal" rgba=".9 .95 .95 1" />
<material name="black" rgba="0 0 0 1" />
<material name="white" rgba="1 1 1 1" />
<material name="gray" rgba="0.671705 0.692426 0.774270 1" />
<mesh file="base_0.obj" />
<mesh file="base_1.obj" />
<mesh file="base_2.obj" />
<mesh file="base_3.obj" />
<mesh file="base_4.obj" />
<mesh file="hip_0.obj" />
<mesh file="hip_1.obj" />
<mesh file="thigh_0.obj" />
<mesh file="thigh_1.obj" />
<mesh file="thigh_mirror_0.obj" />
<mesh file="thigh_mirror_1.obj" />
<mesh file="calf_0.obj" />
<mesh file="calf_1.obj" />
<mesh file="calf_mirror_0.obj" />
<mesh file="calf_mirror_1.obj" />
<mesh file="foot.obj" />
</asset>
<worldbody>
<body name="base" pos="0 0 0.445">
<!-- <body name="base" pos="-5 2 0.445"> -->
<!-- <body name="base" pos="-5 2 0.30" quat="0 0 0.706 0.706"> -->
<!-- <body name="base" pos="-5 2 0.445" quat="0 0 1 0"> -->
<!-- <body name="base" pos="0 0 0.16" quat="0 0 0.706 0.706"> -->
<!-- <body name="base" pos="0 0 0.1" quat="0 0 1 0"> -->
<inertial pos="0.021112 0 -0.005366"
mass="6.921"
diaginertia="0.02448 0.098077 0.107" />
<freejoint name="root"/>
<geom mesh="base_0" material="black" class="visual" />
<geom mesh="base_1" material="black" class="visual" />
<geom mesh="base_2" material="black" class="visual" />
<geom mesh="base_3" material="white" class="visual" />
<geom mesh="base_4" material="gray" class="visual" />
<geom name="base_box" type="box" size="0.1881 0.04675 0.057"/>
<geom name="base_cyl1" type="cylinder" size="0.05 0.045" pos="0.285 0 0.01"/>
<geom name="base_sphere1" type="sphere" size="0.047" pos="0.293 0 -0.06"/>
<body name="FL_hip" pos="0.1934 0.0465 0">
<inertial pos="-0.0054 0.00194 -0.000105" quat="0.497014 0.499245 0.505462 0.498237" mass="0.678" diaginertia="0.00088403 0.000596003 0.000479967"/>
<joint name="FL_hip_joint" pos="0 0 0" axis="1 0 0" range="-1.0472 1.0472" actuatorfrcrange="-23.7 23.7"/>
<geom mesh="hip_0" material="metal" class="visual" />
<geom mesh="hip_1" material="gray" class="visual" />
<geom size="0.046 0.02" pos="0 0.08 0" quat="0.707107 0.707107 0 0" type="cylinder" rgba="1 1 1 1"/>
<body name="FL_thigh" pos="0 0.0955 0">
<inertial pos="-0.00374 -0.0223 -0.0327" quat="0.829533 0.0847635 -0.0200632 0.551623" mass="1.152" diaginertia="0.00594973 0.00584149 0.000878787"/>
<joint name="FL_thigh_joint" pos="0 0 0" axis="0 1 0" range="-1.5708 3.4907" actuatorfrcrange="-23.7 23.7"/>
<geom mesh="thigh_0" material="metal" class="visual" />
<geom mesh="thigh_1" material="gray" class="visual" />
<geom size="0.055 0.01225 0.017" pos="0 0 -0.1065" quat="0.707107 0 0.707107 0" type="box" rgba="1 1 1 1"/>
<body name="FL_calf" pos="0 0 -0.213">
<inertial pos="0.00629595 -0.000622121 -0.141417" quat="0.710672 0.00154099 -0.00450087 0.703508" mass="0.241352" diaginertia="0.0014901 0.00146356 5.31397e-05"/>
<joint name="FL_calf_joint" pos="0 0 0" axis="0 1 0" range="-2.7227 -0.83776" actuatorfrcrange="-35.55 35.55"/>
<geom mesh="calf_0" material="gray" class="visual" />
<geom mesh="calf_1" material="black" class="visual" />
<geom size="0.012 0.06" pos="0.008 0 -0.06" quat="0.994493 0 -0.104807 0" type="cylinder" rgba="1 1 1 1"/>
<geom size="0.011 0.0325" pos="0.02 0 -0.148" quat="0.999688 0 0.0249974 0" type="cylinder"/>
<geom size="0.0155 0.015" pos="0.00801333 0 -0.18745" quat="0.965093 0 0.261909 0" type="cylinder"/>
<geom pos="0 0 -0.213" mesh="foot" class="visual" material="black" />
<geom size="0.022" pos="-0.002 0 -0.213" rgba="1 1 1 1"/>
</body>
</body>
</body>
<body name="FR_hip" pos="0.1934 -0.0465 0">
<inertial pos="-0.0054 -0.00194 -0.000105" quat="0.498237 0.505462 0.499245 0.497014" mass="0.678" diaginertia="0.00088403 0.000596003 0.000479967"/>
<joint name="FR_hip_joint" pos="0 0 0" axis="1 0 0" range="-1.0472 1.0472" actuatorfrcrange="-23.7 23.7"/>
<geom mesh="hip_0" material="metal" class="visual" quat="4.63268e-05 1 0 0" />
<geom mesh="hip_1" material="gray" class="visual" quat="4.63268e-05 1 0 0" />
<geom size="0.046 0.02" pos="0 -0.08 0" quat="0.707107 0.707107 0 0" type="cylinder" rgba="1 1 1 1"/>
<body name="FR_thigh" pos="0 -0.0955 0">
<inertial pos="-0.00374 0.0223 -0.0327" quat="0.551623 -0.0200632 0.0847635 0.829533" mass="1.152" diaginertia="0.00594973 0.00584149 0.000878787"/>
<joint name="FR_thigh_joint" pos="0 0 0" axis="0 1 0" range="-1.5708 3.4907" actuatorfrcrange="-23.7 23.7"/>
<geom mesh="thigh_mirror_0" material="metal" class="visual" />
<geom mesh="thigh_mirror_1" material="gray" class="visual" />
<geom size="0.055 0.01225 0.017" pos="0 0 -0.1065" quat="0.707107 0 0.707107 0" type="box" rgba="1 1 1 1"/>
<body name="FR_calf" pos="0 0 -0.213">
<inertial pos="0.00629595 0.000622121 -0.141417" quat="0.703508 -0.00450087 0.00154099 0.710672" mass="0.241352" diaginertia="0.0014901 0.00146356 5.31397e-05"/>
<joint name="FR_calf_joint" pos="0 0 0" axis="0 1 0" range="-2.7227 -0.83776" actuatorfrcrange="-35.55 35.55"/>
<geom mesh="calf_mirror_0" material="gray" class="visual" />
<geom mesh="calf_mirror_1" material="black" class="visual" />
<geom size="0.013 0.06" pos="0.01 0 -0.06" quat="0.995004 0 -0.0998334 0" type="cylinder" rgba="1 1 1 1"/>
<geom size="0.011 0.0325" pos="0.02 0 -0.148" quat="0.999688 0 0.0249974 0" type="cylinder"/>
<geom size="0.0155 0.015" pos="0.00801333 0 -0.18745" quat="0.965093 0 0.261909 0" type="cylinder"/>
<geom pos="0 0 -0.213" mesh="foot" class="visual" material="black" />
<geom size="0.022" pos="-0.002 0 -0.213" rgba="1 1 1 1"/>
</body>
</body>
</body>
<body name="RL_hip" pos="-0.1934 0.0465 0">
<inertial pos="0.0054 0.00194 -0.000105" quat="0.505462 0.498237 0.497014 0.499245" mass="0.678" diaginertia="0.00088403 0.000596003 0.000479967"/>
<joint name="RL_hip_joint" pos="0 0 0" axis="1 0 0" range="-1.0472 1.0472" actuatorfrcrange="-23.7 23.7"/>
<geom mesh="hip_0" material="metal" class="visual" quat="4.63268e-05 0 1 0" />
<geom mesh="hip_1" material="gray" class="visual" quat="4.63268e-05 0 1 0" />
<geom size="0.046 0.02" pos="0 0.08 0" quat="0.707107 0.707107 0 0" type="cylinder" rgba="1 1 1 1"/>
<body name="RL_thigh" pos="0 0.0955 0">
<inertial pos="-0.00374 -0.0223 -0.0327" quat="0.829533 0.0847635 -0.0200632 0.551623" mass="1.152" diaginertia="0.00594973 0.00584149 0.000878787"/>
<joint name="RL_thigh_joint" pos="0 0 0" axis="0 1 0" range="-0.5236 4.5379" actuatorfrcrange="-23.7 23.7"/>
<geom mesh="thigh_0" material="metal" class="visual" />
<geom mesh="thigh_1" material="gray" class="visual" />
<geom size="0.055 0.01225 0.017" pos="0 0 -0.1065" quat="0.707107 0 0.707107 0" type="box" rgba="1 1 1 1"/>
<body name="RL_calf" pos="0 0 -0.213">
<inertial pos="0.00629595 -0.000622121 -0.141417" quat="0.710672 0.00154099 -0.00450087 0.703508" mass="0.241352" diaginertia="0.0014901 0.00146356 5.31397e-05"/>
<joint name="RL_calf_joint" pos="0 0 0" axis="0 1 0" range="-2.7227 -0.83776" actuatorfrcrange="-35.55 35.55"/>
<geom mesh="calf_0" material="gray" class="visual" />
<geom mesh="calf_1" material="black" class="visual" />
<geom size="0.013 0.06" pos="0.01 0 -0.06" quat="0.995004 0 -0.0998334 0" type="cylinder" rgba="1 1 1 1"/>
<geom size="0.011 0.0325" pos="0.02 0 -0.148" quat="0.999688 0 0.0249974 0" type="cylinder"/>
<geom size="0.0155 0.015" pos="0.00801333 0 -0.18745" quat="0.965093 0 0.261909 0" type="cylinder"/>
<geom pos="0 0 -0.213" mesh="foot" class="visual" material="black" />
<geom size="0.022" pos="-0.002 0 -0.213" rgba="1 1 1 1"/>
</body>
</body>
</body>
<body name="RR_hip" pos="-0.1934 -0.0465 0">
<inertial pos="0.0054 -0.00194 -0.000105" quat="0.499245 0.497014 0.498237 0.505462" mass="0.678" diaginertia="0.00088403 0.000596003 0.000479967"/>
<joint name="RR_hip_joint" pos="0 0 0" axis="1 0 0" range="-1.0472 1.0472" actuatorfrcrange="-23.7 23.7"/>
<geom mesh="hip_0" material="metal" class="visual"
quat="2.14617e-09 4.63268e-05 4.63268e-05 -1" />
<geom mesh="hip_1" material="gray" class="visual"
quat="2.14617e-09 4.63268e-05 4.63268e-05 -1" />
<geom size="0.046 0.02" pos="0 -0.08 0" quat="0.707107 0.707107 0 0" type="cylinder" rgba="1 1 1 1"/>
<body name="RR_thigh" pos="0 -0.0955 0">
<inertial pos="-0.00374 0.0223 -0.0327" quat="0.551623 -0.0200632 0.0847635 0.829533" mass="1.152" diaginertia="0.00594973 0.00584149 0.000878787"/>
<joint name="RR_thigh_joint" pos="0 0 0" axis="0 1 0" range="-0.5236 4.5379" actuatorfrcrange="-23.7 23.7"/>
<geom mesh="thigh_mirror_0" material="metal" class="visual" />
<geom mesh="thigh_mirror_1" material="gray" class="visual" />
<geom size="0.055 0.01225 0.017" pos="0 0 -0.1065" quat="0.707107 0 0.707107 0" type="box" rgba="1 1 1 1"/>
<body name="RR_calf" pos="0 0 -0.213">
<inertial pos="0.00629595 0.000622121 -0.141417" quat="0.703508 -0.00450087 0.00154099 0.710672" mass="0.241352" diaginertia="0.0014901 0.00146356 5.31397e-05"/>
<joint name="RR_calf_joint" pos="0 0 0" axis="0 1 0" range="-2.7227 -0.83776" actuatorfrcrange="-35.55 35.55"/>
<geom mesh="calf_mirror_0" material="gray" class="visual" />
<geom mesh="calf_mirror_1" material="black" class="visual" />
<geom size="0.013 0.06" pos="0.01 0 -0.06" quat="0.995004 0 -0.0998334 0" type="cylinder" rgba="1 1 1 1"/>
<geom size="0.011 0.0325" pos="0.02 0 -0.148" quat="0.999688 0 0.0249974 0" type="cylinder"/>
<geom size="0.0155 0.015" pos="0.00801333 0 -0.18745" quat="0.965093 0 0.261909 0" type="cylinder"/>
<geom pos="0 0 -0.213" mesh="foot" class="visual" material="black" />
<geom size="0.022" pos="-0.002 0 -0.213" rgba="1 1 1 1"/>
</body>
</body>
</body>
</body>
</worldbody>
<actuator>
<motor name="FL_hip" joint="FL_hip_joint"/>
<motor name="FL_thigh" joint="FL_thigh_joint"/>
<motor name="FL_calf" joint="FL_calf_joint"/>
<motor name="FR_hip" joint="FR_hip_joint"/>
<motor name="FR_thigh" joint="FR_thigh_joint"/>
<motor name="FR_calf" joint="FR_calf_joint"/>
<motor name="RL_hip" joint="RL_hip_joint"/>
<motor name="RL_thigh" joint="RL_thigh_joint"/>
<motor name="RL_calf" joint="RL_calf_joint"/>
<motor name="RR_hip" joint="RR_hip_joint"/>
<motor name="RR_thigh" joint="RR_thigh_joint"/>
<motor name="RR_calf" joint="RR_calf_joint"/>
</actuator>
</mujoco>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

28
resources/go2/stairs.xml Normal file

File diff suppressed because one or more lines are too long

761
resources/go2/urdf/go2.urdf Normal file
View File

@@ -0,0 +1,761 @@
<?xml version='1.0' encoding='utf-8'?>
<robot name="go2">
<link name="base">
<inertial>
<origin xyz="0.021112 0 -0.005366" rpy="0 0 0" />
<mass value="6.921" />
<inertia ixx="0.02448" ixy="0.00012166" ixz="0.0014849" iyy="0.098077" iyz="-3.12E-05" izz="0.107" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="package://go2/meshes/base.dae" />
</geometry>
<material name="深色橡胶_001-effect"><color rgba="0.6717055 0.6924257 0.7742702 1" /></material><material name="白色logo_001-effect"><color rgba="1 1 1 1" /></material><material name="黑色贴纸_007-effect"><color rgba="0.009018 0.009018 0.009018 1" /></material><material name="黑色金属_007-effect"><color rgba="0.01341 0.01341 0.01341 1" /></material><material name="黑色塑料_003-effect"><color rgba="0.023455 0.023455 0.023455 1" /></material></visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0" />
<geometry>
<box size="0.3762 0.0935 0.114" />
</geometry>
</collision>
</link>
<link name="Head_upper">
<inertial>
<origin xyz="0 0 0" rpy="0 0 0" />
<mass value="0.001" />
<inertia ixx="9.6e-06" ixy="0" ixz="0" iyy="9.6e-06" iyz="0" izz="9.6e-06" />
</inertial>
<collision>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<cylinder radius="0.05" length="0.09" />
</geometry>
</collision>
</link>
<joint name="Head_upper_joint" type="fixed" dont_collapse="true">
<origin xyz="0.285 0 0.01" rpy="0 0 0" />
<parent link="base" />
<child link="Head_upper" />
<axis xyz="0 0 0" />
</joint>
<link name="Head_lower">
<inertial>
<origin xyz="0 0 0" rpy="0 0 0" />
<mass value="0.001" />
<inertia ixx="9.6e-06" ixy="0" ixz="0" iyy="9.6e-06" iyz="0" izz="9.6e-06" />
</inertial>
<collision>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<sphere radius="0.047" />
</geometry>
</collision>
</link>
<joint name="Head_lower_joint" type="fixed" dont_collapse="true">
<origin xyz="0.008 0 -0.07" rpy="0 0 0" />
<parent link="Head_upper" />
<child link="Head_lower" />
<axis xyz="0 0 0" />
</joint>
<link name="FL_hip">
<inertial>
<origin xyz="-0.0054 0.00194 -0.000105" rpy="0 0 0" />
<mass value="0.678" />
<inertia ixx="0.00048" ixy="-3.01E-06" ixz="1.11E-06" iyy="0.000884" iyz="-1.42E-06" izz="0.000596" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="package://go2/meshes/hip.dae" />
</geometry>
<material name="深色橡胶_001-effect"><color rgba="0.6717055 0.6924257 0.7742702 1" /></material><material name="Material-effect"><color rgba="0.9 0.95 0.95 1" /></material></visual>
<collision>
<origin rpy="1.5707963267948966 0 0" xyz="0 0.08 0" />
<geometry>
<cylinder length="0.04" radius="0.046" />
</geometry>
</collision>
</link>
<joint name="FL_hip_joint" type="revolute">
<origin xyz="0.1934 0.0465 0" rpy="0 0 0" />
<parent link="base" />
<child link="FL_hip" />
<axis xyz="1 0 0" />
<limit lower="-1.0472" upper="1.0472" effort="23.7" velocity="30.1" />
</joint>
<link name="FL_hip_rotor">
<inertial>
<origin rpy="0 0 0" xyz="0.0 0.0 0.0" />
<mass value="0.089" />
<inertia ixx="0.000111842" ixy="0.0" ixz="0.0" iyy="0.000059647" iyz="0.0" izz="0.000059647" />
</inertial>
</link>
<joint name="FL_hip_rotor_joint" type="fixed">
<origin rpy="0 0 0" xyz="0.11215 0.04675 0" />
<parent link="base" />
<child link="FL_hip_rotor" />
</joint>
<link name="FL_thigh">
<inertial>
<origin xyz="-0.00374 -0.0223 -0.0327" rpy="0 0 0" />
<mass value="1.152" />
<inertia ixx="0.00584" ixy="8.72E-05" ixz="-0.000289" iyy="0.0058" iyz="0.000808" izz="0.00103" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="package://go2/meshes/thigh.dae" />
</geometry>
<material name="深色橡胶_003-effect"><color rgba="0.6717055 0.6924257 0.7742702 1" /></material><material name="Material_009-effect"><color rgba="0.9 0.95 0.95 1" /></material></visual>
<collision>
<origin rpy="0 1.5707963267948966 0" xyz="0 0 -0.1065" />
<geometry>
<box size="0.213 0.0245 0.034" />
</geometry>
</collision>
</link>
<joint name="FL_thigh_joint" type="revolute">
<origin xyz="0 0.0955 0" rpy="0 0 0" />
<parent link="FL_hip" />
<child link="FL_thigh" />
<axis xyz="0 1 0" />
<limit lower="-1.5708" upper="3.4907" effort="23.7" velocity="30.1" />
</joint>
<link name="FL_thigh_rotor">
<inertial>
<origin rpy="0 0 0" xyz="0.0 0.0 0.0" />
<mass value="0.089" />
<inertia ixx="0.000059647" ixy="0.0" ixz="0.0" iyy="0.000111842" iyz="0.0" izz="0.000059647" />
</inertial>
</link>
<joint name="FL_thigh_rotor_joint" type="fixed">
<origin rpy="0 0 0" xyz="0 -0.00015 0" />
<parent link="FL_hip" />
<child link="FL_thigh_rotor" />
</joint>
<link name="FL_calf">
<inertial>
<origin xyz="0.00548 -0.000975 -0.115" rpy="0 0 0" />
<mass value="0.154" />
<inertia ixx="0.00108" ixy="3.4E-07" ixz="1.72E-05" iyy="0.0011" iyz="8.28E-06" izz="3.29E-05" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="package://go2/meshes/calf.dae" />
</geometry>
<material name="黑色足端_005-effect"><color rgba="0 0 0 1" /></material><material name="深色橡胶_005-effect"><color rgba="0.6717055 0.6924257 0.7742702 1" /></material></visual>
<collision>
<origin rpy="0 -0.21 0" xyz="0.008 0 -0.06" />
<geometry>
<cylinder length="0.12" radius="0.012" />
</geometry>
</collision>
</link>
<joint name="FL_calf_joint" type="revolute">
<origin xyz="0 0 -0.213" rpy="0 0 0" />
<parent link="FL_thigh" />
<child link="FL_calf" />
<axis xyz="0 1 0" />
<limit lower="-2.7227" upper="-0.83776" effort="45.43" velocity="15.70" />
</joint>
<link name="FL_calflower">
<collision>
<origin rpy="0 0 0" xyz="0 0 0" />
<geometry>
<cylinder length="0.065" radius="0.011" />
</geometry>
</collision>
</link>
<joint name="FL_calflower_joint" type="fixed">
<origin xyz="0.020 0 -0.148" rpy="0 0.05 0" />
<parent link="FL_calf" />
<child link="FL_calflower" />
<axis xyz="0 0 0" />
</joint>
<link name="FL_calflower1">
<collision>
<origin rpy="0 0 0" xyz="0 0 0" />
<geometry>
<cylinder length="0.03" radius="0.0155" />
</geometry>
</collision>
</link>
<joint name="FL_calflower1_joint" type="fixed">
<origin xyz="-0.01 0 -0.04" rpy="0 0.48 0" />
<parent link="FL_calflower" />
<child link="FL_calflower1" />
<axis xyz="0 0 0" />
</joint>
<link name="FL_calf_rotor">
<inertial>
<origin rpy="0 0 0" xyz="0.0 0.0 0.0" />
<mass value="0.089" />
<inertia ixx="0.000059647" ixy="0.0" ixz="0.0" iyy="0.000111842" iyz="0.0" izz="0.000059647" />
</inertial>
</link>
<joint name="FL_calf_rotor_joint" type="fixed">
<origin rpy="0 0 0" xyz="0 -0.03235 0" />
<parent link="FL_thigh" />
<child link="FL_calf_rotor" />
</joint>
<link name="FL_foot">
<inertial>
<origin xyz="0 0 0" rpy="0 0 0" />
<mass value="0.04" />
<inertia ixx="9.6e-06" ixy="0" ixz="0" iyy="9.6e-06" iyz="0" izz="9.6e-06" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="package://go2/meshes/foot.dae" />
</geometry>
<material name="黑色足端_007-effect"><color rgba="0 0 0 1" /></material></visual>
<collision>
<origin rpy="0 0 0" xyz="-0.002 0 0" />
<geometry>
<sphere radius="0.022" />
</geometry>
</collision>
</link>
<joint name="FL_foot_joint" type="fixed" dont_collapse="true">
<origin xyz="0 0 -0.213" rpy="0 0 0" />
<parent link="FL_calf" />
<child link="FL_foot" />
<axis xyz="0 0 0" />
</joint>
<link name="FR_hip">
<inertial>
<origin xyz="-0.0054 -0.00194 -0.000105" rpy="0 0 0" />
<mass value="0.678" />
<inertia ixx="0.00048" ixy="3.01E-06" ixz="1.11E-06" iyy="0.000884" iyz="1.42E-06" izz="0.000596" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="3.1415 0 0" />
<geometry>
<mesh filename="package://go2/meshes/hip.dae" />
</geometry>
<material name="深色橡胶_001-effect"><color rgba="0.6717055 0.6924257 0.7742702 1" /></material><material name="Material-effect"><color rgba="0.9 0.95 0.95 1" /></material></visual>
<collision>
<origin rpy="1.5707963267948966 0 0" xyz="0 -0.08 0" />
<geometry>
<cylinder length="0.04" radius="0.046" />
</geometry>
</collision>
</link>
<joint name="FR_hip_joint" type="revolute">
<origin xyz="0.1934 -0.0465 0" rpy="0 0 0" />
<parent link="base" />
<child link="FR_hip" />
<axis xyz="1 0 0" />
<limit lower="-1.0472" upper="1.0472" effort="23.7" velocity="30.1" />
</joint>
<link name="FR_hip_rotor">
<inertial>
<origin rpy="0 0 0" xyz="0.0 0.0 0.0" />
<mass value="0.089" />
<inertia ixx="0.000111842" ixy="0.0" ixz="0.0" iyy="0.000059647" iyz="0.0" izz="0.000059647" />
</inertial>
</link>
<joint name="FR_hip_rotor_joint" type="fixed">
<origin rpy="0 0 0" xyz="0.11215 -0.04675 0" />
<parent link="base" />
<child link="FR_hip_rotor" />
</joint>
<link name="FR_thigh">
<inertial>
<origin xyz="-0.00374 0.0223 -0.0327" rpy="0 0 0" />
<mass value="1.152" />
<inertia ixx="0.00584" ixy="-8.72E-05" ixz="-0.000289" iyy="0.0058" iyz="-0.000808" izz="0.00103" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="package://go2/meshes/thigh_mirror.dae" />
</geometry>
<material name="深色橡胶_012-effect"><color rgba="0.6717055 0.6924257 0.7742702 1" /></material><material name="Material_011-effect"><color rgba="0.9 0.95 0.95 1" /></material></visual>
<collision>
<origin rpy="0 1.5707963267948966 0" xyz="0 0 -0.1065" />
<geometry>
<box size="0.213 0.0245 0.034" />
</geometry>
</collision>
</link>
<joint name="FR_thigh_joint" type="revolute">
<origin xyz="0 -0.0955 0" rpy="0 0 0" />
<parent link="FR_hip" />
<child link="FR_thigh" />
<axis xyz="0 1 0" />
<limit lower="-1.5708" upper="3.4907" effort="23.7" velocity="30.1" />
</joint>
<link name="FR_thigh_rotor">
<inertial>
<origin rpy="0 0 0" xyz="0.0 0.0 0.0" />
<mass value="0.089" />
<inertia ixx="0.000059647" ixy="0.0" ixz="0.0" iyy="0.000111842" iyz="0.0" izz="0.000059647" />
</inertial>
</link>
<joint name="FR_thigh_rotor_joint" type="fixed">
<origin rpy="0 0 0" xyz="0 0.00015 0" />
<parent link="FR_hip" />
<child link="FR_thigh_rotor" />
</joint>
<link name="FR_calf">
<inertial>
<origin xyz="0.00548 0.000975 -0.115" rpy="0 0 0" />
<mass value="0.154" />
<inertia ixx="0.00108" ixy="-3.4E-07" ixz="1.72E-05" iyy="0.0011" iyz="-8.28E-06" izz="3.29E-05" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="package://go2/meshes/calf_mirror.dae" />
</geometry>
<material name="黑色足端_006-effect"><color rgba="0 0 0 1" /></material><material name="深色橡胶_007-effect"><color rgba="0.6717055 0.6924257 0.7742702 1" /></material></visual>
<collision>
<origin rpy="0 -0.2 0" xyz="0.01 0 -0.06" />
<geometry>
<cylinder length="0.12" radius="0.013" />
</geometry>
</collision>
</link>
<joint name="FR_calf_joint" type="revolute">
<origin xyz="0 0 -0.213" rpy="0 0 0" />
<parent link="FR_thigh" />
<child link="FR_calf" />
<axis xyz="0 1 0" />
<limit lower="-2.7227" upper="-0.83776" effort="45.43" velocity="15.70" />
</joint>
<link name="FR_calflower">
<collision>
<origin rpy="0 0 0" xyz="0 0 0" />
<geometry>
<cylinder length="0.065" radius="0.011" />
</geometry>
</collision>
</link>
<joint name="FR_calflower_joint" type="fixed">
<origin xyz="0.020 0 -0.148" rpy="0 0.05 0" />
<parent link="FR_calf" />
<child link="FR_calflower" />
<axis xyz="0 0 0" />
</joint>
<link name="FR_calflower1">
<collision>
<origin rpy="0 0 0" xyz="0 0 0" />
<geometry>
<cylinder length="0.03" radius="0.0155" />
</geometry>
</collision>
</link>
<joint name="FR_calflower1_joint" type="fixed">
<origin xyz="-0.01 0 -0.04" rpy="0 0.48 0" />
<parent link="FR_calflower" />
<child link="FR_calflower1" />
<axis xyz="0 0 0" />
</joint>
<link name="FR_calf_rotor">
<inertial>
<origin rpy="0 0 0" xyz="0.0 0.0 0.0" />
<mass value="0.089" />
<inertia ixx="0.000059647" ixy="0.0" ixz="0.0" iyy="0.000111842" iyz="0.0" izz="0.000059647" />
</inertial>
</link>
<joint name="FR_calf_rotor_joint" type="fixed">
<origin rpy="0 0 0" xyz="0 0.03235 0" />
<parent link="FR_thigh" />
<child link="FR_calf_rotor" />
</joint>
<link name="FR_foot">
<inertial>
<origin xyz="0 0 0" rpy="0 0 0" />
<mass value="0.04" />
<inertia ixx="9.6e-06" ixy="0" ixz="0" iyy="9.6e-06" iyz="0" izz="9.6e-06" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="package://go2/meshes/foot.dae" />
</geometry>
<material name="黑色足端_007-effect"><color rgba="0 0 0 1" /></material></visual>
<collision>
<origin rpy="0 0 0" xyz="-0.002 0 0" />
<geometry>
<sphere radius="0.022" />
</geometry>
</collision>
</link>
<joint name="FR_foot_joint" type="fixed" dont_collapse="true">
<origin xyz="0 0 -0.213" rpy="0 0 0" />
<parent link="FR_calf" />
<child link="FR_foot" />
<axis xyz="0 0 0" />
</joint>
<link name="RL_hip">
<inertial>
<origin xyz="0.0054 0.00194 -0.000105" rpy="0 0 0" />
<mass value="0.678" />
<inertia ixx="0.00048" ixy="3.01E-06" ixz="-1.11E-06" iyy="0.000884" iyz="-1.42E-06" izz="0.000596" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 3.1415 0" />
<geometry>
<mesh filename="package://go2/meshes/hip.dae" />
</geometry>
<material name="深色橡胶_001-effect"><color rgba="0.6717055 0.6924257 0.7742702 1" /></material><material name="Material-effect"><color rgba="0.9 0.95 0.95 1" /></material></visual>
<collision>
<origin rpy="1.5707963267948966 0 0" xyz="0 0.08 0" />
<geometry>
<cylinder length="0.04" radius="0.046" />
</geometry>
</collision>
</link>
<joint name="RL_hip_joint" type="revolute">
<origin xyz="-0.1934 0.0465 0" rpy="0 0 0" />
<parent link="base" />
<child link="RL_hip" />
<axis xyz="1 0 0" />
<limit lower="-1.0472" upper="1.0472" effort="23.7" velocity="30.1" />
</joint>
<link name="RL_hip_rotor">
<inertial>
<origin rpy="0 0 0" xyz="0.0 0.0 0.0" />
<mass value="0.089" />
<inertia ixx="0.000111842" ixy="0.0" ixz="0.0" iyy="0.000059647" iyz="0.0" izz="0.000059647" />
</inertial>
</link>
<joint name="RL_hip_rotor_joint" type="fixed">
<origin rpy="0 0 0" xyz="-0.11215 0.04675 0" />
<parent link="base" />
<child link="RL_hip_rotor" />
</joint>
<link name="RL_thigh">
<inertial>
<origin xyz="-0.00374 -0.0223 -0.0327" rpy="0 0 0" />
<mass value="1.152" />
<inertia ixx="0.00584" ixy="8.72E-05" ixz="-0.000289" iyy="0.0058" iyz="0.000808" izz="0.00103" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="package://go2/meshes/thigh.dae" />
</geometry>
<material name="深色橡胶_003-effect"><color rgba="0.6717055 0.6924257 0.7742702 1" /></material><material name="Material_009-effect"><color rgba="0.9 0.95 0.95 1" /></material></visual>
<collision>
<origin rpy="0 1.5707963267948966 0" xyz="0 0 -0.1065" />
<geometry>
<box size="0.213 0.0245 0.034" />
</geometry>
</collision>
</link>
<joint name="RL_thigh_joint" type="revolute">
<origin xyz="0 0.0955 0" rpy="0 0 0" />
<parent link="RL_hip" />
<child link="RL_thigh" />
<axis xyz="0 1 0" />
<limit lower="-0.5236" upper="4.5379" effort="23.7" velocity="30.1" />
</joint>
<link name="RL_thigh_rotor">
<inertial>
<origin rpy="0 0 0" xyz="0.0 0.0 0.0" />
<mass value="0.089" />
<inertia ixx="0.000059647" ixy="0.0" ixz="0.0" iyy="0.000111842" iyz="0.0" izz="0.000059647" />
</inertial>
</link>
<joint name="RL_thigh_rotor_joint" type="fixed">
<origin rpy="0 0 0" xyz="0 -0.00015 0" />
<parent link="RL_hip" />
<child link="RL_thigh_rotor" />
</joint>
<link name="RL_calf">
<inertial>
<origin xyz="0.00548 -0.000975 -0.115" rpy="0 0 0" />
<mass value="0.154" />
<inertia ixx="0.00108" ixy="3.4E-07" ixz="1.72E-05" iyy="0.0011" iyz="8.28E-06" izz="3.29E-05" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="package://go2/meshes/calf.dae" />
</geometry>
<material name="黑色足端_005-effect"><color rgba="0 0 0 1" /></material><material name="深色橡胶_005-effect"><color rgba="0.6717055 0.6924257 0.7742702 1" /></material></visual>
<collision>
<origin rpy="0 -0.2 0" xyz="0.01 0 -0.06" />
<geometry>
<cylinder length="0.12" radius="0.013" />
</geometry>
</collision>
</link>
<joint name="RL_calf_joint" type="revolute">
<origin xyz="0 0 -0.213" rpy="0 0 0" />
<parent link="RL_thigh" />
<child link="RL_calf" />
<axis xyz="0 1 0" />
<limit lower="-2.7227" upper="-0.83776" effort="45.43" velocity="15.70" />
</joint>
<link name="RL_calflower">
<collision>
<origin rpy="0 0 0" xyz="0 0 0" />
<geometry>
<cylinder length="0.065" radius="0.011" />
</geometry>
</collision>
</link>
<joint name="RL_calflower_joint" type="fixed">
<origin xyz="0.020 0 -0.148" rpy="0 0.05 0" />
<parent link="RL_calf" />
<child link="RL_calflower" />
<axis xyz="0 0 0" />
</joint>
<link name="RL_calflower1">
<collision>
<origin rpy="0 0 0" xyz="0 0 0" />
<geometry>
<cylinder length="0.03" radius="0.0155" />
</geometry>
</collision>
</link>
<joint name="RL_calflower1_joint" type="fixed">
<origin xyz="-0.01 0 -0.04" rpy="0 0.48 0" />
<parent link="RL_calflower" />
<child link="RL_calflower1" />
<axis xyz="0 0 0" />
</joint>
<link name="RL_calf_rotor">
<inertial>
<origin rpy="0 0 0" xyz="0.0 0.0 0.0" />
<mass value="0.089" />
<inertia ixx="0.000059647" ixy="0.0" ixz="0.0" iyy="0.000111842" iyz="0.0" izz="0.000059647" />
</inertial>
</link>
<joint name="RL_calf_rotor_joint" type="fixed">
<origin rpy="0 0 0" xyz="0 -0.03235 0" />
<parent link="RL_thigh" />
<child link="RL_calf_rotor" />
</joint>
<link name="RL_foot">
<inertial>
<origin xyz="0 0 0" rpy="0 0 0" />
<mass value="0.04" />
<inertia ixx="9.6e-06" ixy="0" ixz="0" iyy="9.6e-06" iyz="0" izz="9.6e-06" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="package://go2/meshes/foot.dae" />
</geometry>
<material name="黑色足端_007-effect"><color rgba="0 0 0 1" /></material></visual>
<collision>
<origin rpy="0 0 0" xyz="-0.002 0 0" />
<geometry>
<sphere radius="0.022" />
</geometry>
</collision>
</link>
<joint name="RL_foot_joint" type="fixed" dont_collapse="true">
<origin xyz="0 0 -0.213" rpy="0 0 0" />
<parent link="RL_calf" />
<child link="RL_foot" />
<axis xyz="0 0 0" />
</joint>
<link name="RR_hip">
<inertial>
<origin xyz="0.0054 -0.00194 -0.000105" rpy="0 0 0" />
<mass value="0.678" />
<inertia ixx="0.00048" ixy="-3.01E-06" ixz="-1.11E-06" iyy="0.000884" iyz="1.42E-06" izz="0.000596" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="3.1415 3.1415 0" />
<geometry>
<mesh filename="package://go2/meshes/hip.dae" />
</geometry>
<material name="深色橡胶_001-effect"><color rgba="0.6717055 0.6924257 0.7742702 1" /></material><material name="Material-effect"><color rgba="0.9 0.95 0.95 1" /></material></visual>
<collision>
<origin rpy="1.5707963267948966 0 0" xyz="0 -0.08 0" />
<geometry>
<cylinder length="0.04" radius="0.046" />
</geometry>
</collision>
</link>
<joint name="RR_hip_joint" type="revolute">
<origin xyz="-0.1934 -0.0465 0" rpy="0 0 0" />
<parent link="base" />
<child link="RR_hip" />
<axis xyz="1 0 0" />
<limit lower="-1.0472" upper="1.0472" effort="23.7" velocity="30.1" />
</joint>
<link name="RR_hip_rotor">
<inertial>
<origin rpy="0 0 0" xyz="0.0 0.0 0.0" />
<mass value="0.089" />
<inertia ixx="0.000111842" ixy="0.0" ixz="0.0" iyy="0.000059647" iyz="0.0" izz="0.000059647" />
</inertial>
</link>
<joint name="RR_hip_rotor_joint" type="fixed">
<origin rpy="0 0 0" xyz="-0.11215 -0.04675 0" />
<parent link="base" />
<child link="RR_hip_rotor" />
</joint>
<link name="RR_thigh">
<inertial>
<origin xyz="-0.00374 0.0223 -0.0327" rpy="0 0 0" />
<mass value="1.152" />
<inertia ixx="0.00584" ixy="-8.72E-05" ixz="-0.000289" iyy="0.0058" iyz="-0.000808" izz="0.00103" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="package://go2/meshes/thigh_mirror.dae" />
</geometry>
<material name="深色橡胶_012-effect"><color rgba="0.6717055 0.6924257 0.7742702 1" /></material><material name="Material_011-effect"><color rgba="0.9 0.95 0.95 1" /></material></visual>
<collision>
<origin rpy="0 1.5707963267948966 0" xyz="0 0 -0.1065" />
<geometry>
<box size="0.213 0.0245 0.034" />
</geometry>
</collision>
</link>
<joint name="RR_thigh_joint" type="revolute">
<origin xyz="0 -0.0955 0" rpy="0 0 0" />
<parent link="RR_hip" />
<child link="RR_thigh" />
<axis xyz="0 1 0" />
<limit lower="-0.5236" upper="4.5379" effort="23.7" velocity="30.1" />
</joint>
<link name="RR_thigh_rotor">
<inertial>
<origin rpy="0 0 0" xyz="0.0 0.0 0.0" />
<mass value="0.089" />
<inertia ixx="0.000059647" ixy="0.0" ixz="0.0" iyy="0.000111842" iyz="0.0" izz="0.000059647" />
</inertial>
</link>
<joint name="RR_thigh_rotor_joint" type="fixed">
<origin rpy="0 0 0" xyz="0 0.00015 0" />
<parent link="RR_hip" />
<child link="RR_thigh_rotor" />
</joint>
<link name="RR_calf">
<inertial>
<origin xyz="0.00548 0.000975 -0.115" rpy="0 0 0" />
<mass value="0.154" />
<inertia ixx="0.00108" ixy="-3.4E-07" ixz="1.72E-05" iyy="0.0011" iyz="-8.28E-06" izz="3.29E-05" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="package://go2/meshes/calf_mirror.dae" />
</geometry>
<material name="黑色足端_006-effect"><color rgba="0 0 0 1" /></material><material name="深色橡胶_007-effect"><color rgba="0.6717055 0.6924257 0.7742702 1" /></material></visual>
<collision>
<origin rpy="0 -0.2 0" xyz="0.01 0 -0.06" />
<geometry>
<cylinder length="0.12" radius="0.013" />
</geometry>
</collision>
</link>
<joint name="RR_calf_joint" type="revolute">
<origin xyz="0 0 -0.213" rpy="0 0 0" />
<parent link="RR_thigh" />
<child link="RR_calf" />
<axis xyz="0 1 0" />
<limit lower="-2.7227" upper="-0.83776" effort="45.43" velocity="15.70" />
</joint>
<link name="RR_calflower">
<collision>
<origin rpy="0 0 0" xyz="0 0 0" />
<geometry>
<cylinder length="0.065" radius="0.011" />
</geometry>
</collision>
</link>
<joint name="RR_calflower_joint" type="fixed">
<origin xyz="0.020 0 -0.148" rpy="0 0.05 0" />
<parent link="RR_calf" />
<child link="RR_calflower" />
<axis xyz="0 0 0" />
</joint>
<link name="RR_calflower1">
<collision>
<origin rpy="0 0 0" xyz="0 0 0" />
<geometry>
<cylinder length="0.03" radius="0.0155" />
</geometry>
</collision>
</link>
<joint name="RR_calflower1_joint" type="fixed">
<origin xyz="-0.01 0 -0.04" rpy="0 0.48 0" />
<parent link="RR_calflower" />
<child link="RR_calflower1" />
<axis xyz="0 0 0" />
</joint>
<link name="RR_calf_rotor">
<inertial>
<origin rpy="0 0 0" xyz="0.0 0.0 0.0" />
<mass value="0.089" />
<inertia ixx="0.000059647" ixy="0.0" ixz="0.0" iyy="0.000111842" iyz="0.0" izz="0.000059647" />
</inertial>
</link>
<joint name="RR_calf_rotor_joint" type="fixed">
<origin rpy="0 0 0" xyz="0 0.03235 0" />
<parent link="RR_thigh" />
<child link="RR_calf_rotor" />
</joint>
<link name="RR_foot">
<inertial>
<origin xyz="0 0 0" rpy="0 0 0" />
<mass value="0.04" />
<inertia ixx="9.6e-06" ixy="0" ixz="0" iyy="9.6e-06" iyz="0" izz="9.6e-06" />
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0" />
<geometry>
<mesh filename="package://go2/meshes/foot.dae" />
</geometry>
<material name="黑色足端_007-effect"><color rgba="0 0 0 1" /></material></visual>
<collision>
<origin rpy="0 0 0" xyz="-0.002 0 0" />
<geometry>
<sphere radius="0.022" />
</geometry>
</collision>
</link>
<joint name="RR_foot_joint" type="fixed" dont_collapse="true">
<origin xyz="0 0 -0.213" rpy="0 0 0" />
<parent link="RR_calf" />
<child link="RR_foot" />
<axis xyz="0 0 0" />
</joint>
<link name="imu">
<inertial>
<origin xyz="0 0 0" rpy="0 0 0" />
<mass value="0" />
<inertia ixx="0" ixy="0" ixz="0" iyy="0" iyz="0" izz="0" />
</inertial>
</link>
<joint name="imu_joint" type="fixed">
<origin xyz="-0.02557 0 0.04232" rpy="0 0 0" />
<parent link="base" />
<child link="imu" />
<axis xyz="0 0 0" />
</joint>
<link name="radar">
<inertial>
<origin xyz="0 0 0" rpy="0 0 0" />
<mass value="0" />
<inertia ixx="0" ixy="0" ixz="0" iyy="0" iyz="0" izz="0" />
</inertial>
</link>
<joint name="radar_joint" type="fixed">
<origin xyz="0.28945 0 -0.046825" rpy="0 2.8782 0" />
<parent link="base" />
<child link="radar" />
<axis xyz="0 0 0" />
</joint>
<joint name="front_camera_joint" type="fixed">
<origin rpy="0 0 0" xyz="0.32715 -0.00003 0.04297" />
<parent link="base" />
<child link="front_camera" />
</joint>
<link name="front_camera">
</link>
</robot>

View File

@@ -19,7 +19,7 @@ import toml
ISAACLAB_ASSETS_EXT_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), "../../"))
"""Path to the extension source directory."""
ISAACLAB_ASSETS_DATA_DIR = os.path.join(ISAACLAB_ASSETS_EXT_DIR, "data")
ISAACLAB_ASSETS_DATA_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), "../../../../resources"))
"""Path to the extension data directory."""
ISAACLAB_ASSETS_METADATA = toml.load(os.path.join(ISAACLAB_ASSETS_EXT_DIR, "config", "extension.toml"))

View File

@@ -20,7 +20,7 @@ UNITREE_GO2_CFG = ArticulationCfg(
fix_base=False,
merge_fixed_joints=True,
replace_cylinders_with_capsules=True,
asset_path=f"{ISAACLAB_ASSETS_DATA_DIR}/Robots/unitree/go2_description/urdf/go2_description.urdf",
asset_path=f"{ISAACLAB_ASSETS_DATA_DIR}/go2/urdf/go2.urdf",
activate_contact_sensors=True,
rigid_props=sim_utils.RigidBodyPropertiesCfg(
disable_gravity=False,