Lionas@スタジオマーブルの技術ブログ

Androidやドローンに関する技術的な記事やiRacingなどの趣味の記事まで公開中

MacOSでQGroundControl v4.2.1でフリーズする問題

概要

MacOS(12.4 Monterey)でQGroundControlのアップデート後、起動直後にマップ画面がフリーズして以降の処理が行えないという問題が発生しましたが、問題が発生した箇所と不具合の解消ができたので、備忘録として公開します。

原因

QGroundControlのインストール時に、ホームディレクトリ直下に .config/org.qgroundcontrol が生成されます。 このディレクトリには、ParamCacheディレクトリとQGroundControl.iniが存在します。 QGroundControl.iniは、テキスト形式のパラメータファイルです。

QGroundControlのフリーズは、このキャッシュファイルまたはパラメータファイルが何らかの理由で破損したか、互換性が失われたことが原因と考えられます。

解決方法

.config/org.qgroundcontrolを丸ごと削除して、QGroundControlを再起動しましょう。 パラメータは機体側にも保存されているので、恐れる必要はありません。

NIST STM for sUAS(米国標準小型無人機システム試験方法)をシミュレータでやってみた

概要

米国国立標準技術研究所(National Institute of Standards and Technology、通称:NIST)が小型無人機の性能や操縦者の技能を評価する方法として、Standard Test Methods for Small Unmanned Aircarft Systems(通称:STM for sUAS)を定めていることを知り、さらにDJIシミュレータにSTM関連オブジェクトを取り込めるようになっていたので、早速試してみました。

導入は容易だが・・・

DJIのシミュレータは無償版と有償版がありますが、無償版でも使用することができました。機種を選択後、フリーフライト>カスタムシナリオを選択します。初期のフィールドは操縦者と機体だけが表示されているだけなので、メニュー左のModelを選択して、STMのモデルをImportする必要があります。

Import後は位置合わせを行う必要があります。フィールドのオブジェクトをクリックするとXYZ方向の矢印が表示されるので、それらをドラッグすると移動することができます。この辺りはUnityなどと同様ですね。

写真からもわかる通り、Import後のモデルはなぜか文字が左右に反転しています。直し方はちょっとわかりませんでしたが、STMの実施にはそれほど影響はないと思います(たぶん)。

また、無償版はシナリオの保存ができないので、使用ごとにこの作業を行うのが少し面倒そうです。

実際にSTMの方法で飛行してみた感想

STMは目視内でも目視外でも実施可能ですが、シミュレータの場合は目視内だと視点移動にキーボードかマウスが必要になり、実際の飛行環境とは異なります。VRを使えば操作系が不要で目視内飛行でできそうです。

一方、目視外飛行としてコントローラアプリの画面視点を使うことで、実際に即した飛ばし方ができました。STMでは真下や45度先のバケツの中身を撮影することが必要ですが、これらの練習をすることでジンバルの操作の練習にもなりそうです。

今後のSTMに関する取り組みについて

今後はシミュレータだけでなく、実際にSTMを行うためのオブジェクト(バケツのスタンドとかスコアシートとか)を準備して、屋外で実施してみたいと思います。

次回実施レポートにご期待ください。

ドローンプログラミング講座はじめました

この度、ドローンプログラミング講座(入門編)と題したプログラミング講座を神奈川県横浜市で開催することになりました。

ドローンのプログラミングが初めての方を対象とした入門講座で、本格的な開発環境を用いながら、ドローンの最低限の知識で自動飛行ができるようになるまでのスキルを身につけることができます。

ドローンはトイドローンである TELLO EDU を使用します。

講座の概要

座学半日+演習半日の計1日で、PythonとTELLOの飛行コマンドを学び、実際に飛行させるところまで行います。

講座の内容

  • ドローンプログラミング概要
  • ドローンの基礎知識
  • 安全のために
  • 開発環境の構築
  • Python3と統合開発環境PyCharmのセットアップ
  • Pythonプログラミング基礎
    • 変数、定数、データ型、リスト、タプル
    • 繰り返し、条件分岐、関数、クラス
    • ファイル入出力、例外処理
  • TELLO SDK 2.0
    • SDKの概要・接続方式
  • プログラミング演習
    • 離陸から着陸までの連続したドローンの動きを自動実行するプログラムを作って飛ばしてみる

