2021/12/15 よりサイトリニューアルしました

unitv2で2足歩行ロボットの作成「uartでRaspberryPi ZERO Wのi2cを制御」

unitv2 ロボット

前回unitv2からuart通信にてraspberrypiのi2cを制御しサーボモーターを駆動させました。↓

 

今回は最終目的である「2足歩行ロボット」を完成させたいと思います。

前回までで

unitv2→uart→raspberrypizerow→i2c→pca9685→サーボモーター

の形が出来ましたので、あとは「ロボットの骨組みを作る」「モーションの作成」で完了します。

では初めに、ロボットの骨組みを作成します。

 

ダイソーの¥100化粧箱

これにデバイス全て突っ込む

https://twitter.com/ketunorobio/status/1443164099395788803

本当は3Dプリンターで作りたいのですが、まだ買ったばかりで開封もしていない(-_-;)ってことで、また段ボールに頼ることにしました。ダイソーで10mm×10mmのよさげな化粧箱が¥100で販売されていたので、これを使うことにしました。

これの中にunitv2,raspberrypizerow,pca9685,リポバッテリー等全てをぶち込みます。ちなみに、過去に作成したraspberrypiロボットの小さいバージョンのような感じになるので、過去記事のこんな構成になります。↓

実際に作成したのがコチラ。↓

unitv2 ロボ内部

。。かなり強引ですがなんとか入りました。

これにカバーをかぶせます。↓

unitv2 ロボット

いやあ~我ながら雑ですが、これでOKとします。

最後に、前進、後退、旋回のモーションを作成します。

 

モーションプログラム

javascript

unitv2側のプログラム修正になります。

こちらも過去記事でまとめた内容になりますが、今回、ブラウザからサーボモーターを操作するにあたって、「ボタンを押している間は動作し続ける」ように設定しました。

setInterval、clearIntervalの関数でこれを実現しています。詳しくは過去記事でまとめているので、こちらを参照ください。↓

 

連続押しでも動作の間隔が大きい場合や、重なって誤動作してしまう場合は、setIntervalの引数の秒数を変更してやればOKです。uart通信のタイムラグ等の兼ね合いもあるかと思いましたが、特別その辺りは計算しなくてもスムーズに動作しました。

続いて、cssも一部変更しておきます。

 

css

bodyタグに-webkit-…を追加しておきます。これが無ければ、スマホで長押しした時にボタンのテキスト修正画面にいちいち切り替わるので厄介です。(アンドロイド専用?のcssっぽいです。)

※ちなみに今回はPCからの操作を前提としておりませんので、先ほどのjsを記述しちゃうとPCのマウスクリックは効かなくなります。

最後に、ロボットの動作モーションをpythonで作成します。

 

python

raspberrypi側のpythonプログラムを変更します。

サーボモーターのスピード調整の為に、whileで決められた角度まで数値を1づつ変化させています。

他は特に特記する事はありません。

それでは、動作確認をしてみようと思います。

 

動作確認

unitv2のindex.htmlがある階層に移動し、そこでpython http.serverを立ち上げます。

python -m http.server 8000 –cgi

ラズパイのpythonプログラムを起動させておきます。

python3 pythonファイル名

あとは、unitv2のローカルIP:8000にアクセスすれば確認できます。(カメラ画像は一旦unitv2のローカルIP:80で起動しておく必要があります。)↓

見た目はともかく、なんとか完成致しました。

背中にしょってる単三電池は使用していませんので、リポ×2を中に突っ込んで動かしています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です