#はじめに
私はROS及びLinux系OSについては初心者です。
その場しのぎのコードや、適切でない編集などしてしまいます。
後進のため、今後の私のため、コメントなどでご指摘いただけますと幸いです。
また、この記事を書いた段階では、まだドローンを飛ばしていません。
コンパイルが通ったのみですので、ご容赦ください。
#環境
・RaspberryPi3modelB(OS:UbuntuMate 16.04)
・ROS kinetic
#parrot_arsdkのダウンロード
$ cd ~/catkin_ws/src/
$ git clone https://github.com/AutonomyLab/parrot_arsdk.git
もしくは、
$ sudo apt-get install ros-kinetic-parrot-arsdk
後者のほうが依存関係などが解決できるので良いかもしれません。
#bebop_autonomyのダウンロード
$ cd ~/catkin_ws/src/
$ git clone https://github.com/AutonomyLab/bebop_autonomy.git
githubからワークスペースへダウンロードします。
こちらはapt-getのリポジトリにありませんでした。(2017/8/29)
#コンパイルしてみると・・・?
ワークスペースで"catkin_make"を実行すると、エラーが出ます。
error: 'PIX_FMT_RGB24' was not declared in this scope
const uint32_t num_bytes = avpicture_get_size(PIX_FMT_RGB24, codec_ctx_ptr_->width, codec_ctx_ptr_->width);
内容としては、"PIX_FMT_RGB24"はこのスコープ内で宣言されてないよ、といっています。
軽く調べてみると、ARSDKのビデオ関連はFFMPEGで処理されているようなので、FFMPEGに"PIX_FMT_RGB24"が存在しないかを調べてみると、
pixfmt.h File Reference
すぐにリファレンスが見つかりました。
このページによれば、"PIX_FMT_RGB24"自体は存在しているようです。
同じヘッダ内に、"AV_PIX_FMT_RGB24"という、名前がよく似た列挙子が存在しています。
値は全く一緒だったため、こちらに書き換えてしまいましょう。
#bebop_autonomyの該当ソースコード
エラーが出ていたのは、bebop_autonomy/bebop_driver/src/bebop_video_decoder.cpp でした。
この中の"PIX_FMT_RGB24"を探すと、3箇所見つかりました。
全て"AV_PIX_FMT_RGB24"に置き換えます。
それぞれ、106行目、118行目、180行目にあるはずです。
#再びcatkin_make
ワークスペースへ移動してcatkin_makeを実行すると、Warningは出たままですが、コンパイルが成功し、ノードが呼び出せるようになりました。
明日以降、実機を接続して飛翔実験を行いたいと思います。
#自分なりの考察
"PIX_FMT_RGB24"という列挙子ですが、古い形式なのかなあと。
どこかのタイミングで"AV_PIX_FMT_RGB24"へ移行したとか・・・?
でもそうすると、古い形式でコンパイルが通らないのは、互換性がなくなるので困る気がする。