読者です 読者をやめる 読者になる 読者になる

Raspberry Π

Raspberry Piでいろんなことをやってみようというブログです。

mincraft

第19回 Raspberry Piでラジコンを作る。

いよいよ改良版ラズコンを動かしてみます!!
ですが、やはり壁があり、、実際の動かした際のアニメーションは次回となります。


f:id:taka230035:20170330090147j:plain:w300



前回の記事は以下です。

rasp0035.hatenablog.com





最終確認

ラズコンの状況は、指示があればいつでも動く状態です。
f:id:taka230035:20170214085523j:plain:w200

スマホですが、ブラウザからのページ表示は以下となっており、
ボタンを押せばすぐに指示が送信されます。
f:id:taka230035:20170306084432p:plain:w200




動かしてみる!


遂に動かしてみましょう!!




直進は。。。

驚くべきスピードです。
ダブルギアの能力が十分に発揮されていました!







次に旋回です!





。。。が、まったく動きませんでした。
うまく行かなかったので、動画など特にありません。



旋回ができない理由

直進が出来た時はテンションがあがり、このプロジェクトも無事成功での完了かと思ったのですが、
なんと旋回ができませんでした。

理由はタイヤにあると思います。
以下のイラストにて
タイヤと地面ではの平行線で接着されています。
今回の旋回の場合はタイヤを片方は後ろに、もう片方は前に動かそうとしていました。
f:id:taka230035:20170327082925p:plain:w200

ただ、それぞれ回転する方向への摩擦力が大きくて動かないようでした。
ちょっと伝わりづらいと思いますが。
f:id:taka230035:20170327082931p:plain:w200


ちなみに挙動としては以下の戦車の動画のようなものを想定していたのですが。

www.youtube.com

動画をみていただければわかるように、カナリ地面がえぐられていて。
摩擦力以上のパワーを生み出す、戦車ならではの技術のようです。

ラズコンでのモーターではここまでのパワーは出せないという答えに行き着いております。




旋回の対応

現状の装備のままどうやって旋回を実現するかということで、まずタイヤの形状を変更しようと思います。

以下が画像です。
赤い部分が地面への設置点で、今回は少なくしてみました。
f:id:taka230035:20170331083634j:plain:w300

これで動かしてみたのですが、、バランスがおかしく、上図の黄色矢印の部分で車体が前後にバウンドしながらの直進となりました。


この方法でもダメです。

もう案が思いつかないので、その場での旋回はやめようと思います。




とにかく曲がりたい

なんとかして曲がりたいと思い、Web上を探し回りました。

そうなところ、
DCモーターの回転数を変えられることがわかり、
左右のDCモーターの回転数を変えることで、徐々に左右に方向転換する方法を思いつきました。

そもそも、
なぜかDCモーターは回転数をいじくらないという固定概念があったのです。
サーボモーターでしか操作できないと。
そのため旋回という術を思いついたのですが。

回転数を変えれるのであれば、徐々に曲がっていくほうが良いですね。
子供の頃ミニ四駆でも電池を交換すると早くなった記憶が蘇りました。



上のミニ四駆の例はモーターにかかる電圧を直で変更するということでしたが、
今回はソフトウェア(OS)側で回転数を変更で、
gpioコマンドで可能となります。


具体的には

gpio -g pwm 24 1023
gpio -g mode 24 pwm

のようにするようです。
最初の行の1023がが調整数値となり、0~1023まで設定できるようです。



挙動も確認できたので、使うシェルも全体的に変更して、以下のようにしました。
※前回動かしたときから、ラズパイの前後の方向が変更となっています。

$ cat start.sh

gpio -g pwm 23 0
gpio -g pwm 24 1023
gpio -g pwm 17 0
gpio -g pwm 18 1023
gpio -g mode 23 pwm
gpio -g mode 24 pwm
gpio -g mode 17 pwm
gpio -g mode 18 pwm
gpio -g write 23 0
gpio -g write 24 1
gpio -g write 17 0
gpio -g write 18 1



$ cat stop.sh

gpio -g pwm 23 0
gpio -g pwm 24 0
gpio -g pwm 17 0
gpio -g pwm 18 0
gpio -g mode 23 pwm
gpio -g mode 24 pwm
gpio -g mode 17 pwm
gpio -g mode 18 pwm
gpio -g write 23 0
gpio -g write 24 0
gpio -g write 17 0
gpio -g write 18 0



$ cat back.sh

gpio -g pwm 23 1023
gpio -g pwm 24 0
gpio -g pwm 17 1023
gpio -g pwm 18 0
gpio -g mode 23 pwm
gpio -g mode 24 pwm
gpio -g mode 17 pwm
gpio -g mode 18 pwm
gpio -g write 23 1
gpio -g write 24 0
gpio -g write 17 1
gpio -g write 18 0



$ cat left.sh

gpio -g pwm 23 0
gpio -g pwm 24 256
gpio -g pwm 17 0
gpio -g pwm 18 1023
gpio -g mode 23 pwm
gpio -g mode 24 pwm
gpio -g mode 17 pwm
gpio -g mode 18 pwm
gpio -g write 23 0
gpio -g write 24 1
gpio -g write 17 0
gpio -g write 18 1



$ cat right.sh

gpio -g pwm 23 0
gpio -g pwm 24 1023
gpio -g pwm 17 0
gpio -g pwm 18 256
gpio -g mode 23 pwm
gpio -g mode 24 pwm
gpio -g mode 17 pwm
gpio -g mode 18 pwm
gpio -g write 23 0
gpio -g write 24 1
gpio -g write 17 0
gpio -g write 18 1



過分もあるかもしれませんが、上のシェルで動作が確認できました。
今回は以上です。

次回こそ実際動かします。リンクは以下です。

rasp0035.hatenablog.com