詳細については、下記サイトをご覧ください。

    •  

www.studiomarble.biz

XBee(S2C)でArdupilotからのテレメトリデータを受け取るようにする

今回は開発中のドローンにおいて、ドローンーGCS間のテレメトリの受信でXBee(S2C/Programmable)を使って実装したことをご紹介します。

 

開発中のドローンはプラットフォームにはArduPilot、グラウンドコントロールシステム(GCS)にはMissionPlannerやQGroundControlを使用しています。GCSに飛行速度や高度、バッテリー電圧などを表示したい場合、ドローンからテレメトリを受信する必要があります。

テレメトリ送受信機としてXBeeを選択した理由

ドローンからのテレメトリの受信手段として、写真のようなXBeeを使用しました。XBeeを採用した理由として、下記が挙げられます。

  • 技適を取得しているモジュールが販売されている
  • 通信モジュールとしての実績が豊富
  • Ardupilotの開発者サイトXbeeの記載がある(Ardupilotにも実績がある)
  • 安価(秋月電子通商で1つ2,900円)
  • 見通しの通信距離が1,200mとドローンを飛ばす上で十分な距離

XBee以外にもWiFiを利用したものやBluetoothを利用したものがあります。特にBluetoothは実装が比較的容易に行えるのですが、技適を取得していないモジュールが多く販売されており、購入には法的なリスクを伴うため採用を断念しました。

フライトコントローラ横の青っぽい基盤がXBee

テレメトリ送信側のXBee

テレメトリの送信用にXBeeが1つ受信用にさらにXBeeがもう1つの、計2つのXBeeが必要になります。以下の写真は送信側のXBeeです。

送信側のXBee

ドキュメントの落とし穴?

Ardupilotのドキュメントでは、送信側(ドローン)のXBeeをRouter([CE]=0)、受信側(PC)のXBeeをCoordinator([CE=1])に設定するように記載されていますが、私が試した範囲ですと送信側をCoordinator、受信側をRouterにしないと、正しく送受信できませんでした。

FCとXBeeの結線

開発中のドローンではフライトコントローラにPixhawk4(以下Pix4)を採用していますが、XBeeはPix4のTELEM1ポートに接続しています。

XBee側は直接接続せずに、XBee用の2.54mmピッチ変換基盤を使用しています。このピッチ変換基盤には電圧レギュレータが内蔵されており、Pix4から供給される+5Vの電圧をXBeeの動作電圧である+3.3Vに変換しています。Pix4から直接接続するとXBeeを破損する恐れがあるので注意が必要です。

送信側のXBeeのピッチ変換基盤と配線

Pix4とXBeeの配線は以下のようになっています。

  • 赤:+5v vcc
  • 黒:GND
  • 黄:Pix4 TX(out) -- XBee RX(Din)
  • 緑:Pix4 RX(in) -- XBee TX(Dout)

結線の際、ピンヘッダはドローンに固定する際に邪魔になるので、電線を基盤に直接はんだ付けしました。

また、基盤をドローンに固定するために、自動車用の少し厚みのある強力な両面テープを使用しました。

PCとXBeeの結線

テレメトリを受信する側のPCとXBeeの結線については、写真のようなXBee-USBインタフェースボードキットを使用しました。こちらも+5V-+3.3Vの変換レギュレータが内蔵されています。

こちらはUSBケーブルをPCに接続するだけですので、簡単です。

XBeeのパラメータ設定

XBeeへのパラメータ設定は、XCTUというソフトを使用しました。設定すべき値は基本的にArdupilotのドキュメントの通りです。DH・DLを相手側の実際のアドレスに合わせることと、CE(Coordinator Enable)の設定がドキュメントの記載とは逆になっている(いそうな)ので、その点は注意が必要です。

XCTU

www.digi.com

FlightControllerのテレメトリ設定

