前回、一応安定して自立できる倒立振子ロボットを作ることができました。
一方で、なんとなく実験的に、これがこのロボットの限界で、ここからセンサやらロボットアームやらを積み増せる感じではない気がしました。
今回はその辺をまとめて一旦このシリーズを終わりにしようと思います。
すぐ次の倒立振子ロボット(改)の話を始めますが。
書評・・・という言い方は烏滸がましいというか少し大仰な気がしますが、読んだ本についてもここで書いていきたいと思っています。
今回はオーム社「Pythonによる制御工学入門」です。
公式サイトはこちら。このページに書いたTipsなんかも書いてあるかも。
続きを読む前回、Lambda Plus+IMUとのインターフェースとなるROSノードを整備しました。
このノードは、IMUを動かすマイコンであるArduino互換マイコンであるLambda Plusから姿勢角、加速度、角速度の合計9つのデータを受け取り、
姿勢角を whipbot/Posture_angleというオリジナルメッセージ、加速度、角速度をsensor_msgs/ImuというメッセージでPublishしていました。
今回は、この2種類のメッセージをsubscribeしてそれを元にモータトルクのPID制御を行うROSのノードを作っていきます。
ちなみに前回公開したコード、オイラーのスペルが間違っている気がするのですが、間違っている箇所を見つけられなくなりました。
若干順番が前後したような気もしましたが、倒立振子ロボットを作る(2)-姿勢制御とそのためのパーツ - 技術開発日記@KTDの記事で、Arduino互換のマイコンであるLambda Plusを使って、姿勢角を取得できるようになりました。
このままLambda Plusに遠隔操縦指令を受け付ける機能とか障害物を回避する機能とかを付け加えていくことも可能だとは思うのですが、最初に述べた通り、「ROSを使ってみたい」という副目標のようなものがありますし、上位計算機としてUbuntuが動いているような大きなマシンがあるのは、重い処理を受け持たせられるというメリットもあります。
せっかく持っている近藤科学のサーボモータ+ROS対応ドライバを使ってみたいというのもありますが。
そんなわけで、
Lambda Plus:
上位PC
みたいな感じで役割分担をさせることにしました。