駆動配分について

私のマイコンカーはmain関数で4段階目標速度を指定して角度によって目標速度を変動させてあとはdiff関数と前回書いたプログラムを使って走行させています。本当は目標速度を旋回半径などから無段階で自動で求めるようにしたいのでそのうちやろうと思っています。
今回は駆動配分について書いていきます。
速度制御は前回書いたとおりです。
基本的には前回書いたプログラムのiSpeedPwmにdiff関数を用いて駆動配分を制御しています。
diff関数についてはマイコンカーのマニュアルに載っていたと思うのでそちらを参照してください。
通常トレースの場合は駆動配分はdiff関数で自動的に制御しています。

通常トレースの場合はこれでいいのですがどうしても駆動配分を固定したい場合などが有ります。
そういう場合には以下のプログラムを使っています。

void running_distribution( int speed, int fl, int fr, int rl, int rr){

int fl_ret;
int fr_ret;
int rl_ret;
int rr_ret;
int Calculate_speed;

 Xspeed = speed;
 Calculate_speed = speed – iEncoder3;

 fl_ret = fl * iSpeedPwm / 100;
 fr_ret = fr * iSpeedPwm / 100;
 rl_ret = rl * iSpeedPwm / 100;
 rr_ret = rr * iSpeedPwm / 100;

 if(fl_ret >= 100) fl_ret = 100;
 if(fl_ret <= -100) fl_ret = -100;

 if(fr_ret >= 100) fr_ret = 100;
 if(fr_ret <= -100) fr_ret = -100;

 if(rl_ret >= 100) rl_ret = 100;
 if(rl_ret <= -100) rl_ret = -100;

 if(rr_ret >= 100) rr_ret = 100;
 if(rr_ret <= -100) rr_ret = -100;

 if(Calculate_speed >= 0){
  motor_f( fl_ret, fr_ret );
  motor_r( rl_ret, rr_ret );
 }
 else{
  motor_f( fr_ret, fl_ret );
  motor_r( rr_ret, rl_ret );
 }

}
speed:目標速度
fl:左前駆動配分(上限100%)
fr:右前駆動配分(上限100%)
rl:左後駆動配分(上限100%)
rr:右後駆動配分(上限100%)
という感じで指定しています。
中身としてはiSpeedPwmに指定の値/100を掛けて配分を決めて減速時は左右逆にするというものになってます。
もしかしたら左右逆にするのはあまりよろしくないかも。

広告

PID速度制御のプログラム

また放置していたので気まぐれで書いていきます。

マイコンカーで今実装してる速度制御について書いていきます。
とりあえずプログラムを載せていきます。
最初に載せるのは速度制御のプログラムです。
これは、MCRのプログラムのマニュアルとかに載ってておなじみのライントレースの関数のservoControl()に似せて作った速度のPID制御のプログラムです。

void speedControl( void )
{
int i, x, iRet, iP, iD;

//Xspeedはグローバル変数で目標速度の値
x = Xspeed;
//iEncoder3 はエンコーダーの値(10msの積算値で1msごとに更新)
i = x – iEncoder3 ;

/* 速度制御用PWM値計算 */
iP = 100 * i; /* 比例 100 */
iD = 100 * (iSpeedBefore – i ); /* 微分 150 */
iRet = iP – iD;
iRet /= 16;//16 18

//減速フリー設定(直線時にonにしてる)
if(speedControl_Free_mode == 1){
 if( iRet < 1 ) iRet = 1;
}
//減速ショートブレーキ設定(今のところ使っていない)
if(speedControl_Breake_mode == 1){
 if( iRet < -1 ) iRet = -1;
}
if( iRet > 100 ) iRet = 100; //95
if( iRet < -100 ) iRet = -100;

iSpeedPwm = iRet ;
iSpeedBefore = i ;

}

使い方は基本的にライントレースのPID制御と一緒なので分からなかったらマイコンカーのマニュアルを参照し比較してください。
iP,iD,iRetの割ってるところは実際に走らせて調整してください。
あと注意点としてはエンコーダーが一相の場合正転逆転の判別がつかないので暴走して逆走する可能性があります。特に低速時は注意。

試走会開催します(11/4.11/5)

11月4日(土)と11月5日(日)に湘南工科大学で松稜祭(学園祭)が行われます。
それに合わせてマイコンカーのコースを開放致します。

日程:  11月4日(土).11月5日(日)
時間:  10:00~15:30(予定)
参加資格:参加資格の制限はありません。南関東地区以外の方も大歓迎です!