FCのテレメトリ設定にはMission Plannerを使用します。TELEM1に接続している場合は、MissionPlannnerのConfig/TuningメニューからFull Parameter Listを選択し、以下の設定を行います。

  • SERIAL1_BAUD57(57600bps)に設定
  • SERIAL1_PROTOCOLを1(GCS Mavlink)に設定

MissionPlannerの設定(Ardupilotサイトより)
  • BRD_SER1_RTSCTSの値を0(Disabled)に設定

MissionPlannerの設定(Ardupilotサイトより)

最後に Write Paramsボタンをクリックすると、FCに反映されます。

XBeeの通信で問題がある場合

一度設定を行うとFCやXBee側で設定が永続的に保存されるため、基本的には何もしなくても接続できるはずです。

しかし、実際に何度か試してみた感じですと、特にXBeeの初回接続がうまくいかないケースが多いように見受けられました。この場合、XCTUアプリを起動してXbeeの設定内容を確認し、実際に電波が拾える状態であることを確認した後にGCSを起動すると、うまく接続できることが多いです。

iRacing Official Sporting Code 日本語訳 V.2020.10.28【日本語訳のみ】

2021/1/3 更新:青旗における誤解を招く表現の修正

2020/10/31 更新: V.2020.10.28での修正および翻訳漏れを反映

  • 1.1.2:翻訳の漏れがあったので追記
  • 5.1.2.1, 5.1.3.1:セクション9→セクション10に修正
  • 7.5.2, 7.5.3, 7.5.4:黄旗の静止表示、振動表示の区別を削除
  • 7.5.5:ロードコースにおける黄旗中の追い越し禁止項目を削除
  • 7.5.6:オーバルコースでフルコースコーションからの復帰手順を修正
  • 7.5.7:(前節の番号変更により)7.5.7→7.5.5に修正
  • 7.6.5.1:ドライブスルーペナルティに関する記述を追加
  • 10.1.2:1シーズンにつき1回のみ無料で異議申し立てが可能であることの記述を削除
  • 14.1.2, 14.1.5:セクション9→セクション10に修正


f:id:lionas:20201031233818p:plain:w400

翻訳について

Google翻訳をベースに作成しているため誤訳が含まれる可能性があります。本サイトの翻訳を利用したことによる一切の損害について、責任は負いかねますことを予めご了承の上ご利用ください。正確な内容につきましては、原文を参照してください。

日本語訳のみ版について

本記事は、文章量の削減と読みやすさを重視して原文&日本語訳版より日本語訳のみを抜き出した軽量版となります。

