Slide 1

Slide 1 text

UFACTORY Lite 6用 リーダーフォロワーシステム の作成 第45回ロボティクス勉強会

Slide 2

Slide 2 text

・2019年: KickstarterでxArm 5という低価格のアームロボが欲しくなりバックして無事届く。 ・2020年: 卓球の自動返球ロボを MakerFaire Tokyo 2020に出展。第5回ロボゼミで発表 ・2021年: ROS 2の入門としてxArm 5を使ったカルタ取りロボシステム制作。第 19回ロボゼミで発表 ・2022年: Lite 6用の軽量電動並行グリッパーを自作・ GitHubで公開(OpenParallelGripper) ・2023年: ML-Agentsで強化学習に入門。今回の前身となる御玉でボール拾いの学習に挑戦 ・2023年: T265とD415とLite 6を使った模倣学習実験を始める ・2023年: UFACTORY Lite 6をテレオペレーション操作するリーダーフォロワーシステムを作成 ・2024年: 上記システムをOSSのgelloにマージ @EL2031watson
 higrado
 過去には四速歩行ロボ にも少し手を出した 卓球ロボ(MakerFaire2020) 自己紹介 カルタ取りロボシステム 冬眠前のAmber B1 OpenParallelGripper with UFACTORY Lite 6 ML-Agentsの実験

Slide 3

Slide 3 text

Lite 6で黒豆・緑豆の中から緑豆を自動で拾う https://x.com/EL2031watson/status/1727993216564335025 RGBカメラとジョイント角のデータから次の数フレーム先までのジョイント角を予想する

Slide 4

Slide 4 text

補足:参考にした手法 https://arxiv.org/abs/2304.13705 ViperX 300(Follower)をWidowX 250(Leader)で操作する ALOHAというOSSプロジェクトの論文。 ALOHA: 低価格ロボットデータ収集ツール RGB画像とアームロボットのジョイント角を入力として、nステッ プ先までのジョイント角を予測するTransformerモデル。 https://www.trossenrobotics.com/viperx-300-robot-arm-6dof.aspx ViperX 300 Robot Arm 6DOF 発表資料: https://speakerdeck.com/hygradme/realsense-t265tod415toufactor y-lite-6demo-fang-xue-xi-noshi-yan

Slide 5

Slide 5 text

