チャーハンロボット「CharHan!!」を作りました
🍚

チャーハンロボット「CharHan!!」を作りました

Tags
雑記
Software Development
Published
January 20, 2024
大学3年生の時に作ったチャーハンロボット「CharHan!!」について説明する記事です。
CharHanMaker
CharHanMakerUpdated Sep 11, 2024

1. 開発目的

近年問題になってきている飲食店での人手不足を解決するために中華料理のチャーハンを自動で作るロボットを製作することでその問題の解決策の一つになると考えた。 飲食店のタスクは具体的に4つに分類することができる。顧客への接客を行うサービス関連。レジ業務や在庫管理、予約管理を行う店内運営。実際に料理する部分となる調理タスク。店舗自体の衛生管理を行う清掃と衛生である。この時点で各分類の中にも人手不足の解消に関するロボットの案はいくつか考えることができる。例えばサービス関連だと、注文を端末から受け取り、配膳をロボットにさせるシステムにすればよい(ファミリーレストランのガスト)や清掃をロボット掃除機に任せるなどが想像に容易いだろう。しかしこれらは既に業界では一部ではあるが高いレベルで実用化されている。そこで考えたいのは調理タスクのロボット化ということになったのである。しかし調査してみたところ、チャーハンのような炒め物を作る、いわゆる鍋振りロボットは実用化されていることが分かった。だがそれらは1台200万という高コストで、鍋を振るといってもそこまでダイナミックな動きはせず結局のところ人が最終的にロボットではカバーできないところに飛び散ってしまった食材を混ぜ合わせる始末であった。そこで私たちの班はこのコンセプトのロボットをより人が混ぜる形で、小型かつ低コストに再設計することにした。

2. 概要

チャーハンを作るロボットを制作した。

2.1 初期計画案

2回目の授業で発表した際のチャーハンメーカーの設計図はこれである。
notion image
メカの初期案ではさまざまな機能があった。卵を割るユニット、パラレルリンクを搭載して鍋の中身を混ぜるユニット、ネギ刻みユニット、火を着火するユニットなどが盛り込まれていたが、最終的にそこまでいくことはできなかった。中でもパラレルリンクで鍋を混ぜるユニットについては逆運動学まで求めることができたが、実機を作るには至らなかった。
没になったパラレルリンクユニット
没になったパラレルリンクユニット
回路と制御については、初期案ではインクリメンタル式エンコーダを用いてブラシ付きDCモータの速度制御を行う予定だった。フィードバック制御に用いるエンコーダはインクリメンタルで速度制御と位置制御をしようとしていた。初期位置を左右で揃えて速度の積分で位置を求めようと考えていた。マイコンはRaspberry Pi Picoを用いて制御をし、モータの駆動にはモータごとにMOSFETを1つだけ使って一方向にしか回らないモータドライバ作ろうとしていた。
この構成だとさまざまな問題が起きることがわかった。まずモータの制御についてである。モータの位置制御をするにあたって、一方向だけにしか電流が流れないモータドライバである時、PID制御のうちのD制御をすることができないということに気づいた。1チャンネルしかないMOSFETの場合、モータの端子間は12Vか開放のどちらかである。0Vやマイナス電圧の状態がなかったためブレーキのような動作をすることができなかった。
初期のモータドライブユニットの試作
初期のモータドライブユニットの試作
V1.0基板
V1.0基板
V1.0のモータドライブ部のアートワーク
V1.0のモータドライブ部のアートワーク
V1.0のモータドライブ部の回路図
V1.0のモータドライブ部の回路図
V2.0のモータドライブ部のアートワーク
V2.0のモータドライブ部のアートワーク
V2.0のモータドライバ回路
V2.0のモータドライバ回路
この基板でV1.0が完成した。この基板にはパラレルリンクようにサーボモータポートやアナログ入力、インクリメンタル式エンコーダの入力ポート、UART、I2C、超音波センサのポートなどがあった。鍋の上にある材料の位置を距離センサで認識しようとした。
V1.0の基板
V1.0の基板

