RoboCup Logistics LeagueのためのRobotino3の再構築

JapanOpen2020に向けて,Robotino をもう一度最初からセットアップします.
そのメモです.

まずは,最新イメージをRobotino-wikiからダウンロードします.
2020年2月10日現在,Robotino 3は,robotino3-3.1.7-smartsoft-2.3.5.fsa 2018-08-02 17:34 2.0Gが最新です.
Robotino 4は,robotino4-4.0.8-smartsoft-2.4.7.fsa 2019-10-24 14:03 2.0Gが最新です.
4のイメージを3に使えないかなぁ ということで試してみましたが…,調子悪くなったので諦めます.

Robotino3 imagesもしくは,Robotino 3 (2014-2019) imagesのページから3用の最新版をダウンロードします.
robotino3-3.1.5.fsaにしましょう

Robotino を初期化するのは,Robotino3 の再インストールを参考にして下さい.
初期設定は,Robotino 3の設定を参考に.
ただし,必要なのはネットワークの設定ぐらいです.言語はすでに英語になっている感じです.
エディタもvimはインストール済みなので,切り替えるだけですが,以下のスクリプトにそれは入れておきます.
aptの接続先は,deになっているので,気になる人はjaに変えておきましょう(私はそのままにしてます).

uname -r
4.4.0-34-generic
sudo apt-get update; sudo apt-get -y upgrade; sudo apt-get -y dist-upgrade

再起動後は,

robotino@robotino:~$ uname -r
4.4.0-173-generic
robotino@robotino:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.6 LTS
Release:        16.04
Codename:       xenial

です.

RCLL用にRefBox をセットアップしましょう.
Robotino 3,セットアップメモあたりが作業記録なので,ここを参考に再度やってみました.
計算機の名前は,robotino-base-0にしています.
あと,rcll-refbox/src/libs/core$ vi threading/thread_list.h の129-130行目でerror: ‘>>’ should be ‘> >’ within a nested template argument listのエラーが出ます.
指示に書いてあるとおり,‘>>’を‘> >’に置き換えて下さい(2カ所).
他にも,以下のファイルで同様のエラーが出ます.

  • rcll-refbox/src/libs/core$ vi threading/thread_list.h (129行目,130行目)
  • rcll-refbox/src/libs/config/yaml_node.h (166行目)
  • rcll-refbox/src/libs/core/utils/lock_hashmap.h (41行目,45行目)
  • rcll-refbox/src/libs/core/utils/lock_map.h (34行目)
  • rcll-refbox/src/libs/netcomm/utils/resolver.h (77行目,88行目)
  • rcll-refbox/src/libs/netcomm/dns-sd/avahi_thread.h (195行目)
  • rcll-refbox/src/libs/netcomm/dns-sd/avahi_thread.cpp (523行目)
  • rcll-refbox/src/libs/core/utils/lock_hashset.h (41行目,45行目)
  • rcll-refbox/src/libs/netcomm/utils/resolver_thread.h (101行目)

あと, libmongocxx でエラーが出るので,Ubuntu 16.04へのrefBoxのインストール(libmongocxx編)を参考にmongodb がない時の動作部分を作成して下さい.

# ホスト名をrobotino-base-X に変更(Xの部分は,ロボット番号に変更してください)
for f in /etc/hostname /etc/hosts; do \
  sudo sed -i -e 's/robotino/robotino-base-0/g' $f; \
done
# ↓上の作業から連続して実行するとホスト名が一致していない状態のため「sudo: unable to resolbe host robotino」のエラーが出ますが無視して大丈夫です.
sudo hostname robotino-base-0

# 言語の設定
sudo update-locale LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8

# エディタの設定
# エディタの選択では,vim.basic をお勧めします.
sudo apt-get install -y vim; sudo update-alternatives --config editor

## RefBox のインストール(ubuntu 16.04 on Robotino 3): https://www.kdel.org/wp/?p=1016
# まずはパッケージの追加
sudo add-apt-repository ppa:timn/clips
sudo apt-get update
sudo apt-get -y install libmodbus-dev libclips-dev clips libclipsmm-dev \
                protobuf-compiler libprotobuf-dev libprotoc-dev \
                boost1.58-all-dev libmodbus-dev \
                libglibmm-2.4-dev libgtkmm-3.0-dev \
                libncursesw5-dev libyaml-cpp-dev libavahi-client-dev git \
                libssl-dev
