Skip to content

ArcTech-TechSeeker/player_positoner_code

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 

Repository files navigation

位置取得用コントローラ(VL53L5CX×2)README

概要

本コードは,ToFセンサ VL53L5CX を2台用いて,対象の左右位置(X方向)を推定し,シリアル経由で送信するコントローラ実装である.
VL53L5CXはデフォルトでI2Cアドレスが同一(0x29)のため,同一バスへ2台を同時接続すると衝突する.本実装ではESP32の2系統I2C(Wire,I2C2)へ分離接続して回避する.

本READMEは提示された説明/コード断片をベースに整理している.提示コードにはマージ衝突マーカ(<<<<<<< 等)と setup() の重複が含まれるため,ビルド前に必ず解消すること.


機能

  • VL53L5CX×2の同時レンジング(8×8)
  • 距離マップを左右反転して座標系を整合
  • 2行分(row 5〜6)を用いた重み付き平均によりX位置を推定
  • シリアルへ位置を送信(テキストCSV,またはバイナリ)

想定ハードウェア

  • ESP32系マイコン(TwoWireを2本使える構成)
  • SparkFun VL53L5CX(または互換ボード)×2
  • 3.3V電源(モジュール仕様に従う)

配線

I2Cバス1(Sensor1)

  • SDA1:GPIO21
  • SCL1:GPIO22
  • センサ1のSDA/SCLを接続

I2Cバス2(Sensor2)

  • SDA2:GPIO25
  • SCL2:GPIO26
  • センサ2のSDA/SCLを接続

XSHUT(任意)

XSHUTを配線していない場合は -1 のままでよい.配線する場合はGPIO番号へ変更する.

  • XSHUT1_PIN
  • XSHUT2_PIN

依存ライブラリ

  • Arduino core(ESP32)
  • Wire(Arduino標準)
  • SparkFun VL53L5CX Arduino Library
    • #include <SparkFun_VL53L5CX_Library.h>

ビルド前の注意(必須)

提示コードはそのままではコンパイルできない可能性が高い.最低限,以下を実施すること.

  1. マージ衝突マーカ(<<<<<<<=======>>>>>>>)を削除する.
  2. setup()loop() をそれぞれ1つに統合する(重複定義を解消).
  3. #define の重複を整理する(SCL2 等の欠落がないか確認).

動作概要

初期化

  • Wire.begin(SDA1,SCL1)I2C2.begin(SDA2,SCL2) で2系統I2Cを開始する.
  • bringUpSensorWithRetry() で以下を行う.
    • I2Cクロック設定(初回100kHz)
    • XSHUT制御(配線がある場合のみ)
    • I2Cスキャンで応答確認(0x29)
    • begin() を最大3回リトライ
    • 失敗時は50kHzへ落として再試行
  • 両センサの初期化後,共通設定を行う.
    • 解像度:8×8
    • レンジング周波数:15Hz
    • startRanging() を両方で実行

位置推定(X方向)

  • getRangingData() で取得した 8×8 距離配列を左右反転コピーして flipped1flipped2 を作る.
  • computeCenterX() が以下でX推定値を返す.
    • 対象領域:row 5〜6,col 0〜7
    • 閾値:distanceThreshold(例:2000mm)より遠い点は無視
    • 重み:1 / (rawDist * correctionTable[d])
    • d:中心(centerXcenterY)からのマンハッタン距離を4で打ち切り
  • 推定に失敗した場合(戻り値-1等)はフォールバック値として 3 を送る実装になっている.

シリアル出力仕様

実装は2方式を想定している.運用に合わせて送信部を整理すること.

方式A:テキストCSV(モニタ確認向け)

  • SEND_TEXT_MONITOR を1にする.
  • 出力フォーマット
    • S,<ms>,<pos1>,<pos2>\r\n
    • <ms>millis()
    • <pos1> <pos2> は0〜7想定(無効時は3)

  • S,12345,3,5

方式B:バイナリ(軽量通信向け)

  • 出力フォーマット
    • 先頭1バイト:'S'
    • 続く2バイト:pos1pos2(各1バイト)

パラメータ調整

  • distanceThreshold:対象距離に合わせて調整する.
  • minRowmaxRow:反応させたい高さ帯(視野のどの行を使うか)を調整する.
  • correctionTable[]:距離補正係数.設置角度や反射特性に応じて調整する.
  • centerXcenterY:重み付け中心.評価したい中心方向に合わせる.
  • setRangingFrequency(15):通信量と計算負荷に応じて調整する.

トラブルシューティング

  • I2Cスキャンで0x29が見えない
    • SDA/SCL,GND,共通GND,電源電圧を確認する.
    • プルアップ不足や配線長が原因の場合がある.
    • 50kHzへ落として改善するか確認する.
  • 2台を同一I2Cバスへ接続している
    • アドレス衝突する.本構成どおり2系統へ分離するか,XSHUTで片方を止めてアドレス変更する手順を別途実装する.
  • コンパイルエラー
    • マージ衝突マーカ除去,setup() 重複解消,#define 整理を再確認する.

ライセンス

SparkFun VL53L5CX Arduino Library に依存する.再配布形態に応じて当該ライブラリのライセンスを確認すること.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published