LoginSignup
1
1

More than 5 years have passed since last update.

bebop_autonomyをRaspberryPi(Ubuntu16.04)でコンパイル

Last updated at Posted at 2017-08-28

はじめに

私はROS及びLinux系OSについては初心者です。
その場しのぎのコードや、適切でない編集などしてしまいます。
後進のため、今後の私のため、コメントなどでご指摘いただけますと幸いです。

また、この記事を書いた段階では、まだドローンを飛ばしていません。
コンパイルが通ったのみですので、ご容赦ください。

環境

・RaspberryPi3modelB(OS:UbuntuMate 16.04)
・ROS kinetic

parrot_arsdkのダウンロード

githubからダウンロード
$ cd ~/catkin_ws/src/
$ git clone https://github.com/AutonomyLab/parrot_arsdk.git

もしくは、

apt-getでダウンロード
$ sudo apt-get install ros-kinetic-parrot-arsdk

後者のほうが依存関係などが解決できるので良いかもしれません。

bebop_autonomyのダウンロード

githubからダウンロード
$ 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"へ移行したとか・・・?
でもそうすると、古い形式でコンパイルが通らないのは、互換性がなくなるので困る気がする。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1