【Androidでドローン(マルチコプター)を飛ばそう】 ドローンを離陸させよう
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-まとめ
今回は離陸着陸を実装しました、やっとドローンを飛ばすことができたのでこれからが楽しくなると思います。 また、離陸だけを実装して実行してしまうと着陸できずに電池切れを待たないといけないので気をつけましょう。
|
|
||||
|
|
||||