Skip to content

箱庭ドローンシミュレータ コントローラ設定

コントローラ設定とデバッグ編

箱庭ラボコミュニティ

2024年09月08日

目次
用語集・改版履歴
略語 用語 意味
No 日付 版数 変更種別 変更内容
1 2024/08/16 0.1 新規 新規作成
2 2024/09/09 0.2 追加 JSON設定時のindex値のデバッグ方法追加

1. 本ドキュメントについて

本ドキュメントは、箱庭ドローンシミュレータで利用するドローン操作用のコントローラの設定に関しての設定方法、デバッグ方法に関するドキュメントとなります。

1.1. 対象環境

本ドキュメントでは、以下の環境を対象としています。

本ドキュメントでは、以下のOSバージョンとPC環境を想定としています。

No 対象 内容
1 OS Ubuntu 22.04 LTS/Windows10/11
2 PC 64bit環境
3 PC Corei7 9th以降
4 PC 32Gbyteのメモリ推奨
5 PC SSD 512Gbyte以上
6 PC Graphicsアクセラレータ推奨

2. 箱庭ドローンシミュレータでのコントローラ設定

箱庭ドローンシミュレータでは、多種多様なコントローラを利用できるように設定をJSON形式のファイルとして提供しています。 以降の解説では、ubuntuの場合は、ubuntu環境のホームディレクトリ配下のworkディレクトリに箱庭ドローンシミュレータ環境を構築していることを前提として解説をします。Windowsの場合は、c:\Users\”User名”\source\repoに箱庭ドローンシミュレータ環境を構築していることを前提としています。

2.1. JSON形式の設定ファイルの場所

以下のディレクトリにJSONファイル形式の設定ファイルがあります。

  • Ubuntuの場合

bashを起動してください。

$ ls work/hakoniwa-px4sim/drone_api/sample/rc_config/
FS-i6S.json Nintendo-ProControl-win.json  hori4mini-control-win.json  ps4-control.json Nintendo-ProControl-lnx.json hori4mini-control-lnx.json    ps4-control-lnx.json ps5-control-lnx.json

― Windows10/11の場合

Powershellを起動してください。

PS C:\Users\buildman\source\repos\hakoniwa-px4sim > ls .\drone_api\sample\rc_config\

    Directory: C:\Users\buildman\source\repos\hakoniwa-px4sim\drone_api\sample\rc_config

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---          2024/09/08    15:00           1554 FS-i6S.json
-a---          2024/09/08    15:00           2002 hori4mini-control-lnx.json
-a---          2024/09/08    16:02           2004 hori4mini-control-win.json
-a---          2024/09/08    15:00           2001 Nintendo-ProControl-lnx.json
-a---          2024/09/08    16:02           2003 Nintendo-ProControl-win.json
-a---          2024/09/08    15:00           2005 ps4-control-lnx.json
-a---          2024/09/08    15:00           2004 ps4-control.json
-a---          2024/09/08    16:02           2005 ps5-control-lnx.json

2.2. JSON形式の設定ファイルの内容

JSONファイルで設定できる内容を解説します。例として、PS4互換のHORI PAD4 miniのコントローラを例に解説します。

2.2.1. 設定ファイルの内容

設定ファイル内容を見ていきましょう。設定ファイルではコントローラのボタンやJOYスティックなどのボタンの割り当てを設定することができます。

  • hori4mini-control-lnx.jsonファイルの中身
{
    "Os": [ "Darwin" ],
    "mode": 2,
    "stick": {
        "Left": {
            "UD": {
                "index": 1,
                "average": true,
                "valueInverse": false,
                "conversion": {
                    "paramA": 0.9,
                    "paramB": 0.1,
                    "paramC": 0.0
                }
            },
            "LR": {
                "index": 0,
                "average": true,
                "valueInverse": false,
                "conversion": {
                    "paramA": 0.9,
                    "paramB": 0.1,
                    "paramC": 0.0
                }
            }
        },
        "Right": {
            "UD": {
                "index": 5,
                "average": true,
                "valueInverse": false,
                "conversion": {
                    "paramA": 0.9,
                    "paramB": 0.1,
                    "paramC": 0.0
                }
            },
            "LR": {
                "index": 2,
                "average": true,
                "valueInverse": false,
                "conversion": {
                    "paramA": 0.9,
                    "paramB": 0.1,
                    "paramC": 0.0
                }
            }
        }
    },
    "Event": {
        "RadioControlEnable": {
            "index": 1,
            "type": "switch",
            "off": "up",
            "on": "down"
        },
        "Camera": {
            "index": 0,
            "type": "push",
            "off": "up",
            "on": "down"
        },
        "GrabBaggage": {
            "index": 2,
            "type": "toggle",
            "off": "up",
            "on": "down"
        },
        "CameraMoveUp": {
            "index": 5,
            "type": "switch",
            "off": "up",
            "on": "down"
        },
        "CameraMoveDown": {
            "index": 4,
            "type": "switch",
            "off": "up",
            "on": "down"
        }

    }
}

まずは、インデックス名から見ていきましょう。インデックスは3種類あります。mode,stick,Eventの3種類になります。

No インデックス名 内容
1 mode コントローラや送信機(プロポ)のMODE設定内容
2 stick コントローラのJoystickの設定内容
3 Event コントローラの各種ボタン設定内容