2.2 最終実行案

エンコーダをインクリメンタル式からアブソリュート式の磁気エンコーダのAS5600に変更した。これによって絶対角度を認識することができるようになったので、チャーハンリンクが何周したかを認識するようにできた。
初期案ではモータ1つにつき、駆動をMOSFETとゲートドライバそれぞれ1つずつで合わせて150円で済むはずだったが、最終案ではHブリッジを使うことになった。

V2.0の回路概要

V2.0基板
V2.0基板
notion image
notion image
notion image
notion image
notion image
 

3. ロボットのシステム

これが実際に制作したロボットのCADである。
notion image
右の表が使用した鍋、モータ、マイコン、センサ、設計ツールのである。
センサ、アクチュエータ、中華鍋、中華おたまを取り付けて動かした。エンコーダとモータは左右に1つずつ取り付けられており、左右で独立している。中華鍋に広東鍋をしようした理由は下記の図のように鍋を両持ちにするためである。中華おたまは鍋が動くことでバネで受動的に駆動される。
notion image
ハードウェア概要
ハードウェア概要
一般的にチャーハンを作る時に使われるのは北京鍋であるが、今回はこちらを使用しなかった。鍋には広東鍋を採用した。両持ちが可能な点において、気候的に優れているからだ。しかし、北京鍋に比べて広東鍋は浅いため、鍋ふりをする時に具材がこぼれ落ちないように工夫する必要がある。
notion image
notion image
中華鍋を混ぜる機構について2つの案を検討した。今回は案2を採用した。案1はロボットアームのようなものが必要になる一方で、案2は単純な回転運動で作ることができる。予算の関係上、今回は案2を採用した。
notion image
システムの構成は以下のように設定した。Main CircuitとCharHan Linkで分かれており、CharHan Linkは上記で説明したエンコーダとモータのユニットである。
notion image
次の写真は上記のシステムの左側にあるMain Circuitである。KiCad 7で基板設計をし、業者に発注した。半田付けは自分たちで行った。
CharHan!! Main Circuit
CharHan!! Main Circuit

5. 実験結果および考察

実験内容は主に2つある。1つめはシステム同定による伝達関数の抽出。2つ目は回転速度、回転角度の同期である。

システム同定について

システム同定を行った理由は、ハードウェア担当者がロボットを作るのが遅いので制御担当者に迷惑をかけてしまい最後の方に一気に制御を片付けるような流れるなるとPID制御のゲインなどがお気持ちによって決定されてしまうということが起きかねない。これは実機でとりあえず間に合わせで動かしてそれっぽく動作させるということをやっているので、その過程でロボットが破壊するリスクもある。
そこである程度Simulink上でロボットの制御シミュレーションを行い、PIDゲインや制御束をシミュレーションで決定し、それを実機に反映させるということを行う方法をとった。
これにより、メカの完成が遅れたり、壊れている時期であってもシミュレーション上で制御班員が可動できる状態にした。
システム同定ではシステムが謎な「マイコン→モータドライバ→モータ→エンコーダの角度の時間微分まで」を扱い、伝達関数を周波数応答のデータから抽出した。今回は振幅12Vで中心が0Vの正弦波を0.1Hzから100Hzまでの間で変化させ、周波数応答のデータを録った。
notion image
以下の図がシステム同定に使用した周波数応答のデータである。オレンジ色のデータが角速度[rad/s]で青色が入力電圧[V]だ。このように周波数が低い左側では入力電圧に対して書く速度が概ね追従しており、右の周波数が高い領域では追従できていないことがわかる。周波数が高いとシステムのゲインが下がっていることがこのデータから読み取れた。
システム同定に使用した周波数応答
システム同定に使用した周波数応答
このデータを元に幾つかの伝達関数に当たりをつけて伝達関数を算出し、比較してみてた。
周波数応答のデータよりシミュレートされた応答の比較
周波数応答のデータよりシミュレートされた応答の比較
一番フィットしていたのがで95.02%マッチしている。は極の数: 3 零点の数: 2 自由係数の数: 6である。この伝達関数は次のようになった。
についても見てみる。は94.76%合致していることが上記の図よりわかる。極の数: 2 零点の数: 0 自由係数の数: 3の条件で作ったは次のようになった
このように伝達関数を求め、これをマイコンからエンコーダから取得した角速度として扱い、Simulinkに落とし込むことでモータの速度制御のシミュレーションを行った。今回は授業でも取り扱ったことがある「極の数: 2 零点の数: 0 自由係数の数: 3」の伝達関数を用いてシミュレーションを行うことにした。

