もともとラズパイでLチカとかお遊び的な事はやっていたので少々の知識はあったのですが、最近Pythonを本格的に学び初めまして、少しづつですが理解が深まっている感じです。
で、
プログラミングやってるからには、なにか「作品」を創り出したいんですよね。無様なものでもなんでもいいから、とにかく自分でなにか物を作らないと「何のためにやってるのか?」としっくりこない。
で、
エンジニア=プログラマーみたいな風潮があるけど、個人的には違うと思うんですよね。厳密に言えば合ってるけど、付け足して欲しい。
電子工作もそうだし部品開発してるのもそう、建築もそうだし、インフラや料理人だって。
技術職なんですから、プログラマーでくくるのやめて欲しいですよね。しかもWEB系が多いし。なんかムカつく。
話を戻します。Pythonを始めたのは、「2足歩行ロボ」を自作したい為です。目標がないと、やる意味ないですからね。あと、個人的にはハードからソフトまで自作してるヲタが、世間一般のエンジニアと呼ばれている輩よりも優れていると思っているからです(あくまで個人的感想)。つまり、自分もそうなりたいと。
主に2足歩行ロボはあるでぅいーのでC言語(だったよね?)使って開発されてるのが多いですが、手元にはラズパイしかないので、Pythonでサーボを動かそう!って運びになりました。
ググってもなかなかラズパイでの2足歩行ロボはなかなかヒットしないので、逆に完成できれば少し目立てるかな?って思いもあります。
それでは、今回は構想してるラズパイ2足歩行ロボの詳細をまとめておこうと思います。
全体的な構成
ブラウザをリモコン代わりにロボを歩かせる
プログラム
以前、ラズパイでカメラ付きのラジコンを製作しました。↓
これの大まかな構成としては、ラズパイにwebサーバー(webiopi)を立てて、そこに操作画面を配置する。です。
動作する流れとしては、html ->javascript->python->gpioでモーター駆動
て感じです。
これを応用すれば、サーボもうごかせんじゃね?となったのです。ブラウザだからカメラのストリーミング配信でロボット目線の画像も埋め込めるし、なかなかいいんじゃないかと。
上記のpythonの部分をサーボ制御に変更すれば、行けそうな気がするのでやってみます。(javascriptも変更が必要か。)
図にすりゃ下記のような感じですね。
ハードウェア
サーボモーターはpwmで角度を制御しますが、ラズパイのハードウェアpwm制御系統は2つしかありません。(比較的正確にpwm制御できるもの)
ソフトウェアpwmなら多く実装されていますが、動作が不安定になります。
よって、サーボモーターを最大で16個ハードウェアpwmで動作させることができる専用ドライバを使用します。
ラズパイからはこれにI2Cの半二重通信の接続を行って、ドライバを制御します。
ロボット自体は手乗りサイズ程のものを考えており、足は片方2個ずつ、手は無しで実装してみます。
4つのサーボを制御ですね。
外観
とりあえず段ボール
3Dプリンター欲しい、けどお金ない、よしんばあったとして、CAD使えない。
ってことでとりあえず段ボールで見た目を設計します。
どっかで見たような型ですね、ええ、パクリです。そして適当にも程がありますが、とりあえずやってみる。
ザッカーバーグも言ってたしね、完璧を目指すな、とりあえず終わらせろみたいな?
まとめ
おもいっきり抽象的な構想ですが、とりあえずこれから「ラズパイの2足歩行ロボット」の作成にとりかかります。
もちろんのこと、そううまく簡単にいくはずは無いと思っていますが、なんとか頑張って完成させたいと思います。
完成すればまた記事にしてまとめようと思いますので、良ければ見に来てください。
ゆくゆくは、3Dプリンター使って見た目も整えたいですね、手も付けてみたい。