XavierでROSのホスト作り(お試し)

# 休眠機材を働かせる計画とスキリング

<details><summary>きっかけ</summary>

:::note alert
裏の目標
？とハサミはなんかです！
:::

</details>

:::note info
目的
1. ROSのホスト機づくり
1. 休眠機材活用
1. ホンモノは動いているのでシミュレーションなら動くかな
:::

:::note info
ネタ
1. Jetson OSに Anaconda
1. 変態仕様で苦労する
1. スキリング。ゆえに実力が測れればそれでヨシ
:::

# ネタ元はこのワンコ Unitree – Go 1 Pro 機器狗

https://www.kocpc.com.tw/archives/467470


Qiitaで詳しいと言えば　@devemin 　さんの記事

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

正しく安全にインストールされているので安心してリファレンスとして活用できます。

# まずはROSのホスト機づくり
**今時18.04LTSつかうのは～**
- Jetsonから足を洗っているので、軽く確認
- 昔ならこうしただろうなぁ

https://qiita.com/hama6767/items/2351cf1f7f57bddd9f2a

## python 3.6はアレなので
https://developer.nvidia.com/sdk-manager

### 公式を見るともう、クラゲさんでも使えるんですね。
- JetPack4.xはあきらめてUbuntu20でいくか・・・
- 今回はSDK Managerの鬼の世話にはならん
- インストール先はNVMeでね

:::note info
AGXやらOrinやらバラスのは難しくないと思うので、図は略します
- 但し、書き込み先を選択するときは慎重に！ボーっとしているとeMMCに入れられちゃうので。
:::

# JetPack5xxに何なくともAnacondaインストール

:::note info
余談
- もう、Jetsonは使わない人なので、モジュールではまるのを避けようと・・・
- Anacondaをインストール自体がちょっと酔狂だったもよう
:::

- Xavierはポートが少ないのと無線ドングルが使えないというUbuntu20の面倒な点を受け継いでいるので素直に信頼と実績の優先で以下は実施しておきます。

```Ubuntu:ターミナル

sudo apt update

sudo apt upgrade -y
```

```Ubuntu:ターミナル

# updateに失敗する場合こちらから
sudo apt install dkms

# こちらも準備しておきます
sudo apt install curl

```

:::note info
無線ドングル、その他モジュールを入れるための準備です。
:::

https://tech.nosuz.jp/post/2021-09/ubuntu_wifi/

```Ubuntu:ターミナル

sudo make dkms_install

```
上の下ごしらえができないとドライバが入らないです…

# Arm64 機向け Anacondaインストール

https://community.anaconda.cloud/t/installing-anaconda3-on-arm64-aarch64/5016


```Ubuntu:ターミナル
curl -O https://repo.anaconda.com/archive/Anaconda3-2021.04-Linux-aarch64.sh

```

**古そうですが、シェルが最新のバージョンに置き換えてインストールしていきます**

- 設定例
- つかうかなぁとおもったらつかわなかったです・・・（今回）
- プロンプトに仮想環境名が出る様になったら取り合ずOK.

```Ubuntu:ターミナル

conda create -n ross

# conda activate ross

conda install numpy
conda install opencv

```

# ROSのインストール
‐ 20.04が最後のROS1対応になってくるので、Noeticになってきますね。

https://qiita.com/devemin/items/1708176248a1928f3b88

‐ 上記の @devemin さんのインストール手順をほぼ踏襲していきます。

:::note info
違う点
- Arm機
- Unitree SDKは3.8.6（再びGO1対応になっている）
- 
:::

## Anacondaパワーでコンパイラ系はインストール不要
トラブルの元をpipやaptで適宜インストールしていきます。
- pyem

```Ubuntu:ターミナル

 pip install empy

```
- ビルドでエラーが出る場合のみインストールしてください。


### Unitree 環境インストール
ホームにいる前提
```Ubuntu:ターミナル

mkdir -p catkin_ws/src
cd src

 git clone https://github.com/unitreerobotics/unitree_legged_sdk.git

 git clone https://github.com/unitreerobotics/unitree_ros_to_real.git

# キモですね
 sudo apt install liblcm-dev

cd ./unitree_legged_sdk/
mkdir build
cd build
cmake ../
make

```

### ちょっと変えたところ

```Ubuntu:ターミナル
cp -r devel ~/catkin_ws/

cd ~/catkin_ws/
catkin build
source devel/setup.bash 

```

この後の手順は丸写しになってしまうので参照元をご覧ください。

:::note warn
要注意
全部を一気にビルドしない点に注意です。
:::

**Arm64 機はunitree_rosをビルド前に下記を直しておきましょう**

https://github.com/unitreerobotics/unitree_ros/issues/58


- unitree_ros/unitree_legged_control/CMakeLists.txtの最終行をArm仕様にしてあげます

```Ubuntu:ターミナル

target_link_libraries(unitree_legged_control ${catkin_LIBRARIES} unitree_joint_control_tool)
# 上の行を下の行の様にする
target_link_libraries(unitree_legged_control ${catkin_LIBRARIES} unitree_joint_control_tool_arm64)

```

# ビルド完了と表示例

![Screenshot from 2023-10-09 09-20-02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2155177/3405cc74-b927-822b-944b-a5e155b70833.png)


:::note warn
注意
- bashrcの編集をしてパスを通しておきます。
:::


- GazeboとGO1

![Screenshot from 2023-10-09 13-57-14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2155177/1df8868d-8e65-be48-9432-26673359e9ee.png)


- Rvizにlaikago

![Screenshot from 2023-10-09 12-58-38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2155177/423da311-32db-70d2-6c22-1c9638d55f8f.png)


# 振り返り
**GPUありのLinux（x86系）でホストを構築した方がいいです！**
- Anacondaをインストールすることでコンパイラ系のインストール蹴られなく進めた（ソースビルドしなくても良い）
- CPUがパワー不足か、やはりホストには向かないです（重い）