目次

  • 翻訳について
  • 日本語訳のみ版について
  • 目次
  • 1. 一般原理
    • 1.1. iRacing.com
    • 1.2. iRacing公式スポーツ規定*1
  • 2. 行動
    • 2.1. 原則
    • 2.2. トラック上の行動
    • 2.3. 声及びテキストチャット
    • 2.4.フォーラム
  • 3. ライセンスクラス
    • 3.1. 原則
    • 3.2. ライセンスクラスの昇格
    • 3.3. ライセンスクラス
    • 3.4. 最小参加要件(MPR)
      • 3.4.1. ルーキーライセンス
      • 3.4.2. 非ルーキーライセンス
    • 3.5. 事故*2
    • 3.6. コーナーと事故係数
    • 3.7. 安全評価*3
    • 3.8. 最低安全要件
    • 3.9. 昇格
    • 3.10. 降格
    • 3.11. シリーズの参加要件
  • 4. ドライバースキル評価
    • 4.1. iRating
  • 5. 競争
    • 5.1. メンバーシップ
      • 5.1.1. メンバーシップアカウント
      • 5.1.2. 停止
      • 5.1.3. 強制終了
      • 5.1.4. 会員であることが必須
      • 5.1.5. 会員権の譲渡不可
      • 5.1.6. イベントからの除外
    • 5.2. 競争者のリリース
      • 5.2.1. 広告とプロモーションのリリース
      • 5.2.2. 放送とその他の権利
    • 5.3. 認可
      • 5.3.1. イベントの認可
      • 5.3.2. レースカテゴリー
      • 5.3.3. オフィシャルシリーズ
      • 5.3.4. ルーキーシリーズ
    • 5.4. 分割
      • 5.4.1. レーシング
      • 5.4.2. タイムトライアル
    • 5.5. 公式セッションと大会
    • 5.6. 個人選手権ポイント
      • 5.6.1. レースポイント
      • 5.6.2. タイムトライアルポイント
    • 5.7. 個人およびチーム選手権
      • 5.7.1. iRacing.com 選手権
      • 5.7.2. チャンピオンシップポイント タイ・ブレーカー*4
  • 6. レース手順
    • 6.1. 個人登録
    • 6.2. チーム登録
    • 6.3. フィールドサイズ
    • 6.4. レースの長さ
    • 6.5. レースの分割
    • 6.6. ウォームアップ
    • 6.7. グリッディング
    • 6.8. スタート
    • 6.9. ピット手順
    • 6.10. 意図的、報復的、および/または悪意のある破壊
  • 7. 旗・信号
    • 7.1. 緑旗*8
    • 7.2. 白旗*9
    • 7.3. 市松旗*10
    • 7.4. 青旗*11
    • 7.5. 黄旗*12
    • 7.6. 黒旗*13
    • 7.7. 遵守の失敗
  • 8. ペナルティ
    • 8.1. ルール違反
    • 8.2. ペナルティの適用
    • 8.3. 賞の没収
    • 8.4. 罰則の公表
  • 9. 抗議
    • 9.1. 誰が抗議するか
    • 9.2. 抗議の提出
    • 9.3. 抗議のレビュー
  • 10. 異議申し立て
    • 10.1. 異議申し立ての権利
    • 10.2. 根拠のある異議申し立て
    • 10.3. 異議申し立ての開始
    • 10.4. 通知と最終的な異議申し立ての決定
  • 11. ホストされたセッション
    • 11.1. ホストされたレース
  • 12. 公認レースシリーズ
  • 13. マルチクラスのレース
    • 13.1. 予選とグリッド
    • 13.2. 個人チャンピオンシップポイント
  • 14. ワールドチャンピオンシップ、プロ、eスポーツシリーズ
    • 14.1. 行動とルール
続きを読む

iRacing Official Sporting Code 日本語訳 V.2020.10.28

2021/1/3 更新:青旗に関する誤解を招く表現の修正

2020/10/31 更新: V.2020.10.28での修正および翻訳漏れを反映

  • 1.1.2:翻訳の漏れがあったので追記
  • 5.1.2.1, 5.1.3.1:セクション9→セクション10に修正
  • 7.5.2, 7.5.3, 7.5.4:黄旗の静止表示、振動表示の区別を削除
  • 7.5.5:ロードコースにおける黄旗中の追い越し禁止項目を削除
  • 7.5.6:オーバルコースでフルコースコーションからの復帰手順を修正
  • 7.5.7:(前節の番号変更により)7.5.7→7.5.5に修正
  • 7.6.5.1:ドライブスルーペナルティに関する記述を追加
  • 10.1.2:1シーズンにつき1回のみ無料で異議申し立てが可能であることの記述を削除
  • 14.1.2, 14.1.5:セクション9→セクション10に修正


f:id:lionas:20201031233818p:plain:w400

翻訳について

Google翻訳をベースに作成しているため誤訳が含まれる可能性があります。本サイトの翻訳を利用したことによる一切の損害について、責任は負いかねますことを予めご了承の上ご利用ください。正確な内容につきましては、原文を参照してください。

日本語訳のみ版について

文章量の削減と読みやすさを重視した日本語訳のみ版を用意しました。 原文との比較が不要な方は、日本語訳のみ版をご覧ください。

