みなさん,こんにちは
おかしょです.
二輪型倒立振子の記事の更新がだいぶ久しぶりになってしまいました.
いろいろな機能を搭載しようと思うと,かなり大変で更新が遅くなってしまいました.
しかも,この記事はソフトウェア開発編のその1です.
ソフトウェア編は全部で3つの記事にする予定なので,ソフトウェア開発が完成するのはまだ時間がかかりそうですが,ぜひ参考にしていただければ幸いです.
この記事を読むと以下のようなことがわかる・できるようになります.
- ArduinoとProcessingを通信させる方法
- Arduinoで作れるものの例
- Processingの作品例
この記事を読む前に
この記事は以下の記事の続きとなっているので,この記事を読む前にそちらを先に読んでおくことをおすすめします.
ソフトウェアの構成
冒頭でも言いましたが,このソフトウェア開発編は3部構成にする予定です.
アニメーションの構想を考えた時点では3部構成にする予定ではなかったのですが,マニュアルモードと自動制御モードの時でアニメーションも切り替えた方がわかりやすいと思ったので3部構成にすることにしました.
今回はそのソフトウェアの第1部です.
1部ではマニュアルモードのアニメーションを作成しました.
マニュアルモードではキーボードによる車輪の回転制御ができるようにします.
どの部も,構想編で書いた時系列データや3Dモデル,動画は表示するのですが,真ん中に表示するものが変わります.
今回の第1部では押しているキーがどれかを表示します.
必要な技術
この第1部を完成させるために必要な技術を紹介します.
まずは画面右側に表示する時系列データの表示方法です.
これはリアルタイムでArduinoとProcessingで通信をする必要があります.
このグラフを作る方法については以下の記事で詳しく解説
画面左上に表示するwebカメラからのリアルタイム動画の表示は以下の記事で解説しています.
画面左下には二輪型倒立振子の3D CADを表示します.
3DモデルはFusion 360で作成して,以下の記事で解説しているようにして表示しています.
どのモードでも表示するものは以上のものになります.
そして,マニュアル操作時に表示する必要があるのは,キーボードのどのキーを押しているかです.
それと同時に通信しているモーターの回転を制御する必要があります.
キーボードを使ってモーターを制御する方法は以下の記事で解説します.
以上の技術をすべて使用してProcessingとArduinoのプログラムを書きます.
プログラムの実行結果
いつもはArduinoやProcessingのプログラムを公開しているのですが,今回はまだ完全版ではないのでソフトウェア編のその3ですべてのプログラムは公開したいと思います.
なので,この記事ではプログラムの実行結果のみを示します.
プログラムを実行すると,以下のようなウィンドウが表示されます.
このように,画面をみれば現在のモードはどっちなのかやロボットの状態などがすべて表示されています.
テンキーでモーターを制御すると以下のように動作します.
キーボードでモーターの制御とセンサーを使って姿勢角を求め,時系列データの表示と3Dモデルの姿勢角変化ができるようになりました. #Arduino #Processing pic.twitter.com/fEdTcJHbea
— おかしょ (@okasho_engineer) September 12, 2020
キーボードで片輪ずつの制御ができています.
一番右下にはその入力の時系列グラフが表示されています.
しかし,姿勢角が少し動かしただけで乱れてしまっています.
これはフィルタを調整すれば解決すると思うので,自動制御をするまでには解決したいと思います.
まとめ
この記事では二輪型倒立振子ロボットのソフトウェア編その1としてマニュアルモード時の車輪の回転制御をするアニメーションを紹介しました.
ここまでかなり時間がかかってしまいましたが,思った通りのものができました.
続けて読む
今回のアニメーションで姿勢角のぶれが大きいことがわかりました.
このようなぶれを押さえるにはフィルタが必要になります.
以下の記事ではフィルタの中でも基礎的なローパスフィルタについて解説しているので,参考にしてください.
Twitterでは記事の更新情報や活動の進捗などをつぶやいているので気が向いたらフォローしてください.
それでは最後まで読んでいただきありがとうございました.
コメント