Mac OS XでRobocup SSL開発環境を整える

投稿者: | 2019年6月22日

Robocup SSLの開発環境をROS2へ移行する際に備え、SSL Referee Box ssl-game-controllerとgrSimをMacで動かす。

SSL Referee Box

2019年以降はSSL Referee Boxではなく、代わりにssl-game-controllerをにインストールしてください

Ubuntuならaptで依存ライブラリをインストールして、cmake→makeするだけ。
しかし、OS Xではmakeするとglibmm関連のインクルードファイルが見つからないとエラーを吐かれてしまった。

調べたところ、Homebrewでインストールしたlibffiとglibmmが、cmakeのfind packageでうまく見つかっていないよう。

以下のようにPKG_CONFIG_PATHに該当パスを追加してビルドすればビルドに成功する。

brew install cmake glibmm gtkmm protobuf pkg-config
git clone https://github.com/RoboCup-SSL/ssl-refbox.git
cd ssl-refbox/
mkdir build
cd build
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opt/libffi/lib/pkgconfig
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opt/glibmm/lib/pkgconfig
cmake ..
make
cd ..
./sslrefbox

ssl-game-controller

RoboCup 2019からはSSL Referee Boxの代わりにssl-game-controllerが使用されます。
Goで動くrefereeアプリと、node.jsで作成された操作用クライアントがセットになっています。

GitHubのReleaseページでバイナリパッケージが提供されています。

動作させるにはGoとnvmをインストールする必要があります。
下記サンプルではGoのバージョン管理システムgvmを経由してGoをインストールします。(Homebrewでも問題ないとは思いますが)

bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
gvm listall
gvm install go1.12.9 -B
gvm use go1.12.9 --default
go version

brew npm

go get -u github.com/RoboCup-SSL/ssl-game-controller/...
cd $GOPATH/src/github.com/RoboCup-SSL/ssl-game-controller/
npm install

grSim

grSimはINSTALL.mdにMac版のインストール方法が記載されているので特に困ることはない。
(…と思っていた)

注意書きに書いてある、「公式のVarTypesがOS X非対応だからforkされたnon-officialなブランチを使え」、という内容は、以下のようにコマンドを実行すればよい。

cd /tmp
git clone https://github.com/lordhippo/vartypes
cd vartypes
git checkout -b osx-fix origin/osx-fix
mkdir build
cd build
cmake ..
make
sudo make install

その他諸々のコマンドを動かし、実行ファイル生成まではうまくいく。

しかし実行してみると、qt4のライブラリが二重にロードされているとのエラーが吐かれる…
おそらくHomebrewのPATHで通っているライブラリと、grSim.app内にコピーされたライブラリが二重にロードされている。

個人的にqt4をHomebrewのパッケージで残しておくのが嫌なので、下記コマンドでqt4をアンインストールすることで解決した。
(qt5が出ているのにわざわざqt4を残したくないなぁと)

brew uninstall qt@4 
brew tap-unpin cartr/qt4
brew untap cartr/qt4

ということで、Mac OS X上でSSLの開発環境が整いましたとさ。
めでたしめでたし。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です