IPMモータ+CAN通信でAGV製作 技術部での研究内容の紹介
こんにちは。今月のブログ担当、Kzです。
いよいよ桜シーズンも過ぎ去り、新年度がスタートしました、学校では新学期がスタートですね。
先月、社内でお昼休憩時に皆が集まりお花見が開催され、参加することができました。コロナの影響もあり、私は今回が初参加となりました。少し肌寒かったですが、豪華なお弁当ランチに舌鼓でした。
また先月、私は品質管理検定(QC検定) 3級を受けてきました、今回が初挑戦でした。コロナ禍で延期になったり用事ができたり体調崩すなど、ずっと受験ができていませんでしたが、ようやく無事に受験することができ、一安心しました。合格できていれば尚更良いですが。
明和製作所では品質は共通言語という考え方からQC検定を全社共通の基準資格と位置づけています。正社員は3級、エキスパート(準社員)は4級取得を必須としています。10年以上前から取り組まれており、なんと全従業員85名中74名がQC検定資格保有者となっています。
当社の品質への取組みについては下記ブログで紹介しています。
<研究テーマの取り組み>
前年度から技術部全員で取り組んでいる研究テーマは「昇降機能付き台車(AGV)の製作 」です。
AGVは「自社工場でモノを運ぶ」為に製作することに決まりました。更に、弊社の製造(工場)の声により「昇降機能が有ったらいいよね」という話でした。
弊社の工場で使っていました、足踏み式の昇降台車をベースに製作しています。未だ製作途中ですが、最近ようやくAGV(無人搬送車)台車が形になってきましたのでご紹介いたします。
使わなくなった昇降台車を流用したのでサビだらけですが、最終的には綺麗に塗装した方が良いですね。
<台車の機能>
・重い荷物を上げ下げする「昇降機能」
・台車を人が手押しで運ぶ際に使用する「モータアシスト機能」
・光学誘導式(ライントレース式)の「AGV機能」
例年の研究テーマ 2~3年分の欲張り仕様です。
私の主な担当は「ライントレース式AGV 」の製作になります。
AGVには様々有り、光学誘導式、画像認識方式(QRコードなど)、磁気誘導式、SLAM誘導式(AMR:自律走行搬送ロボット)、レールを走行するもの等ですが、今回はビニールテープ上を走行するライントレース式のAGVを製作しました。
磁気テープ式が一番容易だと思ったのですが、「磁気テープ」自体が高価な為(1mにつき1000円)、安く手に入るビニールテープ 上を走行するものにしました。ビニールテープだと経路変更や取り外しも簡単です。
今回、弊社の主力製品である小型のIMPモータ:IPM-73S (DC24V)を使用しました。これにオリジナルのギアを装着し、モータと一体化させて車輪に取り付けて走行させます。
また、IPMモータのコントローラーを制御するために司令塔として市販のRaspberrypi(ラズパイ)を使用しました。
私の勝手なイメージですが、AGVと言えばサーボモータやステッピングモータが主に使われている気がします。
物流倉庫などで、荷物の運搬で碁盤目状に素早く走行するタイプのAGV(Amazonの棚ロボなどが有名)では、正確な位置決めが必要なため、細かなモータの制御(ステップ角度:1.8°以下など)が可能なステッピングモータやサーボモータが使われていると思います。
一方、正確な位置決めが特に必要で無い場合や、ゆっくり走行する AGVやAMR(自律走行搬送ロボット)の場合は、コントローラーで制御可能なIPMモータでも可能だと思いました。
サーボモータやステッピングモータの場合は保持力のおかげで、ギアがなくてもピタッと停止することが可能です。一方、制御が無く回転がフリーのモータの場合は、ブレーキが無いと停止ができず、そのまま惰性で進んでしまいます。
今回はIPMモータ+コントローラーで速度制御(回転制御)が可能であることと、AGV走行用に試作したギアを取り付けたギア 一体型モータということもあり、惰性で進まずに停止させることが可能です。
速度指令値を数値で与えるだけで、希望する回転数でモータを回すことができますので、速度指令値を徐々に下げてスピードを落とせば、惰性で直進することを避けることができます。
更に回生ブレーキを取り付けるとピタッと停止させることも可能です。
余談ですが・・・DCマグネットモータを取り付けたAGVで走行試験をしたことが有るのですが、回転がフリーなので、意のままの位置に停止することがとても難しかったです。
また左右の回転バランスを調整することが難しく、直進させることもままなりませんでした。
回転フリー対策として、外付けのギアボックスを使用する場合、ギアの音が気になるかもしれませんが、弊社のギアが一体型のモータでは(主観ですが)殆ど音が気にならないと思います。
今回使用のIPMモータではギアが一体型であることと、コントローラーによる回転数のフィードバック制御で、直進させることもゆっくり停止させることも可能でした。
IPMモータが主に自動車で使われているのは、効率が良く省電力性能を発揮し電源(バッテリー)を長持ちさせることができるのだと思います(回生ブレーキで充電もできますし)。
サーボモータの場合、位置決め精度が優れている一方で、回転停止中に発振(振動)が生じる場合が有ります。サーボの保持力(サーボロック)で回転させない(停止する)ことが可能ですが、その間、電力を消費することになると思います。
ステッピングモータでは急激に大きなトルクが掛かると「脱調」が起き、モータの制御が不能となります。
そういった点では、AGVにIPMモータを使用するメリットが少なからずとも有るのではと思っています。
ライントレース式のAGVには、赤外線フォトリフレクタ(フォトセンサー)という部品を使います。
赤外線フォトリフレクタは、まず赤外線を照射し、その跳ね返った光を受け取り、反射光の強度によって数値が変化するモジュールです。
赤外線ですので、反射する物体の色により信号の強度が変化します。対象物の色が黒だと光が反射しづらいため検知したときの値が小さくなり、対象物が白い色だと赤外線が強く反射され、数値が高くなります。
AGVがトレースするものとして、「白色のテープ」を使用しました。弊社の工場の床の色が緑色なので黒色に近く信号が弱くなります。そこで対照的に反射強度の強い「白テープ」使いました。
ライントレースで使用するフォトセンサーの信号をA/D変換する為のプログラムと、「(以前、先輩がブログで紹介しました)CAN 」のプログラムをコントローラーに追加しました。
CAN通信 はモータコントローラーとRaspberrypiとで相互通信させます。
CAN通信 に関しては以下のブログにて紹介しています。
全体の仕組み(流れ)
①フォトセンサーが受け取ったアナログ信号をモータコントローラーで受け取り、A/D変換を行います。
②A/D変換された信号データをCAN通信にてRaspberrypiに送信します。
③Raspberrypiが受け取ったフォトセンサーのデジタル信号をもとに、AGVの左右の車輪の回転数を計算します。
④計算結果をRaspberrypiがCAN通信にて、左右それぞれのモータコントローラーに速度指令値を送ります。
⑤コントローラーは回転指令値に従いモータ(車輪)を回転させることで直進したり、曲がったりしします。
<接続イメージ図>
ということで、まずは直接AGVを制御せずに練習用にライントレースカーを製作しました。
<AGVの練習用に作成したライントレースカーの紹介>
ライントレースカーには市販の組み立てキット(ミニ四駆で使う小型モータ付き)を使いました。
[ライントレースカーの主なパーツ]
・フォトセンサー
・A/D変換モジュール
・単三電池用ボックス
・モータドライバ
・スマートフォン用のバッテリー
・Raspberrypi
を使用しました。
フォトセンサーの配線やA/D変換モジュールなどを取り付ける回路の作成は先輩に作っていただきました。
読み取ったフォトセンサーの信号をA/D変換後、Raspberrypへ送りプログラムで計算させ左右のモータ(ドライバ)にPWMの電流を送りモータの回転を制御しました。
初めてpythonでプログラムをしましたが、なんとか無事に走行させることができました。
スムースに走行させる為に、PID制御を使いました。そこが一番大変でした(脱輪の連続で、走行コースをもっと簡単にすればよかったと・・・)。
CADで作成したA0用紙サイズのコース上でライントレースカーを走らせました。
また実際の工場の床に白色テープを貼り、走行させました。その場転回もさせました。
我ながら上手く走行できていると思います。
2023年 4月時点では、昇降機能付き台車(AGV)のライントレース機能はできていません。
その代わり、台車(AGV)の「アシスト機能」と「遠隔操作」まではなんとかできました。
<アシスト走行の動画>
「モータアシスト走行」では、台車の取手に操作スイッチを取り付けています。
左のレバーで前進・後進を決め、右のボタンを押すとモータが回り、台車が前進(後進)します。
ボタンを離すとモータが止まります。
アシスト走行用操作スイッチ
スロースタート・ストップ機能がついていますので、ゆっくり徐々に安全に加速できます。
実際にモータアシスト機能を使ってみましたが、大人を3人載せても台車がスイスイと進みます。
<遠隔操作の動画>
ちらっと見えるノートPCから指令を送って前進、旋回を行っています。人が急に出て来て慌てて停止(通過待ち)したことと、操作に手間取って中々前進し始めないのは、私の操作ミスです。
AGVはテスト段階中ということと安全の為、走行スピードを半分以下に抑えています。今後、安全装置やシグナルタワー(パトライト)も取り付ける必要が有ります。
「遠隔操作」では、PCから無線でAGVユニットのRaspberrypiにssh接続します。
接続完了後、PCのターミナル(TeraTermなど)上でコマンドを入力しCAN通信 の設定を行います。
後はCAN通信でデータを送信する為に、PCから常時コマンド(速度指令値)を送り続けます。暴走防止の為、通信が数ミリ秒途切れるとAGVが停止するようにしています。
コントローラーはRaspberrypiからCAN通信で送られてくるデータ(速度指令)に従ってモータを回します。
Raspberrypi(Linux)にはcan-utilという便利なツールが有り、それをインストールするだけで簡単にCAN通信をすることができます。
Raspberrypi自体にはCANのモジュール機能が無い為、外付けで手製のCANコントローラー+CANトランシーバーの回路基板を繋げています。
RaspberrypiはCANコントローラーとSPI通信を行っているだけです。
CANコントローラーを動かすために発振器が必要になります。
CANトランシーバーとCANコントローラーの入力電圧が異なった為、若干工夫が必要になりました。
現在は、入力電圧共通のコントローラーとトランシーバーが一体型のチップも売っているようです。
無線によるAGVの遠隔走行でしたが・・・結構大変でした。
車輪のバランスが悪く、片輪が浮いていたのでシムを増して調整したり、何故かしら真っ直ぐ進まず右に曲がったり、時には左に曲がったりと。
AGVユニット(鉄の箱)が重く後輪に荷重が掛かり過ぎている為、駆動側の前輪に荷重が掛からず動力が伝わっていないのでは?と思ったり。
実際にそうだったのですが、結局のところ一番大きかったのは、回転数制御であるPIDゲインの設定を行っていなかった為でした。
なかなか原因に辿りつけずに、技術の皆様を巻き添えにして、あーだこーだ話し合ったのが懐かしいです。
AGVが走行中に出力する回転数データをCAN通信でモニタリングすることで原因が判明しました。
無事に無線遠隔走行ができ、動画を撮影することができました。
それにしても「CAN通信 はノイズに強い」です。
最後に
久々にブログを書くとWordPressの使い方やHTMLの記述方法で毎回手間取って大変です。便利なようで慣れるのが大変なWordPressでした。近年話題のChatGPTがブログを書いてくれたら楽なのにと思いました。どうもライントレース用のプログラムは書いてくれるような気がします(テトリスなど複雑なプログラムは書けるので)。
次なる私の目標ですが・・・AGVのライントレースです! 台車(AGV)にフォトセンサーを取り付け、フォトセンサーの信号をIPMモータのコントローラーに入力して走行させます。後は前述のとおりです。 昇降機能の製作も残っていますが、次回はライントレースができるように頑張ります。
技術力向上の一環としての勉強会では、AGVを製作しています。弊社のIMPモータ+コントローラーでAGVを無線で遠隔操作して走行させることができました。
コントローラーは今回のAGVの様に、フォトセンサーを繋いだり(A/D変換)、RaspberrypiとCAN通信を行ったり、アシスト走行用のスイッチ・ボタンを取り付けたり、その他、安全装置用のGPIO制御を行ったりとモジュールを外付け拡張して使えます。
個人的にはこのAGVが工場内で活躍できたら嬉しいです。今回、AGVの「走行」に関するメインの様な記事を先に書いてしまいましたが、AGVユニット(筐体)や加工・設置、回路設計、モータの選定+ギアの設計や計算・設置、昇降ユニットの試行錯誤など色々あります。そちらもメンバーから紹介できたらと思います。
ご拝読、ありがとうございました。