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 のインストールが必要かどうか ですね….

Robotino3 – Fawkes Tracには,

# 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

コメントを残す

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

*