moe-cts-部署
This commit is contained in:
668
deploy_45dim_rl_gym/README.md
Normal file
668
deploy_45dim_rl_gym/README.md
Normal file
@@ -0,0 +1,668 @@
|
|||||||
|
# Go1 RL-Gym 45 维部署说明
|
||||||
|
|
||||||
|
本目录包含:
|
||||||
|
|
||||||
|
- `policy_15k.onnx`:RoboGauge Go1 RL-Gym 的 ONNX 策略
|
||||||
|
- `deploy_go1_onnx_mujoco.py`:MuJoCo 调试脚本
|
||||||
|
- `deploy_go1_rlgym_pro_sdk.py`:真机 Go1 PRO 低层部署脚本
|
||||||
|
|
||||||
|
该 ONNX 策略使用 45 维单帧观测,以及 5 帧、共 225 维的历史输入,按观测项分组堆叠:
|
||||||
|
|
||||||
|
```text
|
||||||
|
[角速度历史, 重力投影历史, 指令历史, 关节位置历史, 关节速度历史, 上一动作历史]
|
||||||
|
```
|
||||||
|
|
||||||
|
关节顺序为 `FR, FL, RR, RL`,与 `go1_pro_sdk` 的电机顺序一致。
|
||||||
|
|
||||||
|
## 安全说明
|
||||||
|
|
||||||
|
直接低层控电机是危险操作。
|
||||||
|
|
||||||
|
- 第一次测试必须悬空
|
||||||
|
- 低层控制前先杀掉 sport 进程
|
||||||
|
- sport 被杀后,要保留拔电池作为最终停机手段
|
||||||
|
- 真机状态机中,`L2` 会返回 `IDLE` 阻尼
|
||||||
|
- `Ctrl+C` 会通过 `safe_stop()` 退出
|
||||||
|
- 只有显式加 `--enable-rl` 才允许真正进入 RL 发电机目标
|
||||||
|
- 脚本启动连接 MCU 前会自动检查 SDK 电机顺序是否为 `FR, FL, RR, RL`
|
||||||
|
- 遥控器速度指令默认只保留 deadzone,不再做低通和变化率限制;日志中仍会同时保存原始 `commands_raw` 和实际输入策略的 `commands`
|
||||||
|
- RL 刚进入时会先 warmup,只预热观测历史和动作历史;warmup 期间仍保持默认站姿,结束后再按 `max_target_step` 从默认站姿逐步进入 RL 目标
|
||||||
|
|
||||||
|
## 环境准备
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /Users/chenyouyuan/cyy_ws/deploy_go1_pro
|
||||||
|
conda activate free_dog_sdk
|
||||||
|
```
|
||||||
|
|
||||||
|
杀掉机器人上的 sport 进程:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ssh pi@192.168.123.161 "sudo pkill -9 -f keep_sport_alive; sudo pkill -9 -f Legged_sport; sudo pkill -9 -f appTransit"
|
||||||
|
```
|
||||||
|
|
||||||
|
或者在部署脚本里直接加 `--kill-sport`。
|
||||||
|
|
||||||
|
脚本执行 `--kill-sport` 时,会打印并执行等价的 SSH 命令。如果不加
|
||||||
|
`--kill-sport`,请务必手动执行上面的命令。
|
||||||
|
|
||||||
|
## 启动前电机顺序检查
|
||||||
|
|
||||||
|
真机脚本启动连接 MCU 前会自动检查:
|
||||||
|
|
||||||
|
```text
|
||||||
|
SDK 顺序必须是:
|
||||||
|
FR_0 FR_1 FR_2
|
||||||
|
FL_0 FL_1 FL_2
|
||||||
|
RR_0 RR_1 RR_2
|
||||||
|
RL_0 RL_1 RL_2
|
||||||
|
|
||||||
|
策略顺序对应:
|
||||||
|
FR_hip FR_thigh FR_calf
|
||||||
|
FL_hip FL_thigh FL_calf
|
||||||
|
RR_hip RR_thigh RR_calf
|
||||||
|
RL_hip RL_thigh RL_calf
|
||||||
|
```
|
||||||
|
|
||||||
|
如果 SDK 顺序不一致,脚本会直接报错并停止,不会继续连接机器人。
|
||||||
|
|
||||||
|
检查通过时会打印类似:
|
||||||
|
|
||||||
|
```text
|
||||||
|
[INFO] Joint order check passed: SDK and policy both use FR, FL, RR, RL.
|
||||||
|
[00] FR_0 -> FR_hip default=-0.100
|
||||||
|
[01] FR_1 -> FR_thigh default=+0.800
|
||||||
|
[02] FR_2 -> FR_calf default=-1.500
|
||||||
|
...
|
||||||
|
[11] RL_2 -> RL_calf default=-1.500
|
||||||
|
```
|
||||||
|
|
||||||
|
连接成功后,脚本还会逐项打印当前电机角度和默认角度:
|
||||||
|
|
||||||
|
```text
|
||||||
|
[INFO] Initial joint positions (rad):
|
||||||
|
[00] FR_0: q=..., default=-0.100
|
||||||
|
...
|
||||||
|
[11] RL_2: q=..., default=-1.500
|
||||||
|
```
|
||||||
|
|
||||||
|
## 第 1 步:只取数据
|
||||||
|
|
||||||
|
只读 LowState、IMU、关节和遥控器数据,不发任何电机命令。
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mjpython deploy_45dim_rl_gym/deploy_go1_rlgym_pro_sdk.py \
|
||||||
|
--monitor \
|
||||||
|
--kill-sport \
|
||||||
|
--log-dir logs
|
||||||
|
```
|
||||||
|
|
||||||
|
检查:
|
||||||
|
|
||||||
|
- 电量正常
|
||||||
|
- 机器人姿态变化时,RPY 会跟着变化
|
||||||
|
- 12 个关节位置不是全 0
|
||||||
|
- 遥控器按键和摇杆变化能正常打印
|
||||||
|
|
||||||
|
## 第 2 步:测试遥控器
|
||||||
|
|
||||||
|
继续用 `--monitor`,依次测试:
|
||||||
|
|
||||||
|
- 按 `R2`
|
||||||
|
- 按 `L2`
|
||||||
|
- 左摇杆前后、左右
|
||||||
|
- 右摇杆左右
|
||||||
|
|
||||||
|
期望结果:
|
||||||
|
|
||||||
|
- `pressed`、`rising`、`falling` 会正确变化
|
||||||
|
- `lx`、`ly`、`rx` 会正确变化
|
||||||
|
- 不会有任何电机动作
|
||||||
|
|
||||||
|
## 第 3 步:测试观测构建
|
||||||
|
|
||||||
|
只构建 45 维观测和 225 维 ONNX 历史输入,不做 RL 控制。
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mjpython deploy_45dim_rl_gym/deploy_go1_rlgym_pro_sdk.py \
|
||||||
|
--obs-check \
|
||||||
|
--kill-sport \
|
||||||
|
--log-dir logs
|
||||||
|
```
|
||||||
|
|
||||||
|
检查:
|
||||||
|
|
||||||
|
- 站立时重力投影接近 `[0, 0, -1]`
|
||||||
|
- 指令观测会随遥控器变化
|
||||||
|
- `q-qd max` 在合理范围内
|
||||||
|
- ONNX 输入形状是 `(1, 225)`
|
||||||
|
|
||||||
|
## 第 4 步:只测试 ONNX 推理
|
||||||
|
|
||||||
|
只跑 ONNX 推理,不发 RL 电机目标。
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mjpython deploy_45dim_rl_gym/deploy_go1_rlgym_pro_sdk.py \
|
||||||
|
--infer-check \
|
||||||
|
--kill-sport \
|
||||||
|
--log-dir logs
|
||||||
|
```
|
||||||
|
|
||||||
|
检查:
|
||||||
|
|
||||||
|
- `action_raw max` 不会突然爆大
|
||||||
|
- 零指令时动作应比较稳定
|
||||||
|
- 长时间给 yaw 指令时,动作不应持续发散
|
||||||
|
|
||||||
|
## 第 5 步:测试状态机和退出
|
||||||
|
|
||||||
|
不加 `--enable-rl`,这样只会走校准、保持、观测和推理层,不会真正进入 RL 电机控制。
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mjpython deploy_45dim_rl_gym/deploy_go1_rlgym_pro_sdk.py \
|
||||||
|
--kill-sport \
|
||||||
|
--log-dir logs
|
||||||
|
```
|
||||||
|
|
||||||
|
### 遥控器操作步骤
|
||||||
|
|
||||||
|
先把机器人悬空,四条腿下方不要站人,手指始终放在 `L2` 上。每按一次 `R2` 后都要等终端打印出对应状态,并观察 5 到 10 秒再按下一次。
|
||||||
|
|
||||||
|
```text
|
||||||
|
启动后:
|
||||||
|
状态应为 IDLE
|
||||||
|
电机处于阻尼/空闲,不应主动站立
|
||||||
|
|
||||||
|
第 1 次按 R2:
|
||||||
|
IDLE -> CALIBRATE -> HOLD
|
||||||
|
机器人会缓慢回到默认站姿
|
||||||
|
等终端打印 [STATE] HOLD
|
||||||
|
|
||||||
|
第 2 次按 R2:
|
||||||
|
HOLD -> OBS_TEST
|
||||||
|
电机仍保持默认站姿
|
||||||
|
只构建观测,不使用 ONNX 动作控制电机
|
||||||
|
|
||||||
|
第 3 次按 R2:
|
||||||
|
OBS_TEST -> INFER_TEST
|
||||||
|
电机仍保持默认站姿
|
||||||
|
只运行 ONNX 推理,动作只写日志,不控制电机
|
||||||
|
|
||||||
|
第 4 次按 R2:
|
||||||
|
未加 --enable-rl 时会被守卫拦住
|
||||||
|
终端应打印 RL blocked
|
||||||
|
|
||||||
|
任意激活状态按 L2:
|
||||||
|
立即回到 IDLE 阻尼
|
||||||
|
|
||||||
|
Ctrl+C:
|
||||||
|
调用 safe_stop() 并退出脚本
|
||||||
|
```
|
||||||
|
|
||||||
|
必须确认:
|
||||||
|
|
||||||
|
```text
|
||||||
|
R2 每次只前进一层
|
||||||
|
L2 在 HOLD / OBS_TEST / INFER_TEST 都能回到 IDLE
|
||||||
|
松开 R2/L2 后,日志里 rising/falling 不应连续乱跳
|
||||||
|
摇杆不动时,lx/ly/rx/ry 应接近 0
|
||||||
|
```
|
||||||
|
|
||||||
|
检查:
|
||||||
|
|
||||||
|
- 校准会缓慢回到默认站姿
|
||||||
|
- `HOLD` 会保持默认站姿
|
||||||
|
- `L2` 能回到 `IDLE`
|
||||||
|
- `Ctrl+C` 会正常打印 `Safe stopping...` 并退出
|
||||||
|
|
||||||
|
## 第 6 步:悬空 RL 测试
|
||||||
|
|
||||||
|
只有前 1 到 5 步都稳定后,才加 `--enable-rl` 进行悬空 RL。第一轮必须先隔离遥控器摇杆输入,用 `--no-rc` 固定零指令,只用遥控器按键切状态:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mjpython deploy_45dim_rl_gym/deploy_go1_rlgym_pro_sdk.py \
|
||||||
|
--kill-sport \
|
||||||
|
--enable-rl \
|
||||||
|
--no-rc \
|
||||||
|
--cmd-x 0 --cmd-y 0 --cmd-yaw 0 \
|
||||||
|
--log-dir logs \
|
||||||
|
--kp 60 --kd 1.0 \
|
||||||
|
--kp-cal 20 --kd-cal 1.0 \
|
||||||
|
--power-factor 6 \
|
||||||
|
--position-protect-limit 0.8 \
|
||||||
|
--action-clip 2.5 \
|
||||||
|
--action-trip-limit 8.0 \
|
||||||
|
--max-target-step 0.04 \
|
||||||
|
--max-roll-deg 25 \
|
||||||
|
--max-pitch-deg 25
|
||||||
|
```
|
||||||
|
|
||||||
|
### RL 遥控器操作步骤
|
||||||
|
|
||||||
|
第一轮带 `--no-rc`,摇杆不会进入策略,只用 `R2` 和 `L2` 切状态。每一步都等终端状态确认后再继续。
|
||||||
|
|
||||||
|
```text
|
||||||
|
启动后:
|
||||||
|
状态应为 IDLE
|
||||||
|
|
||||||
|
第 1 次按 R2:
|
||||||
|
IDLE -> CALIBRATE -> HOLD
|
||||||
|
等站姿稳定
|
||||||
|
|
||||||
|
第 2 次按 R2:
|
||||||
|
HOLD -> OBS_TEST
|
||||||
|
等 5 到 10 秒,确认 RPY、q 和 dq 稳定
|
||||||
|
|
||||||
|
第 3 次按 R2:
|
||||||
|
OBS_TEST -> INFER_TEST
|
||||||
|
等 5 到 10 秒,确认 action_raw_max 不突然变大
|
||||||
|
|
||||||
|
第 4 次按 R2:
|
||||||
|
INFER_TEST -> RL
|
||||||
|
先只观察 10 到 20 秒,不推摇杆
|
||||||
|
|
||||||
|
RL 中再按 R2:
|
||||||
|
RL -> HOLD
|
||||||
|
用来从 RL 平稳退回保持站姿
|
||||||
|
|
||||||
|
任意异常立即按 L2:
|
||||||
|
回到 IDLE 阻尼
|
||||||
|
|
||||||
|
需要退出脚本:
|
||||||
|
先按 L2 回 IDLE
|
||||||
|
再 Ctrl+C
|
||||||
|
```
|
||||||
|
|
||||||
|
悬空 RL 时:
|
||||||
|
|
||||||
|
- 先用 `--no-rc` 保持零指令
|
||||||
|
- 零指令稳定后,再取消 `--no-rc` 并用很小的摇杆比例
|
||||||
|
- 观察 `action_raw_max`、`action_safe_max`、RPY 和关节目标
|
||||||
|
- 刚进入 RL 的前 `warmup_steps` 帧不会真正发送 RL 目标,之后目标应按 `max_target_step` 平滑变化
|
||||||
|
- 一旦动作或姿态不对,立刻按 `L2`
|
||||||
|
|
||||||
|
## 参数逐层强化
|
||||||
|
|
||||||
|
建议先用小参数,再逐层加到当前目标值。前一层如果还不稳定,不要跳层。每层至少稳定 1 到 2 分钟再升级。
|
||||||
|
|
||||||
|
### 第 0 层:完全不控电机
|
||||||
|
|
||||||
|
先跑:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mjpython deploy_45dim_rl_gym/deploy_go1_rlgym_pro_sdk.py --monitor --kill-sport --log-dir logs
|
||||||
|
mjpython deploy_45dim_rl_gym/deploy_go1_rlgym_pro_sdk.py --obs-check --kill-sport --log-dir logs
|
||||||
|
mjpython deploy_45dim_rl_gym/deploy_go1_rlgym_pro_sdk.py --infer-check --kill-sport --log-dir logs
|
||||||
|
```
|
||||||
|
|
||||||
|
只有在状态、遥控、观测和动作日志都正常时,才进入下一层。
|
||||||
|
|
||||||
|
### 第 1 层:弱校准和保持
|
||||||
|
|
||||||
|
先不进 RL,只测试起立、保持、`R2`、`L2` 和 `Ctrl+C`。
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mjpython deploy_45dim_rl_gym/deploy_go1_rlgym_pro_sdk.py \
|
||||||
|
--kill-sport \
|
||||||
|
--log-dir logs \
|
||||||
|
--kp 20 --kd 0.7 \
|
||||||
|
--kp-cal 10 --kd-cal 0.7 \
|
||||||
|
--power-factor 3 \
|
||||||
|
--position-protect-limit 0.4
|
||||||
|
```
|
||||||
|
|
||||||
|
只有在校准平滑、能稳定保持、`L2` 能可靠回到 `IDLE` 时才升级。
|
||||||
|
|
||||||
|
### 第 2 层:中等校准和保持
|
||||||
|
|
||||||
|
仍然不进 RL。
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mjpython deploy_45dim_rl_gym/deploy_go1_rlgym_pro_sdk.py \
|
||||||
|
--kill-sport \
|
||||||
|
--log-dir logs \
|
||||||
|
--kp 40 --kd 0.8 \
|
||||||
|
--kp-cal 15 --kd-cal 0.8 \
|
||||||
|
--power-factor 5 \
|
||||||
|
--position-protect-limit 0.6
|
||||||
|
```
|
||||||
|
|
||||||
|
只有在保持姿态稳定、关节不抖时才继续。
|
||||||
|
|
||||||
|
### 第 3 层:保守悬空 RL,固定零指令
|
||||||
|
|
||||||
|
开始允许 RL,但固定零指令,先确认策略本体能悬空稳定,不测试摇杆速度指令。
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mjpython deploy_45dim_rl_gym/deploy_go1_rlgym_pro_sdk.py \
|
||||||
|
--kill-sport \
|
||||||
|
--enable-rl \
|
||||||
|
--no-rc \
|
||||||
|
--cmd-x 0 --cmd-y 0 --cmd-yaw 0 \
|
||||||
|
--log-dir logs \
|
||||||
|
--kp 60 --kd 1.0 \
|
||||||
|
--kp-cal 20 --kd-cal 1.0 \
|
||||||
|
--power-factor 6 \
|
||||||
|
--position-protect-limit 0.8 \
|
||||||
|
--action-clip 2.5 \
|
||||||
|
--action-trip-limit 8.0 \
|
||||||
|
--max-target-step 0.04 \
|
||||||
|
--max-roll-deg 25 \
|
||||||
|
--max-pitch-deg 25
|
||||||
|
```
|
||||||
|
|
||||||
|
只有在悬空 RL 零指令稳定时才进入下一层。
|
||||||
|
|
||||||
|
### 第 3.5 层:保守悬空 RL,小遥控比例
|
||||||
|
|
||||||
|
取消 `--no-rc`,但先把摇杆比例限制到小范围。脚本默认还会对遥控器命令做 deadzone、低通和变化率限制。
|
||||||
|
|
||||||
|
如果加 `--swap-vy-yaw`,遥控映射会变成:
|
||||||
|
|
||||||
|
```text
|
||||||
|
左摇杆前后 ly -> vx
|
||||||
|
左摇杆左右 lx -> yaw
|
||||||
|
右摇杆左右 rx -> vy
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mjpython deploy_45dim_rl_gym/deploy_go1_rlgym_pro_sdk.py \
|
||||||
|
--kill-sport \
|
||||||
|
--enable-rl \
|
||||||
|
--log-dir logs \
|
||||||
|
--kp 60 --kd 1.0 \
|
||||||
|
--kp-cal 20 --kd-cal 1.0 \
|
||||||
|
--power-factor 6 \
|
||||||
|
--position-protect-limit 0.8 \
|
||||||
|
--action-clip 2.5 \
|
||||||
|
--action-trip-limit 8.0 \
|
||||||
|
--max-target-step 0.06 \
|
||||||
|
--max-roll-deg 25 \
|
||||||
|
--max-pitch-deg 25 \
|
||||||
|
--swap-vy-yaw \
|
||||||
|
--rc-vx-scale 0.3 \
|
||||||
|
--rc-vy-scale 0.15 \
|
||||||
|
--rc-wz-scale 0.5
|
||||||
|
```
|
||||||
|
|
||||||
|
这一层不要直接长时间满杆。建议按下面顺序测,每次给很短的摇杆脉冲,松杆回中后等姿态稳定再继续:
|
||||||
|
|
||||||
|
```text
|
||||||
|
进入 RL 后先零摇杆观察 10 秒
|
||||||
|
|
||||||
|
左摇杆前后:
|
||||||
|
ly 轻推到约 1/3 行程,保持 0.5 到 1 秒,松开
|
||||||
|
观察 roll/pitch、qvel、action_raw_max
|
||||||
|
|
||||||
|
左摇杆左右:
|
||||||
|
加 --swap-vy-yaw 后控制 yaw
|
||||||
|
lx 轻推到约 1/3 行程,保持 0.5 到 1 秒,松开
|
||||||
|
如果 yaw 仍慢,可以逐步把 --rc-wz-scale 从 0.5 提到 0.7
|
||||||
|
|
||||||
|
右摇杆左右:
|
||||||
|
加 --swap-vy-yaw 后控制 vy
|
||||||
|
rx 轻推到约 1/3 行程,保持 0.5 到 1 秒,松开
|
||||||
|
观察横向动作是否明显发散
|
||||||
|
|
||||||
|
任何时候:
|
||||||
|
action_raw_max 接近 2.0、qvel 明显变大、roll/pitch 持续变大,立即按 L2
|
||||||
|
```
|
||||||
|
|
||||||
|
这一层重点检查 `commands_raw` 和 `commands`:默认无命令滤波时两者应基本一致。如果手动启用了 `--cmd-ema-alpha` 或 `--max-cmd-step-*`,则 `commands` 会比 `commands_raw` 更慢变化。
|
||||||
|
|
||||||
|
### 第 4 层:当前目标参数
|
||||||
|
|
||||||
|
这是当前想要的正式参数。只有第 3 层和第 3.5 层都稳定后再用。
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mjpython deploy_45dim_rl_gym/deploy_go1_rlgym_pro_sdk.py \
|
||||||
|
--kill-sport \
|
||||||
|
--enable-rl \
|
||||||
|
--log-dir logs \
|
||||||
|
--kp 80 --kd 1.0 \
|
||||||
|
--kp-cal 20 --kd-cal 1.0 \
|
||||||
|
--power-factor 7 \
|
||||||
|
--position-protect-limit 1.0 \
|
||||||
|
--action-clip 4.0 \
|
||||||
|
--action-trip-limit 12.0 \
|
||||||
|
--max-target-step 0.08 \
|
||||||
|
--swap-vy-yaw \
|
||||||
|
--rc-vx-scale 0.5 \
|
||||||
|
--rc-vy-scale 0.25 \
|
||||||
|
--rc-wz-scale 0.7
|
||||||
|
```
|
||||||
|
|
||||||
|
这些值仍低于全遥控比例,用来逐步靠近正式测试;不要直接用满 `1.0/0.5/1.0`。
|
||||||
|
|
||||||
|
## 第 7 步:上地面测试
|
||||||
|
|
||||||
|
只有悬空 RL 稳定后,才能落地。
|
||||||
|
|
||||||
|
1. 把机器人放到平地上
|
||||||
|
2. 零指令进入 RL
|
||||||
|
3. 先让它站稳
|
||||||
|
4. 再给小指令
|
||||||
|
|
||||||
|
建议起始范围:
|
||||||
|
|
||||||
|
```text
|
||||||
|
ly <= 0.2
|
||||||
|
lx <= 0.1
|
||||||
|
rx <= 0.2
|
||||||
|
```
|
||||||
|
|
||||||
|
如果出现以下情况,立即按 `L2`:
|
||||||
|
|
||||||
|
- 动作越来越大
|
||||||
|
- roll 或 pitch 持续变大
|
||||||
|
- 腿乱甩
|
||||||
|
- 机器人开始摔倒或打滑
|
||||||
|
|
||||||
|
### 15 cm 台阶测试参数
|
||||||
|
|
||||||
|
`stairs_3.xml` 的单级高度约 `0.14 m`。从 MuJoCo 采样和真机日志看,上台阶时 pitch 到 `25 deg` 以上、roll 短时超过 `35 deg` 都可能出现。台阶测试不要继续用平地/悬空的 `25 deg` 或 `35 deg` 姿态保护。
|
||||||
|
|
||||||
|
建议台阶第一轮用下面这组。它比平地测试放开姿态和动作幅度,但仍保留目标位置变化率限制,避免单帧目标跳变太大:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mjpython deploy_45dim_rl_gym/deploy_go1_rlgym_pro_sdk.py \
|
||||||
|
--kill-sport \
|
||||||
|
--enable-rl \
|
||||||
|
--log-dir logs \
|
||||||
|
--kp 40 --kd 0.8 \
|
||||||
|
--kp-cal 20 --kd-cal 1.0 \
|
||||||
|
--power-factor 6 \
|
||||||
|
--position-protect-limit 1.2 \
|
||||||
|
--action-clip 4.0 \
|
||||||
|
--action-trip-limit 9.0 \
|
||||||
|
--max-target-step 0.15 \
|
||||||
|
--max-roll-deg 45 \
|
||||||
|
--max-pitch-deg 45 \
|
||||||
|
--swap-vy-yaw \
|
||||||
|
--rc-vx-scale 0.5 \
|
||||||
|
--rc-vy-scale 0.5 \
|
||||||
|
--rc-wz-scale 1.0
|
||||||
|
```
|
||||||
|
|
||||||
|
如果动作幅度仍明显不够,再把 `--max-target-step` 从 `0.15` 加到 `0.20`。只有确认目标变化率限制确实挡住抬腿时,才短时间对照测试 `--max-target-step 0`。
|
||||||
|
|
||||||
|
`--action-trip-limit 9.0` 只是把 raw action 的异常停机阈值从 `8.0` 放宽到 `9.0`;实际发给关节目标的动作仍会先被 `--action-clip 4.0` 裁剪,所以它不会直接增加腿部动作幅度。如果 raw action 经常超过 `9.0`,说明观测或姿态已经明显偏离训练分布,应按 `L2` 退回而不是继续放大阈值。
|
||||||
|
|
||||||
|
`--max-target-step 0` 的意思是关闭单步目标变化率限制,不是关闭关节硬限位、action clip 或 SDK 安全保护。真机日志 `rlgym_go1_deploy_20260724_172122` 里,`max_target_step=0`、`position_protect_limit=1.5`、`power_factor=9` 时触发的是实测扭矩保护:`tauEst` 已超过 SDK 的 `TAU_MAX`,所以脚本会进入 `FAULT` 并阻尼停机。
|
||||||
|
|
||||||
|
这只是放宽姿态保护,不是关闭全部安全保护。`action_trip_limit`、`max_dof_vel`、`max_gyro`、`position_protect_limit`、实测扭矩保护和 `L2` 急停仍然保留。
|
||||||
|
|
||||||
|
注意:`--power-factor` 主要限制命令力矩 `tau` 的比例;这个部署脚本发送的是位置控制,命令 `tau=0`。实测 `tauEst` 超过 SDK `TAU_MAX` 时,即使 `power_factor=9` 也会停机。遇到这种停机,优先减小瞬时目标跳变或速度指令,不要继续只增大 `power_factor`。
|
||||||
|
|
||||||
|
目前台阶实测后的建议顺序:
|
||||||
|
|
||||||
|
```text
|
||||||
|
第一轮: position_protect_limit=1.2, max_target_step=0.15, power_factor=6
|
||||||
|
第二轮: position_protect_limit=1.2, max_target_step=0.20, power_factor=6
|
||||||
|
第三轮: position_protect_limit=1.5, max_target_step=0.20, power_factor=6 或 7
|
||||||
|
短时对照: position_protect_limit=1.5, max_target_step=0, power_factor=6 或 7
|
||||||
|
```
|
||||||
|
|
||||||
|
如果出现 `PowerProtectViolation`,说明已经是实测扭矩过载边缘。下一轮建议回退到上一层参数,或者降低 `--rc-vx-scale` / 避免连续满前进杆。
|
||||||
|
|
||||||
|
## MuJoCo 键盘 sim2sim
|
||||||
|
|
||||||
|
键盘控制测试直接用本目录的 `deploy_go1_onnx_mujoco.py`。它加载同一个 `policy_15k.onnx`,使用 45 维观测和 5 帧 ONNX 历史,在 MuJoCo 里做位置 PD 控制。
|
||||||
|
|
||||||
|
平地启动:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /Users/chenyouyuan/cyy_ws/deploy_go1_pro
|
||||||
|
conda activate free_dog_sdk
|
||||||
|
|
||||||
|
mjpython deploy_45dim_rl_gym/deploy_go1_onnx_mujoco.py \
|
||||||
|
--clip-actions 4.0 \
|
||||||
|
--max-target-step 0.15
|
||||||
|
```
|
||||||
|
|
||||||
|
楼梯 level 3 启动:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /Users/chenyouyuan/cyy_ws/deploy_go1_pro
|
||||||
|
conda activate free_dog_sdk
|
||||||
|
|
||||||
|
mjpython deploy_45dim_rl_gym/deploy_go1_onnx_mujoco.py \
|
||||||
|
--terrain terrains/stairs/stairs_3.xml \
|
||||||
|
--spawn-x -0.6 \
|
||||||
|
--spawn-z 0.34 \
|
||||||
|
--clip-actions 4.0 \
|
||||||
|
--max-target-step 0.15
|
||||||
|
```
|
||||||
|
|
||||||
|
如果你想对照策略原始动作能力,可以短时间把 `--max-target-step` 改成 `0.0`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mjpython deploy_45dim_rl_gym/deploy_go1_onnx_mujoco.py \
|
||||||
|
--terrain terrains/stairs/stairs_3.xml \
|
||||||
|
--spawn-x -0.6 \
|
||||||
|
--spawn-z 0.34 \
|
||||||
|
--clip-actions 4.0 \
|
||||||
|
--max-target-step 0.0
|
||||||
|
```
|
||||||
|
|
||||||
|
键盘控制:
|
||||||
|
|
||||||
|
```text
|
||||||
|
方向键 ↑ / ↓ : 前进 / 后退
|
||||||
|
方向键 ← / → : 左转 / 右转 yaw
|
||||||
|
, / . : 左移 / 右移 vy
|
||||||
|
K : 零速度指令
|
||||||
|
R : 重置机器人
|
||||||
|
Esc : 退出
|
||||||
|
```
|
||||||
|
|
||||||
|
如果键盘没有响应,先点一下 MuJoCo 窗口或终端,让当前窗口获得焦点。macOS 第一次使用 `pynput` 可能需要给终端或 Python 辅助功能权限。
|
||||||
|
|
||||||
|
## MuJoCo 楼梯采样
|
||||||
|
|
||||||
|
可以先在 MuJoCo 里固定前进指令采样楼梯 level 3。`stairs_3.xml` 的单级高度约 `0.14 m`,接近 `15 cm` 台阶。
|
||||||
|
|
||||||
|
默认前进速度、真机放开动作幅度、但保留较严格目标步长限制:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
conda activate free_dog_sdk
|
||||||
|
|
||||||
|
mjpython deploy_45dim_rl_gym/deploy_go1_onnx_mujoco.py \
|
||||||
|
--sample-stairs-level 3 \
|
||||||
|
--sample-seconds 10 \
|
||||||
|
--sample-cmd-x 1.0 \
|
||||||
|
--sample-cmd-y 0 \
|
||||||
|
--sample-cmd-yaw 0 \
|
||||||
|
--clip-actions 4.0 \
|
||||||
|
--max-target-step 0.08 \
|
||||||
|
--sample-log-dir logs
|
||||||
|
```
|
||||||
|
|
||||||
|
如果 `0.08` 在楼梯上动作太小,可以用下面这个对照测试策略原始能力:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mjpython deploy_45dim_rl_gym/deploy_go1_onnx_mujoco.py \
|
||||||
|
--sample-stairs-level 3 \
|
||||||
|
--sample-seconds 10 \
|
||||||
|
--sample-cmd-x 1.0 \
|
||||||
|
--sample-cmd-y 0 \
|
||||||
|
--sample-cmd-yaw 0 \
|
||||||
|
--clip-actions 4.0 \
|
||||||
|
--max-target-step 0.0 \
|
||||||
|
--sample-log-dir logs
|
||||||
|
```
|
||||||
|
|
||||||
|
采样日志会保存:
|
||||||
|
|
||||||
|
```text
|
||||||
|
logs/mujoco_stairs_sample_YYYYMMDD_HHMMSS/
|
||||||
|
metadata.json
|
||||||
|
steps.jsonl
|
||||||
|
summary.json
|
||||||
|
```
|
||||||
|
|
||||||
|
重点看:
|
||||||
|
|
||||||
|
- `fallen`
|
||||||
|
- `base_x_progress`
|
||||||
|
- `rpy_min_deg` / `rpy_max_deg`
|
||||||
|
- `action_raw_maxabs`
|
||||||
|
- `action_applied_maxabs`
|
||||||
|
- `target_offset_maxabs`
|
||||||
|
- `dof_vel_maxabs`
|
||||||
|
|
||||||
|
## 日志
|
||||||
|
|
||||||
|
日志会保存在:
|
||||||
|
|
||||||
|
```text
|
||||||
|
logs/rlgym_go1_deploy_YYYYMMDD_HHMMSS/
|
||||||
|
metadata.json
|
||||||
|
steps.jsonl
|
||||||
|
```
|
||||||
|
|
||||||
|
常看字段:
|
||||||
|
|
||||||
|
- `commands`
|
||||||
|
- `commands_raw`
|
||||||
|
- `obs_single`
|
||||||
|
- `action_raw`
|
||||||
|
- `action_safe`
|
||||||
|
- `joint_targets`
|
||||||
|
- `dof_pos`
|
||||||
|
- `dof_vel`
|
||||||
|
- `base_ang_vel`
|
||||||
|
- `projected_gravity`
|
||||||
|
- `imu_rpy_deg`
|
||||||
|
- `state_reason`
|
||||||
|
|
||||||
|
## 常用默认值
|
||||||
|
|
||||||
|
真机部署脚本使用的默认值如下:
|
||||||
|
|
||||||
|
```text
|
||||||
|
kp = 80.0
|
||||||
|
kd = 1.0
|
||||||
|
kp_cal = 20.0
|
||||||
|
kd_cal = 1.0
|
||||||
|
power_factor = 7
|
||||||
|
position_protect_limit = 1.0
|
||||||
|
action_ema_alpha = 0.0
|
||||||
|
rc_deadzone = 0.05
|
||||||
|
cmd_ema_alpha = 1.0
|
||||||
|
max_cmd_step_x = 0.0
|
||||||
|
max_cmd_step_y = 0.0
|
||||||
|
max_cmd_step_yaw = 0.0
|
||||||
|
rate_hz = 50.0
|
||||||
|
```
|
||||||
|
|
||||||
|
这些值来自之前成功的 Go1 PRO 低层部署经验。`rlgym_go1_deploy_20260724_193128` 和 `rlgym_go1_deploy_20260724_193318` 对照显示,当前 45 维策略在真机上关闭遥控器命令低通/变化率限制更稳定;如需重新启用滤波,应只作为单独变量短时对照测试。
|
||||||
|
|
||||||
|
RoboGauge 策略自己的参数不要照搬旧的 57 维策略:
|
||||||
|
|
||||||
|
```text
|
||||||
|
action_scale = 0.25
|
||||||
|
default_dof_pos = FR, FL, RR, RL 顺序下的 [-0.1/0.1, 0.8/1.0, -1.5]
|
||||||
|
history_len = 5
|
||||||
|
onnx_input_dim = 225
|
||||||
|
```
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
deploy_45dim_rl_gym/assets/calf.stl
Normal file
BIN
deploy_45dim_rl_gym/assets/calf.stl
Normal file
Binary file not shown.
BIN
deploy_45dim_rl_gym/assets/hip.stl
Normal file
BIN
deploy_45dim_rl_gym/assets/hip.stl
Normal file
Binary file not shown.
BIN
deploy_45dim_rl_gym/assets/thigh.stl
Normal file
BIN
deploy_45dim_rl_gym/assets/thigh.stl
Normal file
Binary file not shown.
BIN
deploy_45dim_rl_gym/assets/thigh_mirror.stl
Normal file
BIN
deploy_45dim_rl_gym/assets/thigh_mirror.stl
Normal file
Binary file not shown.
BIN
deploy_45dim_rl_gym/assets/trunk.stl
Normal file
BIN
deploy_45dim_rl_gym/assets/trunk.stl
Normal file
Binary file not shown.
738
deploy_45dim_rl_gym/deploy_go1_onnx_mujoco.py
Normal file
738
deploy_45dim_rl_gym/deploy_go1_onnx_mujoco.py
Normal file
@@ -0,0 +1,738 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
Go1 MoE CTS ONNX Policy — MuJoCo Simulation Deployment.
|
||||||
|
|
||||||
|
Loads the 15k ONNX policy exported from RoboGauge and runs it in MuJoCo
|
||||||
|
with PD position control. The ONNX model uses a 5-frame CTS history
|
||||||
|
(225-dim stacked-by-terms input, stateless).
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
conda activate free_dog_sdk
|
||||||
|
MUJOCO_GL=glfw python deploy_go1_onnx_mujoco.py
|
||||||
|
MUJOCO_GL=glfw python deploy_go1_onnx_mujoco.py --terrain terrains/stairs/stairs_6.xml
|
||||||
|
|
||||||
|
Controls (matching RoboGauge keyboard convention):
|
||||||
|
↑ / ↓ forward / backward
|
||||||
|
← / → yaw left / right
|
||||||
|
, / . strafe left / right
|
||||||
|
K stop
|
||||||
|
R reset robot
|
||||||
|
Esc quit
|
||||||
|
|
||||||
|
Architecture:
|
||||||
|
ONNX input: obs [1, 225] — 5 frames × 45 dims, stacked by TERMS
|
||||||
|
ONNX output: actions [1, 12], weights [1, 8], latent [1, 32]
|
||||||
|
Control: target_q = default_q + 0.25 * action, PD with Kp=28, Kd=0.7
|
||||||
|
"""
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
import signal
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
from collections import deque
|
||||||
|
from datetime import datetime
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
import mujoco
|
||||||
|
import numpy as np
|
||||||
|
import onnxruntime as ort
|
||||||
|
from mujoco import viewer
|
||||||
|
|
||||||
|
# ── path setup ──
|
||||||
|
SCRIPT_DIR = Path(__file__).resolve().parent
|
||||||
|
DEFAULT_ONNX = str(SCRIPT_DIR / "policy_25k.onnx")
|
||||||
|
ROBOT_XML = str(SCRIPT_DIR / "go1.xml")
|
||||||
|
TERRAINS_DIR = SCRIPT_DIR / "terrains"
|
||||||
|
|
||||||
|
# ── policy constants (RoboGauge Go1Config) ──
|
||||||
|
NUM_OBS = 45
|
||||||
|
NUM_ACTIONS = 12
|
||||||
|
HISTORY_LEN = 5 # CTS history frames
|
||||||
|
ONNX_INPUT_DIM = 225 # 45 × 5, stacked by terms
|
||||||
|
|
||||||
|
ACTION_SCALE = 0.25
|
||||||
|
KP = 28.0
|
||||||
|
KD = 0.7
|
||||||
|
CLIP_ACTIONS = 100.0
|
||||||
|
CLIP_OBS = 100.0
|
||||||
|
|
||||||
|
ANG_VEL_SCALE = 0.25
|
||||||
|
CMD_SCALE = np.array([2.0, 2.0, 0.25], dtype=np.float32)
|
||||||
|
|
||||||
|
MAX_LIN_VEL_X = 1.0
|
||||||
|
MAX_LIN_VEL_Y = 0.5
|
||||||
|
MAX_ANG_VEL = 1.0
|
||||||
|
|
||||||
|
DEFAULT_DOF_POS = np.array([
|
||||||
|
-0.1, 0.8, -1.5, # FR_hip, FR_thigh, FR_calf
|
||||||
|
0.1, 0.8, -1.5, # FL_hip, FL_thigh, FL_calf
|
||||||
|
-0.1, 1.0, -1.5, # RR_hip, RR_thigh, RR_calf
|
||||||
|
0.1, 1.0, -1.5, # RL_hip, RL_thigh, RL_calf
|
||||||
|
], dtype=np.float32)
|
||||||
|
|
||||||
|
# ── exit flag ──
|
||||||
|
EXIT = False
|
||||||
|
|
||||||
|
def _sig_handler(signum, frame):
|
||||||
|
global EXIT
|
||||||
|
EXIT = True
|
||||||
|
|
||||||
|
signal.signal(signal.SIGINT, _sig_handler)
|
||||||
|
signal.signal(signal.SIGTERM, _sig_handler)
|
||||||
|
|
||||||
|
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
# XML builder — merge terrain + robot into one MuJoCo scene
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
def _xml_inner(text, tag):
|
||||||
|
"""Extract inner content of the first <tag>...</tag> in text."""
|
||||||
|
m = re.search(rf"<{tag}>(.*?)</{tag}>", text, re.DOTALL)
|
||||||
|
return m.group(1).strip() if m else ""
|
||||||
|
|
||||||
|
|
||||||
|
def build_scene_xml(robot_xml_path, terrain_xml_path=None):
|
||||||
|
"""Merge robot XML with optional terrain XML into a single scene model.
|
||||||
|
|
||||||
|
The robot XML (go1.xml) has base_link as the root body with no free joint.
|
||||||
|
We add a free joint and optionally merge terrain worldbody/asset elements.
|
||||||
|
"""
|
||||||
|
robot = Path(robot_xml_path).read_text()
|
||||||
|
|
||||||
|
# 1) Add free joint to base_link
|
||||||
|
robot = robot.replace(
|
||||||
|
'<body name="base_link" pos="0 0 0.35">',
|
||||||
|
'<body name="base_link" pos="0 0 0.35">\n <joint type="free"/>'
|
||||||
|
)
|
||||||
|
|
||||||
|
if terrain_xml_path is None:
|
||||||
|
# No terrain — add a simple flat floor
|
||||||
|
floor = (
|
||||||
|
'\n <geom name="floor" size="0 0 0.05" type="plane" '
|
||||||
|
'rgba="0.5 0.9 0.9 0.1"/>\n'
|
||||||
|
)
|
||||||
|
robot = robot.replace(
|
||||||
|
'<body name="base_link"',
|
||||||
|
floor + ' <body name="base_link"'
|
||||||
|
)
|
||||||
|
return robot
|
||||||
|
|
||||||
|
terrain_text = Path(terrain_xml_path).read_text()
|
||||||
|
|
||||||
|
# 2) Merge terrain <asset> into robot <asset>
|
||||||
|
terrain_assets = _xml_inner(terrain_text, "asset")
|
||||||
|
if terrain_assets:
|
||||||
|
# Insert before closing </asset> of robot (or before <worldbody> if no asset)
|
||||||
|
robot = robot.replace('</asset>', '\n' + terrain_assets + '\n </asset>', 1)
|
||||||
|
|
||||||
|
# 3) Merge terrain <visual> settings
|
||||||
|
terrain_visual = _xml_inner(terrain_text, "visual")
|
||||||
|
if terrain_visual:
|
||||||
|
robot = robot.replace('</visual>', '\n' + terrain_visual + '\n </visual>', 1)
|
||||||
|
|
||||||
|
# 4) Merge terrain worldbody elements (lights, geoms, etc.) before base_link
|
||||||
|
terrain_wb = _xml_inner(terrain_text, "worldbody")
|
||||||
|
if terrain_wb:
|
||||||
|
# Remove <body> elements from terrain worldbody (we only want geoms/lights/cameras)
|
||||||
|
terrain_wb_no_bodies = re.sub(r'<body\b.*?</body>', '', terrain_wb, flags=re.DOTALL)
|
||||||
|
robot = robot.replace(
|
||||||
|
'<body name="base_link"',
|
||||||
|
terrain_wb_no_bodies.strip() + '\n <body name="base_link"'
|
||||||
|
)
|
||||||
|
|
||||||
|
return robot
|
||||||
|
|
||||||
|
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
# Observation building
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
def get_projected_gravity(quat_wxyz):
|
||||||
|
qw, qx, qy, qz = quat_wxyz
|
||||||
|
g = np.zeros(3, dtype=np.float32)
|
||||||
|
g[0] = 2.0 * (-qz * qx + qw * qy)
|
||||||
|
g[1] = -2.0 * (qz * qy + qw * qx)
|
||||||
|
g[2] = 1.0 - 2.0 * (qw * qw + qz * qz)
|
||||||
|
return g
|
||||||
|
|
||||||
|
|
||||||
|
def quat_rotate_inverse(q_wxyz, v):
|
||||||
|
"""Rotate vector v from world frame into body frame using quaternion q."""
|
||||||
|
q_w = q_wxyz[0]
|
||||||
|
q_vec = np.array(q_wxyz[1:], dtype=np.float32)
|
||||||
|
v = np.array(v, dtype=np.float32)
|
||||||
|
a = v * (2.0 * q_w * q_w - 1.0)
|
||||||
|
b = np.cross(q_vec, v) * q_w * 2.0
|
||||||
|
c = q_vec * np.dot(q_vec, v) * 2.0
|
||||||
|
return a - b + c
|
||||||
|
|
||||||
|
|
||||||
|
def quat_to_rpy_deg(q_wxyz):
|
||||||
|
"""Convert MuJoCo [w, x, y, z] quaternion to roll/pitch/yaw in degrees."""
|
||||||
|
qw, qx, qy, qz = [float(x) for x in q_wxyz]
|
||||||
|
sinr_cosp = 2.0 * (qw * qx + qy * qz)
|
||||||
|
cosr_cosp = 1.0 - 2.0 * (qx * qx + qy * qy)
|
||||||
|
roll = np.arctan2(sinr_cosp, cosr_cosp)
|
||||||
|
|
||||||
|
sinp = 2.0 * (qw * qy - qz * qx)
|
||||||
|
pitch = np.arcsin(np.clip(sinp, -1.0, 1.0))
|
||||||
|
|
||||||
|
siny_cosp = 2.0 * (qw * qz + qx * qy)
|
||||||
|
cosy_cosp = 1.0 - 2.0 * (qy * qy + qz * qz)
|
||||||
|
yaw = np.arctan2(siny_cosp, cosy_cosp)
|
||||||
|
return np.degrees(np.array([roll, pitch, yaw], dtype=np.float32))
|
||||||
|
|
||||||
|
|
||||||
|
def read_sensor(model, data, name, expected_dim):
|
||||||
|
"""Read a MuJoCo sensor by name, returning None if it is not present."""
|
||||||
|
sid = mujoco.mj_name2id(model, mujoco.mjtObj.mjOBJ_SENSOR, name)
|
||||||
|
if sid < 0:
|
||||||
|
return None
|
||||||
|
adr = int(model.sensor_adr[sid])
|
||||||
|
dim = int(model.sensor_dim[sid])
|
||||||
|
if dim != expected_dim:
|
||||||
|
raise ValueError(f"sensor {name!r} has dim {dim}, expected {expected_dim}")
|
||||||
|
return np.asarray(data.sensordata[adr:adr + dim], dtype=np.float32).copy()
|
||||||
|
|
||||||
|
|
||||||
|
class ObsBuilder:
|
||||||
|
"""Build 45-dim single-frame obs and stack 5-frame history into 225-dim ONNX input.
|
||||||
|
|
||||||
|
ONNX expects observation terms stacked by groups (not by frames):
|
||||||
|
[ang_vel(t-4..t), gravity(t-4..t), cmd(t-4..t),
|
||||||
|
dof_pos(t-4..t), dof_vel(t-4..t), last_action(t-4..t)]
|
||||||
|
Within each group, frames go from oldest (t-4) to newest (t).
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.history: deque = deque(maxlen=HISTORY_LEN)
|
||||||
|
|
||||||
|
def reset(self):
|
||||||
|
self.history.clear()
|
||||||
|
|
||||||
|
def build_single_obs(self, base_ang_vel_body, base_quat_wxyz, cmd, q, dq, last_action):
|
||||||
|
"""Build 45-dim single-frame observation (RoboGauge layout)."""
|
||||||
|
obs = np.zeros(NUM_OBS, dtype=np.float32)
|
||||||
|
obs[0:3] = np.asarray(base_ang_vel_body, dtype=np.float32) * ANG_VEL_SCALE
|
||||||
|
obs[3:6] = get_projected_gravity(np.asarray(base_quat_wxyz, dtype=np.float32))
|
||||||
|
obs[6:9] = np.asarray(cmd, dtype=np.float32) * CMD_SCALE
|
||||||
|
obs[9:21] = np.asarray(q, dtype=np.float32) - DEFAULT_DOF_POS
|
||||||
|
obs[21:33] = np.asarray(dq, dtype=np.float32) * 0.05
|
||||||
|
obs[33:45] = np.asarray(last_action, dtype=np.float32)
|
||||||
|
return np.clip(obs, -CLIP_OBS, CLIP_OBS)
|
||||||
|
|
||||||
|
def build_onnx_input(self, obs_single):
|
||||||
|
"""Stack 5-frame history into 225-dim ONNX input (by-terms format)."""
|
||||||
|
self.history.append(obs_single.copy())
|
||||||
|
|
||||||
|
frames = list(self.history)
|
||||||
|
while len(frames) < HISTORY_LEN:
|
||||||
|
frames.insert(0, np.zeros(NUM_OBS, dtype=np.float32))
|
||||||
|
|
||||||
|
# term_dims: [ang_vel(3), gravity(3), cmd(3), dof_pos(12), dof_vel(12), last_action(12)]
|
||||||
|
term_dims = [3, 3, 3, 12, 12, 12]
|
||||||
|
|
||||||
|
stacked = []
|
||||||
|
offset = 0
|
||||||
|
for dim in term_dims:
|
||||||
|
for f_idx in range(HISTORY_LEN):
|
||||||
|
stacked.append(frames[f_idx][offset:offset + dim])
|
||||||
|
offset += dim
|
||||||
|
|
||||||
|
return np.concatenate(stacked, dtype=np.float32).reshape(1, -1)
|
||||||
|
|
||||||
|
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
# Keyboard input (pynput)
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
class KbReader:
|
||||||
|
"""Non-blocking keyboard reader using a background pynput listener.
|
||||||
|
|
||||||
|
Key names match RoboGauge convention:
|
||||||
|
key.up / key.down → forward/back
|
||||||
|
key.left / key.right → yaw
|
||||||
|
, / . → strafe left/right
|
||||||
|
k → stop
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
import queue
|
||||||
|
import threading
|
||||||
|
self._q = queue.Queue()
|
||||||
|
self.held = set()
|
||||||
|
self._running = True
|
||||||
|
self._listener = None
|
||||||
|
self._thread = None
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _name(key):
|
||||||
|
try:
|
||||||
|
if hasattr(key, 'char') and key.char is not None:
|
||||||
|
return key.char.lower()
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
return str(key).lower()
|
||||||
|
|
||||||
|
def _worker(self):
|
||||||
|
while self._running:
|
||||||
|
try:
|
||||||
|
evt, key = self._q.get(timeout=0.05)
|
||||||
|
except Exception:
|
||||||
|
continue
|
||||||
|
name = self._name(key)
|
||||||
|
if evt == 'press':
|
||||||
|
self.held.add(name)
|
||||||
|
else:
|
||||||
|
self.held.discard(name)
|
||||||
|
|
||||||
|
def start(self):
|
||||||
|
from pynput import keyboard
|
||||||
|
self._listener = keyboard.Listener(
|
||||||
|
on_press=lambda k: self._q.put(('press', k)),
|
||||||
|
on_release=lambda k: self._q.put(('release', k)),
|
||||||
|
)
|
||||||
|
self._listener.start()
|
||||||
|
import threading
|
||||||
|
self._thread = threading.Thread(target=self._worker, daemon=True)
|
||||||
|
self._thread.start()
|
||||||
|
print("[INFO] keyboard started (↑↓←→ , . K R Esc)")
|
||||||
|
|
||||||
|
def is_held(self, key):
|
||||||
|
return self._name(key) in self.held
|
||||||
|
|
||||||
|
def snapshot(self):
|
||||||
|
return set(self.held)
|
||||||
|
|
||||||
|
def stop(self):
|
||||||
|
self._running = False
|
||||||
|
if self._listener:
|
||||||
|
self._listener.stop()
|
||||||
|
|
||||||
|
|
||||||
|
def get_command(held):
|
||||||
|
"""Extract velocity command from held key set.
|
||||||
|
|
||||||
|
Returns (vx, vy, yaw_rate).
|
||||||
|
"""
|
||||||
|
if 'k' in held:
|
||||||
|
return 0.0, 0.0, 0.0
|
||||||
|
|
||||||
|
def axis(pos_key, neg_key, limit):
|
||||||
|
p = pos_key in held
|
||||||
|
n = neg_key in held
|
||||||
|
if p == n:
|
||||||
|
return 0.0
|
||||||
|
return limit if p else -limit
|
||||||
|
|
||||||
|
vx = axis('key.up', 'key.down', MAX_LIN_VEL_X)
|
||||||
|
vy = axis(',', '.', MAX_LIN_VEL_Y)
|
||||||
|
yaw = axis('key.left', 'key.right', MAX_ANG_VEL)
|
||||||
|
return vx, vy, yaw
|
||||||
|
|
||||||
|
|
||||||
|
class SampleLogger:
|
||||||
|
def __init__(self, log_dir, terrain_path, cmd, args):
|
||||||
|
ts = datetime.now().strftime("%Y%m%d_%H%M%S")
|
||||||
|
self.run_dir = Path(log_dir).expanduser().resolve() / f"mujoco_stairs_sample_{ts}"
|
||||||
|
self.run_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
self.fp = open(self.run_dir / "steps.jsonl", "a", encoding="utf-8", buffering=1)
|
||||||
|
meta = {
|
||||||
|
"created_at": ts,
|
||||||
|
"terrain": str(terrain_path) if terrain_path else "flat",
|
||||||
|
"sample_seconds": args.sample_seconds,
|
||||||
|
"sample_cmd": list(cmd),
|
||||||
|
"spawn": [args.spawn_x, args.spawn_y, args.spawn_z],
|
||||||
|
"action_scale": ACTION_SCALE,
|
||||||
|
"clip_actions": args.clip_actions,
|
||||||
|
"max_target_step": args.max_target_step,
|
||||||
|
"kp": KP,
|
||||||
|
"kd": KD,
|
||||||
|
"control_dt": 0.02,
|
||||||
|
"sim_dt": 0.002,
|
||||||
|
"num_obs": NUM_OBS,
|
||||||
|
"history_len": HISTORY_LEN,
|
||||||
|
"onnx_input_dim": ONNX_INPUT_DIM,
|
||||||
|
}
|
||||||
|
(self.run_dir / "metadata.json").write_text(
|
||||||
|
json.dumps(meta, indent=2, ensure_ascii=False))
|
||||||
|
print(f"[INFO] sample log dir: {self.run_dir}")
|
||||||
|
|
||||||
|
def write(self, rec):
|
||||||
|
self.fp.write(json.dumps(rec, ensure_ascii=False) + "\n")
|
||||||
|
|
||||||
|
def close(self):
|
||||||
|
self.fp.flush()
|
||||||
|
self.fp.close()
|
||||||
|
|
||||||
|
|
||||||
|
def summarize_samples(samples):
|
||||||
|
if not samples:
|
||||||
|
return {}
|
||||||
|
|
||||||
|
def max_abs_field(field):
|
||||||
|
return float(max(max(abs(x) for x in s[field]) for s in samples))
|
||||||
|
|
||||||
|
def p99_abs_field(field):
|
||||||
|
vals = sorted(abs(x) for s in samples for x in s[field])
|
||||||
|
if not vals:
|
||||||
|
return 0.0
|
||||||
|
idx = min(len(vals) - 1, int(0.99 * (len(vals) - 1)))
|
||||||
|
return float(vals[idx])
|
||||||
|
|
||||||
|
rpy = np.array([s["rpy_deg"] for s in samples], dtype=np.float32)
|
||||||
|
xyz = np.array([s["base_pos"] for s in samples], dtype=np.float32)
|
||||||
|
return {
|
||||||
|
"num_samples": len(samples),
|
||||||
|
"duration": float(samples[-1]["time_sim"] - samples[0]["time_sim"]),
|
||||||
|
"base_x_start": float(xyz[0, 0]),
|
||||||
|
"base_x_end": float(xyz[-1, 0]),
|
||||||
|
"base_x_progress": float(xyz[-1, 0] - xyz[0, 0]),
|
||||||
|
"base_z_min": float(np.min(xyz[:, 2])),
|
||||||
|
"base_z_max": float(np.max(xyz[:, 2])),
|
||||||
|
"rpy_min_deg": np.min(rpy, axis=0).astype(float).tolist(),
|
||||||
|
"rpy_max_deg": np.max(rpy, axis=0).astype(float).tolist(),
|
||||||
|
"action_raw_maxabs": max_abs_field("action_raw"),
|
||||||
|
"action_raw_p99abs": p99_abs_field("action_raw"),
|
||||||
|
"action_applied_maxabs": max_abs_field("action"),
|
||||||
|
"action_applied_p99abs": p99_abs_field("action"),
|
||||||
|
"target_offset_maxabs": max_abs_field("target_offset"),
|
||||||
|
"target_offset_p99abs": p99_abs_field("target_offset"),
|
||||||
|
"dof_vel_maxabs": max_abs_field("dof_vel"),
|
||||||
|
"torque_maxabs": max_abs_field("torques"),
|
||||||
|
"fallen": bool(any(s["fallen"] for s in samples)),
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
# Main
|
||||||
|
# ═══════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = argparse.ArgumentParser(description="Go1 MoE ONNX MuJoCo Deployment")
|
||||||
|
parser.add_argument("--onnx", type=str, default=DEFAULT_ONNX, help="ONNX model path")
|
||||||
|
parser.add_argument("--terrain", type=str, default=None,
|
||||||
|
help="Terrain XML path (e.g. terrains/stairs/stairs_6.xml)")
|
||||||
|
parser.add_argument("--sample", action="store_true",
|
||||||
|
help="Run a non-interactive fixed-command sampling rollout")
|
||||||
|
parser.add_argument("--sample-stairs-level", type=int, default=None,
|
||||||
|
help="Shortcut for --sample --terrain terrains/stairs/stairs_LEVEL.xml")
|
||||||
|
parser.add_argument("--sample-seconds", type=float, default=20.0)
|
||||||
|
parser.add_argument("--sample-cmd-x", type=float, default=MAX_LIN_VEL_X)
|
||||||
|
parser.add_argument("--sample-cmd-y", type=float, default=0.0)
|
||||||
|
parser.add_argument("--sample-cmd-yaw", type=float, default=0.0)
|
||||||
|
parser.add_argument("--sample-log-dir", type=str, default=str(SCRIPT_DIR / "mujoco_logs"))
|
||||||
|
parser.add_argument("--spawn-x", type=float, default=None)
|
||||||
|
parser.add_argument("--spawn-y", type=float, default=None)
|
||||||
|
parser.add_argument("--spawn-z", type=float, default=None)
|
||||||
|
parser.add_argument("--clip-actions", type=float, default=CLIP_ACTIONS,
|
||||||
|
help="Clip ONNX actions before applying action_scale")
|
||||||
|
parser.add_argument("--max-target-step", type=float, default=0.0,
|
||||||
|
help="Optional per-control-step target q slew limit in rad")
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
sample_mode = args.sample or args.sample_stairs_level is not None
|
||||||
|
if args.sample_stairs_level is not None:
|
||||||
|
args.sample = True
|
||||||
|
args.terrain = f"terrains/stairs/stairs_{args.sample_stairs_level}.xml"
|
||||||
|
|
||||||
|
if args.spawn_x is None:
|
||||||
|
args.spawn_x = -0.6 if args.sample_stairs_level is not None else 0.0
|
||||||
|
if args.spawn_y is None:
|
||||||
|
args.spawn_y = 0.0
|
||||||
|
if args.spawn_z is None:
|
||||||
|
args.spawn_z = 0.34
|
||||||
|
args.sample_log_dir = str(Path(args.sample_log_dir).expanduser().resolve())
|
||||||
|
|
||||||
|
# Resolve terrain path
|
||||||
|
terrain_path = None
|
||||||
|
if args.terrain:
|
||||||
|
terrain_path = Path(args.terrain)
|
||||||
|
if not terrain_path.is_absolute():
|
||||||
|
terrain_path = SCRIPT_DIR / terrain_path
|
||||||
|
if not terrain_path.exists():
|
||||||
|
print(f"[ERROR] terrain not found: {terrain_path}")
|
||||||
|
return 1
|
||||||
|
|
||||||
|
# ── Build scene XML ──
|
||||||
|
print(f"[INFO] robot: {ROBOT_XML}")
|
||||||
|
print(f"[INFO] terrain: {terrain_path or 'flat floor'}")
|
||||||
|
scene_xml = build_scene_xml(ROBOT_XML, str(terrain_path) if terrain_path else None)
|
||||||
|
|
||||||
|
# ── Load MuJoCo model ──
|
||||||
|
os.chdir(str(SCRIPT_DIR)) # meshdir="assets" is relative to go1.xml
|
||||||
|
model = mujoco.MjModel.from_xml_string(scene_xml)
|
||||||
|
data = mujoco.MjData(model)
|
||||||
|
model.opt.timestep = 0.002
|
||||||
|
print(f"[INFO] model: {model.nbody} bodies, qpos={model.nq}, actuators={model.nu}")
|
||||||
|
print(f"[INFO] timestep: {model.opt.timestep}s")
|
||||||
|
has_imu_gyro = mujoco.mj_name2id(model, mujoco.mjtObj.mjOBJ_SENSOR, "Body_Gyro") >= 0
|
||||||
|
has_imu_quat = mujoco.mj_name2id(model, mujoco.mjtObj.mjOBJ_SENSOR, "Body_Quat") >= 0
|
||||||
|
print(f"[INFO] IMU sensors: Body_Gyro={has_imu_gyro}, Body_Quat={has_imu_quat}")
|
||||||
|
|
||||||
|
# ── Load ONNX ──
|
||||||
|
session = ort.InferenceSession(args.onnx, providers=['CPUExecutionProvider'])
|
||||||
|
inp = session.get_inputs()[0]
|
||||||
|
print(f"[INFO] ONNX input : {inp.name} {inp.shape}")
|
||||||
|
for o in session.get_outputs():
|
||||||
|
print(f"[INFO] ONNX output: {o.name} {o.shape}")
|
||||||
|
|
||||||
|
# ── Init state ──
|
||||||
|
data.qpos[0:3] = np.array([args.spawn_x, args.spawn_y, args.spawn_z], dtype=np.float64)
|
||||||
|
data.qpos[3:7] = np.array([1.0, 0.0, 0.0, 0.0], dtype=np.float64)
|
||||||
|
data.qpos[7:19] = DEFAULT_DOF_POS.astype(np.float64)
|
||||||
|
data.qvel[:] = 0.0
|
||||||
|
data.ctrl[:] = 0.0
|
||||||
|
mujoco.mj_forward(model, data)
|
||||||
|
|
||||||
|
# ── Control state ──
|
||||||
|
ctrl_dt = 0.02 # 50 Hz
|
||||||
|
sim_dt = model.opt.timestep
|
||||||
|
steps_per_inference = max(1, int(ctrl_dt / sim_dt))
|
||||||
|
print(f"[INFO] control: {ctrl_dt}s ({1/ctrl_dt:.0f}Hz), "
|
||||||
|
f"sim steps per inference: {steps_per_inference}")
|
||||||
|
|
||||||
|
last_action = np.zeros(NUM_ACTIONS, dtype=np.float32)
|
||||||
|
action_raw = np.zeros(NUM_ACTIONS, dtype=np.float32)
|
||||||
|
action = np.zeros(NUM_ACTIONS, dtype=np.float32)
|
||||||
|
target_pos = DEFAULT_DOF_POS.copy()
|
||||||
|
prev_target_pos = DEFAULT_DOF_POS.copy()
|
||||||
|
obs_builder = ObsBuilder()
|
||||||
|
step_count = 0
|
||||||
|
inference_step = 0
|
||||||
|
|
||||||
|
if sample_mode:
|
||||||
|
cmd = np.array([
|
||||||
|
args.sample_cmd_x,
|
||||||
|
args.sample_cmd_y,
|
||||||
|
args.sample_cmd_yaw,
|
||||||
|
], dtype=np.float32)
|
||||||
|
cmd = np.clip(cmd, [-MAX_LIN_VEL_X, -MAX_LIN_VEL_Y, -MAX_ANG_VEL],
|
||||||
|
[MAX_LIN_VEL_X, MAX_LIN_VEL_Y, MAX_ANG_VEL])
|
||||||
|
logger = SampleLogger(args.sample_log_dir, terrain_path, cmd, args)
|
||||||
|
samples = []
|
||||||
|
max_sim_steps = int(args.sample_seconds / sim_dt)
|
||||||
|
print(
|
||||||
|
f"[INFO] sampling: seconds={args.sample_seconds:.1f} "
|
||||||
|
f"cmd=({cmd[0]:.2f},{cmd[1]:.2f},{cmd[2]:.2f}) "
|
||||||
|
f"spawn=({args.spawn_x:.2f},{args.spawn_y:.2f},{args.spawn_z:.2f})"
|
||||||
|
)
|
||||||
|
|
||||||
|
while step_count < max_sim_steps and not EXIT:
|
||||||
|
if inference_step == 0:
|
||||||
|
imu_quat = read_sensor(model, data, "Body_Quat", 4)
|
||||||
|
imu_ang_vel = read_sensor(model, data, "Body_Gyro", 3)
|
||||||
|
quat_wxyz = imu_quat if imu_quat is not None else data.qpos[3:7].copy()
|
||||||
|
if imu_ang_vel is not None:
|
||||||
|
base_ang_vel_body = imu_ang_vel
|
||||||
|
else:
|
||||||
|
world_ang_vel = data.qvel[3:6].copy()
|
||||||
|
base_ang_vel_body = quat_rotate_inverse(quat_wxyz, world_ang_vel)
|
||||||
|
|
||||||
|
q = data.qpos[7:19].copy()
|
||||||
|
dq = data.qvel[6:18].copy()
|
||||||
|
obs_single = obs_builder.build_single_obs(
|
||||||
|
base_ang_vel_body, quat_wxyz, cmd, q, dq, last_action)
|
||||||
|
onnx_input = obs_builder.build_onnx_input(obs_single)
|
||||||
|
outputs = session.run(None, {'obs': onnx_input})
|
||||||
|
action_raw = outputs[0][0].astype(np.float32)
|
||||||
|
action = np.clip(action_raw, -args.clip_actions, args.clip_actions)
|
||||||
|
last_action = action.copy()
|
||||||
|
|
||||||
|
target_pos_raw = DEFAULT_DOF_POS + action * ACTION_SCALE
|
||||||
|
if args.max_target_step > 0.0:
|
||||||
|
delta = np.clip(
|
||||||
|
target_pos_raw - prev_target_pos,
|
||||||
|
-args.max_target_step,
|
||||||
|
args.max_target_step,
|
||||||
|
)
|
||||||
|
target_pos = prev_target_pos + delta
|
||||||
|
else:
|
||||||
|
target_pos = target_pos_raw
|
||||||
|
prev_target_pos = target_pos.copy()
|
||||||
|
|
||||||
|
current_pos = data.qpos[7:19]
|
||||||
|
current_vel = data.qvel[6:18]
|
||||||
|
torques = KP * (target_pos - current_pos) - KD * current_vel
|
||||||
|
torques = np.clip(torques, -33.5, 33.5)
|
||||||
|
data.ctrl[:] = torques.astype(np.float64)
|
||||||
|
|
||||||
|
mujoco.mj_step(model, data)
|
||||||
|
|
||||||
|
if inference_step == 0:
|
||||||
|
quat_wxyz = data.qpos[3:7].copy()
|
||||||
|
rpy_deg = quat_to_rpy_deg(quat_wxyz)
|
||||||
|
fallen = bool(
|
||||||
|
data.qpos[2] < 0.16
|
||||||
|
or abs(rpy_deg[0]) > 60.0
|
||||||
|
or abs(rpy_deg[1]) > 60.0
|
||||||
|
or not np.all(np.isfinite(data.qpos))
|
||||||
|
)
|
||||||
|
rec = {
|
||||||
|
"step": int(step_count),
|
||||||
|
"control_step": int(step_count // steps_per_inference),
|
||||||
|
"time_sim": float(data.time),
|
||||||
|
"cmd": cmd.astype(float).tolist(),
|
||||||
|
"base_pos": data.qpos[0:3].astype(float).tolist(),
|
||||||
|
"base_quat": quat_wxyz.astype(float).tolist(),
|
||||||
|
"rpy_deg": rpy_deg.astype(float).tolist(),
|
||||||
|
"base_lin_vel": data.qvel[0:3].astype(float).tolist(),
|
||||||
|
"base_ang_vel": data.qvel[3:6].astype(float).tolist(),
|
||||||
|
"dof_pos": current_pos.astype(float).tolist(),
|
||||||
|
"dof_vel": current_vel.astype(float).tolist(),
|
||||||
|
"action_raw": action_raw.astype(float).tolist(),
|
||||||
|
"action": action.astype(float).tolist(),
|
||||||
|
"target_pos": target_pos.astype(float).tolist(),
|
||||||
|
"target_offset": (target_pos - DEFAULT_DOF_POS).astype(float).tolist(),
|
||||||
|
"torques": torques.astype(float).tolist(),
|
||||||
|
"fallen": fallen,
|
||||||
|
}
|
||||||
|
logger.write(rec)
|
||||||
|
samples.append(rec)
|
||||||
|
if rec["control_step"] % 50 == 0:
|
||||||
|
print(
|
||||||
|
f"[sample {rec['control_step']:04d}] "
|
||||||
|
f"t={rec['time_sim']:.2f} x={rec['base_pos'][0]:.2f} "
|
||||||
|
f"z={rec['base_pos'][2]:.2f} rpy={np.round(rpy_deg, 1)} "
|
||||||
|
f"act_max={np.max(np.abs(action)):.2f} "
|
||||||
|
f"target_off={np.max(np.abs(target_pos - DEFAULT_DOF_POS)):.2f}"
|
||||||
|
)
|
||||||
|
if fallen:
|
||||||
|
print(f"[WARN] sample stopped: fallen at t={data.time:.2f}s")
|
||||||
|
break
|
||||||
|
|
||||||
|
step_count += 1
|
||||||
|
inference_step = (inference_step + 1) % steps_per_inference
|
||||||
|
|
||||||
|
summary = summarize_samples(samples)
|
||||||
|
(logger.run_dir / "summary.json").write_text(
|
||||||
|
json.dumps(summary, indent=2, ensure_ascii=False))
|
||||||
|
logger.close()
|
||||||
|
print("[INFO] sample summary:")
|
||||||
|
print(json.dumps(summary, indent=2, ensure_ascii=False))
|
||||||
|
print(f"[INFO] sample saved: {logger.run_dir}")
|
||||||
|
return 0
|
||||||
|
|
||||||
|
# ── Keyboard ──
|
||||||
|
kb = KbReader()
|
||||||
|
kb.start()
|
||||||
|
|
||||||
|
# ── Viewer ──
|
||||||
|
view = viewer.launch_passive(model, data)
|
||||||
|
# Track the robot body
|
||||||
|
body_id = mujoco.mj_name2id(model, mujoco.mjtObj.mjOBJ_BODY, "base_link")
|
||||||
|
if body_id >= 0:
|
||||||
|
view.cam.type = mujoco.mjtCamera.mjCAMERA_TRACKING
|
||||||
|
view.cam.trackbodyid = body_id
|
||||||
|
view.cam.distance = 2.5
|
||||||
|
view.cam.elevation = -20
|
||||||
|
view.cam.azimuth = 60
|
||||||
|
print("[INFO] viewer launched")
|
||||||
|
|
||||||
|
loop_start = time.time()
|
||||||
|
|
||||||
|
while view.is_running() and not EXIT:
|
||||||
|
held = kb.snapshot()
|
||||||
|
|
||||||
|
# ── Quit ──
|
||||||
|
if 'key.esc' in held:
|
||||||
|
break
|
||||||
|
|
||||||
|
# ── Command from keyboard ──
|
||||||
|
vx, vy, yaw = get_command(held)
|
||||||
|
cmd = np.array([vx, vy, yaw], dtype=np.float32)
|
||||||
|
|
||||||
|
# ── Reset ──
|
||||||
|
if 'r' in held:
|
||||||
|
data.qpos[0:3] = np.array([0.0, 0.0, 0.34], dtype=np.float64)
|
||||||
|
data.qpos[3:7] = np.array([1.0, 0.0, 0.0, 0.0], dtype=np.float64)
|
||||||
|
data.qpos[7:19] = DEFAULT_DOF_POS.astype(np.float64)
|
||||||
|
data.qvel[:] = 0.0
|
||||||
|
data.ctrl[:] = 0.0
|
||||||
|
last_action = np.zeros(NUM_ACTIONS, dtype=np.float32)
|
||||||
|
action_raw = np.zeros(NUM_ACTIONS, dtype=np.float32)
|
||||||
|
action = np.zeros(NUM_ACTIONS, dtype=np.float32)
|
||||||
|
target_pos = DEFAULT_DOF_POS.copy()
|
||||||
|
prev_target_pos = DEFAULT_DOF_POS.copy()
|
||||||
|
obs_builder.reset()
|
||||||
|
mujoco.mj_forward(model, data)
|
||||||
|
print("[RESET]")
|
||||||
|
|
||||||
|
# ── Inference ──
|
||||||
|
if inference_step == 0:
|
||||||
|
# Match RoboGauge: policy obs uses XML IMU gyro and framequat sensors.
|
||||||
|
# Fall back to qpos/qvel only for XMLs without those sensors.
|
||||||
|
imu_quat = read_sensor(model, data, "Body_Quat", 4)
|
||||||
|
imu_ang_vel = read_sensor(model, data, "Body_Gyro", 3)
|
||||||
|
quat_wxyz = imu_quat if imu_quat is not None else data.qpos[3:7].copy()
|
||||||
|
if imu_ang_vel is not None:
|
||||||
|
base_ang_vel_body = imu_ang_vel
|
||||||
|
else:
|
||||||
|
world_ang_vel = data.qvel[3:6].copy()
|
||||||
|
base_ang_vel_body = quat_rotate_inverse(quat_wxyz, world_ang_vel)
|
||||||
|
|
||||||
|
# Joint state (qpos[7:19] is FR,FL,RR,RL — matches policy order)
|
||||||
|
q = data.qpos[7:19].copy()
|
||||||
|
dq = data.qvel[6:18].copy()
|
||||||
|
|
||||||
|
# Build obs
|
||||||
|
obs_single = obs_builder.build_single_obs(
|
||||||
|
base_ang_vel_body, quat_wxyz, cmd, q, dq, last_action)
|
||||||
|
onnx_input = obs_builder.build_onnx_input(obs_single)
|
||||||
|
|
||||||
|
# Run ONNX
|
||||||
|
outputs = session.run(None, {'obs': onnx_input})
|
||||||
|
action_raw = outputs[0][0].astype(np.float32) # [12]
|
||||||
|
action = np.clip(action_raw, -args.clip_actions, args.clip_actions)
|
||||||
|
last_action = action.copy()
|
||||||
|
|
||||||
|
target_pos_raw = DEFAULT_DOF_POS + action * ACTION_SCALE
|
||||||
|
if args.max_target_step > 0.0:
|
||||||
|
delta = np.clip(
|
||||||
|
target_pos_raw - prev_target_pos,
|
||||||
|
-args.max_target_step,
|
||||||
|
args.max_target_step,
|
||||||
|
)
|
||||||
|
target_pos = prev_target_pos + delta
|
||||||
|
else:
|
||||||
|
target_pos = target_pos_raw
|
||||||
|
prev_target_pos = target_pos.copy()
|
||||||
|
|
||||||
|
# ── PD control ──
|
||||||
|
current_pos = data.qpos[7:19]
|
||||||
|
current_vel = data.qvel[6:18]
|
||||||
|
torques = KP * (target_pos - current_pos) - KD * current_vel
|
||||||
|
torques = np.clip(torques, -33.5, 33.5)
|
||||||
|
data.ctrl[:] = torques.astype(np.float64)
|
||||||
|
|
||||||
|
mujoco.mj_step(model, data)
|
||||||
|
view.sync()
|
||||||
|
|
||||||
|
# Real-time sync — use sim_dt because step_count increments every sim step
|
||||||
|
expected_time = step_count * sim_dt
|
||||||
|
elapsed = time.time() - loop_start
|
||||||
|
if 0 < expected_time - elapsed < ctrl_dt:
|
||||||
|
time.sleep(expected_time - elapsed)
|
||||||
|
|
||||||
|
step_count += 1
|
||||||
|
inference_step = (inference_step + 1) % steps_per_inference
|
||||||
|
|
||||||
|
# Periodic status
|
||||||
|
if step_count % 200 == 0:
|
||||||
|
z = data.qpos[2]
|
||||||
|
lin_vel_abs = np.linalg.norm(data.qvel[0:3])
|
||||||
|
print(f"[{step_count}] cmd=({vx:.1f},{vy:.1f},{yaw:.1f}) "
|
||||||
|
f"z={z:.3f} |v|={lin_vel_abs:.2f} "
|
||||||
|
f"act[0:4]={np.round(action[:4], 3)}")
|
||||||
|
|
||||||
|
kb.stop()
|
||||||
|
view.close()
|
||||||
|
print("[INFO] done.")
|
||||||
|
return 0
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
sys.exit(main())
|
||||||
1112
deploy_45dim_rl_gym/deploy_go1_rlgym_pro_sdk.py
Normal file
1112
deploy_45dim_rl_gym/deploy_go1_rlgym_pro_sdk.py
Normal file
File diff suppressed because it is too large
Load Diff
197
deploy_45dim_rl_gym/go1.xml
Normal file
197
deploy_45dim_rl_gym/go1.xml
Normal file
@@ -0,0 +1,197 @@
|
|||||||
|
<mujoco model="go1">
|
||||||
|
<compiler angle="radian" meshdir="assets" />
|
||||||
|
<size njmax="500" nconmax="100" />
|
||||||
|
<option gravity='0 0 -9.806' iterations='50' solver='Newton' timestep='0.002'/>
|
||||||
|
|
||||||
|
<default>
|
||||||
|
<geom contype="1" conaffinity="1" friction="0.6 0.3 0.3" rgba="0.5 0.6 0.7 1" margin="0.001" group="0"/>
|
||||||
|
|
||||||
|
<light castshadow="false" diffuse="1 1 1"/>
|
||||||
|
<motor ctrlrange="-33.5 33.5" ctrllimited="true"/>
|
||||||
|
<camera fovy="60"/>
|
||||||
|
<joint damping="0.01" armature="0.01" frictionloss="0.2" />
|
||||||
|
|
||||||
|
</default>
|
||||||
|
<asset>
|
||||||
|
<mesh name="trunk" file="trunk.stl" />
|
||||||
|
<mesh name="hip" file="hip.stl" />
|
||||||
|
<mesh name="thigh_mirror" file="thigh_mirror.stl" />
|
||||||
|
<mesh name="calf" file="calf.stl" />
|
||||||
|
<mesh name="thigh" file="thigh.stl" />
|
||||||
|
</asset>
|
||||||
|
|
||||||
|
<worldbody>
|
||||||
|
<body name="base_link" pos="0 0 0.35">
|
||||||
|
<inertial pos="0.0116053 0.00442221 0.000106692" quat="0.0111438 0.707126 -0.00935374 0.706938" mass="4.801" diaginertia="0.0447997 0.0366257 0.0162187" />
|
||||||
|
<geom type="mesh" contype="0" conaffinity="0" group="1" rgba="0.913725 0.913725 0.847059 1" mesh="trunk" />
|
||||||
|
<geom size="0.13 0.04675 0.057" type="box" rgba="0.913725 0.913725 0.847059 1" />
|
||||||
|
<geom size="0.0005 0.0005 0.0005" pos="-0.01592 -0.06659 -0.00617" type="box" contype="0" conaffinity="0" group="1" rgba="0.8 0 0 0" />
|
||||||
|
<geom size="0.0005 0.0005 0.0005" pos="-0.01592 -0.06659 -0.00617" type="box" rgba="0.8 0 0 0" />
|
||||||
|
<site name="imu" pos="0 0 0"/>
|
||||||
|
|
||||||
|
<body name="FR_hip" pos="0.1881 -0.04675 0">
|
||||||
|
<inertial pos="-0.00406411 -0.0193463 4.50733e-06" quat="0.467526 0.531662 -0.466259 0.530431" mass="0.679292" diaginertia="0.00131334 0.00122648 0.000728484" />
|
||||||
|
<joint name="FR_hip_joint" pos="0 0 0" axis="1 0 0" limited="true" range="-0.802851 0.802851" />
|
||||||
|
<geom quat="0 1 0 0" type="mesh" contype="0" conaffinity="0" group="1" rgba="0.913725 0.913725 0.847059 1" mesh="hip" />
|
||||||
|
<geom size="0.046 0.02" pos="0 -0.045 0" quat="0.707107 0.707107 0 0" type="cylinder" rgba="0.913725 0.913725 0.847059 0" />
|
||||||
|
<geom size="0.031 0.02" pos="0 -0.07 0" quat="0.707107 0.707107 0 0" type="cylinder" rgba="0.913725 0.913725 0.847059 0" />
|
||||||
|
|
||||||
|
<body name="FR_thigh" pos="0 -0.08 0">
|
||||||
|
<inertial pos="-0.003468 0.018947 -0.032736" quat="0.999266 0.00067676 -0.0382978 0.000639813" mass="0.898919" diaginertia="0.00542178 0.00514246 0.000998869" />
|
||||||
|
<joint name="FR_thigh_joint" pos="0 0 0" axis="0 1 0" limited="true" range="-1.0472 4.18879" />
|
||||||
|
<geom type="mesh" contype="0" conaffinity="0" group="1" rgba="0.913725 0.913725 0.847059 1" mesh="thigh_mirror" />
|
||||||
|
<geom size="0.1065 0.01225 0.017" pos="0 0 -0.1065" quat="0.707107 0 0.707107 0" type="box" rgba="0.913725 0.913725 0.847059 0" />
|
||||||
|
<body name="FR_calf" pos="0 0 -0.213">
|
||||||
|
<inertial pos="0.00455603 0.0009473 -0.147239" quat="0.762045 0.00970173 0.0180098 0.647201" mass="0.218015" diaginertia="0.00399678 0.00398122 3.99428e-05" />
|
||||||
|
<joint name="FR_calf_joint" pos="0 0 0" axis="0 1 0" limited="true" range="-2.69653 -0.916298" />
|
||||||
|
<geom type="mesh" contype="0" conaffinity="0" group="1" rgba="0 0 0 1" mesh="calf" />
|
||||||
|
<geom size="0.1065 0.008 0.008" pos="0 0 -0.1065" quat="0.707107 0 0.707107 0" type="box" rgba="0 0 0 0" />
|
||||||
|
<geom size="0.01" pos="0 0 -0.213" contype="0" conaffinity="0" group="1" rgba="0 0 0 1" />
|
||||||
|
<geom name="FR" size="0.02" pos="0 0 -0.213" rgba="0 0 0 1" />
|
||||||
|
<body name="FR_foot" pos="0 0 -0.213" />
|
||||||
|
</body>
|
||||||
|
</body>
|
||||||
|
</body>
|
||||||
|
<body name="FL_hip" pos="0.1881 0.04675 0">
|
||||||
|
<inertial pos="-0.00406411 0.0193463 4.50733e-06" quat="0.531662 0.467526 -0.530431 0.466259" mass="0.679292" diaginertia="0.00131334 0.00122648 0.000728484" />
|
||||||
|
<joint name="FL_hip_joint" pos="0 0 0" axis="1 0 0" limited="true" range="-0.802851 0.802851" />
|
||||||
|
<geom type="mesh" contype="0" conaffinity="0" group="1" rgba="0.913725 0.913725 0.847059 1" mesh="hip" />
|
||||||
|
<geom size="0.046 0.02" pos="0 0.045 0" quat="0.707107 0.707107 0 0" type="cylinder" rgba="0.913725 0.913725 0.847059 0" />
|
||||||
|
<geom size="0.031 0.02" pos="0 0.07 0" quat="0.707107 0.707107 0 0" type="cylinder" rgba="0.913725 0.913725 0.847059 0" />
|
||||||
|
|
||||||
|
<body name="FL_thigh" pos="0 0.08 0">
|
||||||
|
<inertial pos="-0.003468 -0.018947 -0.032736" quat="0.999266 -0.00067676 -0.0382978 -0.000639813" mass="0.898919" diaginertia="0.00542178 0.00514246 0.000998869" />
|
||||||
|
<joint name="FL_thigh_joint" pos="0 0 0" axis="0 1 0" limited="true" range="-1.0472 4.18879" />
|
||||||
|
<geom type="mesh" contype="0" conaffinity="0" group="1" rgba="0.913725 0.913725 0.847059 1" mesh="thigh" />
|
||||||
|
<geom size="0.1065 0.01225 0.017" pos="0 0 -0.1065" quat="0.707107 0 0.707107 0" type="box" rgba="0.913725 0.913725 0.847059 0" />
|
||||||
|
<body name="FL_calf" pos="0 0 -0.213">
|
||||||
|
<inertial pos="0.00455603 0.0009473 -0.147239" quat="0.762045 0.00970173 0.0180098 0.647201" mass="0.218015" diaginertia="0.00399678 0.00398122 3.99428e-05" />
|
||||||
|
<joint name="FL_calf_joint" pos="0 0 0" axis="0 1 0" limited="true" range="-2.69653 -0.916298" />
|
||||||
|
<geom type="mesh" contype="0" conaffinity="0" group="1" rgba="0 0 0 1" mesh="calf" />
|
||||||
|
<geom size="0.1065 0.008 0.008" pos="0 0 -0.1065" quat="0.707107 0 0.707107 0" type="box" rgba="0.913725 0.913725 0.847059 0" />
|
||||||
|
<geom size="0.01" pos="0 0 -0.213" contype="0" conaffinity="0" group="1" rgba="0 0 0 1" />
|
||||||
|
<geom name="FL" size="0.02" pos="0 0 -0.213" rgba="0 0 0 1" />
|
||||||
|
<body name="FL_foot" pos="0 0 -0.213" />
|
||||||
|
</body>
|
||||||
|
</body>
|
||||||
|
</body>
|
||||||
|
<body name="RR_hip" pos="-0.1881 -0.04675 0">
|
||||||
|
<inertial pos="0.00406411 -0.0193463 4.50733e-06" quat="0.530431 0.466259 -0.531662 0.467526" mass="0.679292" diaginertia="0.00131334 0.00122648 0.000728484" />
|
||||||
|
<joint name="RR_hip_joint" pos="0 0 0" axis="1 0 0" limited="true" range="-0.802851 0.802851" />
|
||||||
|
<geom quat="0 0 0 -1" type="mesh" contype="0" conaffinity="0" group="1" rgba="0.913725 0.913725 0.847059 1" mesh="hip" />
|
||||||
|
<geom size="0.046 0.02" quat="0.707107 0.707107 0 0" type="cylinder" rgba="0.913725 0.913725 0.847059 1" />
|
||||||
|
<geom size="0.046 0.02" pos="0 -0.045 0" quat="0.707107 0.707107 0 0" type="cylinder" rgba="0.913725 0.913725 0.847059 0" />
|
||||||
|
<geom size="0.031 0.02" pos="0 -0.07 0" quat="0.707107 0.707107 0 0" type="cylinder" rgba="0.913725 0.913725 0.847059 0" />
|
||||||
|
|
||||||
|
<body name="RR_thigh" pos="0 -0.08 0">
|
||||||
|
<inertial pos="-0.003468 0.018947 -0.032736" quat="0.999266 0.00067676 -0.0382978 0.000639813" mass="0.898919" diaginertia="0.00542178 0.00514246 0.000998869" />
|
||||||
|
<joint name="RR_thigh_joint" pos="0 0 0" axis="0 1 0" limited="true" range="-1.0472 4.18879" />
|
||||||
|
<geom type="mesh" contype="0" conaffinity="0" group="1" rgba="0.913725 0.913725 0.847059 1" mesh="thigh_mirror" />
|
||||||
|
<geom size="0.1065 0.01225 0.017" pos="0 0 -0.1065" quat="0.707107 0 0.707107 0" type="box" rgba="0.913725 0.913725 0.847059 0" />
|
||||||
|
<body name="RR_calf" pos="0 0 -0.213">
|
||||||
|
<inertial pos="0.00455603 0.0009473 -0.147239" quat="0.762045 0.00970173 0.0180098 0.647201" mass="0.218015" diaginertia="0.00399678 0.00398122 3.99428e-05" />
|
||||||
|
<joint name="RR_calf_joint" pos="0 0 0" axis="0 1 0" limited="true" range="-2.69653 -0.916298" />
|
||||||
|
<geom type="mesh" contype="0" conaffinity="0" group="1" rgba="0 0 0 1" mesh="calf" />
|
||||||
|
<geom size="0.1065 0.008 0.008" pos="0 0 -0.1065" quat="0.707107 0 0.707107 0" type="box" rgba="0 0 0 0" />
|
||||||
|
<geom size="0.01" pos="0 0 -0.213" contype="0" conaffinity="0" group="1" rgba="0 0 0 1" />
|
||||||
|
<geom name="RR" size="0.02" pos="0 0 -0.213" rgba="0 0 0 1" />
|
||||||
|
<body name="RR_foot" pos="0 0 -0.213" />
|
||||||
|
</body>
|
||||||
|
</body>
|
||||||
|
</body>
|
||||||
|
<body name="RL_hip" pos="-0.1881 0.04675 0">
|
||||||
|
<inertial pos="0.00406411 0.0193463 4.50733e-06" quat="0.466259 0.530431 -0.467526 0.531662" mass="0.679292" diaginertia="0.00131334 0.00122648 0.000728484" />
|
||||||
|
<joint name="RL_hip_joint" pos="0 0 0" axis="1 0 0" limited="true" range="-0.802851 0.802851" />
|
||||||
|
<geom quat="0 0 1 0" type="mesh" contype="0" conaffinity="0" group="1" rgba="0.913725 0.913725 0.847059 1" mesh="hip" />
|
||||||
|
<geom size="0.046 0.02" quat="0.707107 0.707107 0 0" type="cylinder" rgba="0.913725 0.913725 0.847059 1" />
|
||||||
|
<geom size="0.046 0.02" pos="0 0.045 0" quat="0.707107 0.707107 0 0" type="cylinder" rgba="0.913725 0.913725 0.847059 0" />
|
||||||
|
<geom size="0.031 0.02" pos="0 0.07 0" quat="0.707107 0.707107 0 0" type="cylinder" rgba="0.913725 0.913725 0.847059 0" />
|
||||||
|
|
||||||
|
<body name="RL_thigh" pos="0 0.08 0">
|
||||||
|
<inertial pos="-0.003468 -0.018947 -0.032736" quat="0.999266 -0.00067676 -0.0382978 -0.000639813" mass="0.898919" diaginertia="0.00542178 0.00514246 0.000998869" />
|
||||||
|
<joint name="RL_thigh_joint" pos="0 0 0" axis="0 1 0" limited="true" range="-1.0472 4.18879" />
|
||||||
|
<geom type="mesh" contype="0" conaffinity="0" group="1" rgba="0.913725 0.913725 0.847059 1" mesh="thigh" />
|
||||||
|
<geom size="0.1065 0.01225 0.017" pos="0 0 -0.1065" quat="0.707107 0 0.707107 0" type="box" rgba="0.913725 0.913725 0.847059 0" />
|
||||||
|
<body name="RL_calf" pos="0 0 -0.213">
|
||||||
|
<inertial pos="0.00455603 0.0009473 -0.147239" quat="0.762045 0.00970173 0.0180098 0.647201" mass="0.218015" diaginertia="0.00399678 0.00398122 3.99428e-05" />
|
||||||
|
<joint name="RL_calf_joint" pos="0 0 0" axis="0 1 0" limited="true" range="-2.69653 -0.916298" />
|
||||||
|
<geom type="mesh" contype="0" conaffinity="0" group="1" rgba="0 0 0 1" mesh="calf" />
|
||||||
|
<geom size="0.1065 0.008 0.008" pos="0 0 -0.1065" quat="0.707107 0 0.707107 0" type="box" rgba="0 0 0 0" />
|
||||||
|
<geom size="0.01" pos="0 0 -0.213" contype="0" conaffinity="0" group="1" rgba="0 0 0 1" />
|
||||||
|
<geom name="RL" size="0.02" pos="0 0 -0.213" rgba="0 0 0 1" />
|
||||||
|
<body name="RL_foot" pos="0 0 -0.213" />
|
||||||
|
</body>
|
||||||
|
</body>
|
||||||
|
</body>
|
||||||
|
</body>
|
||||||
|
</worldbody>
|
||||||
|
<actuator>
|
||||||
|
|
||||||
|
<motor name="FR_hip" gear="1" joint="FR_hip_joint"/>
|
||||||
|
<motor name="FR_thigh" gear="1" joint="FR_thigh_joint"/>
|
||||||
|
<motor name="FR_calf" gear="1" joint="FR_calf_joint"/>
|
||||||
|
<motor name="FL_hip" gear="1" joint="FL_hip_joint"/>
|
||||||
|
<motor name="FL_thigh" gear="1" joint="FL_thigh_joint"/>
|
||||||
|
<motor name="FL_calf" gear="1" joint="FL_calf_joint"/>
|
||||||
|
<motor name="RR_hip" gear="1" joint="RR_hip_joint"/>
|
||||||
|
<motor name="RR_thigh" gear="1" joint="RR_thigh_joint"/>
|
||||||
|
<motor name="RR_calf" gear="1" joint="RR_calf_joint" />
|
||||||
|
<motor name="RL_hip" gear="1" joint="RL_hip_joint"/>
|
||||||
|
<motor name="RL_thigh" gear="1" joint="RL_thigh_joint"/>
|
||||||
|
<motor name="RL_calf" gear="1" joint="RL_calf_joint"/>
|
||||||
|
</actuator>
|
||||||
|
|
||||||
|
<sensor>
|
||||||
|
|
||||||
|
<jointpos name="FR_hip_pos" joint="FR_hip_joint"/>
|
||||||
|
<jointpos name="FR_thigh_pos" joint="FR_thigh_joint"/>
|
||||||
|
<jointpos name="FR_calf_pos" joint="FR_calf_joint"/>
|
||||||
|
<jointpos name="FL_hip_pos" joint="FL_hip_joint"/>
|
||||||
|
<jointpos name="FL_thigh_pos" joint="FL_thigh_joint"/>
|
||||||
|
<jointpos name="FL_calf_pos" joint="FL_calf_joint"/>
|
||||||
|
<jointpos name="RR_hip_pos" joint="RR_hip_joint"/>
|
||||||
|
<jointpos name="RR_thigh_pos" joint="RR_thigh_joint"/>
|
||||||
|
<jointpos name="RR_calf_pos" joint="RR_calf_joint" />
|
||||||
|
<jointpos name="RL_hip_pos" joint="RL_hip_joint"/>
|
||||||
|
<jointpos name="RL_thigh_pos" joint="RL_thigh_joint"/>
|
||||||
|
<jointpos name="RL_calf_pos" joint="RL_calf_joint"/>
|
||||||
|
|
||||||
|
<jointvel name="FR_hip_vel" joint="FR_hip_joint"/>
|
||||||
|
<jointvel name="FR_thigh_vel" joint="FR_thigh_joint"/>
|
||||||
|
<jointvel name="FR_calf_vel" joint="FR_calf_joint"/>
|
||||||
|
<jointvel name="FL_hip_vel" joint="FL_hip_joint"/>
|
||||||
|
<jointvel name="FL_thigh_vel" joint="FL_thigh_joint"/>
|
||||||
|
<jointvel name="FL_calf_vel" joint="FL_calf_joint"/>
|
||||||
|
<jointvel name="RR_hip_vel" joint="RR_hip_joint"/>
|
||||||
|
<jointvel name="RR_thigh_vel" joint="RR_thigh_joint"/>
|
||||||
|
<jointvel name="RR_calf_vel" joint="RR_calf_joint" />
|
||||||
|
<jointvel name="RL_hip_vel" joint="RL_hip_joint"/>
|
||||||
|
<jointvel name="RL_thigh_vel" joint="RL_thigh_joint"/>
|
||||||
|
<jointvel name="RL_calf_vel" joint="RL_calf_joint"/>
|
||||||
|
|
||||||
|
<jointactuatorfrc name="FR_hip_torque" joint="FR_hip_joint" />
|
||||||
|
<jointactuatorfrc name="FR_thigh_torque" joint="FR_thigh_joint" />
|
||||||
|
<jointactuatorfrc name="FR_calf_torque" joint="FR_calf_joint" />
|
||||||
|
<jointactuatorfrc name="FL_hip_torque" joint="FL_hip_joint" />
|
||||||
|
<jointactuatorfrc name="FL_thigh_torque" joint="FL_thigh_joint" />
|
||||||
|
<jointactuatorfrc name="FL_calf_torque" joint="FL_calf_joint" />
|
||||||
|
<jointactuatorfrc name="RR_hip_torque" joint="RR_hip_joint" />
|
||||||
|
<jointactuatorfrc name="RR_thigh_torque" joint="RR_thigh_joint" />
|
||||||
|
<jointactuatorfrc name="RR_calf_torque" joint="RR_calf_joint" />
|
||||||
|
<jointactuatorfrc name="RL_hip_torque" joint="RL_hip_joint" />
|
||||||
|
<jointactuatorfrc name="RL_thigh_torque" joint="RL_thigh_joint" />
|
||||||
|
<jointactuatorfrc name="RL_calf_torque" joint="RL_calf_joint" />
|
||||||
|
|
||||||
|
<accelerometer name="Body_Acc" site="imu"/>
|
||||||
|
|
||||||
|
<gyro name="Body_Gyro" site="imu"/>
|
||||||
|
|
||||||
|
<framepos name="Body_Pos" objtype="site" objname="imu"/>
|
||||||
|
|
||||||
|
<framelinvel name="Body_LinVel" objtype="site" objname="imu"/>
|
||||||
|
|
||||||
|
<framequat name="Body_Quat" objtype="site" objname="imu"/>
|
||||||
|
|
||||||
|
|
||||||
|
</sensor>
|
||||||
|
</mujoco>
|
||||||
BIN
deploy_45dim_rl_gym/policy_15k.onnx
Normal file
BIN
deploy_45dim_rl_gym/policy_15k.onnx
Normal file
Binary file not shown.
BIN
deploy_45dim_rl_gym/policy_25k.onnx
Normal file
BIN
deploy_45dim_rl_gym/policy_25k.onnx
Normal file
Binary file not shown.
23
deploy_45dim_rl_gym/terrains/flat.xml
Normal file
23
deploy_45dim_rl_gym/terrains/flat.xml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<mujoco model="flat">
|
||||||
|
<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"/>
|
||||||
|
<global offwidth="1920" offheight="1080"/>
|
||||||
|
</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"/>
|
||||||
|
<material name="sponge_mat" rgba="0.9 0.9 0.2 1" reflectance="0.1"/>
|
||||||
|
</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"/>
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
23
deploy_45dim_rl_gym/terrains/obstacle/obstacle_1.xml
Normal file
23
deploy_45dim_rl_gym/terrains/obstacle/obstacle_1.xml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<mujoco model="obstacle_1">
|
||||||
|
<!-- Terrain Type: obstacle, Level: 1, Obstacle height: 0.0730, length: 1.0000, gap: 1.0000 -->
|
||||||
|
<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.0" />
|
||||||
|
</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" />
|
||||||
|
<geom pos="1.5 0.0 0.036500000000000005" type="box" size="0.5 5.0 0.036500000000000005" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.5 0.0 0.036500000000000005" type="box" size="0.5 5.0 0.036500000000000005" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.5 0.0 0.036500000000000005" type="box" size="0.5 5.0 0.036500000000000005" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.5 0.0 0.036500000000000005" type="box" size="0.5 5.0 0.036500000000000005" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.5 0.0 0.036500000000000005" type="box" size="0.5 5.0 0.036500000000000005" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
23
deploy_45dim_rl_gym/terrains/obstacle/obstacle_10.xml
Normal file
23
deploy_45dim_rl_gym/terrains/obstacle/obstacle_10.xml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<mujoco model="obstacle_10">
|
||||||
|
<!-- Terrain Type: obstacle, Level: 10, Obstacle height: 0.2800, length: 1.0000, gap: 1.0000 -->
|
||||||
|
<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.0" />
|
||||||
|
</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" />
|
||||||
|
<geom pos="1.5 0.0 0.14" type="box" size="0.5 5.0 0.14" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.5 0.0 0.14" type="box" size="0.5 5.0 0.14" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.5 0.0 0.14" type="box" size="0.5 5.0 0.14" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.5 0.0 0.14" type="box" size="0.5 5.0 0.14" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.5 0.0 0.14" type="box" size="0.5 5.0 0.14" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
23
deploy_45dim_rl_gym/terrains/obstacle/obstacle_2.xml
Normal file
23
deploy_45dim_rl_gym/terrains/obstacle/obstacle_2.xml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<mujoco model="obstacle_2">
|
||||||
|
<!-- Terrain Type: obstacle, Level: 2, Obstacle height: 0.0960, length: 1.0000, gap: 1.0000 -->
|
||||||
|
<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.0" />
|
||||||
|
</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" />
|
||||||
|
<geom pos="1.5 0.0 0.048" type="box" size="0.5 5.0 0.048" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.5 0.0 0.048" type="box" size="0.5 5.0 0.048" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.5 0.0 0.048" type="box" size="0.5 5.0 0.048" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.5 0.0 0.048" type="box" size="0.5 5.0 0.048" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.5 0.0 0.048" type="box" size="0.5 5.0 0.048" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
23
deploy_45dim_rl_gym/terrains/obstacle/obstacle_3.xml
Normal file
23
deploy_45dim_rl_gym/terrains/obstacle/obstacle_3.xml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<mujoco model="obstacle_3">
|
||||||
|
<!-- Terrain Type: obstacle, Level: 3, Obstacle height: 0.1190, length: 1.0000, gap: 1.0000 -->
|
||||||
|
<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.0" />
|
||||||
|
</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" />
|
||||||
|
<geom pos="1.5 0.0 0.059500000000000004" type="box" size="0.5 5.0 0.059500000000000004" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.5 0.0 0.059500000000000004" type="box" size="0.5 5.0 0.059500000000000004" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.5 0.0 0.059500000000000004" type="box" size="0.5 5.0 0.059500000000000004" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.5 0.0 0.059500000000000004" type="box" size="0.5 5.0 0.059500000000000004" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.5 0.0 0.059500000000000004" type="box" size="0.5 5.0 0.059500000000000004" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
23
deploy_45dim_rl_gym/terrains/obstacle/obstacle_4.xml
Normal file
23
deploy_45dim_rl_gym/terrains/obstacle/obstacle_4.xml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<mujoco model="obstacle_4">
|
||||||
|
<!-- Terrain Type: obstacle, Level: 4, Obstacle height: 0.1420, length: 1.0000, gap: 1.0000 -->
|
||||||
|
<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.0" />
|
||||||
|
</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" />
|
||||||
|
<geom pos="1.5 0.0 0.07100000000000001" type="box" size="0.5 5.0 0.07100000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.5 0.0 0.07100000000000001" type="box" size="0.5 5.0 0.07100000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.5 0.0 0.07100000000000001" type="box" size="0.5 5.0 0.07100000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.5 0.0 0.07100000000000001" type="box" size="0.5 5.0 0.07100000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.5 0.0 0.07100000000000001" type="box" size="0.5 5.0 0.07100000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
23
deploy_45dim_rl_gym/terrains/obstacle/obstacle_5.xml
Normal file
23
deploy_45dim_rl_gym/terrains/obstacle/obstacle_5.xml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<mujoco model="obstacle_5">
|
||||||
|
<!-- Terrain Type: obstacle, Level: 5, Obstacle height: 0.1650, length: 1.0000, gap: 1.0000 -->
|
||||||
|
<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.0" />
|
||||||
|
</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" />
|
||||||
|
<geom pos="1.5 0.0 0.0825" type="box" size="0.5 5.0 0.0825" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.5 0.0 0.0825" type="box" size="0.5 5.0 0.0825" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.5 0.0 0.0825" type="box" size="0.5 5.0 0.0825" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.5 0.0 0.0825" type="box" size="0.5 5.0 0.0825" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.5 0.0 0.0825" type="box" size="0.5 5.0 0.0825" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
23
deploy_45dim_rl_gym/terrains/obstacle/obstacle_6.xml
Normal file
23
deploy_45dim_rl_gym/terrains/obstacle/obstacle_6.xml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<mujoco model="obstacle_6">
|
||||||
|
<!-- Terrain Type: obstacle, Level: 6, Obstacle height: 0.1880, length: 1.0000, gap: 1.0000 -->
|
||||||
|
<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.0" />
|
||||||
|
</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" />
|
||||||
|
<geom pos="1.5 0.0 0.094" type="box" size="0.5 5.0 0.094" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.5 0.0 0.094" type="box" size="0.5 5.0 0.094" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.5 0.0 0.094" type="box" size="0.5 5.0 0.094" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.5 0.0 0.094" type="box" size="0.5 5.0 0.094" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.5 0.0 0.094" type="box" size="0.5 5.0 0.094" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
23
deploy_45dim_rl_gym/terrains/obstacle/obstacle_7.xml
Normal file
23
deploy_45dim_rl_gym/terrains/obstacle/obstacle_7.xml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<mujoco model="obstacle_7">
|
||||||
|
<!-- Terrain Type: obstacle, Level: 7, Obstacle height: 0.2110, length: 1.0000, gap: 1.0000 -->
|
||||||
|
<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.0" />
|
||||||
|
</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" />
|
||||||
|
<geom pos="1.5 0.0 0.10550000000000001" type="box" size="0.5 5.0 0.10550000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.5 0.0 0.10550000000000001" type="box" size="0.5 5.0 0.10550000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.5 0.0 0.10550000000000001" type="box" size="0.5 5.0 0.10550000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.5 0.0 0.10550000000000001" type="box" size="0.5 5.0 0.10550000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.5 0.0 0.10550000000000001" type="box" size="0.5 5.0 0.10550000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
23
deploy_45dim_rl_gym/terrains/obstacle/obstacle_8.xml
Normal file
23
deploy_45dim_rl_gym/terrains/obstacle/obstacle_8.xml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<mujoco model="obstacle_8">
|
||||||
|
<!-- Terrain Type: obstacle, Level: 8, Obstacle height: 0.2340, length: 1.0000, gap: 1.0000 -->
|
||||||
|
<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.0" />
|
||||||
|
</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" />
|
||||||
|
<geom pos="1.5 0.0 0.11700000000000002" type="box" size="0.5 5.0 0.11700000000000002" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.5 0.0 0.11700000000000002" type="box" size="0.5 5.0 0.11700000000000002" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.5 0.0 0.11700000000000002" type="box" size="0.5 5.0 0.11700000000000002" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.5 0.0 0.11700000000000002" type="box" size="0.5 5.0 0.11700000000000002" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.5 0.0 0.11700000000000002" type="box" size="0.5 5.0 0.11700000000000002" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
23
deploy_45dim_rl_gym/terrains/obstacle/obstacle_9.xml
Normal file
23
deploy_45dim_rl_gym/terrains/obstacle/obstacle_9.xml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<mujoco model="obstacle_9">
|
||||||
|
<!-- Terrain Type: obstacle, Level: 9, Obstacle height: 0.2570, length: 1.0000, gap: 1.0000 -->
|
||||||
|
<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.0" />
|
||||||
|
</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" />
|
||||||
|
<geom pos="1.5 0.0 0.1285" type="box" size="0.5 5.0 0.1285" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.5 0.0 0.1285" type="box" size="0.5 5.0 0.1285" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.5 0.0 0.1285" type="box" size="0.5 5.0 0.1285" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.5 0.0 0.1285" type="box" size="0.5 5.0 0.1285" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.5 0.0 0.1285" type="box" size="0.5 5.0 0.1285" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
19
deploy_45dim_rl_gym/terrains/slope/slope_1.xml
Normal file
19
deploy_45dim_rl_gym/terrains/slope/slope_1.xml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
<mujoco model="slope_1">
|
||||||
|
<!-- Terrain Type: slope, Level: 1, Slope angle (degrees): 8.3626 -->
|
||||||
|
<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.0" />
|
||||||
|
</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" />
|
||||||
|
<geom pos="5.872718512065541 0.0 0.24031624445210087" type="box" size="5.053733768215338 5.0 0.5" quat="0.9973383355451144 0.0 -0.07291258089041118 0.0" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
19
deploy_45dim_rl_gym/terrains/slope/slope_10.xml
Normal file
19
deploy_45dim_rl_gym/terrains/slope/slope_10.xml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
<mujoco model="slope_10">
|
||||||
|
<!-- Terrain Type: slope, Level: 10, Slope angle (degrees): 29.6831 -->
|
||||||
|
<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.0" />
|
||||||
|
</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" />
|
||||||
|
<geom pos="6.047601522004908 0.0 2.4156113649036692" type="box" size="5.755215026391282 5.0 0.5" quat="0.9666377993314406 0.0 -0.25614715478347516 0.0" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
19
deploy_45dim_rl_gym/terrains/slope/slope_2.xml
Normal file
19
deploy_45dim_rl_gym/terrains/slope/slope_2.xml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
<mujoco model="slope_2">
|
||||||
|
<!-- Terrain Type: slope, Level: 2, Slope angle (degrees): 10.9790 -->
|
||||||
|
<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.0" />
|
||||||
|
</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" />
|
||||||
|
<geom pos="5.895224613549555 0.0 0.47915147654868323" type="box" size="5.093220984799305 5.0 0.5" quat="0.9954137448575425 0.0 -0.09566335008080826 0.0" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
19
deploy_45dim_rl_gym/terrains/slope/slope_3.xml
Normal file
19
deploy_45dim_rl_gym/terrains/slope/slope_3.xml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
<mujoco model="slope_3">
|
||||||
|
<!-- Terrain Type: slope, Level: 3, Slope angle (degrees): 13.5499 -->
|
||||||
|
<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.0" />
|
||||||
|
</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" />
|
||||||
|
<geom pos="5.917146033713848 0.0 0.7189168725566442" type="box" size="5.143153215683935 5.0 0.5" quat="0.9930171838610629 0.0 -0.11796979510300112 0.0" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
19
deploy_45dim_rl_gym/terrains/slope/slope_4.xml
Normal file
19
deploy_45dim_rl_gym/terrains/slope/slope_4.xml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
<mujoco model="slope_4">
|
||||||
|
<!-- Terrain Type: slope, Level: 4, Slope angle (degrees): 16.0664 -->
|
||||||
|
<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.0" />
|
||||||
|
</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" />
|
||||||
|
<geom pos="5.938375592151506 0.0 0.9595291939183819" type="box" size="5.20322976621252 5.0 0.5" quat="0.9901872580889023 0.0 -0.13974689233890575 0.0" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
19
deploy_45dim_rl_gym/terrains/slope/slope_5.xml
Normal file
19
deploy_45dim_rl_gym/terrains/slope/slope_5.xml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
<mujoco model="slope_5">
|
||||||
|
<!-- Terrain Type: slope, Level: 5, Slope angle (degrees): 18.5208 -->
|
||||||
|
<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.0" />
|
||||||
|
</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" />
|
||||||
|
<geom pos="5.958824861404184 0.0 1.2008959361069116" type="box" size="5.273103924634901 5.0 0.5" quat="0.9869671037542681 0.0 -0.16092214299751198 0.0" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
19
deploy_45dim_rl_gym/terrains/slope/slope_6.xml
Normal file
19
deploy_45dim_rl_gym/terrains/slope/slope_6.xml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
<mujoco model="slope_6">
|
||||||
|
<!-- Terrain Type: slope, Level: 6, Slope angle (degrees): 20.9069 -->
|
||||||
|
<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.0" />
|
||||||
|
</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" />
|
||||||
|
<geom pos="5.9784248990036355 0.0 1.4429191125559275" type="box" size="5.352391988634614 5.0 0.5" quat="0.9834027086824972 0.0 -0.18143624928863425 0.0" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
19
deploy_45dim_rl_gym/terrains/slope/slope_7.xml
Normal file
19
deploy_45dim_rl_gym/terrains/slope/slope_7.xml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
<mujoco model="slope_7">
|
||||||
|
<!-- Terrain Type: slope, Level: 7, Slope angle (degrees): 23.2193 -->
|
||||||
|
<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.0" />
|
||||||
|
</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" />
|
||||||
|
<geom pos="5.9971260075014605 0.0 1.685498817012911" type="box" size="5.440682402052154 5.0 0.5" quat="0.9795413125474028 0.0 -0.20124317879846595 0.0" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
19
deploy_45dim_rl_gym/terrains/slope/slope_8.xml
Normal file
19
deploy_45dim_rl_gym/terrains/slope/slope_8.xml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
<mujoco model="slope_8">
|
||||||
|
<!-- Terrain Type: slope, Level: 8, Slope angle (degrees): 25.4544 -->
|
||||||
|
<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.0" />
|
||||||
|
</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" />
|
||||||
|
<geom pos="6.01489668973904 0.0 1.9285363660944521" type="box" size="5.537544582213312 5.0 0.5" quat="0.9754299738605267 0.0 -0.22030970494840266 0.0" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
19
deploy_45dim_rl_gym/terrains/slope/slope_9.xml
Normal file
19
deploy_45dim_rl_gym/terrains/slope/slope_9.xml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
<mujoco model="slope_9">
|
||||||
|
<!-- Terrain Type: slope, Level: 9, Slope angle (degrees): 27.6096 -->
|
||||||
|
<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.0" />
|
||||||
|
</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" />
|
||||||
|
<geom pos="6.031722002936844 0.0 2.17193689687028" type="box" size="5.642537106656898 5.0 0.5" quat="0.9711143615093542 0.0 -0.23861453616718223 0.0" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
23
deploy_45dim_rl_gym/terrains/slope_5.xml
Normal file
23
deploy_45dim_rl_gym/terrains/slope_5.xml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<!-- slope=0.1+0.8*0.5/0.9=0.54, 28.56 degree -->
|
||||||
|
<mujoco model="slope_5">
|
||||||
|
<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" />
|
||||||
|
<global offwidth="1920" offheight="1080"/>
|
||||||
|
</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.0" />
|
||||||
|
</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" />
|
||||||
|
<geom pos="3.2397127693021015 0.0 0.6538136987423946" type="box" size="2.278987854649098 5.0 0.5" quat="0.9689124217106447 0.0 -0.24740395925452294 0.0" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
23
deploy_45dim_rl_gym/terrains/slope_5_old.xml
Normal file
23
deploy_45dim_rl_gym/terrains/slope_5_old.xml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<!-- slope=0.1+0.8*0.5/0.9=0.54, 28.56 degree -->
|
||||||
|
<mujoco model="slope_5">
|
||||||
|
<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" />
|
||||||
|
<global offwidth="1920" offheight="1080"/>
|
||||||
|
</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.0" />
|
||||||
|
</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" />
|
||||||
|
<geom pos="3.1101988717280613 0.0 -0.03579718002765875" type="box" size="2.050419643960795 5.0 0.5" quat="0.993833508538892 0.0 -0.110882628509953 0.0" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
51
deploy_45dim_rl_gym/terrains/stairs/stairs_1.xml
Normal file
51
deploy_45dim_rl_gym/terrains/stairs/stairs_1.xml
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
<mujoco model="stairs_1">
|
||||||
|
<!-- Terrain Type: stairs, Level: 1, Stairs step height: 0.0800 -->
|
||||||
|
<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.0" />
|
||||||
|
</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" />
|
||||||
|
<geom pos="0.155 0.0 0.04" type="box" size="0.186 5.0 0.04" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="0.46499999999999997 0.0 0.12" type="box" size="0.186 5.0 0.04" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="0.7749999999999999 0.0 0.2" type="box" size="0.186 5.0 0.04" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="1.085 0.0 0.28" type="box" size="0.186 5.0 0.04" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="1.395 0.0 0.36000000000000004" type="box" size="0.186 5.0 0.04" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="1.705 0.0 0.44000000000000006" type="box" size="0.186 5.0 0.04" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.015 0.0 0.52" type="box" size="0.186 5.0 0.04" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.325 0.0 0.6" type="box" size="0.186 5.0 0.04" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.6350000000000002 0.0 0.6799999999999999" type="box" size="0.186 5.0 0.04" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.9450000000000003 0.0 0.7599999999999999" type="box" size="0.186 5.0 0.04" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.2550000000000003 0.0 0.8399999999999999" type="box" size="0.186 5.0 0.04" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.5650000000000004 0.0 0.9199999999999998" type="box" size="0.186 5.0 0.04" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.8750000000000004 0.0 0.9999999999999998" type="box" size="0.186 5.0 0.04" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="4.1850000000000005 0.0 1.0799999999999998" type="box" size="0.186 5.0 0.04" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="4.495 0.0 1.16" type="box" size="0.186 5.0 0.04" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="4.805 0.0 1.24" type="box" size="0.186 5.0 0.04" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.114999999999999 0.0 1.32" type="box" size="0.186 5.0 0.04" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.424999999999999 0.0 1.4000000000000001" type="box" size="0.186 5.0 0.04" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.7349999999999985 0.0 1.4800000000000002" type="box" size="0.186 5.0 0.04" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.044999999999998 0.0 1.5600000000000003" type="box" size="0.186 5.0 0.04" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.354999999999998 0.0 1.6400000000000003" type="box" size="0.186 5.0 0.04" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.664999999999997 0.0 1.7200000000000004" type="box" size="0.186 5.0 0.04" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.974999999999997 0.0 1.8000000000000005" type="box" size="0.186 5.0 0.04" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.284999999999997 0.0 1.8800000000000006" type="box" size="0.186 5.0 0.04" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.594999999999996 0.0 1.9600000000000006" type="box" size="0.186 5.0 0.04" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.904999999999996 0.0 2.0400000000000005" type="box" size="0.186 5.0 0.04" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="8.214999999999996 0.0 2.1200000000000006" type="box" size="0.186 5.0 0.04" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="8.524999999999997 0.0 2.2000000000000006" type="box" size="0.186 5.0 0.04" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="8.834999999999997 0.0 2.2800000000000007" type="box" size="0.186 5.0 0.04" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.144999999999998 0.0 2.3600000000000008" type="box" size="0.186 5.0 0.04" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.454999999999998 0.0 2.440000000000001" type="box" size="0.186 5.0 0.04" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.764999999999999 0.0 2.520000000000001" type="box" size="0.186 5.0 0.04" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="10.075 0.0 2.600000000000001" type="box" size="0.186 5.0 0.04" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
51
deploy_45dim_rl_gym/terrains/stairs/stairs_10.xml
Normal file
51
deploy_45dim_rl_gym/terrains/stairs/stairs_10.xml
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
<mujoco model="stairs_10">
|
||||||
|
<!-- Terrain Type: stairs, Level: 10, Stairs step height: 0.2300 -->
|
||||||
|
<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.0" />
|
||||||
|
</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" />
|
||||||
|
<geom pos="0.155 0.0 0.115" type="box" size="0.186 5.0 0.115" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="0.46499999999999997 0.0 0.34500000000000003" type="box" size="0.186 5.0 0.115" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="0.7749999999999999 0.0 0.5750000000000001" type="box" size="0.186 5.0 0.115" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="1.085 0.0 0.805" type="box" size="0.186 5.0 0.115" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="1.395 0.0 1.0350000000000001" type="box" size="0.186 5.0 0.115" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="1.705 0.0 1.2650000000000001" type="box" size="0.186 5.0 0.115" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.015 0.0 1.495" type="box" size="0.186 5.0 0.115" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.325 0.0 1.725" type="box" size="0.186 5.0 0.115" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.6350000000000002 0.0 1.955" type="box" size="0.186 5.0 0.115" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.9450000000000003 0.0 2.185" type="box" size="0.186 5.0 0.115" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.2550000000000003 0.0 2.415" type="box" size="0.186 5.0 0.115" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.5650000000000004 0.0 2.645" type="box" size="0.186 5.0 0.115" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.8750000000000004 0.0 2.875" type="box" size="0.186 5.0 0.115" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="4.1850000000000005 0.0 3.105" type="box" size="0.186 5.0 0.115" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="4.495 0.0 3.335" type="box" size="0.186 5.0 0.115" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="4.805 0.0 3.565" type="box" size="0.186 5.0 0.115" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.114999999999999 0.0 3.795" type="box" size="0.186 5.0 0.115" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.424999999999999 0.0 4.025" type="box" size="0.186 5.0 0.115" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.7349999999999985 0.0 4.255000000000001" type="box" size="0.186 5.0 0.115" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.044999999999998 0.0 4.485000000000001" type="box" size="0.186 5.0 0.115" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.354999999999998 0.0 4.715000000000002" type="box" size="0.186 5.0 0.115" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.664999999999997 0.0 4.945000000000002" type="box" size="0.186 5.0 0.115" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.974999999999997 0.0 5.1750000000000025" type="box" size="0.186 5.0 0.115" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.284999999999997 0.0 5.405000000000003" type="box" size="0.186 5.0 0.115" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.594999999999996 0.0 5.635000000000003" type="box" size="0.186 5.0 0.115" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.904999999999996 0.0 5.865000000000004" type="box" size="0.186 5.0 0.115" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="8.214999999999996 0.0 6.095000000000004" type="box" size="0.186 5.0 0.115" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="8.524999999999997 0.0 6.325000000000005" type="box" size="0.186 5.0 0.115" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="8.834999999999997 0.0 6.555000000000005" type="box" size="0.186 5.0 0.115" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.144999999999998 0.0 6.7850000000000055" type="box" size="0.186 5.0 0.115" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.454999999999998 0.0 7.015000000000006" type="box" size="0.186 5.0 0.115" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.764999999999999 0.0 7.245000000000006" type="box" size="0.186 5.0 0.115" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="10.075 0.0 7.475000000000007" type="box" size="0.186 5.0 0.115" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
51
deploy_45dim_rl_gym/terrains/stairs/stairs_2.xml
Normal file
51
deploy_45dim_rl_gym/terrains/stairs/stairs_2.xml
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
<mujoco model="stairs_2">
|
||||||
|
<!-- Terrain Type: stairs, Level: 2, Stairs step height: 0.1100 -->
|
||||||
|
<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.0" />
|
||||||
|
</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" />
|
||||||
|
<geom pos="0.155 0.0 0.055" type="box" size="0.186 5.0 0.055" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="0.46499999999999997 0.0 0.165" type="box" size="0.186 5.0 0.055" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="0.7749999999999999 0.0 0.275" type="box" size="0.186 5.0 0.055" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="1.085 0.0 0.385" type="box" size="0.186 5.0 0.055" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="1.395 0.0 0.495" type="box" size="0.186 5.0 0.055" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="1.705 0.0 0.605" type="box" size="0.186 5.0 0.055" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.015 0.0 0.715" type="box" size="0.186 5.0 0.055" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.325 0.0 0.825" type="box" size="0.186 5.0 0.055" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.6350000000000002 0.0 0.9349999999999999" type="box" size="0.186 5.0 0.055" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.9450000000000003 0.0 1.045" type="box" size="0.186 5.0 0.055" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.2550000000000003 0.0 1.155" type="box" size="0.186 5.0 0.055" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.5650000000000004 0.0 1.2650000000000001" type="box" size="0.186 5.0 0.055" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.8750000000000004 0.0 1.3750000000000002" type="box" size="0.186 5.0 0.055" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="4.1850000000000005 0.0 1.4850000000000003" type="box" size="0.186 5.0 0.055" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="4.495 0.0 1.5950000000000004" type="box" size="0.186 5.0 0.055" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="4.805 0.0 1.7050000000000005" type="box" size="0.186 5.0 0.055" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.114999999999999 0.0 1.8150000000000006" type="box" size="0.186 5.0 0.055" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.424999999999999 0.0 1.9250000000000007" type="box" size="0.186 5.0 0.055" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.7349999999999985 0.0 2.0350000000000006" type="box" size="0.186 5.0 0.055" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.044999999999998 0.0 2.1450000000000005" type="box" size="0.186 5.0 0.055" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.354999999999998 0.0 2.2550000000000003" type="box" size="0.186 5.0 0.055" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.664999999999997 0.0 2.365" type="box" size="0.186 5.0 0.055" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.974999999999997 0.0 2.475" type="box" size="0.186 5.0 0.055" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.284999999999997 0.0 2.585" type="box" size="0.186 5.0 0.055" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.594999999999996 0.0 2.695" type="box" size="0.186 5.0 0.055" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.904999999999996 0.0 2.8049999999999997" type="box" size="0.186 5.0 0.055" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="8.214999999999996 0.0 2.9149999999999996" type="box" size="0.186 5.0 0.055" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="8.524999999999997 0.0 3.0249999999999995" type="box" size="0.186 5.0 0.055" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="8.834999999999997 0.0 3.1349999999999993" type="box" size="0.186 5.0 0.055" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.144999999999998 0.0 3.244999999999999" type="box" size="0.186 5.0 0.055" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.454999999999998 0.0 3.354999999999999" type="box" size="0.186 5.0 0.055" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.764999999999999 0.0 3.464999999999999" type="box" size="0.186 5.0 0.055" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="10.075 0.0 3.574999999999999" type="box" size="0.186 5.0 0.055" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
51
deploy_45dim_rl_gym/terrains/stairs/stairs_3.xml
Normal file
51
deploy_45dim_rl_gym/terrains/stairs/stairs_3.xml
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
<mujoco model="stairs_3">
|
||||||
|
<!-- Terrain Type: stairs, Level: 3, Stairs step height: 0.1400 -->
|
||||||
|
<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.0" />
|
||||||
|
</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" />
|
||||||
|
<geom pos="0.155 0.0 0.07" type="box" size="0.186 5.0 0.07" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="0.46499999999999997 0.0 0.21000000000000002" type="box" size="0.186 5.0 0.07" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="0.7749999999999999 0.0 0.35000000000000003" type="box" size="0.186 5.0 0.07" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="1.085 0.0 0.49000000000000005" type="box" size="0.186 5.0 0.07" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="1.395 0.0 0.6300000000000001" type="box" size="0.186 5.0 0.07" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="1.705 0.0 0.7700000000000001" type="box" size="0.186 5.0 0.07" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.015 0.0 0.9100000000000001" type="box" size="0.186 5.0 0.07" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.325 0.0 1.0500000000000003" type="box" size="0.186 5.0 0.07" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.6350000000000002 0.0 1.1900000000000004" type="box" size="0.186 5.0 0.07" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.9450000000000003 0.0 1.3300000000000005" type="box" size="0.186 5.0 0.07" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.2550000000000003 0.0 1.4700000000000006" type="box" size="0.186 5.0 0.07" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.5650000000000004 0.0 1.6100000000000008" type="box" size="0.186 5.0 0.07" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.8750000000000004 0.0 1.7500000000000009" type="box" size="0.186 5.0 0.07" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="4.1850000000000005 0.0 1.890000000000001" type="box" size="0.186 5.0 0.07" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="4.495 0.0 2.030000000000001" type="box" size="0.186 5.0 0.07" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="4.805 0.0 2.1700000000000013" type="box" size="0.186 5.0 0.07" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.114999999999999 0.0 2.3100000000000014" type="box" size="0.186 5.0 0.07" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.424999999999999 0.0 2.4500000000000015" type="box" size="0.186 5.0 0.07" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.7349999999999985 0.0 2.5900000000000016" type="box" size="0.186 5.0 0.07" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.044999999999998 0.0 2.7300000000000018" type="box" size="0.186 5.0 0.07" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.354999999999998 0.0 2.870000000000002" type="box" size="0.186 5.0 0.07" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.664999999999997 0.0 3.010000000000002" type="box" size="0.186 5.0 0.07" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.974999999999997 0.0 3.150000000000002" type="box" size="0.186 5.0 0.07" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.284999999999997 0.0 3.2900000000000023" type="box" size="0.186 5.0 0.07" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.594999999999996 0.0 3.4300000000000024" type="box" size="0.186 5.0 0.07" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.904999999999996 0.0 3.5700000000000025" type="box" size="0.186 5.0 0.07" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="8.214999999999996 0.0 3.7100000000000026" type="box" size="0.186 5.0 0.07" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="8.524999999999997 0.0 3.8500000000000028" type="box" size="0.186 5.0 0.07" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="8.834999999999997 0.0 3.990000000000003" type="box" size="0.186 5.0 0.07" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.144999999999998 0.0 4.130000000000003" type="box" size="0.186 5.0 0.07" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.454999999999998 0.0 4.270000000000002" type="box" size="0.186 5.0 0.07" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.764999999999999 0.0 4.410000000000002" type="box" size="0.186 5.0 0.07" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="10.075 0.0 4.550000000000002" type="box" size="0.186 5.0 0.07" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
51
deploy_45dim_rl_gym/terrains/stairs/stairs_4.xml
Normal file
51
deploy_45dim_rl_gym/terrains/stairs/stairs_4.xml
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
<mujoco model="stairs_4">
|
||||||
|
<!-- Terrain Type: stairs, Level: 4, Stairs step height: 0.1700 -->
|
||||||
|
<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.0" />
|
||||||
|
</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" />
|
||||||
|
<geom pos="0.155 0.0 0.08499999999999999" type="box" size="0.186 5.0 0.08499999999999999" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="0.46499999999999997 0.0 0.255" type="box" size="0.186 5.0 0.08499999999999999" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="0.7749999999999999 0.0 0.425" type="box" size="0.186 5.0 0.08499999999999999" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="1.085 0.0 0.595" type="box" size="0.186 5.0 0.08499999999999999" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="1.395 0.0 0.7649999999999999" type="box" size="0.186 5.0 0.08499999999999999" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="1.705 0.0 0.9349999999999998" type="box" size="0.186 5.0 0.08499999999999999" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.015 0.0 1.1049999999999998" type="box" size="0.186 5.0 0.08499999999999999" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.325 0.0 1.2749999999999997" type="box" size="0.186 5.0 0.08499999999999999" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.6350000000000002 0.0 1.4449999999999996" type="box" size="0.186 5.0 0.08499999999999999" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.9450000000000003 0.0 1.6149999999999995" type="box" size="0.186 5.0 0.08499999999999999" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.2550000000000003 0.0 1.7849999999999995" type="box" size="0.186 5.0 0.08499999999999999" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.5650000000000004 0.0 1.9549999999999994" type="box" size="0.186 5.0 0.08499999999999999" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.8750000000000004 0.0 2.1249999999999996" type="box" size="0.186 5.0 0.08499999999999999" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="4.1850000000000005 0.0 2.2949999999999995" type="box" size="0.186 5.0 0.08499999999999999" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="4.495 0.0 2.4649999999999994" type="box" size="0.186 5.0 0.08499999999999999" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="4.805 0.0 2.6349999999999993" type="box" size="0.186 5.0 0.08499999999999999" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.114999999999999 0.0 2.8049999999999993" type="box" size="0.186 5.0 0.08499999999999999" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.424999999999999 0.0 2.974999999999999" type="box" size="0.186 5.0 0.08499999999999999" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.7349999999999985 0.0 3.144999999999999" type="box" size="0.186 5.0 0.08499999999999999" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.044999999999998 0.0 3.314999999999999" type="box" size="0.186 5.0 0.08499999999999999" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.354999999999998 0.0 3.484999999999999" type="box" size="0.186 5.0 0.08499999999999999" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.664999999999997 0.0 3.654999999999999" type="box" size="0.186 5.0 0.08499999999999999" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.974999999999997 0.0 3.824999999999999" type="box" size="0.186 5.0 0.08499999999999999" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.284999999999997 0.0 3.9949999999999988" type="box" size="0.186 5.0 0.08499999999999999" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.594999999999996 0.0 4.164999999999999" type="box" size="0.186 5.0 0.08499999999999999" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.904999999999996 0.0 4.334999999999999" type="box" size="0.186 5.0 0.08499999999999999" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="8.214999999999996 0.0 4.504999999999999" type="box" size="0.186 5.0 0.08499999999999999" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="8.524999999999997 0.0 4.674999999999999" type="box" size="0.186 5.0 0.08499999999999999" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="8.834999999999997 0.0 4.844999999999999" type="box" size="0.186 5.0 0.08499999999999999" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.144999999999998 0.0 5.014999999999999" type="box" size="0.186 5.0 0.08499999999999999" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.454999999999998 0.0 5.184999999999999" type="box" size="0.186 5.0 0.08499999999999999" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.764999999999999 0.0 5.354999999999999" type="box" size="0.186 5.0 0.08499999999999999" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="10.075 0.0 5.524999999999999" type="box" size="0.186 5.0 0.08499999999999999" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
51
deploy_45dim_rl_gym/terrains/stairs/stairs_5.xml
Normal file
51
deploy_45dim_rl_gym/terrains/stairs/stairs_5.xml
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
<mujoco model="stairs_5">
|
||||||
|
<!-- Terrain Type: stairs, Level: 5, Stairs step height: 0.1800 -->
|
||||||
|
<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.0" />
|
||||||
|
</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" />
|
||||||
|
<geom pos="0.155 0.0 0.09000000000000001" type="box" size="0.186 5.0 0.09000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="0.46499999999999997 0.0 0.27" type="box" size="0.186 5.0 0.09000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="0.7749999999999999 0.0 0.45000000000000007" type="box" size="0.186 5.0 0.09000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="1.085 0.0 0.6300000000000001" type="box" size="0.186 5.0 0.09000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="1.395 0.0 0.8100000000000002" type="box" size="0.186 5.0 0.09000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="1.705 0.0 0.9900000000000002" type="box" size="0.186 5.0 0.09000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.015 0.0 1.1700000000000002" type="box" size="0.186 5.0 0.09000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.325 0.0 1.35" type="box" size="0.186 5.0 0.09000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.6350000000000002 0.0 1.53" type="box" size="0.186 5.0 0.09000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.9450000000000003 0.0 1.71" type="box" size="0.186 5.0 0.09000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.2550000000000003 0.0 1.89" type="box" size="0.186 5.0 0.09000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.5650000000000004 0.0 2.07" type="box" size="0.186 5.0 0.09000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.8750000000000004 0.0 2.25" type="box" size="0.186 5.0 0.09000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="4.1850000000000005 0.0 2.43" type="box" size="0.186 5.0 0.09000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="4.495 0.0 2.6100000000000003" type="box" size="0.186 5.0 0.09000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="4.805 0.0 2.7900000000000005" type="box" size="0.186 5.0 0.09000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.114999999999999 0.0 2.9700000000000006" type="box" size="0.186 5.0 0.09000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.424999999999999 0.0 3.150000000000001" type="box" size="0.186 5.0 0.09000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.7349999999999985 0.0 3.330000000000001" type="box" size="0.186 5.0 0.09000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.044999999999998 0.0 3.510000000000001" type="box" size="0.186 5.0 0.09000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.354999999999998 0.0 3.6900000000000013" type="box" size="0.186 5.0 0.09000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.664999999999997 0.0 3.8700000000000014" type="box" size="0.186 5.0 0.09000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.974999999999997 0.0 4.050000000000002" type="box" size="0.186 5.0 0.09000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.284999999999997 0.0 4.230000000000001" type="box" size="0.186 5.0 0.09000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.594999999999996 0.0 4.410000000000001" type="box" size="0.186 5.0 0.09000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.904999999999996 0.0 4.590000000000001" type="box" size="0.186 5.0 0.09000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="8.214999999999996 0.0 4.7700000000000005" type="box" size="0.186 5.0 0.09000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="8.524999999999997 0.0 4.95" type="box" size="0.186 5.0 0.09000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="8.834999999999997 0.0 5.13" type="box" size="0.186 5.0 0.09000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.144999999999998 0.0 5.31" type="box" size="0.186 5.0 0.09000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.454999999999998 0.0 5.489999999999999" type="box" size="0.186 5.0 0.09000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.764999999999999 0.0 5.669999999999999" type="box" size="0.186 5.0 0.09000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="10.075 0.0 5.849999999999999" type="box" size="0.186 5.0 0.09000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
51
deploy_45dim_rl_gym/terrains/stairs/stairs_6.xml
Normal file
51
deploy_45dim_rl_gym/terrains/stairs/stairs_6.xml
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
<mujoco model="stairs_6">
|
||||||
|
<!-- Terrain Type: stairs, Level: 6, Stairs step height: 0.1900 -->
|
||||||
|
<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.0" />
|
||||||
|
</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" />
|
||||||
|
<geom pos="0.155 0.0 0.095" type="box" size="0.186 5.0 0.095" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="0.46499999999999997 0.0 0.28500000000000003" type="box" size="0.186 5.0 0.095" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="0.7749999999999999 0.0 0.47500000000000003" type="box" size="0.186 5.0 0.095" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="1.085 0.0 0.665" type="box" size="0.186 5.0 0.095" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="1.395 0.0 0.855" type="box" size="0.186 5.0 0.095" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="1.705 0.0 1.045" type="box" size="0.186 5.0 0.095" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.015 0.0 1.2349999999999999" type="box" size="0.186 5.0 0.095" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.325 0.0 1.4249999999999998" type="box" size="0.186 5.0 0.095" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.6350000000000002 0.0 1.6149999999999998" type="box" size="0.186 5.0 0.095" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.9450000000000003 0.0 1.8049999999999997" type="box" size="0.186 5.0 0.095" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.2550000000000003 0.0 1.9949999999999997" type="box" size="0.186 5.0 0.095" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.5650000000000004 0.0 2.1849999999999996" type="box" size="0.186 5.0 0.095" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.8750000000000004 0.0 2.3749999999999996" type="box" size="0.186 5.0 0.095" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="4.1850000000000005 0.0 2.5649999999999995" type="box" size="0.186 5.0 0.095" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="4.495 0.0 2.7549999999999994" type="box" size="0.186 5.0 0.095" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="4.805 0.0 2.9449999999999994" type="box" size="0.186 5.0 0.095" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.114999999999999 0.0 3.1349999999999993" type="box" size="0.186 5.0 0.095" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.424999999999999 0.0 3.3249999999999993" type="box" size="0.186 5.0 0.095" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.7349999999999985 0.0 3.5149999999999992" type="box" size="0.186 5.0 0.095" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.044999999999998 0.0 3.704999999999999" type="box" size="0.186 5.0 0.095" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.354999999999998 0.0 3.894999999999999" type="box" size="0.186 5.0 0.095" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.664999999999997 0.0 4.084999999999999" type="box" size="0.186 5.0 0.095" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.974999999999997 0.0 4.2749999999999995" type="box" size="0.186 5.0 0.095" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.284999999999997 0.0 4.465" type="box" size="0.186 5.0 0.095" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.594999999999996 0.0 4.655" type="box" size="0.186 5.0 0.095" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.904999999999996 0.0 4.845000000000001" type="box" size="0.186 5.0 0.095" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="8.214999999999996 0.0 5.035000000000001" type="box" size="0.186 5.0 0.095" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="8.524999999999997 0.0 5.225000000000001" type="box" size="0.186 5.0 0.095" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="8.834999999999997 0.0 5.415000000000002" type="box" size="0.186 5.0 0.095" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.144999999999998 0.0 5.605000000000002" type="box" size="0.186 5.0 0.095" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.454999999999998 0.0 5.795000000000003" type="box" size="0.186 5.0 0.095" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.764999999999999 0.0 5.985000000000003" type="box" size="0.186 5.0 0.095" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="10.075 0.0 6.175000000000003" type="box" size="0.186 5.0 0.095" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
51
deploy_45dim_rl_gym/terrains/stairs/stairs_7.xml
Normal file
51
deploy_45dim_rl_gym/terrains/stairs/stairs_7.xml
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
<mujoco model="stairs_7">
|
||||||
|
<!-- Terrain Type: stairs, Level: 7, Stairs step height: 0.2000 -->
|
||||||
|
<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.0" />
|
||||||
|
</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" />
|
||||||
|
<geom pos="0.155 0.0 0.1" type="box" size="0.186 5.0 0.1" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="0.46499999999999997 0.0 0.30000000000000004" type="box" size="0.186 5.0 0.1" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="0.7749999999999999 0.0 0.5" type="box" size="0.186 5.0 0.1" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="1.085 0.0 0.7" type="box" size="0.186 5.0 0.1" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="1.395 0.0 0.8999999999999999" type="box" size="0.186 5.0 0.1" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="1.705 0.0 1.0999999999999999" type="box" size="0.186 5.0 0.1" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.015 0.0 1.2999999999999998" type="box" size="0.186 5.0 0.1" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.325 0.0 1.4999999999999998" type="box" size="0.186 5.0 0.1" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.6350000000000002 0.0 1.6999999999999997" type="box" size="0.186 5.0 0.1" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.9450000000000003 0.0 1.8999999999999997" type="box" size="0.186 5.0 0.1" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.2550000000000003 0.0 2.0999999999999996" type="box" size="0.186 5.0 0.1" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.5650000000000004 0.0 2.3" type="box" size="0.186 5.0 0.1" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.8750000000000004 0.0 2.5" type="box" size="0.186 5.0 0.1" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="4.1850000000000005 0.0 2.7" type="box" size="0.186 5.0 0.1" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="4.495 0.0 2.9000000000000004" type="box" size="0.186 5.0 0.1" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="4.805 0.0 3.1000000000000005" type="box" size="0.186 5.0 0.1" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.114999999999999 0.0 3.3000000000000007" type="box" size="0.186 5.0 0.1" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.424999999999999 0.0 3.500000000000001" type="box" size="0.186 5.0 0.1" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.7349999999999985 0.0 3.700000000000001" type="box" size="0.186 5.0 0.1" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.044999999999998 0.0 3.9000000000000012" type="box" size="0.186 5.0 0.1" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.354999999999998 0.0 4.100000000000001" type="box" size="0.186 5.0 0.1" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.664999999999997 0.0 4.300000000000002" type="box" size="0.186 5.0 0.1" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.974999999999997 0.0 4.500000000000002" type="box" size="0.186 5.0 0.1" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.284999999999997 0.0 4.700000000000002" type="box" size="0.186 5.0 0.1" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.594999999999996 0.0 4.900000000000002" type="box" size="0.186 5.0 0.1" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.904999999999996 0.0 5.100000000000002" type="box" size="0.186 5.0 0.1" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="8.214999999999996 0.0 5.3000000000000025" type="box" size="0.186 5.0 0.1" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="8.524999999999997 0.0 5.500000000000003" type="box" size="0.186 5.0 0.1" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="8.834999999999997 0.0 5.700000000000003" type="box" size="0.186 5.0 0.1" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.144999999999998 0.0 5.900000000000003" type="box" size="0.186 5.0 0.1" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.454999999999998 0.0 6.100000000000003" type="box" size="0.186 5.0 0.1" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.764999999999999 0.0 6.300000000000003" type="box" size="0.186 5.0 0.1" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="10.075 0.0 6.5000000000000036" type="box" size="0.186 5.0 0.1" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
51
deploy_45dim_rl_gym/terrains/stairs/stairs_8.xml
Normal file
51
deploy_45dim_rl_gym/terrains/stairs/stairs_8.xml
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
<mujoco model="stairs_8">
|
||||||
|
<!-- Terrain Type: stairs, Level: 8, Stairs step height: 0.2100 -->
|
||||||
|
<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.0" />
|
||||||
|
</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" />
|
||||||
|
<geom pos="0.155 0.0 0.10500000000000001" type="box" size="0.186 5.0 0.10500000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="0.46499999999999997 0.0 0.31500000000000006" type="box" size="0.186 5.0 0.10500000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="0.7749999999999999 0.0 0.5250000000000001" type="box" size="0.186 5.0 0.10500000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="1.085 0.0 0.7350000000000001" type="box" size="0.186 5.0 0.10500000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="1.395 0.0 0.9450000000000001" type="box" size="0.186 5.0 0.10500000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="1.705 0.0 1.155" type="box" size="0.186 5.0 0.10500000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.015 0.0 1.365" type="box" size="0.186 5.0 0.10500000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.325 0.0 1.575" type="box" size="0.186 5.0 0.10500000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.6350000000000002 0.0 1.785" type="box" size="0.186 5.0 0.10500000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.9450000000000003 0.0 1.9949999999999999" type="box" size="0.186 5.0 0.10500000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.2550000000000003 0.0 2.205" type="box" size="0.186 5.0 0.10500000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.5650000000000004 0.0 2.415" type="box" size="0.186 5.0 0.10500000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.8750000000000004 0.0 2.625" type="box" size="0.186 5.0 0.10500000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="4.1850000000000005 0.0 2.835" type="box" size="0.186 5.0 0.10500000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="4.495 0.0 3.045" type="box" size="0.186 5.0 0.10500000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="4.805 0.0 3.255" type="box" size="0.186 5.0 0.10500000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.114999999999999 0.0 3.465" type="box" size="0.186 5.0 0.10500000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.424999999999999 0.0 3.675" type="box" size="0.186 5.0 0.10500000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.7349999999999985 0.0 3.885" type="box" size="0.186 5.0 0.10500000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.044999999999998 0.0 4.095" type="box" size="0.186 5.0 0.10500000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.354999999999998 0.0 4.305" type="box" size="0.186 5.0 0.10500000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.664999999999997 0.0 4.515" type="box" size="0.186 5.0 0.10500000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.974999999999997 0.0 4.725" type="box" size="0.186 5.0 0.10500000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.284999999999997 0.0 4.935" type="box" size="0.186 5.0 0.10500000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.594999999999996 0.0 5.145" type="box" size="0.186 5.0 0.10500000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.904999999999996 0.0 5.3549999999999995" type="box" size="0.186 5.0 0.10500000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="8.214999999999996 0.0 5.5649999999999995" type="box" size="0.186 5.0 0.10500000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="8.524999999999997 0.0 5.7749999999999995" type="box" size="0.186 5.0 0.10500000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="8.834999999999997 0.0 5.984999999999999" type="box" size="0.186 5.0 0.10500000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.144999999999998 0.0 6.194999999999999" type="box" size="0.186 5.0 0.10500000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.454999999999998 0.0 6.404999999999999" type="box" size="0.186 5.0 0.10500000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.764999999999999 0.0 6.614999999999999" type="box" size="0.186 5.0 0.10500000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="10.075 0.0 6.824999999999999" type="box" size="0.186 5.0 0.10500000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
51
deploy_45dim_rl_gym/terrains/stairs/stairs_9.xml
Normal file
51
deploy_45dim_rl_gym/terrains/stairs/stairs_9.xml
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
<mujoco model="stairs_9">
|
||||||
|
<!-- Terrain Type: stairs, Level: 9, Stairs step height: 0.2200 -->
|
||||||
|
<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.0" />
|
||||||
|
</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" />
|
||||||
|
<geom pos="0.155 0.0 0.11000000000000001" type="box" size="0.186 5.0 0.11000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="0.46499999999999997 0.0 0.33000000000000007" type="box" size="0.186 5.0 0.11000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="0.7749999999999999 0.0 0.55" type="box" size="0.186 5.0 0.11000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="1.085 0.0 0.77" type="box" size="0.186 5.0 0.11000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="1.395 0.0 0.99" type="box" size="0.186 5.0 0.11000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="1.705 0.0 1.21" type="box" size="0.186 5.0 0.11000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.015 0.0 1.43" type="box" size="0.186 5.0 0.11000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.325 0.0 1.65" type="box" size="0.186 5.0 0.11000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.6350000000000002 0.0 1.8699999999999999" type="box" size="0.186 5.0 0.11000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="2.9450000000000003 0.0 2.09" type="box" size="0.186 5.0 0.11000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.2550000000000003 0.0 2.31" type="box" size="0.186 5.0 0.11000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.5650000000000004 0.0 2.5300000000000002" type="box" size="0.186 5.0 0.11000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="3.8750000000000004 0.0 2.7500000000000004" type="box" size="0.186 5.0 0.11000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="4.1850000000000005 0.0 2.9700000000000006" type="box" size="0.186 5.0 0.11000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="4.495 0.0 3.190000000000001" type="box" size="0.186 5.0 0.11000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="4.805 0.0 3.410000000000001" type="box" size="0.186 5.0 0.11000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.114999999999999 0.0 3.6300000000000012" type="box" size="0.186 5.0 0.11000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.424999999999999 0.0 3.8500000000000014" type="box" size="0.186 5.0 0.11000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="5.7349999999999985 0.0 4.070000000000001" type="box" size="0.186 5.0 0.11000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.044999999999998 0.0 4.290000000000001" type="box" size="0.186 5.0 0.11000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.354999999999998 0.0 4.510000000000001" type="box" size="0.186 5.0 0.11000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.664999999999997 0.0 4.73" type="box" size="0.186 5.0 0.11000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="6.974999999999997 0.0 4.95" type="box" size="0.186 5.0 0.11000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.284999999999997 0.0 5.17" type="box" size="0.186 5.0 0.11000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.594999999999996 0.0 5.39" type="box" size="0.186 5.0 0.11000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="7.904999999999996 0.0 5.609999999999999" type="box" size="0.186 5.0 0.11000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="8.214999999999996 0.0 5.829999999999999" type="box" size="0.186 5.0 0.11000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="8.524999999999997 0.0 6.049999999999999" type="box" size="0.186 5.0 0.11000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="8.834999999999997 0.0 6.269999999999999" type="box" size="0.186 5.0 0.11000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.144999999999998 0.0 6.489999999999998" type="box" size="0.186 5.0 0.11000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.454999999999998 0.0 6.709999999999998" type="box" size="0.186 5.0 0.11000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="9.764999999999999 0.0 6.929999999999998" type="box" size="0.186 5.0 0.11000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
<geom pos="10.075 0.0 7.149999999999998" type="box" size="0.186 5.0 0.11000000000000001" quat="1.0 0.0 0.0 0.0" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
14
deploy_45dim_rl_gym/terrains/wall/10x10_wall.xml
Normal file
14
deploy_45dim_rl_gym/terrains/wall/10x10_wall.xml
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<mujoco model="10x10_wall">
|
||||||
|
<default>
|
||||||
|
<default class="wall">
|
||||||
|
<geom rgba="0.8 0.1 0.1 0.5"/>
|
||||||
|
<!-- <geom rgba="0 0 0 0"/> -->
|
||||||
|
</default>
|
||||||
|
</default>
|
||||||
|
<worldbody>
|
||||||
|
<geom name="wall_left" type="box" pos="-0.25 0 5" size="0.25 5.5 5" class="wall"/>
|
||||||
|
<geom name="wall_right" type="box" pos="10.25 0 5" size="0.25 5.5 5" class="wall"/>
|
||||||
|
<geom name="wall_top" type="box" pos="5 5.25 5" size="5 0.25 5" class="wall"/>
|
||||||
|
<geom name="wall_bottom" type="box" pos="5 -5.25 5" size="5 0.25 5" class="wall"/>
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
BIN
deploy_45dim_rl_gym/terrains/wave/wave.png
Normal file
BIN
deploy_45dim_rl_gym/terrains/wave/wave.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 26 KiB |
20
deploy_45dim_rl_gym/terrains/wave/wave_1.xml
Normal file
20
deploy_45dim_rl_gym/terrains/wave/wave_1.xml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<mujoco model="wave_1">
|
||||||
|
<!-- Terrain Type: wave, Level: 1, Wave amplitude: 0.0200 -->
|
||||||
|
<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.0" />
|
||||||
|
<hfield name="wave_hfield" file="wave.png" size="5 5 0.08000000000000002 0.1" />
|
||||||
|
</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" />
|
||||||
|
<geom type="hfield" hfield="wave_hfield" pos="5 0 0" rgba="0.5 0.5 0.5 1" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
20
deploy_45dim_rl_gym/terrains/wave/wave_10.xml
Normal file
20
deploy_45dim_rl_gym/terrains/wave/wave_10.xml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<mujoco model="wave_10">
|
||||||
|
<!-- Terrain Type: wave, Level: 10, Wave amplitude: 0.2000 -->
|
||||||
|
<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.0" />
|
||||||
|
<hfield name="wave_hfield" file="wave.png" size="5 5 0.8 0.1" />
|
||||||
|
</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" />
|
||||||
|
<geom type="hfield" hfield="wave_hfield" pos="5 0 0" rgba="0.5 0.5 0.5 1" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
20
deploy_45dim_rl_gym/terrains/wave/wave_2.xml
Normal file
20
deploy_45dim_rl_gym/terrains/wave/wave_2.xml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<mujoco model="wave_2">
|
||||||
|
<!-- Terrain Type: wave, Level: 2, Wave amplitude: 0.0400 -->
|
||||||
|
<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.0" />
|
||||||
|
<hfield name="wave_hfield" file="wave.png" size="5 5 0.16000000000000003 0.1" />
|
||||||
|
</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" />
|
||||||
|
<geom type="hfield" hfield="wave_hfield" pos="5 0 0" rgba="0.5 0.5 0.5 1" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
20
deploy_45dim_rl_gym/terrains/wave/wave_3.xml
Normal file
20
deploy_45dim_rl_gym/terrains/wave/wave_3.xml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<mujoco model="wave_3">
|
||||||
|
<!-- Terrain Type: wave, Level: 3, Wave amplitude: 0.0600 -->
|
||||||
|
<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.0" />
|
||||||
|
<hfield name="wave_hfield" file="wave.png" size="5 5 0.24 0.1" />
|
||||||
|
</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" />
|
||||||
|
<geom type="hfield" hfield="wave_hfield" pos="5 0 0" rgba="0.5 0.5 0.5 1" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
20
deploy_45dim_rl_gym/terrains/wave/wave_4.xml
Normal file
20
deploy_45dim_rl_gym/terrains/wave/wave_4.xml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<mujoco model="wave_4">
|
||||||
|
<!-- Terrain Type: wave, Level: 4, Wave amplitude: 0.0800 -->
|
||||||
|
<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.0" />
|
||||||
|
<hfield name="wave_hfield" file="wave.png" size="5 5 0.32000000000000006 0.1" />
|
||||||
|
</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" />
|
||||||
|
<geom type="hfield" hfield="wave_hfield" pos="5 0 0" rgba="0.5 0.5 0.5 1" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
20
deploy_45dim_rl_gym/terrains/wave/wave_5.xml
Normal file
20
deploy_45dim_rl_gym/terrains/wave/wave_5.xml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<mujoco model="wave_5">
|
||||||
|
<!-- Terrain Type: wave, Level: 5, Wave amplitude: 0.1000 -->
|
||||||
|
<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.0" />
|
||||||
|
<hfield name="wave_hfield" file="wave.png" size="5 5 0.4 0.1" />
|
||||||
|
</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" />
|
||||||
|
<geom type="hfield" hfield="wave_hfield" pos="5 0 0" rgba="0.5 0.5 0.5 1" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
20
deploy_45dim_rl_gym/terrains/wave/wave_6.xml
Normal file
20
deploy_45dim_rl_gym/terrains/wave/wave_6.xml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<mujoco model="wave_6">
|
||||||
|
<!-- Terrain Type: wave, Level: 6, Wave amplitude: 0.1200 -->
|
||||||
|
<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.0" />
|
||||||
|
<hfield name="wave_hfield" file="wave.png" size="5 5 0.48 0.1" />
|
||||||
|
</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" />
|
||||||
|
<geom type="hfield" hfield="wave_hfield" pos="5 0 0" rgba="0.5 0.5 0.5 1" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
20
deploy_45dim_rl_gym/terrains/wave/wave_7.xml
Normal file
20
deploy_45dim_rl_gym/terrains/wave/wave_7.xml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<mujoco model="wave_7">
|
||||||
|
<!-- Terrain Type: wave, Level: 7, Wave amplitude: 0.1400 -->
|
||||||
|
<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.0" />
|
||||||
|
<hfield name="wave_hfield" file="wave.png" size="5 5 0.5599999999999999 0.1" />
|
||||||
|
</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" />
|
||||||
|
<geom type="hfield" hfield="wave_hfield" pos="5 0 0" rgba="0.5 0.5 0.5 1" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
20
deploy_45dim_rl_gym/terrains/wave/wave_8.xml
Normal file
20
deploy_45dim_rl_gym/terrains/wave/wave_8.xml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<mujoco model="wave_8">
|
||||||
|
<!-- Terrain Type: wave, Level: 8, Wave amplitude: 0.1600 -->
|
||||||
|
<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.0" />
|
||||||
|
<hfield name="wave_hfield" file="wave.png" size="5 5 0.6400000000000001 0.1" />
|
||||||
|
</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" />
|
||||||
|
<geom type="hfield" hfield="wave_hfield" pos="5 0 0" rgba="0.5 0.5 0.5 1" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
20
deploy_45dim_rl_gym/terrains/wave/wave_9.xml
Normal file
20
deploy_45dim_rl_gym/terrains/wave/wave_9.xml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<mujoco model="wave_9">
|
||||||
|
<!-- Terrain Type: wave, Level: 9, Wave amplitude: 0.1800 -->
|
||||||
|
<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.0" />
|
||||||
|
<hfield name="wave_hfield" file="wave.png" size="5 5 0.7200000000000001 0.1" />
|
||||||
|
</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" />
|
||||||
|
<geom type="hfield" hfield="wave_hfield" pos="5 0 0" rgba="0.5 0.5 0.5 1" />
|
||||||
|
</worldbody>
|
||||||
|
</mujoco>
|
||||||
Reference in New Issue
Block a user