最近、自動ハンコロボットが巷で流行ってますね。LTで発壇した際の自動捺印ロボットアーム、通称「上司要らず」について紹介します。働き方改革やワークライフバランス改善が叫ばれる中、時流に逆行するがごとく執拗に蔓延るハンコ文化。それに乗じ、増加の一途をたどる「ハンコ押すだけ上司」。なんとかこの状況打開できないか?そこで自動でハンコを押す装置製作を思い立ったのです。実際の位置決め精度を考えればXY軸移動のほうがよさそうですが、水平多関節の方が動きがかっこいいですよね。障害物があっても回り込んで回避してアームを動作させられるなどメリットもあります。1-1アームアーム部にはNode-REDからJSONコマンドを送信することで回転速度や位置、角度指定といった動作を可能とするKeiganMotorを使用しています。なんとBLEでの通信もできるため、スタンプ部をESP32のBluetooth通信としたことでPCとロボットアームは無線通信となっています。*概要ではハンコですが、一般ウケも考えてスタンプにしました。1-2捺印部ESP32とサーボSG90を組みあわせて動作させています。ESPとPC(Lattepanda)間の通信をBluetoothシリアル通信し、Node-RED(node-red-contrib-bluetooth-serial-port)で行っています。ユニバーサル基板にしてかなり回路コンパクトになった♪これならこのまま載せれる。20192.制御Node-REDでアームの動作とスタンプ部の制御を行い、YOLOv3による物体検知や位置認識、その他Node-REDで表現しきれない処理(私の理解度の問題...)はpythonで書き、execノードを使ってNode-RED側に読み込んでいます。今回、node-red-contrib-keiganmotorノードを使用しました。公式にRaspberryPi3では動作確認されているのですが、YOLOの推論とアーム制御を同時に行うと、メモリ的にギリギリなため、Lattepandaにubuntu18.04を入れて使用しています。この際、Node-REDのパレットの管理からnode-red-contrib-keiganmotorノードをinstallすると、nobleもinstallされるのですが、nobleの相性の影響でUSBシリアルがNode-RED上で使用できなくなります。[(参考)公式ドキュメント]https://docs.keigan-motor.com/software_dev/node-red/node-red-node2020年2月現在では、販売されているRaspberryPi4を使用すれば上記注意は気にせずすみます。node-red-contrib-keigan-motor-sequencerノードも新たに発表されましたのでこちらを使用する方がよいかと思います。今回の位置検出だけでは、AIを使わなくてもopencvなどで検出することは可能だと思います。後々リアルタイム物体検知などやりたかったので、全く無知だったところから勉強しながらKeras-Yolov3を使って学習モデルを作成し認識させました。座標変換yolov3で認識したスタンプ欄(写真(2-3下)ではstamp)の位置と、スタンプ部原点(写真ではpush)と原点(写真ではroot)の実寸をあらかじめ測定しておき、pixelの座標から割り出した間隔を実寸に置き換えてます。これをsympyを使い、push,root,stampの位置を角度に変換する連立方程式を立式し求解しています。画像認識スタンプ欄の書かれた紙が傾いている場合、傾きに応じてスタンプ部がひねりを加えてくれないとまっすぐにスタンプを押してくれません。そこで認識したスタンプ欄(stamp)の角度を検出させるため、YOLOv3で認識した部分をトリミングし、角度検出するプログラムをopencvにて作成しました。2019実際のハンコ紙に押すの忘れて動画撮影してしまいました...おわりに今回、AIに関してほぼ0知識の状態から始めましたが、ネットで調べながら1か月ほどで完成させることができました。それだけAIに関する文献や記事がオープンになり、浸透してきたということなのだと思います。AI画像認識にチャレンジしていない方は意外と簡単なので、ぜひ挑戦してみては!ご指摘や知りたい情報等あればお気軽にコメント下さい。高山@typeR_Anonymous化学系専攻ですが、Node-RED・Noodlから始まってプログラミングpython,Javascriptを勉強中。upLoginユーザーは見つかりませんでした。