制御シミュレーションと検証

今回は左右のモータの角度と速度を同期するために、3つの制御案を考えた。
  1. モータAをI制御で速度を制御し、モータBはモータAとモータBの角の偏差にPIDゲインをかけて得た電圧を入力して位置制御する
  1. モータAをI制御で速度を制御し、モータBは「角速度の偏差にIゲインをかけたもの」と「モータAとモータBの角の偏差にPIDゲインをかけたも」を足し合わせて電圧を入力する
  1. モータAをI制御で速度を制御し、「モータBにはモータAに加える電圧」「モータAとモータBの角の偏差にPIDゲインをかけて得た電圧」を加えて位置と速度を制御する(擬似FF)

制御案1

📌
モータAをI制御で速度を制御し、モータBはモータAとモータBの角の偏差にPIDゲインをかけて得た電圧を入力して位置制御する
1つ目の制御案はモータAの角度もとにモータBの角度を決定し制御するというものである。
制御案1のブロック線図
制御案1のブロック線図
制御シミュレーションをしたところ次のような応答が得られた。同期において定常偏差が残るという結果が出た。
notion image
これを元に実機でテストしたところ次のような結果が得られた。
同期の定常偏差が残っていることがグラフから読み取れる。
notion image
このように定常偏差が残ってしまったのは、モータAとBの速度の差について考慮されていないからである。モータAは速度制御をしているが、モータBは速度制御をしておらず、とりあえず角度を同期させようと角度のPID制御をしているだけなのが問題だと考察した。

制御案2

📌
モータAをI制御で速度を制御し、モータBは「角速度の偏差にIゲインをかけたもの」と「モータAとモータBの角の偏差にPIDゲインをかけたも」を足し合わせて電圧を入力する
制御案2はモータBに先ほどの角度追従させる制御に加えて速度制御をくわえたものである。速度を目標に追従させつつ角度を同期させるのが目標なので、カスケード接続ではなく足し合わせることにした。
制御案2のブロック線図
制御案2のブロック線図
シミュレーションすると先ほどの制御案1の時よりも定常偏差は改善された。
notion image
シミュレーションを元に実機で検証した結果は次のようになった。
最初は概ね追従していたが、同期のにおけるモータAとモータBの角度の差が徐々に増加する結果になった。なぜこうなたのかについては未だ理由がわかっていない。
notion image

制御案3

📌
モータAをI制御で速度を制御し、「モータBにはモータAに加える電圧」「モータAとモータBの角の偏差にPIDゲインをかけて得た電圧」を加えて位置と速度を制御する(擬似FF)
先ほどの速度制御と位置制御を足し合わせる方式だと徐々に偏差が増えていくという問題が発生したので、モータBの速度制御の部分はモータAに入力した電圧をかけるような制御をすることで解決を試みた。速度のPID制御ではなく純粋な電圧を速度に関する値として提供するので、速度の同期における応答性は改善されるはずである。このようなことができると考えた理由は左右のCharHan Linkは同じものなので同じシステムと考えたからである。
制御案3のブロック線図
制御案3のブロック線図
シミュレーションでは同期における定常偏差は発生したものの、先ほどの制御案2の時と河原兄結果になった。
notion image
これを元に実機を動かした結果としてはこのようになった。同期における偏差は概ね0であった。制御案1,2よりも改善されており、鍋を左右で持つ際に左右の鍋の持ち手がズレる心配がなくなった。
notion image
これを元に制御案3を組み込みチャーハンを作ることにした。