2.2.1.1. modeインデックスの設定内容

modeタグは、コントローラや送信機(プロポ)のMODE設定になります。モードの設定イメージは、下記の画像のイメージになります。

コントローラのMODE設定

設定値は以下のようになります。

No 設定値 内容
1 1 モード1の設定
2 2 モード2の設定

2.2.1.2. stickインデックスの設定内容

stickインデックスは、コントローラのJoystick部分の上下左右の設定になります。

コントローラのJoystick設定1

stickのインデックスは、Left(左),Right(右)があり、Left(左),Right(右)それぞれにUD(上下),LR(左右)のインデックスが設定内容としてあります。

コントローラのJoystick設定2

Left(左),Right(右)のUD(上下),LR(左右)のそれぞれに以下の設定値があります。

No 設定項目 設定値 内容
1 index 0~5の間の値 Joystickを動かしたときのコントローラから送られるインデックス番号
2 average true/false Joystickを動かしたときの平均値を計算することの設定
3 valueInverse true/false Joystickを動かしたときの値の反転をする設定
4 conversion 0.0~0.9の間の値 ParamA~ParamCがある。Joystickを動かしたときの調整パラメータ設定

2.2.1.3. Eventインデックスの設定内容

Eventインデックスは、コントローラの各種ボタンを箱庭ドローンシミュレータが機能として利用するための設定になります。

コントローラの各種ボタン設定1

Eventインデックスは、箱庭ドローンシミュレータが用意しているPython操作用のAPI定義に従った項目が設定できるようになっています。

コントローラの各種ボタン設定2

設定値には、RadioControlEnable,Camera,GrabBaggage,CameraMoveUp,CameraMoveDownの5種類の設定があります。

No 設定項目 内容
1 RadioControlEnable 0~12の間の値
2 Camera ドローンカメラ撮影ボタン操作設定
3 GrabBaggage ドローンの荷物操作用のマグネット操作設定
4 CameraMoveUp ドローンカメラの上操作設定
5 CameraMoveDown ドローンカメラの下操作設定

RadioControlEnable,Camera,GrabBaggage,CameraMoveUp,CameraMoveDownの5種類には、それぞれに以下の設定があります。設定値のindexの値はコントローラによって取れる値が異なるので、現状で把握できている値を記載しています。

No 設定項目 設定値 内容
1 index 0~15の間の値 コントローラのボタンを押したときのコントローラから送られるインデックス番号
2 type push/toggle/switch ボタンを押したときの操作設定。push:押したときに操作が有効,toggle:押した回数によって操作内容変更,switch:押したときの操作内容変更
3 off up/down ボタンが押されてないときの操作を指定
4 on up/down ボタンが押されたときの操作を指定

3. 箱庭ドローンシミュレータのコントローラ設定方法

Linuxなど各種OSでの操作や、コントローラ種類によって、コントローラのjoystickの操作やボタン操作によって、コントローラから取れる値が異なることがあります。特に各インデックスの設定項目にあるindex部分に設定する値は異なることが多いです。

現状提供しているJSONファイルでは、利用するコントローラの操作と合わない場合が想定されるため、ここでは、実際にコントローラから取れる値のデバッグ方法を解説します。

3.1. コントローラ操作のデバッグ時の注意点

rc-custom.pyの仕様上、ジョイスティックとボタンの操作だけが利用できるような仕様になっています。OSやコントローラによって取れる値が違うことがあるため、注意してください。

3.1.1. 十字キーの割り当てについて

OSによって、十字キーの割り当てが変わるため、注意が必要です。現状確認ができているのは、LinuxとWindowsでのボタン割り当てが違うことが分かっています。コントローラのデバッグ時には、ジョイスティックとボタン操作で取れる値だけが有効ですので、それ以外の値で取れた場合は、違う操作でジョイスティックとボタン操作の値が取れるものを利用してください。

コントローラ操作時の注意

上記の例は、十字キーをLinuxとWindowsで操作した場合の例です。Linuxでは、ボタン操作で認識されていないので、十字キーは利用不可となります。一方、Windowsの場合は、ボタン操作として十字キーが認識されるので、利用可能となります。

3.2. コントローラ操作のデバッグ方法

コントローラのデバッグ用のpythonコードを利用して、コントローラから取れる値を確認することができます。

― Ubuntuの場合

bashを起動してください。

$ cd ~/work/hakoniwa-px4sim/drone_api/sample/rc_debug
$ python3 rc_control.py

― Windows10/11

pwoershellを起動してください。

PS C:\Users\buildman\source\repos\hakoniwa-px4sim\drone_api\sample\rc_debug> python .\rc_control.py

起動すると以下のようにコントローラを認識してくれます。コントローラの名前、コントローラ上のボタン数が確認できます。

コントローラのデバッグ1

起動ができたら、実際にコントローラを操作してみましょう。ボタンのインデックス値、Joystickのインデックス値などを確認して、箱庭ドローンシミュレータ用の設定ファイルに反映することで、コントローラを反映することができます。

コントローラのデバッグ2

3.2.1. ジョイスティックの設定例

rc_control.pyを利用して、取れた値は、JSONファイルのindexに設定すると有効になります。

コントローラのデバッグ3

3.2.2. ボタン操作の設定例

rc_control.pyを利用して、取れた値は、JSONファイルのindexに設定すると有効になります。

コントローラのデバッグ3