【Androidでドローン(マルチコプター)を飛ばそう】 ドローンを離陸させよう

このエントリーを Google ブックマーク に追加
Pocket
[`yahoo` not found]

 

1-MiniDroneを拡張しよう

今回は前回作ったクラスMiniDroneを拡張しドローンを離陸させます。
MiniDroneクラスに離着陸の機能を実装します、ドローンの離着陸には下記のメソッドを使用します。

ARFeatureMiniDrone sendPilotingTakeOff ドローンに離陸命令を出す。
ARFeatureMiniDrone sendPilotingLanding ドローンに着陸命令を出す。

これらのメソッドを用いて、それぞれtakeOff、landを実装します。

    /**
    * 離陸
    */
    public void takeOff() {
        if ((mDeviceController != null) && (mState.equals(ARCONTROLLER_DEVICE_STATE_ENUM.ARCONTROLLER_DEVICE_STATE_RUNNING))) {
            mDeviceController.getFeatureMiniDrone().sendPilotingTakeOff();
        }
    }

    /**
    * 着陸
    */
    public void land() {
        if ((mDeviceController != null) && (mState.equals(ARCONTROLLER_DEVICE_STATE_ENUM.ARCONTROLLER_DEVICE_STATE_RUNNING))) {
            mDeviceController.getFeatureMiniDrone().sendPilotingLanding();
        }
    }

2-MiniDroneActivityを拡張しよう

1-Viewを初期化する

Viewを初期化するinitializeViewを定義し、MiniDroneActivity#onCreate内で呼び出しViewの初期化とクリックリスナー、タッチリスナーを設定していきます。 今回はメッセージを表示するtextMessageと離陸着陸を行うbuttonLandOrTakeOffを実装します。

    private TextView mMessageLabel;
    private Button mTakeOffOrLanButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_minidrone);
        initializeView();
        //前画面から接続するDroneのARDiscoveryDeviceServiceを取得する
        Intent intent = getIntent();
        ARDiscoveryDeviceService service = intent.getParcelableExtra(MainActivity.EXTRA_DEVICE_SERVICE);
        //ARDiscoveryDeviceServiceを使いMiniDroneをインスタンス化する。
        mMiniDrone = new MiniDrone(this, service);
        //Drone接続状況やDrone飛行状況をコールバックするリスナーを設定する。
        mMiniDrone.addListener(mMiniDroneListener);
    }

    private void initializeView() {
        //ログ用のTextViewをインスタンス化
        mMessageLabel = (TextView) findViewById(R.id.textMessage);
        //離着陸ボタンをインスタンス化
        mTakeOffOrLanButton = (Button) findViewById(R.id.buttonLandOrTakeOff);
        //離着陸ボタンのクリックリスナーを設定
        mTakeOffOrLanButton.setOnClickListener(takeOnOffOnClickListener);
    }

2-mMessageLabel(id:textMessage)を実装

今後色々なドローンやAndroid端末の状態を表示するメッセージを実装します。

    private void appendMessage(String message) {
        mMessageLabel.append(message);
        mMessageLabel.append("\n");
    }

3-mTakeOffOrLanButton(id:buttonLandOrTakeOff)を実装

着陸状態でボタンを押すと離陸命令を実行し、離陸状態でボタンを押すと着陸命令を出すように実装します。
また、合わせてメッセージを表示します。

    /**
    * 離着陸ボタンのリスナー
    */
    private View.OnClickListener takeOnOffOnClickListener = new View.OnClickListener() {
        public void onClick(View v) {
            switch (mMiniDrone.getFlyingState()) {
                case ARCOMMANDS_MINIDRONE_PILOTINGSTATE_FLYINGSTATECHANGED_STATE_LANDED:
                    appendMessage("離陸命令");
                    //着陸命令を実行
                    mMiniDrone.takeOff();
                    break;
                case ARCOMMANDS_MINIDRONE_PILOTINGSTATE_FLYINGSTATECHANGED_STATE_FLYING:
                case ARCOMMANDS_MINIDRONE_PILOTINGSTATE_FLYINGSTATECHANGED_STATE_HOVERING:
                    //離陸命令を実行
                    appendMessage("着陸命令");
                    mMiniDrone.land();
                    break;
                default:
            }
        }
    };

3-まとめ

今回は離陸着陸を実装しました、やっとドローンを飛ばすことができたのでこれからが楽しくなると思います。 また、離陸だけを実装して実行してしまうと着陸できずに電池切れを待たないといけないので気をつけましょう。

【国内正規品】Parrot Minidrones Airborne Night Blaze(レッド)ドローン規制対象外200g 未満・パリデザイン・LED 付き自動安定ホバーリングクアッドコプター ・30万画素カメラ・簡単にアクロバット・スマホ・タブレットで操作 PF723132

新品価格
¥17,150から
(2017/2/28 00:50時点)


Parrot Airborne Cargo MiniDrone - Mars (White) by Parrot

新品価格
¥22,692から
(2017/2/28 00:53時点)


Parrot MiniDrones Airborne Night Drone Maclane (Blue) [並行輸入品]

新品価格
¥12,000から
(2017/2/28 00:54時点)


【国内正規品】Parrot Bebop 2 ホワイト Full HD/30fps 魚眼レンズ カメラ・25分飛行時間・8GB 内部フラッシュメモリー・自動安定ホバーリング・最高水平速度:60KM/H・パリデザイン・GNSS (GPS GLONASS)付・クワッドコプター PF726073

新品価格
¥65,701から
(2017/2/28 00:57時点)


 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)