# 14.04 のパッケージリストを参照して,さらに追加
sudo apt-get install -y \
        libmodbus-dev protobuf-compiler libprotobuf-dev libprotoc-dev \
        libboost-all-dev libglibmm-2.4-dev libgtkmm-3.0-dev libncursesw5-dev \
        libyaml-cpp-dev libavahi-client-dev git libxt-dev libxaw7-dev \
        libncurses5-dev autoconf autogen libtool libyaml-dev \
        libcurl4-openssl-dev

# 必要なパッケージのインストール
sudo apt-get install -y libgecode-dev

# まずは,freeopcua のインストール
sudo apt-get install -y libxml2-dev cmake-curses-gui libmbedtls-dev
git clone https://github.com/FreeOpcUa/freeopcua
cd freeopcua
# ↓ 次のccmakeにて「c」「c」「g」の順に選択して下さい.
ccmake .
cmake .
make
sudo make install
# ↑ これだと,refbox の方のmakeでエラーが出るので,その後build.shを使ってみます.
# 上の作業なしでやってみたら,微妙にダメっぽかったです….
# あと,もし,permission のエラーが出たらsudo をつけてmake やmake allを試してみて下さい.
./build.sh
./configure
make
make all
sudo make install
cd ..

# git からrefbox を取ってきます.
# git clone http://git.fawkesrobotics.org/llsf-refbox.git
# ↑ git のアドレスが下に変わりました.
git clone https://github.com/robocup-logistics/rcll-refbox
cd rcll-refbox

# Robotino 3上でRefBox がmake できない: https://www.kdel.org/wp/?p=1655
# message PrepareInstructionDS のreserved をコメントアウトしてください.
vi src/msgs/MachineInstructions.proto
# ここから
message PrepareInstructionDS {
  // reserved "gate";
  // reserved 1;
  required uint32 order_id = 2;
}
# ここまで

# RefBox のインストール(Ubuntu 14.04 – 2019/06/25版): https://www.kdel.org/wp/?p=1682
# mps_comm のMakefile に-std=c++14 を追加.
vi src/libs/mps_comm/Makefile 
# ここから
ifeq ($(HAVE_MPS_COMM),1)
  CFLAGS  += $(CFLAGS_MPS_COMM) -std=c++14
  LDFLAGS += $(LDFLAGS_MPS_COMM)
  LIBS_all = $(LIBDIR)/libmps_comm.so
else
  WARN_TARGETS += warning_libmps_comm
endif
# ここまで

# 以下のファイルの‘>>’を‘> >’に置き換えて下さい.
#   rcll-refbox/src/libs/core/threading/thread_list.h (129行目,130行目)
#   rcll-refbox/src/libs/config/yaml_node.h (166行目)
#   rcll-refbox/src/libs/core/utils/lock_hashmap.h (41行目,45行目)
#   rcll-refbox/src/libs/core/utils/lock_map.h (34行目)
#   rcll-refbox/src/libs/netcomm/utils/resolver.h (77行目,88行目)
#   rcll-refbox/src/libs/netcomm/dns-sd/avahi_thread.h (195行目)
#   rcll-refbox/src/libs/netcomm/dns-sd/avahi_thread.cpp (523行目)
#   rcll-refbox/src/libs/core/utils/lock_hashset.h (41行目,45行目)
#   rcll-refbox/src/libs/netcomm/utils/resolver_thread.h (101行目)
# お疲れ様でした.
#
# rcll-refbox/src/libs/mongodb_log/mongodb.mk と,rcll-refbox/src/refbox/main.cpp を修正して下さい.
# rcll-refbox/src/libs/mongodb_log/mongodb.mk: 20行目にifeq文を追加し,最後にendif文を追加. 
# ifneq ($(PKGCONFIG),)
#   ifeq ($(HAVE_CPP11),1)
#     HAVE_MONGODB = $(if $(shell $(PKGCONFIG) --exists --atleast-version=3 'libmongocxx'; echo $${?/1/}),1,0)
#     ifeq ($(HAVE_MONGODB),1)
#         CFLAGS_MONGODB = $(shell $(PKGCONFIG) --cflags 'libmongocxx') -DHAVE_MONGODB
#         LDFLAGS_MONGODB = $(shell $(PKGCONFIG) --libs 'libmongocxx')
#     endif
#   endif
# endif

# ここまで,
# rcll-refbox/src/refbox/main.cpp: 40行目
# #ifdef HAVE_MONGODB
#   #include <mongocxx/instance.hpp>
# #endif

git pull --ff-only

# ↓ もし,makeの際にopcua関係でエラーが出たら,一度ログアウト/ログインを試してみて下さい.環境変数が反映されていないのかもしれません.
make
cd ..

コメントを残す

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

*