機械制御

オムニホイールによる全方向移動車の制御 - 機械制御

オムニホイールについて

オムニホイールは、上の動画のマシンに搭載されているような駆動輪で、ホイールの駆動方向と垂直な方向に対して自由に滑るようになっている。

概要

オムニホイールを利用して、車体角度を変えずに(もしくは自由に変えながら)全方向に移動することができる全方向移動車の作成をするとともに、この特殊な車輪に関する性質や制御の方法について学ぶ。

計算

omnicar_fig_3t.png
はじめに、機体座標系$(x,y)$で見たとき、無回転で速度ベクトル$(v_x,v_y)$にしたがって移動する場合について考える。オムニホイールは軸に垂直な方向にすべるため、それを考慮して条件を導出し、ホイールそれぞれの回転する速さ$v_i$を$(v_x,v_y)$で表すことにしよう。

$v_1=-v_x,\\ v_2=\frac{1}{2}v_x-\frac{\sqrt{3}}{2}v_y,\\ v_3=\frac{1}{2}v_x+\frac{\sqrt{3}}{2}v_y$
行列で表すと、
omni_f_1.png
となり、さらに回転を考慮すると、機体の角速度を$\omega$、機体中心からホイールまでの距離を$R$として、
omni_f_2.png
と表すことができる。

次に、機体座標系からフィールド座標系への変換を考える。機体の角度$\theta^{*}=\int{\omega dt}$、フィールド座標系での速度ベクトル$(v_x^{*},v_y^{*})$として、$v_i$をこれらを用いて表すことを考えよう。

いま、一例として$v_x^{*},v_y^{*},\omega$が全て一定値を取る場合を考える。
機体が$\theta^{*}$だけ斜めになっているとき、機体座標系での$(v_x,v_y)$を$(v_x^{*},v_y^{*})$で表すと、
omni_f_3.png

これをはじめの式に代入して$v_i$による表示にすると、
omni_f_4.png

omni_f_5.png

三角関数の合成と三角関数の置き換えを用いて位相を揃えて表示すると、
omni_f_6.png

という結果が得られる。
それぞれ$v_x^{*},v_y^{*},\omega$のパラメータを設定することで、角速度$\omega$で回転しながら速度ベクトル$(v_x^{*},v_y^{*})$にしたがって運動させることができる(はず)。
これはあくまでフィードフォワード的なお話。

製作

6/25 設計開始

omnicar01.png

オムニホイールを使用する部分については設計がほぼ完了。

作業時間:4時間 今週小計:4時間 製作合計:4時間

6/26 軸部品試作

shaftandwheel.jpg

作業時間:3.5時間 今週小計:7.5時間 製作合計:7.5時間

8/8 軸部品作成、板材加工

作業時間:2.5時間 今週小計:2.5時間 製作合計:10時間

8/9 板材加工

作業時間:3時間 今週小計:5.5時間 製作合計:13時間

8/10 仮組み

omni_proto.jpg

作業時間:2時間 今週小計:7.5時間 製作合計:15時間

8/20〜プログラミング開始

STM32F10x向けに開発を開始。
実装内容

  • USART(通信のため)
  • PWM(モータのため)
  • EXTI(エンコーダのため)
  • (printf デバッグのため これを入れるとバイナリが膨れ上がる) 作業時間:20時間 今週小計:20時間 製作合計:35時間

8/26 電源基板換装、基板固定

3端子レギュレータでは発熱がひどいため、DCDCコンバータを利用して11.1Vから5Vを作ることにした。

omnicar_brd.jpg

作業時間:2時間 今週小計:2時間 製作合計:37時間

8/27 角度計算の見直し

なぜか補正係数が必要になった。ぐぬぬ
作業時間:4時間 今週小計:4時間 製作合計:41時間

8/28 コマンド通信の実装

BluetoothシリアルモジュールにつながっているUSARTに対して所定の形式のコマンドを叩くことで、速度ベクトルや角速度ベクトルを更新することができるようにした。
コマンドの形式:

[開始コード 0x02] [コマンド番号 0x10-0x1F] [データ 4bytes] [チェックサム] [終了コード 0x03]

データにはfloatやlongの値が入るようになっている。

作業時間:3時間 今週小計:7時間 製作合計:44時間

8/29〜9/1 Androidアプリの開発

実装したコマンド通信を利用して、Androidアプリ上からマシンをラジコン的に操作できるようにする作業をおこなった。
アナログパッド風のコントロールがデフォルトでなかったため、ImageViewを継承してAnalogPadクラスを作成した。
Bluetoothによる通信は、AndroidSDKの「BluetoothChat」というサンプルをベースにして作成した。
UI等詰め切れていないため今後改善予定。

作業時間:15時間 今週小計:22時間 製作合計:59時間

9/2〜9/5 フィードバックの見直しとD制御の実装

作業時間:12時間 今週小計:12時間 製作合計:71時間


添付ファイル: fileomnicar_brd.jpg 613件 [詳細] fileomni_proto.jpg 538件 [詳細] fileomni_f_6.png 611件 [詳細] fileomni_f_5.png 542件 [詳細] fileomni_f_4.png 587件 [詳細] fileomni_f_3.png 563件 [詳細] fileomni_f_2.png 523件 [詳細] fileomni_f_1.png 566件 [詳細] fileomnicar_fig_3t.png 633件 [詳細] fileomnicar01.png 677件 [詳細] fileshaftandwheel.jpg 607件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-07-25 (金) 23:03:50 (1066d)