片付けロボを作ってみた&
Jetson Orin NanoでNanoLLM(VLM)
を動かしてみた
taki
自己紹介
taki
・メカエンジニア
・趣味でロボットを作っている
モジュラロボットに興味がある
今は単体ロボットの技術を勉強中
モジュラロボット
モジュール
アセンブリロボット
今回は片付けロボット
片付けロボット
1.頭のカメラで片付け品を見つける
2.周りにぶつからないように移動
3.片付け品を掴む
4.周りにぶつからないように戻る
5.片付け箱に片付け品を戻す
作った目的:
・気軽にロボット技術の実験ができる汎用プラットフォームが欲しい
・.メカだけでなく認識などもあわせてロボットを作れるようになりたい
・そろそろ人に役立つ(最低でも自分用には使える)ロボが作りたい
ロボットの狙うスペック
・安く作りたい(~10万くらい)
・過般重量500gは欲しい
・稼働時間2Hくらいは欲しい
・参考はH〇R
片付けロボットの構成部品
Lidar:Camsense
(もっと良いのはある)
PC:Jetson AGX xavier
NVIDIA製
(中古品)
Depth camera:
Intel製
Realsense435(中古)
サーボモータ:STS3215x13
Feetec製
(電流見れるの嬉しい)
足回り:4個
アーム:4個
リフト:2個
パンチルト:2個
ハンド:1個
メカナムホイール
(Amazon品)
マイコン:ESP32
Espressif Systems製
サーボ制御基板: FE-URT-1
Feetec品
送りネジx2:Amazon品
(リード8mm)
バッテリ:
UGREEN製
(25000mAh、145W)
金属部品、板金Meviy製
片付けロボットの作り方:メカ関係
CAD:
Solidworks for Maker
(実質タダ!)
樹脂品:
3Dプリンタで印刷
3D Printer:
prusa mk3S+→Bambu
金属部品:
meviyの板金部品
(これも実質タダ!)
片付けロボットの作り方:電気関係
Amazonの~20V~3A流せる
DC-DC小さくて良い
Lidar
Jetson
20V
サーボ用制御基板
9V
足回りサーボs
アーム、パンチルトサーボs
Depth camera
Realsense
DCDC
9V
DCDC
5V
ESP32
電源線
通信線
センサ類はESP32でRosserialに乗せてJetsonへ
バッテリ
25000mAh、145W
TypeCで20V出力
Type C 20V
片付けロボット:ソフト(ほぼROS)関係
制御(ESP32)
システム(Jetson)
センシング(Jetson)
物体検出:YOlOv8
SLAM:
ROS1、Gmapping
モータ制御:
SCSServo_Linux
(Feetech
純正ライブラリ)
統合
ROS1
経路計画:
ROS1、move_base
逆運動学:
自作C++
ライブラリ
環境認識点群取得:
Lidarの内部マイコン
モータ制御基板
NEXT片付けロボット(今年の目標)
・片付けの成功率、速度向上
・声で指示出したら冷蔵庫から飲み物持ってくるくらいは役立って欲しい
・片付けの成功率、速度向上
→把持の効率、成功率の向上(SLAMとかの移動に関しては脇に置いとく)
→触覚センサの導入
・声で指示出したら冷蔵庫から飲み物持ってくるくらいは役立って欲しい
→ドアや冷蔵庫の開閉をどうすればよいかイメージできてない
→家の環境に寄せ切ったシステムインテグレートはしたくない
→タスクセットを用意したら、あとはLLMが何とかしてくれないか?
→ローカルLLMの導入
ローカルLLM
・引き続きJetsonシリーズを選択
・JetsonにもミニローカルLLMがあるらしい
・最近Jetson orin nanoの性能が上がって、半額になったらしい
→どんなもんか使ってみた
Jetpack6.1を入れれば君のjetsonもsuperに
nanoLLM(Efficient-Large-Model/VILA-2.7b)
→応答は結構早い、RAMは7GBくらい使う
nanoVLM(Efficient-Large-Model/VILA-2.7b)
→1秒毎に「画像」と「描写してください」を入力
→応答は遅い(遅延が5秒くらいある)、RAMは7GBくらい使う
nanoVLMは画像の位置も把握してる
→バウンディングボックスを返せる
以上 ご清聴ありがとうございました
片付けロボット作ってみた所感(個人の感想):
目的に対して
・今後も使えそうなものはできた→継続開発中
・認識技術やROSの勉強になったが、課題も増えた(見えた)...
・自分ですら使えるロボットにはまるでなってない...
制作に関して
・ロボット部品はだいぶ安くなった
・加工選択肢も増えた(Bambu、Meviy、JLCPCBとか)
・ソフトのサポートも増えた(CHAPTGPTとか)
・ROS最高(個々のライブラリもだけどシステム統合やりやすい)
→ロボットが非常に作りやすい時代
ロボット技術に関して
・指先が柔軟材なだけで把持成功率は大きく変わる
・視覚だけでの安定把持は厳しい(触覚センサとかほしい)
・SLAMや軌道生成もROSだけじゃうまくいかない
・システムインテグレートが面倒くさい
・音声入出力とか無いと実用上コミュニケーション取れない
・Jetsonの消費電力のおかげかバッテリは意外と長くもつ(2H~3H)
試したい人は下記のリンクに従えば再現できます
https://www.jetson-ai-lab.com/tutorial_nano-llm.html
https://www.jetson-ai-lab.com/tutorial_nano-vlm.html
https://www.jetson-ai-lab.com/ros.html
ROS2はoutput_textとinput_imageを結合してpublishするトピックを自分で追加。gitにあげる
Jetson orin nanoでNanoLLMしたときにハマったこと
・jetpackのインストール
→PCのSDKマネージャーをつかうときにPCのjetpackも6.1にしないとjetsonに流し込むときに通信エラー
・nanoLLM関係
→jetson orin nanoはメモリが8GしかないのでSWAPを16GBくらい作らないと動かない
・nanoVLM関係(ROS2関係)
→公式デモがVLM結果をオンラインストリーミングでやってるが映らん。というか今後を考えてローカルで確認したい
→ROS2のnanoVLMパッケージがあった
→公式のnanoLLMにhumbleタグのイメージがあるのにhumble入ってない
→公式のnanoLLMイメージにhumbleイメージをマージ
(アーカイブにhumbleベースのものもあったがNANOLLMが回らなかった)
→openCVの互換性とかでエラー、purgeでopencv関係を消してからhumbleをインストール(openCVはこのときまたインストールされる)
→ROS2のcam2imageの画像サイズがカメラと合ってないとエラー