support MuJoCo sim2sim;
refactor resource files structure; update readme;
This commit is contained in:
47
README.md
47
README.md
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
## Overview
|
## 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.
|
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
|
### 1. Install IsaacLab
|
||||||
Install Isaac Lab by following the [installation guide](https://isaac-sim.github.io/IsaacLab/main/source/setup/installation/index.html).
|
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
|
isaacsim <= 5.1.0.0 # tested on 5.1.0.0
|
||||||
isaaclab <= 0.53.1 # tested on 0.53.1
|
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
|
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:
|
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).
|
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`
|
## Differences with `go2_rl_gym`
|
||||||
|
|
||||||
- Terrain's composition are different(see code).
|
- 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.
|
- [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.
|
- [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.
|
- [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:
|
Related publications implemented in this repo:
|
||||||
- [CTS: Concurrent Teacher-Student Reinforcement Learning for Legged Locomotion](https://arxiv.org/pdf/2405.10830)
|
- [CTS: Concurrent Teacher-Student Reinforcement Learning for Legged Locomotion](https://arxiv.org/pdf/2405.10830)
|
||||||
|
|||||||
65
deploy/deploy_mujoco/config/go2.yaml
Normal file
65
deploy/deploy_mujoco/config/go2.yaml
Normal 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",
|
||||||
|
]
|
||||||
379
deploy/deploy_mujoco/deploy_go2.py
Normal file
379
deploy/deploy_mujoco/deploy_go2.py
Normal 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()
|
||||||
36346
resources/go2/assets/base_0.obj
Normal file
36346
resources/go2/assets/base_0.obj
Normal file
File diff suppressed because it is too large
Load Diff
23131
resources/go2/assets/base_1.obj
Normal file
23131
resources/go2/assets/base_1.obj
Normal file
File diff suppressed because it is too large
Load Diff
8367
resources/go2/assets/base_2.obj
Normal file
8367
resources/go2/assets/base_2.obj
Normal file
File diff suppressed because it is too large
Load Diff
10932
resources/go2/assets/base_3.obj
Normal file
10932
resources/go2/assets/base_3.obj
Normal file
File diff suppressed because it is too large
Load Diff
199205
resources/go2/assets/base_4.obj
Normal file
199205
resources/go2/assets/base_4.obj
Normal file
File diff suppressed because it is too large
Load Diff
24148
resources/go2/assets/calf_0.obj
Normal file
24148
resources/go2/assets/calf_0.obj
Normal file
File diff suppressed because it is too large
Load Diff
9243
resources/go2/assets/calf_1.obj
Normal file
9243
resources/go2/assets/calf_1.obj
Normal file
File diff suppressed because it is too large
Load Diff
24145
resources/go2/assets/calf_mirror_0.obj
Normal file
24145
resources/go2/assets/calf_mirror_0.obj
Normal file
File diff suppressed because it is too large
Load Diff
9252
resources/go2/assets/calf_mirror_1.obj
Normal file
9252
resources/go2/assets/calf_mirror_1.obj
Normal file
File diff suppressed because it is too large
Load Diff
30786
resources/go2/assets/foot.obj
Normal file
30786
resources/go2/assets/foot.obj
Normal file
File diff suppressed because it is too large
Load Diff
BIN
resources/go2/assets/height_field.png
Normal file
BIN
resources/go2/assets/height_field.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.2 KiB |
76960
resources/go2/assets/hip_0.obj
Normal file
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
73961
resources/go2/assets/hip_1.obj
Normal file
File diff suppressed because it is too large
Load Diff
75706
resources/go2/assets/thigh_0.obj
Normal file
75706
resources/go2/assets/thigh_0.obj
Normal file
File diff suppressed because it is too large
Load Diff
40483
resources/go2/assets/thigh_1.obj
Normal file
40483
resources/go2/assets/thigh_1.obj
Normal file
File diff suppressed because it is too large
Load Diff
75572
resources/go2/assets/thigh_mirror_0.obj
Normal file
75572
resources/go2/assets/thigh_mirror_0.obj
Normal file
File diff suppressed because it is too large
Load Diff
40450
resources/go2/assets/thigh_mirror_1.obj
Normal file
40450
resources/go2/assets/thigh_mirror_1.obj
Normal file
File diff suppressed because it is too large
Load Diff
BIN
resources/go2/assets/wood.png
Normal file
BIN
resources/go2/assets/wood.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 919 KiB |
696
resources/go2/boxes.xml
Normal file
696
resources/go2/boxes.xml
Normal 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
22
resources/go2/flat.xml
Normal 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
183
resources/go2/go2.xml
Normal 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>
|
||||||
217
resources/go2/meshes/base.dae
Normal file
217
resources/go2/meshes/base.dae
Normal file
File diff suppressed because one or more lines are too long
130
resources/go2/meshes/calf.dae
Normal file
130
resources/go2/meshes/calf.dae
Normal file
File diff suppressed because one or more lines are too long
130
resources/go2/meshes/calf_mirror.dae
Normal file
130
resources/go2/meshes/calf_mirror.dae
Normal file
File diff suppressed because one or more lines are too long
89
resources/go2/meshes/foot.dae
Normal file
89
resources/go2/meshes/foot.dae
Normal file
File diff suppressed because one or more lines are too long
130
resources/go2/meshes/hip.dae
Normal file
130
resources/go2/meshes/hip.dae
Normal file
File diff suppressed because one or more lines are too long
130
resources/go2/meshes/thigh.dae
Normal file
130
resources/go2/meshes/thigh.dae
Normal file
File diff suppressed because one or more lines are too long
130
resources/go2/meshes/thigh_mirror.dae
Normal file
130
resources/go2/meshes/thigh_mirror.dae
Normal file
File diff suppressed because one or more lines are too long
28
resources/go2/stairs.xml
Normal file
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
761
resources/go2/urdf/go2.urdf
Normal 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>
|
||||||
@@ -19,7 +19,7 @@ import toml
|
|||||||
ISAACLAB_ASSETS_EXT_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), "../../"))
|
ISAACLAB_ASSETS_EXT_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), "../../"))
|
||||||
"""Path to the extension source directory."""
|
"""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."""
|
"""Path to the extension data directory."""
|
||||||
|
|
||||||
ISAACLAB_ASSETS_METADATA = toml.load(os.path.join(ISAACLAB_ASSETS_EXT_DIR, "config", "extension.toml"))
|
ISAACLAB_ASSETS_METADATA = toml.load(os.path.join(ISAACLAB_ASSETS_EXT_DIR, "config", "extension.toml"))
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ UNITREE_GO2_CFG = ArticulationCfg(
|
|||||||
fix_base=False,
|
fix_base=False,
|
||||||
merge_fixed_joints=True,
|
merge_fixed_joints=True,
|
||||||
replace_cylinders_with_capsules=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,
|
activate_contact_sensors=True,
|
||||||
rigid_props=sim_utils.RigidBodyPropertiesCfg(
|
rigid_props=sim_utils.RigidBodyPropertiesCfg(
|
||||||
disable_gravity=False,
|
disable_gravity=False,
|
||||||
|
|||||||
Reference in New Issue
Block a user