人型ロボット操作準備その１

# 前回までのあらすじ
- まずは @devemin 　さんの詳しい記事（Unitree社 GO1)

https://qiita.com/devemin/items/de1a1390da8795a71a4f

:::note info
補足
1. 2023年暮れ以降の出荷バージョンから事実上、GO1 PROでは大技はできなく対策された
1. なんとかならなくもないが参照元の内容がわかる方なら解決できるはず
1. 公式にはEDUを使おうとなっている
1. その割にはコマンドガイドは別売りだったりする・・・

:::

# 補足で後継機GO2 (PRO)

https://shop.unitree.com/products/unitree-go2?utm_term=&utm_campaign=&utm_source=adwords&utm_medium=ppc&hsa_acc=8764137937&hsa_cam=18995471218&hsa_grp=&hsa_ad=&hsa_src=x&hsa_tgt=&hsa_kw=&hsa_mt=&hsa_net=adwords&hsa_ver=3&gad_source=1&gclid=CjwKCAjwgdayBhBQEiwAXhMxttXl7OQvaj_LVDonC3Zb7xUQVQ6WBDImptzkHydCeEw9e286Ikv45xoCrfwQAvD_BwE

- こちらはGO1の失敗？が活かされ、物理的に大技はできないようになっている
- もしかしてバラせば・・・おそらくこのボディではIO系実装されてないと思われます。
- ようするにROS2でいろいろやりだければ EDU一択
- GO1でも関節のモータを極限使用した達人が驚異の運動能力（公式スペック以上!?）をさせていることから相当の芸当ができるとおもわれます
- ただし、アタッチメントは産業用とかが多いので、ちょっと気が引ける

:::note info
補足2
1. メーカ的には本格使用なら本格4足のB2
1. いずれにしても、ガイドブックが必要ですね。（大技、公式技を超えた仕事させる場合）

:::

https://shop.unitree.com/products/unitree-b2?_gl=1*jtand2*_up*MQ..&gclid=CjwKCAjwgdayBhBQEiwAXhMxtqWY5fM8AosJMuXUQs0tuhSuuoij6b0ZX_l5DDj5W25hAjylr--EMRoC6z8QAvD_BwE

# 展示会で見た人型ロボット H1
- これは一般人も企業の躊躇するようなお値段。ただ、肉体労働なら得意かも

## これなら事務員一人分？ G1
- 人形智能体 AI化身 ¥9.9万元起！！
- 这么便宜阿
- って思わず言ってしまったが、人民元と日本円って通貨記号同じなんですよね
- でも、いかにもメカメカしいH1よりは小学3年生サイズのこのロボならなにかできそう

https://www.unitree.com/cn/g1/

- 正直、定型ワーク（作業とか）
- 事務とか流し込めば、3人分の仕事をしている自分は論理的にも1人ですむぞ（妄想）

# いずれにしても変えないので、体験ツール
## humanoid-bench
- Unitree社の人からいいねをもらっていたので、ちょっと試しました。
- ロボットはH1が使用されています。
- ROSで動かしているわけではない

## GitHub

https://github.com/carlosferrazza/humanoid-bench?tab=readme-ov-file

### 作者公式

https://humanoid-bench.github.io/static/videos/trailer/Tbasketball.mp4

# ベンチの動作
:::note info
インフォメーション
- PC はしょぼいRyzen5 とGPUはRTX 3060
- OSは20.04LTS
- 思ったより負荷はかかっていないみたい
:::

```Ubuntu:ターミナル画面

+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.171.04             Driver Version: 535.171.04   CUDA Version: 12.2     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
|   0  NVIDIA GeForce RTX 3060        Off | 00000000:2B:00.0  On |                  N/A |
|  0%   58C    P3              25W / 170W |   2440MiB / 12288MiB |     26%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+
                                                                                         
+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|    0   N/A  N/A       958      G   /usr/lib/xorg/Xorg                          121MiB |
|    0   N/A  N/A      1290      G   /usr/bin/gnome-shell                         49MiB |
|    0   N/A  N/A      2108      G   ...ures=SpareRendererForSitePerProcess       30MiB |
|    0   N/A  N/A     38015      G   /usr/lib/firefox/firefox                    139MiB |
|    0   N/A  N/A     38939      G   python                                     2086MiB |
+---------------------------------------------------------------------------------------+


```

## 動作実行コマンド例

```Ubuntu:ターミナル画面


python -m humanoid_bench.test_env --env h1-basketball-v0
# 一心不乱にボールを投げているH1
```

```Ubuntu:ターミナル画面
# Define checkpoints to pre-trained low-level policy and obs normalization
export POLICY_PATH="data/reach_two_hands/torch_model.pt"
export MEAN_PATH="data/reach_two_hands/mean.npy"
export VAR_PATH="data/reach_two_hands/var.npy"

# Test the environment
python -m humanoid_bench.test_env --env h1hand-push-v0 --policy_path ${POLICY_PATH} --mean_path ${MEAN_PATH} --var_path ${VAR_PATH} --policy_type "reach_double_relative"

```
- この当たりは容易に動作しますが、TensorRTとの連携がいまいちなのか味見程度ではなかなか動かないところもあり
- ただし、冒頭のコマンドラインの動作を変えていろいろ見るのは簡単にできます