データの取得:T265を使ってLite 6を操作 { "date": "2023-09-27_14-52-07", "info": [ { "count": 0, "time": 0.0, "position": [ 0.189421967, -0.084732452, 0.298651855, -2.578459, -0.878688, -0.549324 ], "angle": [ -0.572315, -0.092542, 0.730648, 0.659826, 0.98231, -1.648518, 0.0 ] }, { …. UFACTORY Lite 6のTCPにスプーンを取り付け、 TCPと連動するRealSense T265を使ってスプーンで豆を掬う。 T265 Lite 6 D415 画像とジョイント(TCP位置) https://x.com/EL2031watson/status/1728007549860077869

Slide 6

Slide 6 text

Pose or Jointのどちらでデータを学習するか Pose: ロボットの手先座標(位置3DoF+姿勢3DoF) ・直感的にわかりやすい ・他のロボットにも転用できる可能性 ・推論時に逆運動学を解く必要あり ・特異姿勢の問題が発生する可能性 →RT-1,RT-2はPoseで学習させている https://umi-gripper.github.io/ GoProを取り付けたグリッパを手 動で動かし、SLAMで自己位置・ マーカーで開閉度を取得し TCP データセットを作成 Joint: ロボットの関節角(ロボットの関節分のDoF) ・特異姿勢の考慮の必要性がない ・推論時も推論結果をそのまま角度指令値として使える ・他の形状のロボットには転用できない →ALOHA論文のACTはJointで学習させている RT-2 https://robotics-transformer2.github.io/

Slide 7

Slide 7 text

Pose or Joint (豆拾いのケース) T265 Lite 6 →T265でアームを操作するが、学習は取得したジョイント角を使用 学習法として使用したALOHA論 文でもJointを使用している { "date": "2023-09-27_14-52-07", "info": [ { "count": 0, "time": 0.0, "position": [ 0.189421967, -0.084732452, 0.298651855, -2.578459, -0.878688, -0.549324 ], "angle": [ -0.572315, -0.092542, 0.730648, 0.659826, 0.98231, -1.648518, 0.0 ] }, { ….

Slide 8

Slide 8 text

問題点 T265 RealSense T265の将来性 T265でロボットを操作 ・T265が販売終了・ライブラリも更新されなくなっている Viveトラッカー(Ultimate)というT265と似た方式のトラッカー →T265と違い無線通信 https://www.vive.com/jp/accessory/vive-ultimate-tracker/

Slide 9

Slide 9 text

Pose(TCPの位置・姿勢からロボットの動作を指示する場合) ・特異姿勢を気にしないといけないので常に緊張する ・たまにトラッキングがバグってロボットが怖い動きをする https://github.com/real-stanford/universal_manipulation_interface/issues/7 Universal RobotsやFranka Emika, xArmのような特異姿勢が 出ずらい作業空間を設定しやすいロボットには使い易い ViperX 300 6DOFでPoseベースで学習させて特異姿勢を含 む推論結果を大量製造したとの issue https://umi-gripper.github.io/ これも多分同じ

Slide 10

Slide 10 text

PoseベースのリーダーからJointベースのリーダーへ https://wuphilipp.github.io/gello_site/ GELLO: Dynamixel XL330シリーズをジョイント+グリッパーの数だけ使用し UR5, Franka Emika, xArm 7向けのリーダーフォロワーシステム UFACTORY Lite 6版 リーダーフォロワーシステムを自作

Slide 11

Slide 11 text

動作例 https://youtube.com/shorts/RRqMFbUdtWg?si=-Utz5OplG8c2Xjt3

Slide 12

Slide 12 text

https://wuphilipp.github.io/gello_site/ GELLO UFACTORY Lite 6版として本家にマージ https://github.com/wuphilipp/gello_mechanical/ PRを出してマージしてもらう

Slide 13

Slide 13 text

制御周期の改善 ・Dynamixelのデフォルトのbaudrate(57600bps)だと周期を上げられず(50-100ms?)、ロボットが加減速を繰り返すことにより振動 が激しくなる。 ・1Mbps~ならば振動はほとんどなく、滑らかに操作できた。 ・OpenRB-150だと1Mbpsまで。 ・U2D2なら6Mbpsまで行けて余裕がある。 (https://emanual.robotis.com/docs/en/parts/controller/openrb-150/) (https://emanual.robotis.com/docs/en/parts/interface/u2d2/) ・OpenRB-150だとlatency timer(バッファーが溜まる前でもその時間経過したらデータを送信する) を変更不可能(16ms固定?)で、1Mbps設定でもあまり制御周期を上げられない。 U2D2ではlatency timerを変更可能で1ms設定にしたら1Mbpsで制御周期3-4msあたりまで減らすことができた。 → usb シリアル受信での 16msの遅延 - 工学系チキンによる工作ブログ (hatenablog.com)

Slide 14

Slide 14 text

https://x.com/EL2031watson/status/1739292391969013817 その他タスク動画 ジップロックを開けて、中の豆を皿の中に入れる https://x.com/EL2031watson/status/1739286208549945417 双腕を高速で動かす

Slide 15

Slide 15 text

重力補償 https://youtube.com/shorts/sy9E_QndTSY?si=zurZlOwcvacyRXBu それぞれのジョイントに掛かる重力によって発生するトルクを計算し、それを打ち消すトルク を発生させる。 →サーボモータ等の自重を気にすることなく、細かい手の動きを伝えやすくなる

Slide 16

Slide 16 text

摩擦補償 https://x.com/EL2031watson/status/1781972352643063974 それぞれのジョイントの移動時にかかる摩擦力を推定し、 それを軽減するようなトルクを発生させる

Slide 17

Slide 17 text

XL330では負荷に耐えきれないことも XC330-M288-T XL330-M288-T

Slide 18

Slide 18 text

まとめ ・GELLOを参考に低価格6自由度アームロボットUFACTORY Lite 6向けの リーダーフォロワーシステムを作成・公開 ・T265(Pose)からGELLO(Joint)に移行して、特異姿勢の問題が無く操作できる ようになった ・Dynamixelのbaudrateが57600bpsだとロボットが振動的になるので、1Mbps 等大きめにする必要がある ・重力補償・摩擦補償をXL330でやる際は負荷のかかりすぎに注意 XC330シリーズを検討するのも手