Ubuntu 18.04へのfawkes-robotino のインストール(試行錯誤版)
諸事情により,Ubuntu 18.04 でfawkes-robotino を動かせないか挑戦.
こちらに試行錯誤の部分を略したまとめ版を用意しました.
まずは,RefBox のインストール(2019/03/11版)にて,最低限の開発環境を整えます.
次に,Fawkes on Ubuntuを参考に,パッケージを入れてみます.
openvas の部分は不要そうなので,コメントアウトしています.
# Add ROS package repository, required e.g. for bullet sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' wget http://packages.ros.org/ros.key -O - | sudo apt-key add - sudo apt-get update # Repository which has a new version of libmicrohttpd, do not do this on Ubuntu Quantal or newer # sudo add-apt-repository -y ppa:openvas/stable # Recent CLIPS/clipsmm versions sudo -E add-apt-repository -y ppa:timn/clips sudo apt-get update
パッケージの追加.すでにRefBox のコンパイル時にいくつか入っているので,差分のみ以下に列挙します.
# On Ubuntu 18.04 sudo apt-get install asciidoc doxygen \ libmagic-dev libssl-dev libavahi-client-dev libsqlite3-dev libxml++2.6-2v5 libxml++2.6-dev \ libdaemon-dev liblua5.1-0-dev libtolua++5.1-dev \ libdc1394-22-dev libbluetooth-dev libbullet-dev libelf-dev \ libjpeg-dev libtiff5-dev libjpeg8-dev libjpeg-turbo8-dev libpng-dev libpcl-dev \ libopencv-dev libopencv-objdetect-dev libopencv-highgui-dev libopencv-calib3d-dev \ libopencv-apps-dev \ librrd-dev graphviz libgraphviz-dev flite1-dev libasound2-dev \ libcgal-dev \ libgl1-mesa-dev freeglut3-dev libsdl1.2-dev\ ibgconfmm-2.6-dev \ mongodb-dev mongodb-server libncurses5-dev # liburg0-dev sudo apt-get install libmicrohttpd-dev libxmlrpc-c++8-dev \ emacs25 # gazebo9 gazebo9-plugin-base libgazebo9-dev ## install the package for robot-player-dev libplayerc3.0-dev # wget http://mirrors.kernel.org/ubuntu/pool/universe/p/player/robot-player_3.0.2+dfsg-4.1ubuntu3_amd64.deb # sudo dpkg -i robot-player_3.0.2+dfsg-4.1ubuntu3_amd64.deb
gazebo 関係はgazebo5からgazebo9まで上がっていて,gazebo::physics:World のGetName などなどがなくなっているため,対応が面倒なのでいったんインストールリストから削除しました.
fawkes-robotino をmake してみたところ,「ちょっと古いプロダクトの Warning エラー無視」的な感じでエラーが出て止まります.
- fawkes-robotino/fawkes/src/libs/utils/ipc/shm.cpp にて,-Werror=nonnull
- fawkes-robotino/fawkes/src/libs/interface/interface.cpp にて,-Werror=format-truncation
- fawkes-robotino/fawkes/src/plugins/colli/drive_modes/escape_drive_mode.cpp にて,-Werror=deprecated
- fawkes-robotino/fawkes/src/tools/vision/fuse_viewer/fuse_viewer_gui.cpp にて,-Werror=int-in-bool-context
のエラーが出る模様
fawkes-robotino 全体に対するコンパイルオプションは,fawkes-robotino/etc/buildsys/config.mk に書いていますので,
# Globally enable optimization for the Robotino platform CFLAGS_EXTRA += -g -Wall -Werror -O3 CFLAGS_EXTRA += -Wno-nonnull -Wno-format-truncation -Wno-deprecated -Wno-int-in-bool-context
という感じで,Wnoオプションを追加.
できれば,ifeq ($(shell hostname),robotino-base) みたいな感じで,ubuntu 18.04の時(もしくは,gccのバージョンがある値以上の時)に追加する書き方の方が望ましいですが,今回は省略.
navgraph 等で HUGE が定義されていないエラーが生じた場合は,HUGE_VAL | Programming Place Plus C言語編 標準ライブラリのリファレンスより,math.h の HUGE_VALを流用したら,通りました.
ちなみに,本家のCarologistics の方でも,[Fawkes Trac] [Failed Build] Fawkes Trac [a1c72fe14bd88f12fecff9b24130f22329effac8] fawkes-master として生じていたみたいです.
エラーが出たcppファイルのヘッダファイル(.h)に対して,#define HUGE HUGE_VAL を追加して下さい.具体的には,次のファイルです
- fawkes-robotino/fawkes/src/libs/navgraph/navgraph.h
- fawkes-robotino/fawkes/src/libs/fvmodels/velocity/relvelo.h
- fawkes-robotino/fawkes/src/plugins/amcl/amcl_thread.h
<-- Leaving src/plugins/machine-signal/interfaces [C++] src/plugins/machine-signal/pipeline_thread.cpp /home/wataru/lab/btr2019/tk-fawkes/fawkes-robotino/src/plugins/machine-signal/pipeline_thread.cpp: In member function ‘float MachineSignalPipelineThread::compactness(const SignalState::signal_rois_t_&, const firevision::ROI&)’: /home/wataru/lab/btr2019/tk-fawkes/fawkes-robotino/src/plugins/machine-signal/pipeline_thread.cpp:736:87: error: call of overloaded ‘abs(unsigned int)’ is ambiguous
MachineSignal は今は使っていないので,ここのエラーは,解決するよりも無視した方が早いです.fawkes-robotino/src/plugins/Makefile のSUBDIRS から machine-signal を削除しましょう.
/home/wataru/lab/btr2019/tk-fawkes/fawkes-robotino/src/plugins/arduino/com_thread.cpp:37:10: fatal error: libudev.h: No such file or directory #include <libudev.h>
パッケージが足りていませんね.追加します.
sudo apt-get install libudev-dev
とりあえず,make は通りました.
あとは,ROS のインストールが必要かどうか ですね….
# Install ROS stuff sudo apt-get install ros-fuerte-actionlib ros-fuerte-pcl ros-fuerte-geometry \ ros-fuerte-image-common ros-fuerte-image-transport-plugins \ ros-fuerte-navigation echo "source /opt/ros/fuerte/setup.bash" >> ~/.bashrc source /opt/ros/fuerte/setup.bash
とありますので,これに対応するmelodic のパッケージをインストールしてみましょう.
sudo apt-get install ros-melodic-actionlib ros-melodic-pcl-ros ros-melodic-geometry ros-melodic-image-common ros-melodic-image-transport-plugins ros-melodic-navigation sudo apt-get install libpcl-conversions-dev libtf-conversions-dev libvisualization-msgs-dev
こんな感じで,いけるのかなぁ.
--> Entering sub-directory fawkes/src/plugins/navgraph-generator /home/wataru/lab/btr2019/tk-fawkes/fawkes-robotino/fawkes/src/plugins/clips-ros/clips_ros_thread.cpp:29:10: fatal error: XmlRpc.h: No such file or directory
懐かしのエラー.Docker for ICAPSで出会っています.
sudo ln -s /usr/include/xmlrpc.h /usr/include/XmlRpc.h
コメントを残す