【備忘録】NASAのastrobeeシミュレータを動かすよ

**ちゃんとしたインストール方法はこちらの記事で解説しております**
⇒ https://qiita.com/Anaakikutsushit/items/245e4c51e7ecacaeb22b

依存関係のインストールがリポジトリのやつだと動かないと思ってたんですけど、ちょっと変えたら全部通ったので下記の奮闘は全て無駄になったのでした


#astrobeeってなんや
[このページ](https://www.nasa.gov/astrobee)参照

#シミュレータどこにあるの
GitHubにあるよ
[nasa/astrobee](https://github.com/nasa/astrobee)

#Ubuntuを用意しよう
[INSTALL.md](https://github.com/nasa/astrobee/blob/master/INSTALL.md)に書いてある通り、Ubuntu 16.04が必要になります。

クリーンインストールしたMacBookAir（型番よくわかんない）が手に入ったので、そのマシンにUbuntuをインストールすることにしました。

##インストール
インストール手順は下記の記事を参考にしました。
[【Tips】MacBookにUbuntuを入れてデュアルブート環境を構築する方法](https://www.softantenna.com/wp/tips/macbook-dualboot-ubuntu/)

インストールするUbuntuはこちらのページからダウンロードしました。
[Ubuntu 16.04 LTS 日本語 Remix リリース](https://www.ubuntulinux.jp/News/ubuntu1604-ja-remix)
なんかバージョンのところに**LTS**ってくっついてるの何だ……？と思いましたが、サポート期間が通常よりも長いバージョンというだけみたいなので、LTSをインストールすることにしました。
[Ubuntu LTSとは何か、Server版やMATE版のLTSはあるの？](https://www.sejuku.net/blog/83842)

上記記事では、パーティション分割をするとリカバリモードで起動を試みるとカーネルパニックが発生するようになってしまう……という不具合が報告されていますが、私の環境ではカーネルパニックを起こしませんでした。
スワップパーティションも特に作成しませんでした。
Wi-Fiはインストール時のデフォルト状態で既に繋がってくれたので問題ありませんでした。
rEFIndはインストールしませんでした。当面の間Ubuntuばかり使う予定だったからです。あとから必要になったら入れようと思います。

キーボード識別で少しハマりました。
表示されているキーを入力していって（あるいはそのキーは存在しないと答えていって）結果的にどんな種類のキーボードかUbuntuに識別してもらうという機能が入っていました。
しかしいくらやっても完全に合致するキーボードの種類がなく（主要なキーは印字どおりに入力してくれる）、`[`キーを押したら`@`が入力されるという形のまま進めることになりました。
Ubuntuのキーボード設定をMac向けにカスタマイズするという内容の記事もネットにたくさんあるみたいなので、この差が気になり始めたらあとからカスタマイズすることにします。

#シミュレータを用意しよう
先ほどのGitHubのページからcloneしてきて任意の場所に配置します。
最初はZIPダウンロードでもいけるかな？と思ったんですが、cmakeするときに「.gitファイルが無いよ〜」みたいなエラーが出てしまいました。やはりcloneしていきましょう。

##ビルド
前出のINSTALL.mdではビルドできるか確認してねって書いてあるので確認してみましょう。
リポジトリにはCMakeLists.txtが入っているので、cmakeコマンドでビルドしてみます。
cmakeについて全然知らなかったので、こちらの記事を読んでなんとなく概要を掴みました。
[cmake チュートリアルを読む前に
](https://qiita.com/maueki/items/9cce88f6122e205754c5)

普通にcmakeコマンドを実行してみたら、エラーが出てしまいました。

```
プログラム 'cmake' はまだインストールされていません。次のように入力することでインストールできます。
sudo apt install cmake
```

表示に従ってcmakeコマンドをインストールしてから、再びビルドしてみます。

```
CMake Error at cmake/FindGlog.cmake:79 (MESSAGE):
  Failed to find glog - Could not find glog include directory, set
  GLOG_INCLUDE_DIR to directory containing glog/logging.h
```

何やら`glog`なるファイルが欠けているようです。
何それ？と思って検索をかけてみたところ、cmake/FindGlog.cmakeのファイルの中にそれらしき記述を見かけました。
`FindGlog.cmake - Find Google glog logging library.`
つまりGoogle製の外部ライブラリってことみたいですね。そりゃ入ってないわ。

## glog
リポジトリはここみたいです。
[google / glog](https://github.com/google/glog)
cloneしてきたらastrobeeと同様にしてcmakeコマンドを実行。
Makefileが出来上がったので、makeコマンドも実行します。

```
sudo make install

#略

-- Installing: /usr/local/include/glog/logging.h

#略
```

さっきastrobeeの方のcmakeで欠けていた`logging.h`が出てきました。これで良さそうです。

astrobeeの方に戻ってもう一度cmakeしてみると、またもやエラー。

```
CMake Error at cmake/FindGflags.cmake:85 (MESSAGE):
  Failed to find gflags - Could not find gflags include directory, set
  GFLAGS_INCLUDE_DIR to directory containing gflags/gflags.h
```

今度はgflagsというライブラリが不足している様子。同様にインストールしていきます。

## gflags
リポジトリはここっぽい
[gflags / gflags](https://github.com/gflags/gflags)

glogと同じようにcloneしてきてcmake .実行してsudo make installを実行します。

```
$ sudo make install

#略

-- Installing: /usr/local/include/gflags/gflags.h

#略
```

これで欠けてたファイルが埋まったはず。またastrobeeに戻ってcmakeを実行します。
しかしまたもやエラー。今度の内容はというと次の通り。

```
CMake Error at /usr/share/cmake-3.5/Modules/FindPackageHandleStandardArgs.cmake:148 (message):
  Could NOT find Protobuf (missing: PROTOBUF_LIBRARY PROTOBUF_INCLUDE_DIR)
```

今度はProtobufという何かが欠けている？ように読めます。

## Protobuf
欠けているように表示されたProtobufとは、これまたGoogleが開発したライブラリだそうです。正式名称はProtocol Buffers。
何を目的とするライブラリなのかはよくわかりませんでした。
[Protocol Buffers](https://developers.google.com/protocol-buffers/)

### 下準備
インストール方法は公式リポジトリで紹介されていたので、そちらを参考にします。
[Protocol Buffers - Google's data interchange format](https://github.com/protocolbuffers/protobuf/blob/master/src/README.md)
まずはprotobufをビルドできるようにするために必要な各種ライブラリを揃えます。
Ubuntuならこのコマンドで各種ライブラリをインストールできるよ！ってコマンドが書いてあったので、素直に使わせていただきました。
`$ sudo apt-get install autoconf automake libtool curl make g++ unzip`

### 本体
前出のインストール方法のページの通りですが、protobufの本体は次のページから入手します。
本稿執筆時の最新バージョンは3.9.1でした。
[Protocol Buffers v3.9.1](https://github.com/protocolbuffers/protobuf/releases/tag/v3.9.1)
protobuf-cpp-3.9.1.zipをダウンロードして解凍します。
解凍したフォルダの中でさらにインストール手順に書いてある通りコマンドを実行します。

```
     ./configure
     make
     make check
     sudo make install
     sudo ldconfig # refresh shared library cache.
```

makeコマンドなんかは結構時間がかかったので、余裕のあるときに実行することをお勧めします。
私の環境だと10分？20分？くらいかかりました。make checkのコマンドもそれなりに時間がかかるので注意！

### 再びastrobeeへ
もう一度astrobeeのディレクトリに戻ってきて、cmake .を実行します。
するとまたもやエラー。
今度の表記はこんな感じでした。

```
CMake Error at CMakeLists.txt:181 (find_package):
 By not providing "FindEigen3.cmake" in CMAKE_MODULE_PATH this project has
 asked CMake to find a package configuration file provided by "Eigen3", but
 CMake did not find one.

 Could not find a package configuration file provided by "Eigen3" with any
 of the following names:

  Eigen3Config.cmake
  eigen3-config.cmake

 Add the installation prefix of "Eigen3" to CMAKE_PREFIX_PATH or set
 "Eigen3_DIR" to a directory containing one of the above files. If "Eigen3"
 provides a separate development package or SDK, be sure it has been
 installed.
```

読む限り、Eigen3という名前のパッケージ？か何かが欠けているようですね。こちらもインストールしていきましょう

## Eigen3
eigen自体は行列に対する演算を何かしてくれるモノみたいです（雑な理解）
[Eigen](http://eigen.tuxfamily.org/index.php?title=Main_Page)

記事執筆時の最新バージョンはEigen 3.3.7でした。zipファイルをダウンロードしてきます。
解凍して中身のINSTALLファイルを確認。
Eigenはヘッダーファイルのみで構成されているため、コンパイルするものが無いとのことです。
CMakeを利用しないインストール方法と、CMakeを利用するインストール方法の2つが紹介されていました。
前出のエラーメッセージから察するにCMakeを使った方がよさそう（適当）だと感じたので、後者の方法でインストールしてみます。
具体的なインストール方法は各自でEigenのパッケージに含まれてるINSTALLファイルを確認してください。

さあもう一度astrobeeに対してcmake .を実行します。
今度のエラーはこんな感じ

```
CMake Errir at /usr/share/cmake-3.5/Modules/FindBoost.cmake:1677 (message):
 Unable to find the requested Boost libraries.

 Unable to find the Boost header files.
 Please set BOOST_ROOT to the root directory
 containing Boost or BOOST_INCLUDEDIR to the directory
 containing Boost's headers.
Call Stack (most recent call first):
 CMakeLists.txt:180 (find_package)

-- Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
CMake Error at /usr/share/cmake-3.5/Modules/FindPackageHandleStandardArgs.cmake:148 (message):
 Could NOT find Luajit20 (missing: LUAJIT_LIBRARIES LUAJIT_INCLUDE_DIR)
...
```

次はひとまずBoostというライブラリが欠けているようです。

##Boost
stackoverflowにトピックがあったので参考にしました。
[How to install Boost on Ubuntu](https://stackoverflow.com/questions/12578499/how-to-install-boost-on-ubuntu)

`sudo apt-get install libboost-all-dev`のコマンドひとつでインストールは問題なさげ。
astrobeeに戻ってcmakeをやり直しても、Boostに関連するエラーは出なくなりました。

さらにceres, ZLIB, Luajit20という3つのパッケージも欠けていることが前出のエラーメッセージから分かっているので、続けてインストールしていきます。

##ceres
公式でもインストール方法を解説してくれていますが、下記記事を参考にさせていただきました。
[CeresSolverをUbuntu16.04にインストールする。](http://shibafu3.hatenablog.com/entry/2017/07/12/100807)
本稿執筆時の最新バージョンはceres-solver-1.14.0でした。
ceresのビルド・インストールともに無事にできました。

astrobeeをもう一度cmake .してみるとこんな感じ。

```
-- Found ceres: /usr/local/lib/libceres.a
-- Could NOT find ZLIB(missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
CMake Error at /usr/share/cmake-3.5/Modules/FindPackageHandleStandardArgs.cmake: 148 (message):
  Could NOT find Luajit20 (missing: LUAJIT_LIBRARIES LUAJIT_INCLUDE_DIR)
...
```

##ZLIB
一つずつ入れていきましょう。
ZLIBはファイル圧縮に利用するライブラリとのことです。
https://www.zlib.net/
関係ないですけどいいドメインですね。
しかしこの公式サイトにはUbuntu向けの情報は載っていなかった？ようなので別のページを当たってみます。

下記ページからパッケージをダウンロードしましょう。
[zlib source package in Xenial](https://launchpad.net/ubuntu/xenial/+source/zlib)
本記事執筆時の最新バージョンは1.2.8.dfsg-2ubuntu4でした。
ダウンロードした圧縮ファイルを展開して、インストール用のフォルダを作ってからcmakeを実行してmakefileを作り、make。ceresのときと同じ手順ですね。

しかし、make testも無事に通ったZLIBでしたが、astrobeeに戻ってみても```Could NOT find ZLIB```のエラーが消えていません。おかしいぞ。

下記ページでsudo apt-getコマンドによるzlibのインストール方法を見つけました。
https://www.systutorials.com/topic/how-to-install-the-zlib-library-in-ubuntu/
また、下記ページには開発版をインストールするとよいとの情報も書かれていたので、それに従ってみます。
[gemをインストールしようとしたら、zlibが見つからない、とか言われた](https://qiita.com/aTaroAsari/items/9be9f905772637fecef6)
sudo apt-get install zlob1g-devとコマンドを実行。
そのあとにもう一度astrobeeからcmake .を実行してみました。結果は下記の通り。

```
-- Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found version "1.2.8")
CMake Error at /usr/share/cmake-3.5/Modules/FindPackageHandleStandardArgs.cmake: 148(message):
  Could NOT find Luajit20 (missing: LUAJIT_LIBRARIES LUAJIT_INCLUDE_DIR)
Call Stack (most recent call first):
  /usr/share/cmake-3.5/Modules/FindPackageHandleStandardArgs.cmake:388 (_FPHSA_FAILURE_MESSAGE)
  cmake/FindLuajit20.cmake:71 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  CMakeLists.txt:183 (find_package)
```

無事にインストールできたっぽいですね。ZLIBのパッケージを見つけられたみたいです。
残りのパッケージもインストールしていきましょう。

##Luajit20
Luajitとは、そもそもLuaというプログラミング言語が先にあって、その言語用のコンパイラとして開発されているパッケージのようですね。Wikipedia情報です。
[Lua - Wikipedia](https://ja.wikipedia.org/wiki/Lua)

Luajitのインストール方法としては下記のページを見つけました。
[How to install luajit on Ubuntu 16.04 (Xenial Xerus)](https://www.howtoinstall.co/en/ubuntu/xenial/luajit)
しかし、このページのインストール方法を実行してもastrobeeのcmakeエラーは消えませんでした。astrobeeの方はluajit **20**って書かれてるのが関係しているかも。いないかも。

結局、Luaの公式ページから最新バージョンをダウンロードしてきて、
http://luajit.org/download.html

インストールページの通りに展開してmake→make installコマンドを実行したらいい感じになりました。
http://luajit.org/install.html
インストール完了時には```Successfully installed LuaJIT 2.0.5 to /usr/local```との表示が出ました。

またastrobeeに戻ってcmake .コマンドを実行してみると、次のような結果になりました。

```
-- Found Luajit20: /usr/local/lib/libluajit-5.1.so;/usr/lib/x86_64-linux-gnu/libm.so (found version "2.0.5") 
CMake Error at CMakeLists.txt:186 (find_package):
  By not providing "FindOpenCV.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "OpenCV", but
  CMake did not find one.

  Could not find a package configuration file provided by "OpenCV" (requested
  version 3) with any of the following names:

    OpenCVConfig.cmake
    opencv-config.cmake

  Add the installation prefix of "OpenCV" to CMAKE_PREFIX_PATH or set
  "OpenCV_DIR" to a directory containing one of the above files.  If "OpenCV"
  provides a separate development package or SDK, be sure it has been
  installed.


-- Configuring incomplete, errors occurred!
```

何はともあれ、Luajitのインストールには成功したようです。
次はOpenCV関連のインストール。

##OpenCV
下記ページの内容に沿ってインストールしていくと良さげです。
[How to Install OpenCV in Ubuntu 16.04 LTS for C / C++](http://www.codebind.com/cpp-tutorial/install-opencv-ubuntu-cpp/)

Step2の依存関係のインストールまでは記載のとおりに進めましょう。
しかし、Step3ではひと手間加える必要があります！
記事のとおりにOpenCVのプロジェクトをcloneしてビルドすると、本稿執筆時点で最新版のOpenCV4がインストールされてしまうのです。
astrobeeのシステム要件ではOpenCV3が必要になるため（進めていくと、OpenCV3を入れてね！というエラーが出ます）、clone後にブランチを切り替えてバージョン3にしましょう。

git cloneで生成した`opencv`などのフォルダに入ってから、`git checkout -b 3.4 origin/3.4`（本稿執筆時点）のコマンドでオッケーです。
実際にリモートに存在するブランチ名を確認してから操作するようにしてくださいね。
opencvのプロジェクトと同様にopencv_contribのプロジェクトでも、clone後にブランチの切り替えを行いましょう。

そこだけ工夫をすれば、あとは記事のとおりに進めていくことでopencvのインストールは完了です。

そろそろ起動できるじゃないかと思ってastrobeeでcmake .してみると、結果はこんな感じ。

##突然の死
前節のcmakeの結果を載せようと思ったらMacフリーズからの起動不可能になりました。オイオイオイ 死んだわオレ
###症状
電源を入れると、ハテナマークが中央に点滅したまま変化なし。しばらく経っても変化なし。
###対処
Appleのサポートページにそのものズバリな対処法が載っていました。
https://support.apple.com/ja-jp/HT204323

私の場合は「起動ディスクが表示されない場合」に該当しました。
ですが、ディスクユーティリティに表示されている情報がなにやらオカシイ。
![IMG_20190904_084227-1008x756.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/336249/4f48815c-2b1d-3367-fb80-ef2670fc849f.jpeg)
ディスク名も標準の名前（Macintosh HD）じゃないし、容量が1GB強しかないってそんなことあります？？？

起動時にoptionキーを押し続ける方法でも残念ながら起動ディスクを認識できず。

###再インストールを試みるも
仕方がないので、クリーンインストールから出直すことにします。
ディスクユーティリティからOS Xを再インストールするよう選択……するも、インストール先のディスクが何も表示されません。そもそも起動ディスクを認識できないのだから当然と言えば当然でしょうか。

ならばと、 Ubuntu のブータブル USB メモリーをもう一度作って、 Ubuntu のインストールを一からやり直そうとしてみました。
しかしこの場合でもやはり Ubuntu をインストール先に指定する場面になってインストール先のディスクが何も見つからないという状況になりました……。打つ手なしか！
ここまできたらもうアップルサポートに連絡するしかないかなっていう場面なんですけど、まだ往生際が悪い私は Mac OS Xをインストールする外部メディアを USB メモリーで作って、外部メディアからのインストールを試みてみました。
しかしそれでも結果は同じ。インストール先に指定できるメディアが見つからないことが分かるだけでした。
無念……修理に出すしかないようです。

というわけで不具合を解消したMacbookを使うことにします。

## OpenCV続き
バージョン3.4のインストールが終わった時点でのastrobeeのcmake .はこんな感じになりました。

```
$ cmake .
-- Found OpenCV: /usr/local (found suitable version "3.4.8", minimum required is "3") 
CMake Error at CMakeLists.txt:205 (find_package):
  By not providing "Finddbow2.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "dbow2", but
  CMake did not find one.

  Could not find a package configuration file provided by "dbow2" with any of
  the following names:

    dbow2Config.cmake
    dbow2-config.cmake

  Add the installation prefix of "dbow2" to CMAKE_PREFIX_PATH or set
  "dbow2_DIR" to a directory containing one of the above files.  If "dbow2"
  provides a separate development package or SDK, be sure it has been
  installed.


-- Configuring incomplete, errors occurred!
```

次はdbow2というパッケージをインストールすれば良いみたいですね。

##dbow2
リポジトリはここみたいです
[dorian3d / DBoW2](https://github.com/dorian3d/DBoW2)

インストール方法はこちらの記事を参考にしました。
https://ensekitt.hatenablog.com/entry/visualslam4

しかし、インストールが無事に終わってもastrobeeのcmake .は同じエラーを返すばかり。なんでぇ〜？

念の為にdpkg -lコマンドでインストール済みパッケージの一覧を確認してみました。
案の定dbow2はインストールされていない扱いになっていました。なぜだ……
たぶんわかる人が見れば「そんなのインストールできてないに決まってるじゃん」ってなるのかもしれませんが、私にはまだちょっとよくわかりません。

とりあえず、エラー文で「このファイルが無いんですけど」って言ってるファイルはDBoW2のソース内だとこの辺で言及されてるっぽい↓
https://github.com/dorian3d/DBoW2/blob/master/src/DBoW2.cmake.in
cmakeの仕組みが全然わからんから、ここからastrobeeでのcmakeにどう繋がるのか全然わからん！

この辺が参考になりそう。cmakeそれ自体の仕組みについて書いてくれてる…ありがてぇ…
http://yuki-koyama.hatenablog.com/entry/2018/01/10/123000

この辺も参考になるのかなぁ。読む気力が今日はもうないです
https://github.com/Microsoft/cpprestsdk/issues/763

cmakeのエラー文　add the installation prefix of to cmake_prefix_path　で検索すれば他にも有用な情報が出てくる予感


というわけで、今更ながらcmakeの仕組みをもう少し詳しく勉強しました。
結局のところ、こちらの記事の内容が参考になりました。

エンドユーザ向け、CMakeの使い方
https://qiita.com/gwappa/items/c5614a9e5af406b88322#cmakecachetxt%E3%81%AE%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF

この記事の通りに`CMakeCache.txt`を確認してみましょう。
すると、確かにDBoW2のライブラリの場所を正しく取得できなくなっていることがわかります。
![IMG_20190924_120014-1008x756.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/336249/5085fe1b-2c8e-8908-6284-419ef676809d.jpeg)
dbow2_DIR_NOTFOUNDとなっていますね。

上記記事によると、この部分をライブラリのパスに書き換えてあげれば通るようになるみたいです。早速書き換えちゃいましょう。

ここで一点注意があります。表示されていたエラーメッセージを思い出してみましょう。

```
  Could not find a package configuration file provided by "dbow2" with any of
  the following names:

    dbow2Config.cmake
    dbow2-config.cmake

  Add the installation prefix of "dbow2" to CMAKE_PREFIX_PATH or set
  "dbow2_DIR" to a directory containing one of the above files.
```

この表示の通り、DBoW2のパスを指定する際には`dbow2Config.cmake`もしくは`dbow2-config.cmake`というファイルが含まれていなければなりません。
これにあたるファイルはもちろん存在するのですが、デフォルトではこれと微妙に異なる名前になっています。DBoW2のライブラリ側のファイル名を変更しましょう。
下記の写真のように変更しました（２行２列目のファイル）。

![IMG_20190924_121953-1008x756.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/336249/026d3763-095b-4fff-1b48-d09463e387f2.jpeg)

名前を変更したあとでまたcmake .を実行してみると、表示は次の通り。

```
~/デスクトップ/NASA/astrobee$ cmake .
CMake Error at CMakeLists.txt:206 (find_package):
  By not providing "FindAlvar.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "Alvar", but
  CMake did not find one.

  Could not find a package configuration file provided by "Alvar" with any of
  the following names:

    AlvarConfig.cmake
    alvar-config.cmake

  Add the installation prefix of "Alvar" to CMAKE_PREFIX_PATH or set
  "Alvar_DIR" to a directory containing one of the above files.  If "Alvar"
  provides a separate development package or SDK, be sure it has been
  installed.


-- Configuring incomplete, errors occurred!
```

またエラーが出ていますが、DBoW2についてはエラーを突破できたみたいです。
次のライブラリのインストールに進みましょう。

##Alvar
リポジトリはここみたいです。
https://github.com/KavrakiLab/alvar
このライブラリはREADMEによるとARアプリを作るためのものだそうです。割とアバウト。

インストール方法・・・というかコンパイル方法がGitHubに載っているので、リポジトリをクローンしたらそれを読みながら進めてみましょう。

Linux向けの手順２番でOpenCV2.4.0をインストールする必要が出てきます。
Ver2.4のインストールについては下記の記事の通りに進めることですんなり行きました。

Ubuntu 16.04 LTSにOpenCV2.4.13をインストール
http://shumilinux.blogspot.com/2016/07/ubuntu-1604-lts-opencv.html

手順４番ではGCCのバージョンに対応したシェルスクリプトを実行する必要が出てきます。
`gcc -v`のコマンドによって搭載されているGCCのバージョンを確認することができます。
私の環境ではGCC5.4.0がインストールされていました。
シェルスクリプトは4.3, 4.4, 4.5のいずれかのバージョンしか考慮されていませんでしたが、試しに4.4向けのシェルスクリプトを実行してみたら普通に通りました。

あとはalvarについてcmake .してあげればインストールは完了っぽいです。

```
~/デスクトップ/NASA/alvar/build$ ./generate_gcc44.sh
creating build directory
generating build environment
~/デスクトップ/NASA/alvar/build$ cmake .
-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Warning (dev) in CMakeLists.txt:
  No cmake_minimum_required command is present.  A line of code such as

    cmake_minimum_required(VERSION 3.5)

  should be added at the top of the file.  The version specified may be lower
  if you wish to support older CMake versions for this project.  For more
  information run "cmake --help-policy CMP0000".
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Configuring done
-- Generating done
-- Build files have been written to: /home/
```

cmake .の結果は上記の通り。
なんだかWarningが出ていますが、たぶん上手く行っていると思います。

それではAlvarのエラーが消えているかどうか、astrobeeに戻ってcmake .して確認してみましょう。

```
~/デスクトップ/NASA/astrobee$ cmake .
CMake Error at CMakeLists.txt:186 (find_package):
  Could not find a configuration file for package "OpenCV" that is compatible
  with requested version "3".

  The following configuration files were considered but not accepted:

    /usr/local/share/OpenCV/OpenCVConfig.cmake, version: 2.4.13
    /usr/local/share/OpenCV/OpenCVConfig.cmake, version: 2.4.13
    /usr/share/OpenCV/OpenCVConfig.cmake, version: 2.4.9.1

-- Configuring incomplete, errors occurred!
```

OMG！
先にOpenCV3を入れた後にOpenCV2を入れた関係なのか、astrobeeではOpenCV3が必要なのに見つからなくなってしまっています。
astrobeeがOpenCVを見つけられるように修正してあげましょう。

とは言っても、やることはOpenCV3.4.8のインストール手順をもう一度繰り返すだけです。
2系も3系も共存できるような設定が上手くできればよかったのですが、私の技術力ではその場しのぎっぽいこの方法しかできませんでした。トホホ。

これでastrobeeからOpenCVが見えるようになったはずなので、cmake .して確認してみましょう。
結果は次の通り。

```
~/デスクトップ/NASA/astrobee$ cmake .
CMake Error at CMakeLists.txt:206 (find_package):
  By not providing "FindAlvar.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "Alvar", but
  CMake did not find one.

  Could not find a package configuration file provided by "Alvar" with any of
  the following names:

    AlvarConfig.cmake
    alvar-config.cmake

  Add the installation prefix of "Alvar" to CMAKE_PREFIX_PATH or set
  "Alvar_DIR" to a directory containing one of the above files.  If "Alvar"
  provides a separate development package or SDK, be sure it has been
  installed.


-- Configuring incomplete, errors occurred!
```

なぜかAlvarが見つからなくなっています。
DBoW2のときと同じようにパスを直接書き換えて保存してから再トライしてみましょう。