目次

  • 翻訳について
  • 日本語訳のみ版について
  • 目次
  • 1. 一般原理(General Principles)
    • 1.1. iRacing.com
    • 1.2 iRacing公式スポーツ規定*1(iRacing Official Sporting Code)
  • 2. 行動(Conduct)
    • 2.1. 原則(Principles)
    • 2.2. トラック上の行動(On-Track Conduct)
    • 2.3. 声及びテキストチャット(Voice and Text Chat)
    • 2.4.フォーラム
  • 3. ライセンスクラス(License Class)
    • 3.1. 原則(Principle)
    • 3.2. ライセンスクラスの昇格(License Class Advancement)
    • 3.3. ライセンスクラス(License Classes)
    • 3.4. 最小参加要件(MPR)(Minimum Participation Requirements)
    • 3.5. 事故*2(Incidents)
    • 3.6. コーナーと事故係数(Corner and Incident Multipliers)
    • 3.7. 安全評価*3(Safety Rating)
    • 3.8. 最低安全要件(Minimum Safety Requirements)
    • 3.9. 昇格(Promotion)
    • 3.10. 降格(Demotion)
    • 3.11. シリーズの参加要件(Series Eligibility)
  • 4. ドライバースキル評価(Driver Skill Ratings)
    • 4.1. iRating
  • 5. 競争(Competition)
    • 5.1. メンバーシップ(Membership)
    • 5.2. 競争者のリリース(Competitor Releases)
    • 5.3. 認可(Sanctioning)
    • 5.4. 分割(Divisions)
    • 5.5. 公式セッションと大会(Official Sessions and Competitions)
    • 5.6. 個人選手権ポイント(Individual Championship Points)
    • 5.7. 個人およびチーム選手権(Individual and Team Championships)
  • 6. レース手順(Race Procedures)
    • 6.1. 個人登録(Individual Registration)
    • 6.2. チーム登録(Team Registration)
    • 6.3. フィールドサイズ(Field Size)
    • 6.4. レースの長さ(Race Length)
    • 6.5. レースの分割(Race Splits)
    • 6.6. ウォームアップ(Warm-Up)
    • 6.7. グリッディング(Gridding)
    • 6.8. スタート(Starting)
    • 6.9. ピット手順(Pit Procedures)
    • 6.10. 意図的、報復的、および/または悪意のある破壊(Intentional, Retaliatory, and/or Malicious Wrecking)
  • 7. 旗・信号(Flag Signals)
    • 7.1. 緑旗*8(Green Flag)
    • 7.2. 白旗*9(White Flag)
    • 7.3. 市松旗*10(Checkered Flag)
    • 7.4. 青旗*11(Blue Flag)
    • 7.5. 黄旗*12(Yellow Flag)
    • 7.6. 黒旗*13(Black Flag)
    • 7.7. 遵守の失敗(Failure to Comply)
  • 8. ペナルティ(Penalties)
    • 8.1. ルール違反(Breach of Rules)
    • 8.2. ペナルティの適用(Application of Penalties)
    • 8.3. 賞の没収(Forfeiture of Awards)
    • 8.4. 罰則の公表(Publication of Penalties)
  • 9. 抗議(Protests)
    • 9.1. 誰が抗議するか(Who May Protest)
    • 9.2. 抗議の提出(Lodging a Protest)
    • 9.3. 抗議のレビュー(Review of a Protest)
  • 10. 異議申し立て(Appeals)
    • 10.1. 異議申し立ての権利(Right to Appeal)
    • 10.2. 根拠のある異議申し立て(Well-Founded Appeals)
    • 10.3. 異議申し立ての開始(Initiating an Appeal)
    • 10.4. 通知と最終的な異議申し立ての決定(Notification and Final Appeal Decision)
  • 11. ホストされたセッション(Hosted Sessions)
    • 11.1. ホストされたレース(Hosted Races)
  • 12. 公認レースシリーズ(Sanctioned Race Series)
  • 13. マルチクラスのレース(Multiclass Racing)
    • 13.1. 予選とグリッド(Qualifying and Gridding)
    • 13.2. 個人チャンピオンシップポイント(Individual Championship Points)
  • 14. ワールドチャンピオンシップ、プロ、eスポーツシリーズ(World Championship, Pro, and eSport Series)
    • 14.1. 行動とルール(Conduct and Rules)

1. 一般原理(General Principles)

1.1. iRacing.com

1.1.1. iRacing.com endeavors to create the world's most authentic motorsports racing simulation for the consumer and other markets including providing a high quality centralized and organized real-time online racing platform.