試走会主催:  湘南工科大学ロボット同好会

貸出機材:ボール盤、バンドソー、半田ゴテ、デジタルテスターなど
(機材ご利用時の損害は全て自己責任でお願いします。)

会場:  湘南工科大学
神奈川県藤沢市辻堂西海岸1-1-25
(JR辻堂駅から徒歩15分、バス利用時5分)
佐々木記念体育館

campus_map_web.jpg

久しぶりの更新

あまりにも放置しすぎていたので更新します。

前回の更新から二ヶ月もの間があるのでその間に何をやったか備忘録代わりに書いていきます。

まず、下記の二つの大会に出場してきました。
2017年夏ルネサスマイコンカーラリー競技会&技術交流会
2018信州総文祭 マイコンカーラリー大会 プレ大会

結果は、二つの大会共に決勝トーナメントは残れませんでしたがなんとか完走することはできました。
実は、今まで大会で完走するということが出来ていなかったので、私としては非常に嬉しい結果です。

大会から約一ヶ月ほど経ちましたが、現在のマシンの状態はというと↓こんな感じです

 

大きな変更点としては、
ソフト面では、
速度制御をif分で区切って加減速するものからPID制御に
通常トレースの駆動配分をdiff関数で制御
コーナー進入時にある速度以上の場合ブレーキをかける制御追加
緊急停止処理をある程度確実なものに変更
ハード面では、
ギアとDカットしたシャフトの間にガタツキがあったので修正
タイヤを軸ごと回るものからタイヤのみでも回るようなものに
坂道を確実に検知出来るようにアナログセンサを追加

効果として大きかったのは、
コーナー進入時にある速度以上の場合ブレーキをかける制御
緊急停止処理をある程度確実なものに変更
ギアとDカットしたシャフトの間にガタツキがあったので修正
タイヤを軸ごと回るものからタイヤのみでも回るようなものに

詳しく書くと、
コーナー進入時にある速度以上の場合ブレーキをかける制御については、
プログラムとしては単純化したものとしてはこんな感じ
if(現在の速度>ブレーキをかけたい速度){
motor_f(-〇〇,-〇〇);
motor_r(-〇〇,-〇〇);
}
という感じ、ただこれだとブレーキが掛かりすぎて逆に滑ったりする恐れがあるのである一定の距離、もしくはある一定の時間で解除するようにしています。
ブレーキをかける条件や時間、距離はマシンによって違ってくるのでそこはトライアンドエラーで調整するしか無いと思います。
効果としては、通常の速度制御ではブレーキが追いつかない部分を通常より強くブレーキするので減速が間に合う、また進入時に前に荷重を移せるのでコーナリングがしやすくなっていると考えています。

緊急停止処理をある程度確実なものに変更については、
私が使用しているアナログセンサ×7のラインセンサでしか通用しないかもしれませんが、
単純に全部のアナログセンサの値が白線ではない場合に停止しています。
ただこれだと通常走行で坂とかでセンサが浮いて停止する恐れがあるので、このセンサの反応パターンの状態の距離と時間を取得しそれを元に停止するようにしています。
効果としては、大きなクラッシュが少なくなる、またクラッシュしてもモーターがずっと駆動することが減り故障率が減りました。
多分もっと条件を追加すればもっと故障率は下げられますが、時間がかかるのでやっていません。それをやるくらいだったらハード面でバンパーを追加します。(手軽で確実なので)

ギアとDカットしたシャフトの間の修正については、
もうそのままでガタツキがあったので角度がうまく取得ができず通常走行、ハンドル関数などうまく動いていませんでした。まあ、当たり前ですね。
対策としては隙間にシリコンシートを入れています。(その場しのぎですね)
そのうちVP-12に変えるかギアとの固定方法についてちょっと真面目に考えようと思います。
あ、因みにギアはCNCで自作したものになります。
ギアの製作方法が知りたい方はコメントしてくだされば、そのうちブログに載せようと思います。