4. 担当部分の概要と設計の工夫について

私が担当したのはチャーハンを混ぜる左右のChar Han Linkの設計、制作と鍋のモデリング、回路設計、はんだづけ、マイコンのプログラム、制御である。中でも自分がやった範囲が大きいものを記す。

メカ

チャーハンを混ぜるチャーハンリンクを設計した。チャーハンを混ぜるモーション案は2つ考えた。私はチャーハンを作ると決まったその日のうちにスロットリンクを使ったチャーハンの鍋ふりモーションの案2で設計を進めた。またその日のうちに中華鍋のモデリングも行った。
中華鍋を混ぜるリンク
中華鍋を混ぜるリンク
以下のような2つの案を思いついていたが、案2を採用した。その理由は単純なモーションを複雑なモーションに変換することが容易であったことと、案1は高加速度で動かす際に高いトルクが必要になり、電気的に故障リスクがあることから避けた。
中華鍋を混ぜるモーション案
中華鍋を混ぜるモーション案
論文The physics of tossing fried riceで紹介されているモーション
論文The physics of tossing fried riceで紹介されているモーション
中華鍋のモデリング
中華鍋のモデリング
初期案のチャーハンリンクのモデリング
初期案のチャーハンリンクのモデリング
コンロのモデリング
コンロのモデリング
チャーハンを混ぜるチャーハンリンクは合計で4回作り直した。V1.0が叩き台で、V2.0は実用案の初期案である。V2.0はギヤの慣性モーメントが高いままで制御性が悪い設計だった。またギヤのシャフトにヒンジピンを用いいていたが、固定する板の並行具合とベアリングの圧入具合からイマイチ高速駆動には向かないと判断したため、V3.0からシャフトをネジ固定する方式に変更した。
チャーハンリンクV1.0
チャーハンリンクV1.0
チャーハンリンクV2.0
チャーハンリンクV2.0
チャーハンリンクV3.0
チャーハンリンクV3.0
 
チャーハンリンクV4.0
チャーハンリンクV4.0
チャーハンリンクのスロットジョイントはこのように設計した
滑りやすい樹脂でできているigusのフランジブッシュを2つ重ね、そこに鍋を固定するバーを取り付けた。バーの穴は長穴になっており、摩擦を考慮してブッシュの径よりも少し大きめに作ってある。
チャーハンリンクのブッシュ
チャーハンリンクのブッシュ
ブッシュ部をスロット穴に通したもの
ブッシュ部をスロット穴に通したもの
鍋を持つ部分はアルミで設計した。切削にはFusion360CAMを用いた。
中華鍋を持つ部分
中華鍋を持つ部分
中華鍋を持つ部分の切削パス
中華鍋を持つ部分の切削パス
慣性モーメントを減らし鍋を通した米への打撃を与える工夫をした。ギヤの不要な部分を軽量化することで慣性モーメントを減らし,リンクの加速を高められるように設計した。
notion image
また,スロットジョイントの棒の形状も安全率をみながら最適な軽量化をした。
notion image
中華鍋の取手は斜めになっており、この角度の計測にはiPhoneの加速度センサを用いて重力方向に対しての角度差を用いた。35度だったので赤とオレンジのアングルは35度で作られている。これは3Dプリンタで製造した。3Dプリンタ部品にタップを切るのは強度的に不安があるのでM4ナットを横から埋め込んで締め付けるように設計した。
アングル
アングル

回路