iRacing.comは、高品質の集中型で組織化されたリアルタイムのオンラインレーシングプラットフォームの提供を含む、消費者やその他市場向けの世界で最も本格的なモータースポーツレーシングシミュレーションの作成に努めています。

1.1.2. iRacing.com serves as the sanctioning body for internet racing conducted through and by iRacing.com. Its mission is to organize and facilitate centralized internet racing competitions, providing structure, consistency and fairness.

iRacing.comは、iRacing.comを通じておよびiRacing.comによって実施されるインターネットレースの制裁機関として機能します。 その使命は一元化されたインターネットレース大会を組織および促進し、構造、一貫性、および公平性を提供します。

1.1.3. iRacing.com shall be the sole sporting authority entitled to make and enforce regulations for internet racing competitions as hosted by iRacing.com.

iRacing.comは、iRacing.comが主催するインターネットレースの規則を制定し、執行する唯一のスポーツ機関です。

1.1.4. iRacing.com may from time to time elect to enter into co-sanctioning agreements or other similar partnerships with other motorsport sanctioning bodies, clubs or organizations to facilitate the organization and execution of a specific internet racing event or series of events.

iRacing.comは特定のインターネットレーシングイベント、または、一連のイベントの編成と実行を促進するために、他のモータースポーツ認可機関、クラブ、または組織と共同認可協定、あるいは、他の同様のパートナーシップを締結する場合があります。

1.2 iRacing公式スポーツ規定*1(iRacing Official Sporting Code)

1.2.1. To ensure fair and consistent governance of internet racing competition and strive to create a respectful environment, iRacing.com has established the iRacing Official Sporting Code.

iRacing.comは、インターネットレーシングコンテストの公正で一貫したガバナンスを確保し、敬意を払う環境を作る努力をするため、iRacing公式スポーツ規定を制定しました。

1.2.2. The iRacing Official Sporting Code, and any addenda, shall govern all internet racing events sanctioned by iRacing.com.

iRacing公式スポーツ規定および追加条項は、iRacing.comによって認可されたすべてのインターネットレースイベントを管理するものとします。

1.2.3. It is the obligation and responsibility of all iRacing.com members to read, understand and abide by the iRacing Official Sporting Code.

iRacing公式スポーツ規定を読み、理解し、それを守ることはすべてのiRacing.comメンバーの義務と責任です。

1.2.4. iRacing.com may from time to time, at its sole discretion, revise any or all of the iRacing Official Sporting Code.

iRacing.comは、その単独の裁量により、iRacing公式スポーツ規定の一部またはすべてを随時改訂する場合があります。

1.2.5. iRacing.com may publish supplementary regulations pertaining to an individual series and/or event. These supplementary regulations are intended to augment the iRacing Official Sporting Code and/or modify certain elements therein to ensure fair and consistent competition in the particular series or event to which the supplementary regulations apply.

iRacing.comは、個々のシリーズやイベントに関連する補足規制を公開する場合があります。 これらの補足規則は、iRacing公式スポーツ規定を補強したり特定の要素を変更して、補足規則が適用される特定のシリーズやイベントでの公正で一貫した競争を確保することを目的としています。

1.2.6. Unless specifically noted in the supplementary regulations, all rules set forth in the iRacing Official Sporting Code will apply to every iRacing.com-sanctioned event.

補足規定で特に明記されていない限り、iRacing公式スポーツ規定に記載されているすべてのルールがすべてのiRacing.com認定イベントに適用されます。

1.2.7. The iRacing Official Sporting Code affords every iRacing member assessed a penalty or named as a party to protest the right to appeal a decision made by iRacing.com (See Appeals, Section 10). Upon final resolution of such appeals, however, application and interpretation of the iRacing Official Sporting Code by iRacing.com officials shall be final and binding.

iRacing公式スポーツ規定は、iRacing.comによる決定に抗議するためにペナルティを課された、または、当事者として指名されたすべてのiRacingメンバーに提供します(異議申し立て、セクション10を参照)。 ただし、かかる異議申し立てが最終的に解決されると、iRacing.comの役員によるiRacing公式スポーツ規定の適用および解釈が最終的かつ拘束力を持つものとします。

*1:競技ルールとほぼ同義です。

続きを読む