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 ..
コメントを残す