電源回路が今回故障しやすく困った。TVSダイオードを取り付けることで高速な逆気電流スパイクの対策をした。逆起電力が発生した際に12Vラインが12V以上になることがある。これによってレギュレータの故障が発生したが、ツェナーダイオードによる12Vクランプで対策をした。しかしツェナーで流せる電流の定格をオーバーすると壊れてしまう。
notion image
今回使用したレギュレータのAZ1118CH-3.3TRは入力電圧の最大値が20Vだったため、逆起電力で20V以上発生していることがわかる。これについて色々対策を調べたとろこ有力な解決策が2つ見つかった。1つはシャントレギュレータによる電圧クランプだ。コンパレータでクランプしたい電圧対象がクランプしたい電圧を超えていないかを監視し、超えたらシャント抵抗アレイに電流を流して熱としてエネルギーを消費させる方法だ。2つ目は双方向DCDCコンバータを配置する方法だ。ハイブリッド自動車のプリウスにこの方法は取り込まれており、バッテリーに回生電流を流すことで逆起電力を充電に回すことでエネルギーを消費している。

エンコーダについて。

エンコーダはAS5600というものを使った。このエンコーダは12bitの分解能を持つ磁気式のエンコーダで絶対角度を出力する。このエンコーダは自己のアドレスを変更することができないため、複数のエンコーダを使用したい場合は通信するバスを分ける必要がある。今回はI2Cのバスをそれぞれのエンコーダごとに分けるためにI2CマルチプレクサTCA9548APWRを使った。
notion image
 

モータドライバ

モータドライバを購入すると高い値段をするので、今回はHブリッジを組んでモータドライバを作ってみました。初めて直流ブラシ付きモータのモータドライバを作ったので動いて嬉しかったです。MOSFETはTPH11006NLを使いました。60V40A流すことができるのが特徴です。ゲートドライバにはDRV8701ERGETというICを使いました。このICはデットタイムというMOSFETの切り替わりのタイミングに遅延を持たせる機能がついており、200nsの遅延がデフォルトで入っているのが特徴です。モータの駆動にはPHとENという2つのピンを制御することでモータの速度を変化させることができます。PHは流す電流の向きを表しており、ENはHIGHの時にモータに電流が流れるようになり、0の時はブレーキがかかります。このモータドライバは2つの方法で駆動できます。SMP駆動とLAP駆動です。LAP駆動は正転逆転を高速に繰り返すことで電流を連続で流すことができる駆動方式で、SMPはモータを回す/ブレーキをかけるを高速に繰り返す動作をします。今回はSMPを使いました。理由はLAP駆動でなくても十分な駆動エネルギーを作ることができていたからです。電力効率の悪いLAPを使ってまで電流を連続で流して得たいトルクはなかったのでSMPにしました。
notion image

5. 作る過程で得られた知識

今回のロボットを作る過程で様々な学びが得られた。中でもシステム同定をしてシミュレーションを元に制御を行うというのはいい経験になった。また電子回路の設計も初めてKiCadというツールを使うことができた。Hブリッジ回路でモータを動かすのは自分が回路を作る経験として学びがった。逆起電力の保護は今回は実装できなかったがどのような対策をすればいいのかを調べる過程はとても充実していた。

6. まとめ

これらの技術を持って無事チャーハンを作るロボットを動かすことができた。しかしチャーハンを混ぜるモーションの検討やチャーハンの美味しさの定量化についてはできなかった。
notion image

7. 付録

開発環境

  • ハードウェア開発(富岡,三好,谷崎)
    • Fusion360
    • Inventor
    • KiCad7
  • ソフトウェア開発(富岡,西村)
    • VSCode + PlatformIO
    • MATLAB/Simulink
    • GitHub
  • 情報共有
    • LINE
    • Notion
  • 開発機材
    • 3Dプリンタ
      • Adventurer4
      • Creality K1 Max
    • CNCフライス
      • RZ420
    • レーザー加工機
      • Etcher Laser Pro
      • FABOOL LASER DS

開発資料

ロボットの回路とプログラムを公開している。開発の過程としてGitを用いたバージョン管理も行った。詳細はこのURLからダウンロードできる。https://github.com/CharHanMaker/CharHanMaker

会計資料

notion image

付録

CharHanMaker
CharHanMakerUpdated Sep 11, 2024
Video preview
Video preview

Loading Comments...