Hatena::ブログ(Diary)

滴了庵日録 このページをアンテナに追加 RSSフィード

2017/04/23(Sun)

ラジコン戦車の改造 (4)赤外線信号の解析

Waltersonsバトルタンクシリーズの赤外線信号をオシロで解析します。

変調周波数

変調周波数は、一般的な赤外線リモコンと同じ38kHzのようです。

図

信号フォーマット(バトルロイヤルモード時)

バトルタンクシリーズの赤外線バトルは、自分以外全員敵のバトルロイヤルモードと、Aチーム/Bチームに分かれて戦うチーム戦モードがあり、プロポのスイッチで切り替えられます。チーム戦モードの場合、フレンドリーファイアー(同士討ち)は無効となります。まず、バトルロイヤルモード時の信号を解析します。バトルロイヤルモードでは、VS TANKと信号の互換性があります。

図

上図のように、長いヘッダのあと、8ビットのデータらしきものが見えます。短いOFFと長いONのセットと、長いOFFと短いONのセットが0/1を表してると思われます。ヘッダの長さが6600usec、短いパルスの長さが550usec、長いパルスの長さが1650usecです。MSBファーストと仮定すると、データの値は5Bhと読めます。

これは、OpenPanzer.orgでのVS TANKの赤外線信号の実装と一致します。

信号フォーマット(チーム戦モード時)

ところが、チーム戦モード時の信号を測定したところ、上記の仮定は覆されてしまいました。


【チームAの場合】

図

【チームBの場合】

図

上図のように、長いOFFと長いON、短いOFFと短いOFFという組み合わせが出現しました。WaltersonsがVS TANKの信号を独自拡張したのだとしたら、ちょっと理解に苦しむ仕様です。けっきょく、長いON/長いOFFを各々ビット値1、短いON/短いOFFを各々ビット値0と見なして16ビットデータとして扱うしかなさそうです。


マニュアルによると、実車の主砲口径によってダメージのポイントが3段階に設定されているようです。

  • 75-76mm口径: 15ポイント
  • 85-88mm口径: 20ポイント
  • 105-127mm口径: 30ポイント

今回、使用したT-34/85の主砲は85mm口径なので、上記の波形は20ポイントの攻撃の信号と考えられます。それ以外については手元に機体が無いので今のところ不明です。

結論

  • 変調周波数 = 38kHz
  • 信号フォーマット = ヘッダ + (OFFパルス + ONパルス)×8
  • ヘッダの長さ = 6600usec
  • 長いパルスの長さ = 1650usec
  • 短いパルスの長さ = 550usec
  • 長いパルスをビット値1、短いパルスをビット値0、MSBファーストの16ビット値と見なす
  • バトルロイヤルモード時の信号 = 669Ah
  • チーム戦モード時の信号は下表の通り
口径ポイントAチームBチーム
75-76mm15ポイント未調査未調査
85-88mm20ポイント9589hB7ABh
105-127mm30ポイント未調査未調査

2017/04/22(Sat)

ラジコン戦車の改造 (3)モータの駆動電流

WaltersonsのT-34/85の駆動輪のモータの電流を測定しました。

(以下、電流値は片輪1チャンネルぶんの電流値です。)

  • 平地(フローリング床)での前進/後退で連続0.17A
  • 平地(フローリング床)での超信地旋回で連続0.35A
  • 勾配25度(タオル地)での前進で連続0.27A
  • 平地(タオル地)での壁押しで連続0.25A

始動時はだいたいこの倍くらいの電流でした。(テスターでの測定のため瞬間最大は不明)


以上のように、意外と電流値が小さいことが分かりました。

使用されいるモータドライバMX1508は、両輪駆動時の最大連続電流が1A程度と思われます。(片チャンネルの連続駆動電流が0.8Aのとき、他チャンネルの連続駆動電流は最大1.2A、との記述があります。)

僕がGPduinoシリーズで採用しているTB6612FNGは、連続最大1.2A / ピーク最大3.2Aなので、じゅうぶん間に合うのではないかと思います。

2017/04/21(Fri)

ラジコン戦車の改造 (2)電装系の解析

WaltersonsのT-34/85を分解して電装系を解析します。

分解

制御回路は40mm×64mmの基板が1枚あるのみで、基板上に無線モジュールが実装されています。

写真


基板上の主要部品は下記の通りです。

構成図

図

結線表

P1 駆動輪モータ出力

ケーブル直付け (2mmピッチ)

ピン番号ケーブル色接続先
1左駆動輪モータ-
2左駆動輪モータ+
3右駆動輪モータ-
4右駆動輪モータ+
P2 砲塔部モータ出力

JST PHコネクタ (2mmピッチ)

ピン番号ケーブル色接続先
1砲身上下モータ-
2砲身上下モータ+
3砲塔回転モータ-
4砲塔回転モータ+
P3 小信号入出力

JST PDHコネクタ(2mmピッチ×2列)

