3日目:高速走行モード追加

東京・飯能旅行から帰ってきたのでライントレーサの続きを。

走行時に各マーカーの

  • エンコーダで求めた、スタートからの走行距離(エンコーダの生の値)
  • ジャイロで求めた角度(弧度法)

を記憶するようにし、走行終了直後に

  • 走行距離(mm)*360/(ターンした角度 * π) = 半径

を算出するようにした。

ターンの半径によって直進のデューティー比を変更するようにしたところ、以下のようになった。

ターン後の加速が非常に不安定になっている。
上の動画ではPD制御のみでしたが、Iを追加したところ以下のように。

だいぶ安定したがまだ揺れているので、加速時はデューティー比を徐々に上げるように変更。

安定した。

しかしこれ、直進のデューティー比を常に52%にした時よりも0.3秒以上遅いので、コーナーの速度を調整する必要がある。

というか速度制御しろ。

カテゴリー: ロボット | コメントする

2日目:マーカー認識

今日は時間がなかったためマーカー認識だけ

また、この前言っていたソフトローハイトタイヤへタイヤを換装したところ、少しグリップ力が上がったためデューティー比を52%にしても滑らなくなった。タイヤの選定は大切…

9/5からは自己位置推定とマーカーによる加減速を仕様と思う。

合同ロボコン間に合うのか…??

カテゴリー: ロボット | コメントする

1日目:ライントレースはじめました

関西の大学で開催している合同ロボコンに出場するためにライントレーサを作成中。
ルールはロボトレースに準拠。

昨日機体が組みあがったので、とりあえずテキトーなプログラムを作って試走させてみた。
機体はコチラのものをパク参考にした。

linetracer2014

 

サイズ 未計測
重量 170g
バッテリー Hyperion CX G3 LG325 7.4V550mAh
マイコン STM32F405RGT6
モーター 1717T006SR-IE2-512
モータードライバ TB6612FNG
タイヤ スーパーX・XXローハイトタイヤ&ホイールセット
ラインセンサ ST-1KLA ×6 + HIRL8810 × 6
ジャイロ MPU9150

プログラムは、一番明るいセンサの値とその左右の内明るい方のセンサの値、2つの値の比からラインの位置を算出し、ラインが中央になるようにPD制御するシンプルなもの。直角対策などはまだしていない。

上の動画は直進のデューティー比が40%の時の走行だが、これ以上速度を上げるとタイヤがスリップしてしまい、コーナーでコースアウトしてしまう。

デューティー比60%では完全にアウト
IMG_2461

これは47%の時のもの。
IMG_2462
こちらをスローで再生すればわかるが、車輪が完全に滑っていて、タイヤのグリップ力が足りていないことが分かる。
IMG_2463

タイヤは、旋盤で削ったホイールにTAMIYAのスーパーX・XXローハイトタイヤ&ホイールセットのゴムをはめたものを使用しているが、硬い。車体重量が約170gなので全く沈まない。

対策としてソフトローハイトタイヤ&カーボン強化ホイール(5本スポーク)を購入したが、どの程度改善されるかは不明。スポット商品だから入手性が悪い。入手性無視ならMini-Zのやつを使った方が良かったのでは…

とりあえず、コーナーでの速度向上はあきらめ、マーカー認識・コースを記録することで直進可能部分の速度を上げるようプログラムしようと思う。

カテゴリー: ロボット | コメントする

STM32F4Discoveryのmbed環境でFreeRTOSを動かす(offline)

mbed-sdkの秘密: オフライン・コンパイル
こちらのサイトを参考にmbedのオフライン開発環境が整ったため、RTOSを動かそうと試みました。

