ガ〇トの某ネコ型ロボットを10万円で作りたい

「ガ〇トのネコ型配膳ロボットかわいいよね！研究で使いたい！」と思って値段を見たら〇〇〇万円...。本物は予算オーバーなのでそれっぽいものをお手軽に自作できないかと考えてみました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2059946/adce6b3a-e034-7347-3d66-e9f0dad35d56.png)

お掃除ロボットで有名なiRobot社の教育用ロボット「Create3」をベースに、RGBDカメラと制御用のPCを載せる構成にします。パーツはAmazonで購入 or プリントすることにしました（研究室の3Dプリンターを使えばタダなので）。

3段のボディの部分に荷物を入れる想定です。Create3の耐荷重は9kgらしいので、ボディやPCの重量を引いて6kgくらいは運べる計算です。普通のルンバより強そう。



# 材料リスト
* [iRobot Create3](https://edu.irobot.com/what-we-offer/create3)：$449.99 ≒ 68,000円
* [Intel RealSense D435i](https://www.intel.co.jp/content/www/jp/ja/products/sku/190004/intel-realsense-depth-camera-d435i/specifications.html)：28,000円
    * メルカリで中古品を購入。他社の同等品でもOKです。
* [プラスチック製の丸い棚](https://amzn.asia/d/czwvHF4)：4,840円
    * 何でも良いですが軽くて分割できる棚がオススメ。
* [USB-C to LANアダプター変換ケーブル](https://amzn.asia/d/hWUtl13)：1,999円
    * 長さ1mで最安のものを買いました。
* [ルンバ用フロントキャスター](https://www.amazon.co.jp/dp/B071S91554?ref=ppx_yo2ov_dt_b_fed_asin_title&th=1)：999円
* [スペーサー10本](https://amzn.asia/d/9iyE0Lh)：999円
* [ねじ20個](https://amzn.asia/d/hvwMTm5)：281円
* 研究室のPC：0円
* 研究室の3Dプリンターとフィラメント：0円
* 自分のスマホ：0円

合計105,019円です。Create3の正規品はアメリカ限定かつ販売終了したようなので、今後は中古のルンバで代用するのが良さそうです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2059946/881e591a-8667-1cbe-d7c8-6846986fb0cf.png)
（2024年8月時点のShopページ、現在はリンク切れ）

https://github.com/iRobotEducation/create3_docs/discussions/618

（Shopのリンク切れに関するディスカッション）


# 1. PCのセットアップ
制御用PCにはUbuntuとROSをインストールします。バージョンはそれぞれUbuntu 20.04 LTSとROS 2 Galacticです。インストール手順は公式ドキュメントに詳しいので省略します。
ROSのインストール後は以下のコマンドを実行してRMWをFast RTPSに設定します。

```bash
export ROS_DOMAIN_ID=0
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
source ~/.bashrc
echo $ROS_DOMAIN_ID
echo $RMW_IMPLEMENTATION
```



# 2. Create3のセットアップ
Create3の設定はPCのブラウザから行います。PCとCreate3をLANケーブルで接続し、ブラウザで`192.168.186.2`にアクセスします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2059946/26546c91-40a9-3041-589b-12b69cf09466.png)

「Application → Configuration」で以下の項目を設定します：
* ROS2 Domain ID: __0__
* RMW Implementation: __rmw_fastrtps_cpp__

設定後は「Application → Restart Application」でCreate3を再起動します。



# 3. RealSenseのセットアップ
PCとRealSenseを付属品のUSBケーブルで接続し、動作確認します。

### 3.1. RealSense SDKのインストール
```bash
sudo mkdir -p /etc/apt/keyrings
curl -sSf https://librealsense.intel.com/Debian/librealsense.pgp | sudo tee /etc/apt/keyrings/librealsense.pgp > /dev/null
sudo apt-get install apt-transport-https
sudo apt-get install librealsense2-*
```

### 3.2. ROSパッケージのインストール
```bash
sudo apt install ros-galactic-realsense2-*
```

### 3.3. 動作確認
```bash
realsense-viewer
```
Viewerが起動してカメラの映像が表示されれば成功です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2059946/48ed8fdd-3cb6-ae09-f2ee-c68e3b4edc35.png)



# 4. 頭パーツの作成
RealSenseとスマホをボディに取り付けるためのパーツを作成します。
Rhinoceros（or その他の3DCAD）で適当にモデリングして、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2059946/e7d12f49-6c4c-0adc-4a15-7014c6d60cc0.png)

3Dプリンタでプリントします。フィラメントは黒がオススメです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2059946/56b1d21a-ffe5-0b91-990d-8e447a8df1c2.png)



# 5. ボディの取り付け
Create3の上に丸い棚を載せます。Create3の天板には丁度良い穴が開いているので、棚の底面にもドリルで穴を開けて、スペーサーとネジで丸い棚を接続します。

![BECC8210-EF58-4DF7-B8E0-661E416A3805.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2059946/41914ff2-1971-5b82-ee6d-6501002abfe1.jpeg)



# 6. 補助キャスターの取り付け
Create3は2輪駆1キャスターで、キャスターは前部に付いています。そのため上部に重いものを載せると加速時に後ろへ傾いてしまうので、後部にも補助キャスターを追加します。キャスターはルンバ用フロントキャスターと同じものです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2059946/ba7520ae-aae8-1f00-8784-e909f4f3ae5e.png)
（図は公式ドキュメントより引用）

キャスター取り付けパーツのモデルデータは[公式ドキュメント](https://iroboteducation.github.io/create3_docs/hw/mechanical/)からダウンロードできます。負荷がかかるパーツなのでインフィル密度は50%以上推奨です。

![FFDBFF78-0AD3-459E-BE7E-F3638799F490.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2059946/b21879d1-3b26-a65c-de84-6891e0c3c9c1.jpeg)
（インフィル密度が低く壊れてしまったパーツ）


# 7. 顔アニメーションの作成
顔が無くてもロボットは動きますが、ネコ型ロボットっぽさ出るのでスマホで顔アニメーションを再生します。顔が付いていると通行人が「ロボットがいる」と認識して避けてくれる確率が上がる気がします。
DaVinci Resolve（or その他の動画編集ソフト）でアニメーションを作成します。



# 8. 完成
パーツを組み立てたら完成！
Nav2パッケージを使って上手く人や家具を避けながら自律移動できました。
![robot1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2059946/448e38c8-302d-2152-0cef-83176f10c80a.gif)

ボディの棚は3段重なっているだけなので簡単に2段に変更できます。
![robot2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2059946/44dc24d5-823d-fd78-0fbd-c11055f03d28.gif)