タイヤの変更については、
今までKAWADAのホイールを使っていましたがタイヤの作り方が悪かったのかグリップ力があまりなかった上に、ホイールナットを締め付ける時にタイヤが歪んでしまうことがあったため私には向いていませんでした。
今使っているホイールはkyosyoのホイールのPZ-302を30mm幅にニッパーで切って使っています。(30mmの加工については多分旋盤とかでやるのがベストだと思います。)
TUM37KPZ302-ky
ギアについては、DMMの3Dプリントしたものを使っています。
素材はナイロンナチュラルです。
一応最初使えることは使えますが、クラッシュ時に少し歯がかけやすいです。
価格はこんな感じ、一度に出力するモデルの数によって単価が変動するみたいです。
多ければ単価が安くなるというわけでは無いみたいですので利用する際は色々試して見たほうが良いと思います。
aaaaa
ぶっちゃけた話をすると、あまりコストはよろしくないですね。
これやるくらいだったらレインボーのギアを追加加工するか自分で削り出したほうが良いと思います。ただものとしては良いものです。
今かみ合わせもあまりよろしくないので、以下の画像のレインボーの平ギアに追加加工したものに外径7の内径3のベアリングを入れて使用するつもりです。
DInI9HWV4AAPh3oDInI-NaUwAA8UUADInJBFjUIAEeZKG

色は樹脂の染料で染めて、肉抜きと穴あけはCNCで行いました。
精度は原点合わせがずれるのであまりよろしくないです。
これでだめだったらアルミのギアを削り出そうと考えています。

長くなりましたが今回のブログ更新はとりあえずここまでにしたいと思います。

またプチ練習会開きます(9/9)

日程:  9月9日(土)
時間:  10:00~18:00(予定)
参加資格:参加資格の制限はありません。南関東地区以外の方も大歓迎です!
参加方法:SITプチ練習会(9/9)参加申し込みフォームより参加申し込みを行ってください
もしくはsit.mcr@gmail.comまで※必要事項をご連絡ください

※必要事項
お名前
以下、車での来校を希望される方のみ
車の車種、車の色、車のナンバー、来校される時間

主催:  湘南工科大学ロボット同好会
定員:  30名

貸出機材:ボール盤、バンドソー、半田ゴテ、デジタルテスターなど
(機材ご利用時の損害は全て自己責任でお願いします。)

会場:  湘南工科大学
神奈川県藤沢市辻堂西海岸1-1-25
(JR辻堂駅から徒歩15分、バス利用時5分)
2号館1F:2103号室

20160125-144632-6082

コース長:約30m
全て中川ケミカル公式コースです。タイム計測用ゲートもあります。
下記の画像は、コースの画像になります。

DHe3QnCU0AAruiT

 

注意事項:状況に応じてタイム自己申告制の大会になるかもしれません。
お問い合せ:sit.mcr@gmail.com

プチ練習会開催します

日程:  7月22日(土)、23日(日)
時間:  9:00~19:00
参加資格:参加資格の制限はありません。南関東地区以外の方も大歓迎です!
参加方法:SITプチ練習会参加申し込みフォームより参加申し込みを行ってください
主催:  湘南工科大学ロボット同好会
定員:  30名

貸出機材:ボール盤、バンドソー、半田ゴテ、デジタルテスターなど
(機材ご利用時の損害は全て自己責任でお願いします。)

会場:  湘南工科大学
神奈川県藤沢市辻堂西海岸1-1-25
(JR辻堂駅から徒歩15分、バス利用時5分)
2号館1F:2103号室

20160125-144632-6082

コース長:約30m
全て中川ケミカル公式コースです。タイム計測用ゲートもあります。
下記の画像は、前回の練習会の時の画像になります。

DEQ7TrtV0AANapMr

注意事項:状況に応じてタイム自己申告制の大会になるかもしれません。
お問い合せ:sit.mcr@gmail.com

練習会開催します

日程:  7月8日(土)、9日(日)
時間:  9:00~21:00
参加資格:参加資格の制限はありません。南関東地区以外の方も大歓迎です!
主催:  湘南工科大学ロボット同好会
定員:  30名

貸出機材:ボール盤、バンドソー、半田ゴテ、デジタルテスターなど
(機材ご利用時の損害は全て自己責任でお願いします。)

会場:  湘南工科大学
神奈川県藤沢市辻堂西海岸1-1-25(JR辻堂駅から徒歩15分、バス利用時5分)
4号館1F:学生ラウンジ

名称未設定 1

コース長:50~70m
全て中川ケミカル公式コースです。タイム計測用ゲートもあります。
下記の画像は、前回の練習会の時の画像になります。

aIMG_0944aIMG_0948

注意事項:状況に応じてタイム自己申告制の大会になるかもしれません。
車で来校を希望される際は、sit.mcr@gmail.comまでお問い合せださい。
お問い合せ:sit.mcr@gmail.com

Laughing out loud