ピン番号ケーブル色接続先ピン番号ケーブル色接続先
1NC未接続2赤外線受信モジュールGND
3+3.3V4赤外線受信モジュール信号
5NC未接続6着弾表示LEDカソード
7ステータスLED(赤)カソード8主砲LED(赤外)カソード
9ステータスLED(緑)カソード10NC未接続
11砲撃表示LEDカソード12NC未接続
13ヘッドライトLEDカソード14NC未接続

※ LEDおよび赤外線受信モジュールはすべて共通の+3.3V電源で動作

P6 バッテリー電源入力

ケーブル直付け (5mmピッチ)

ピン番号ケーブル色接続先
1バッテリー電源-
2バッテリー電源+
P8 スピーカ出力

JST XHコネクタ (2.5mmピッチ)

ピン番号ケーブル色接続先
1スピーカ+
2スピーカ-

2017/04/19(Wed)

ラジコン戦車の改造 (1)素材選び

夏に向けてラジコン戦車改造のプロジェクトを開始します。制御基板を自作のものに置き換えてWiFiでコントロールするのが目標です。今回は素材となるラジコン戦車を選定します。市販のラジコン戦車のシリーズには、タミヤ1/16、タミヤ1/35、VS TANK 1/24、HengLong 1/16 などがあります。


まずスケールについていうと、選択肢は 1/35 か 1/24 か 1/16 ですが、1/35は小さすぎて回路を詰め込むのが難しいと思われます。また1/16はモーターが大きくなるので、モータドライバ要求スペックが跳ね上がります。そこで、手ごろなサイズの1/24をターゲットとします。


次に、バトルの方式として、主砲からBB弾などの実体弾を撃つタイプと、赤外線LEDで信号を撃つタイプとがあります。イベント会場でBB弾を撃つのは危ないし、弾を拾うのも面倒なので、赤外線タイプを選ぶことにします。


さて、1/24で赤外線バトル方式といえば、VS TANKの「1/24 RCバトルタンク IR」および Waltersonsの「バトルタンクシリーズ」が当てはまります。この両シリーズは赤外線信号の互換性があります。ちなみに日本ラジコン戦車道連盟でもこれらのシリーズが競技に使用されています。そこで、本プロジェクトでもこれらのシリーズをターゲットとします。


僕はソ連者なので、車種はやはりWaltersonsのT-34/85(ガルパン仕様)を選ぶことにします。さっそく購入しました。

写真


同じくWaltersonsのティーガー戦車と撃ち合っているところです。

写真

2017/04/08(Sat)

組込み屋でもアプリがしたい! 第7局

序盤、中盤、終盤、隙がないAIをめざします。

駒たっ石たちが躍動する僕のオセロをみなさんに見せたいね。

方針

  • 序盤:定石を使う。
  • 中盤:従来通り、重みづけテーブルで局面を評価する。
  • 終盤:単純に石の数で局面を評価する。

序盤

1手目

オセロの1手目は、打てる場所が4つありますが、対称性に着目すればどれも等価です。一般的には、下図(A)の形が標準とされています。(B)〜(D)の場合は、座標変換によって(A)の形に変換して定石の処理をすることとします。

図

2手目

2手目は、縦取り、斜め取り、並び取りの3パターンがあります。並び取りは後手が不利になることが知られているので、自分からは打たないこととします。

図

3手目以降

いろいろな定石がありますが、ここでは4つの定石を採用します。

  • 縦取り:兎定石、虎定石
  • 斜め取り:牛定石
  • 並び取り:鼠定石

定石に従って打ち、定石のパターンが終了するか、相手が定石から外れた時点で中盤に移行します。

中盤

従来通り、重みづけテーブルで局面を評価しますが、テーブルを改良します。

中盤までは「少なく取る」のが良いとされています。しかしもちろん、四隅を取ることは大事です。そこで、重みづけテーブルを以下のように修正します。

private int[,] WEIGHT = {
    {+30, -12,  0, -1, -1,  0, -12, +30},
    {-12, -15, -3, -3, -3, -3, -15, -12},
    {  0,  -3,  0, -1, -1,  0,  -3,   0},
    { -1,  -3, -1, -1, -1, -1,  -3,  -1},
    { -1,  -3, -1, -1, -1, -1,  -3,  -1},
    {  0,  -3,  0, -1, -1,  0,  -3,   0},
    {-12, -15, -3, -3, -3, -3, -15, -12},
    {+30, -12,  0, -1, -1,  0, -12, +30}
};

終盤

終盤では、もちろん「多く取る」ことこそが大事です。そこで、単純に石の数のみで評価することにします。

結果

従来、Ultima Reversiとの対戦ではレベル6以上、レベル7未満程度の棋力で、特に後手番のときはまずレベル7には勝てませんでした。今回の改良で、先手番ならレベル7に勝ち越し、後手番でもそこそこレベル7に勝てるようになりました。

問題点

  • 序盤定石のデータが貧弱すぎてあまり効果が無い
  • 少なく取ろうとするあまり、むしろヘボ相手だと中盤に全滅されることがある
  • 何のタイミングで中盤から終盤に移行するべきか

今回のソースのスナップショット