概要
前回 node-bebop という Nodejs 製のライブラリを使って Bebop2 を制御してみました
今回は Nodejs を返さず直接 Mac から制御してみました
環境
- Mac OS X 10.10.5
- repo 1.12.33
- Bebop2
repo コマンドのインストール
repo コマンドは git を管理するためのツールです
環境構築に必要なのでインストールしましょう
- cd /usr/local/bin
- curl ‘https://storage.googleapis.com/git-repo-downloads/repo’ > ./repo
- chmod a+x repo
で OK です
repo --version
などしてバージョンが表示されることを確認してください
ソースの取得
Mac で Bebop2 を制御するためのツールはソースから直接インストールします
まずは先ほどインストールした repo コマンドを使ってソースコードを取得しましょう
- mkdir -p /pato/to/Documents/work/ardrone3
- cd /path/to/Documents/work/ardrone3
- repo init -u https://github.com/Parrot-Developers/arsdk_manifests.git
とするとリポジトリを初期化する処理が開始されます
warning: gpg (GnuPG) is not available.
warning: Installing it is strongly encouraged.
Get https://gerrit.googlesource.com/git-repo/clone.bundle
Get https://gerrit.googlesource.com/git-repo
Get https://github.com/Parrot-Developers/arsdk_manifests.git
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
curl: (22) The requested URL returned error: 404 Not Found
Server does not provide clone.bundle; ignoring.
remote: Counting objects: 62, done.
remote: Total 62 (delta 0), reused 0 (delta 0), pack-reused 62
From https://github.com/Parrot-Developers/arsdk_manifests
* [new branch] master -> origin/master
* [new tag] ARSDK3_version_3_8 -> ARSDK3_version_3_8
* [new tag] ARSDK3_version_3_8_1 -> ARSDK3_version_3_8_1
* [new tag] ARSDK3_version_3_8_2 -> ARSDK3_version_3_8_2
* [new tag] ARSDK3_version_3_8_3 -> ARSDK3_version_3_8_3
* [new tag] ARSDK3_version_3_9_0 -> ARSDK3_version_3_9_0
* [new tag] ARSDK3_version_3_9_1 -> ARSDK3_version_3_9_1
Your Name [hawksnowlog]:
Your Email [hawksnowlog@localhost.local]:
Your identity is: hawksnowlog <hawksnowlog@localhost.local>
is this correct [y/N]? y
repo has been initialized in /Users/hawksnowlog/Documents/work/ardrone3
途中でリポジトリにコミットする Author の設定を入力する必要があるので、適当に入力しましょう
これだけではソースコード自体は取得できていないので、sync してソースコードを取得しましょう
- repo sync
とするとズラーっとログが流れてソースコードの取得が始まります
ログは長いので省略します
最終的に以下のようになっていれば OK です
- ls -1
build
build.sh
out
packages
products
track-branch.sh
ビルド
ダウンロードしたソースコードをビルドしましょう
ビルド方法はダウンロードした中にある「build.sh」を実行すれば OK です
コマンドについて
実行には引数が必要で今回は
- ./build.sh -p arsdk-native -t build-sdk -j
- ./build.sh -p arsdk-native -t build-sample -j
という感じで実行します
「-p」オプションはプロダクトを指定するオプションで今回は「arsdk-native」を指定しています
他には android , ios, ios-sim というプロダクトを指定することができます
今回は Mac から直接制御したいので arsdk-native を指定します
「-t」というオプションでタスクを指定できます
代わりに「-A」というオプションを使用することで alchemy
というタスクが実行され、これを実行することで必要なものは全部ビルドされます
が、今回は SDK と Sample だけ必要なので、そのタスクだけ実行します
ちなみにタスクの一覧を表示するには
- ./build.sh -p native -t
を実行してみてください
あとわからないことは「./build.sh -h」でヘルプを表示することができます
実行
実行するとおそらくいろいろとモジュールが足りないと言われてエラーになると思います
その場合は逐一 homebrew などで足りないモジュールをインストールすれば OK です
ちなみに自分は以下のエラーが出たので
- brew install libtool
で対応しました
Can't exec "glibtoolize": No such file or directory at /usr/local/Cellar/autoconf/2.69/share/autoconf/Autom4te/FileUtils.pm line 345, <GEN3> line 5.
autoreconf: failed to run glibtoolize: No such file or directory
autoreconf: glibtoolize is needed because this package uses Libtool
それ以外のエラーは特に出ませんでした
公式を見ると以下がインストールされている必要があるみたいです
- git
- build-essential (only for Linux)
- autoconf
- libtool
- libavahi-client-dev
- libavcodec-dev
- libavformat-dev
- libswscale-dev
- libncurses5-dev
- mplayer
最終的にビルド結果が以下のようになれば OK です
[I] Finished task 'build-sdk'
[I] Finished task 'build-sample'
動作確認
今回は実際に飛ばさないでビデオストリームを使ってカメラの画像を Mac 上にリアルタイムに表示してみます
サンプルの C スクリプトを使うのですが、Mac 上での動画の描画は mplayer を使うみたいなので事前にインストールしておきます
- brew install mplayer
インストールできたら実行してみます
実行するときは Bebop2 を起動して Mac と Wifi で接続してください
- /path/to/Documents/work/ardrone3
- LD_LIBRARY_PATH=./out/arsdk-native/staging/usr/lib
- echo $LD_LIBRARY_PATH
- ./out/Unix-base/staging/native-darwin-wrapper.sh ./out/arsdk-native/staging/usr/bin/BebopDroneReceiveStream
で実行できるはずです
やっていることは単純でラッパーのシェルを使ってビルドしてできたバイナリを実行している感じです
実行直後のデバッグログは以下の通りです
[INF] BebopDroneReceiveStream | 14:49:46:749 | main:307 - -- Bebop Drone Receive Video Stream --
[INF] BebopDroneReceiveStream | 14:49:46:750 | main:317 - -- Starting --
MPlayer 1.3.0-4.2.1 (C) 2000-2016 MPlayer Team
Can't init Apple Remote.
Playing /tmp/arsdk_wz0b7G/arsdk_fifo.
libavformat version 57.25.100 (internal)
[INF] BebopDroneReceiveStream | 14:49:46:763 | ardiscoveryConnect:473 - - ARDiscovery Connection
[INF] BebopDroneReceiveStream | 14:49:46:933 | startNetwork:505 - - Start ARNetwork
[INF] BebopDroneReceiveStream | 14:49:46:933 | startVideo:611 - - Start ARStream
[INF] BebopDroneReceiveStream | 14:49:46:933 | sendBeginStream:730 - - Send Streaming Begin
[ERR] ARNETWORKAL_WifiNetwork | 14:49:46:957 | ARNETWORKAL_WifiNetwork_GetAvailableSendSize:1154 - [0x7ff759d000c0] Error $
uring ioctl 6 (Device not configured)
[INF] ARNETWORKAL_WifiNetwork | 14:49:46:957 | ARNETWORKAL_WifiNetwork_GetAvailableSendSize:1159 - [0x7ff759d000c0] ioctl f
ailed with error ENXIO, stop trying to get available socket buffer size
...
しばらくすると Bebop2 のカメラの映像が Mac にも表示されると思います
最後に
紹介は以上です
2015年くらいの記事を参考に実施しようとすると ARSDKBuildUtils をクローンしてビルドする手順が出てくるのですが、どうやらこれは非推奨になったらしく今回の手順が正規の手順になったようです
あとは実行シェル (native-darwin-wrapper.sh) とサンプルファイル (BebopDroneReceiveStream.c) を見れば何とか作れるんじゃないかなと思います
独自のサンプルもできたら紹介したいと思います
0 件のコメント:
コメントを投稿