しかしなぜかmbedのRTOSが動かない、動かないのでSTM32CubeMXのほうから自動生成できるFreeRTOSを実装してしまった(逃げ

mbed_f4discovery_freertos

  • SysTick_Handlerが./src/stm32f4xx_it.cに変更されています。
  • スタートアップのアセンブラがST純正のものに差し替えてあります。それに伴いmain関数の先頭にHAL_Init();とSystemClock_Config();が追加されています。
  • TextLCDライブラリをlibフォルダに入れてありますが動きません(2014/4/7追記)タスク内でスタック増やしたら動きました。やはりクラスライブラリはメモリ食うみたいですね…

mbedのRTOSが動かなかった原因はもしかしたらTextLCDを使用していたからかもしれない。
後日再びチャレンジしようと思います。

カテゴリー: 組み込み関連 | コメントする

Debugging STM32 with Eclipse on Windows8.1 (using ST-LINK)

Build and install “texane / stlink

How to build

eclipse_stutil

Choose GDB Hardware Debugging.
Port number is 4242

eclipse_debug

カテゴリー: 組み込み関連 | コメントする

EAGLE Hobbyistの購入方法

先日、EAGLE Hobbyist版を購入しました。

EAGLE本家ではアジアからHobbyistライセンスを買うことはできませんが、現在はadafruitより購入が可能です。

PayPalで支払うことが出来るので安全ですね。
購入して、誓約書をメールで送ると直ぐにライセンスファイルが届きました。
2万円弱で160x100mmまでの4層基板を設計出来るので、皆さんも是非ご購入を()

カテゴリー: 組み込み関連 | タグ: | 2件のコメント

シリアルサーボを動かす(3) プログラム編

前回の回路を使用してサーボの角度を取得しながら角度を変更するプログラムを作成した。


#include <SoftwareSerial.h>

SoftwareSerial mySerial(4, 5); // RX, TX

uint16_t angle = 0;
uint16_t angle_verify = 0;
uint16_t target_angle = 0;

void setup() {
 Serial.begin(115200,SERIAL_8E1); //115200bpsでポートを開く
 mySerial.begin(115200);
 delay(1);
}
void setangle(uint16_t angle){
 byte msg[3] = {0x80, 0x00, 0x00};
 msg[1] = (angle>>7) & 0x7f;
 msg[2] = angle & 0x7f;
 target_angle = angle;
 Serial.write(msg,3);
}
void rec(byte data){
 static int cnt=0;
 static byte msg[3] = {0x80, 0x00, 0x00};

 //1バイト目
 if(data & 0x80){
 cnt = 0;
 }
 else if(cnt<3){
 msg[cnt] = data;
 if(cnt==2){
 uint16_t a = msg[1]<<7 | msg[2];
 if( a!= target_angle || a == angle_verify){
 angle =a;
 mySerial.println(angle);
 }
 angle_verify = a;
 }
 }
 cnt++;
}

void loop() {
 for(int i=0;i<1000;i++){
 setangle(3500);

 while(Serial.available()){
 rec(Serial.read());
 }
 delay(1);
 }
 for(int i=0;i<1000;i++){
 setangle(11500);

 while(Serial.available()){
 rec(Serial.read());
 }
 delay(1);
 }

}

雑ですが動作確認用ですのでご容赦ください。

実際に動作させて、シリアルで返ってきた値をグラフ化してみたらこんなかんじになりました。

servolog

カテゴリー: 組み込み関連 | コメントする

シリアルサーボを動かす(2) 回路編

前回FT232でPCと通信したシリアルサーボを今回はArduinoで動かす。

参考サイト
RS306MDのTTLコマンドのテストボード

こちらのサイトを参考に3ステートバッファを使用してArduinoのシリアルを以下のように配線する。

servo_arduino

ここで注意しないといけないのは、こんな配線をしたらUSBからプログラムを書き込めないという点。

わざわざシールドを作って、毎回書き込む時にとりはずせばいいが、面倒なのでISPからプログラムを書き込むことにした。

また、シリアルデバッグが出来ないのは困るので、Arduinoのソフトウェアシリアルを余ったピンで使用して、前回使ったFT232でPCにつないでシリアルデバッグできるようにした。

次回はプログラムで角度の設定と取得をする。

カテゴリー: ロボット | コメントする

シリアルサーボを動かす(1) 動作テスト編

KONDOのシリアルサーボで使用されている通信規格ICS3.5をマイコンで操作するためのテスト

公式ページの「ICS3.5 解説」からICS3.5マネージャーをダウンロードして、FT232で動作確認する。

回路図は以下の様な感じ。実際は秋月のFT232RL USBシリアル変換モジュールを使用した。

ft232servo

 

FT232では直に繋ぐだけで送受信できたが、マイコンでサーボからの信号を受信するときは3ステートバッファを使用してマイコンのTXピンとRXピンをちゃんと切り離さないといけないらしい。

カテゴリー: 組み込み関連 | コメントする

apacheでSSLを設定しUSVNをインストール

USVNをインストール。

wget https://github.com/usvn/usvn/archive/1.0.7.tar.gz
tar xvfz 1.0.7.tar.gz
cd usvn-1.0.7/
sudo mv usvn-1.0.7 /var/www/usvn
cd /var/www/usvn/
sudo chown -R www-data.www-data ./

sudo aptitude install php5 php5-mysql libapache2-mod-php5 mysql-server php5-mysql subversion libapache2-svn
sudo a2enmod dav_svn
sudo a2enmod rewrite
sudo a2enmod authz_svn
sudo vi /etc/apache2/sites-available/default
sudo /etc/init.d/apache2 restart

USVNに関するApacheの設定はここらへんを参考に。

http://****/usvn/install.phpにアクセスしてインストール

カテゴリー: サーバー関連 | コメントする