FawkesOnComputer(Fedora33)の下準備-その2
Dockerの情報を見つけたので,そちらを参考にもう一度作業してみます.
cd /etc/yum.repos.d sudo wget https://raw.githubusercontent.com/fawkesrobotics/docker-robotics/master/fedora-robotics/mongodb.repo sudo dnf install dnf-plugin-ovl vim sudo bash -c "echo \"deltarpm=0\" >> /etc/dnf/dnf.conf" sudo dnf update sudo dnf -y copr enable thofmann/eclipse-clp-6 sudo dnf -y copr enable thofmann/gologpp sudo dnf -y copr enable thofmann/planner sudo dnf install --excludepkg fedora-release @buildsys-build @development-tools \ catch-devel clingo-devel ctemplate-devel eclipse-clp-devel fast-forward \ gologpp-devel mongodb-org-server npm opencv-devel orocos-bfl-devel \ player-devel python3-rosinstall python3-rosinstall_generator \ tinyxml2-devel websocketpp-devel avahi-compat-libdns_sd breezy \ clingo cln cln-devel compat-guile18 compat-openssl10 ctemplate \ eclipse-clp gearbox geos-devel ginac ginac-devel gologpp libart_lgpl \ libfreenect libgnomecanvas libphidget libtirpc-devel libunicap lua-clingo \ mercurial-lang mercurial-py2 nodejs nodejs-libs nodejs-packaging \ openssl orocos-bfl player python3-certifi python3-clingo python3-configobj \ python3-dulwich python3-fastimport python3-httplib2 python3-jeepney \ python3-jwt python3-keyring python3-lazr-restfulclient python3-lazr-uri \ python3-oauthlib python3-secretstorage python3-testresources python3-vcstools \ python3-wadllib nodejs-docs nodejs-full-i18n python3-jwt+crypto \ python3-oauthlib+signedtoken wget https://files.fawkesrobotics.org/releases/fawkes-robotino-2019.tar.gz tar xvf fawkes-robotino-2019.tar.gz cd fawkes-robotino-2019 make
やっぱり,LUA関係の部分で固まりますね.
結局,「というわけで,Ubuntu 18.04で作成された $(patsubst %.cpp,%.pkg,$@)ファイルをFedoraのマシンにコピーしちゃいます(こんな解決方法でええんかなぁ.)」としてみます.
ryukoku@ryukoku-HiGame:~/fawkes-robotino-2019$ find|grep fawkes|grep tolua|grep pkg|grep -v \\.objs ./fawkes/src/libs/logging/fawkeslogging_tolua.pkg ./fawkes/src/libs/utils/fawkesutils_tolua.pkg ./fawkes/src/libs/navgraph/fawkesnavgraph_tolua.pkg ./fawkes/src/libs/config/fawkesconfig_tolua.pkg ./fawkes/src/libs/tf/fawkestf_tolua.pkg ./fawkes/src/libs/blackboard/fawkesblackboard_tolua.pkg ./fawkes/src/libs/interface/fawkesinterface_tolua.pkg
多分,関連するファイルは上記7つっぽいです.
というわけで上記を基にスクリプトを作成.
※make cleanしたら消えるので,要注意.
for FILE in ./fawkes/src/libs/logging/fawkeslogging_tolua \ ./fawkes/src/libs/utils/fawkesutils_tolua \ ./fawkes/src/libs/navgraph/fawkesnavgraph_tolua \ ./fawkes/src/libs/config/fawkesconfig_tolua \ ./fawkes/src/libs/tf/fawkestf_tolua \ ./fawkes/src/libs/blackboard/fawkesblackboard_tolua \ ./fawkes/src/libs/interface/fawkesinterface_tolua; do scp 192.168.4.112:/home/ryukoku/fawkes-robotino-2019/$FILE.pkg $FILE.pkg; scp 192.168.4.112:/home/ryukoku/fawkes-robotino-2019/$FILE.cpp $FILE.cpp; done
あとは,-fpermissiveの解決方法と同じ作業が必要です.
fawkes-robotino-2019/etc/buildsys/config.mk に以下を追加.
# added by Wataru CFLAGS_EXTRA += -Wno-stringop-truncation -Wno-vla
fawkes-robotino-2019/fawkes/src/libs/webview のrequest.cpp,request_dispatcher.cpp,server.cpp の修正.
- request.cpp(123-125行目)
MHD_get_connection_values(connection, MHD_HEADER_KIND, (MHD_KeyValueIterator)&header_iterator, this); MHD_get_connection_values(connection, MHD_COOKIE_KIND, (MHD_KeyValueIterator)&cookie_iterator, this); MHD_get_connection_values(connection, MHD_GET_ARGUMENT_KIND, (MHD_KeyValueIterator)&get_argument_iterator, this);
- request_dispatcher.cpp(422行目)
if (0 == strcmp(method, MHD_HTTP_METHOD_POST)) { request->pp_ = MHD_create_post_processor(connection, 1024, (MHD_PostDataIterator)&post_iterator, request); }
- server.cpp(194行目)
daemon_ = MHD_start_daemon(flags, port_, NULL, NULL, (MHD_AccessHandlerCallback)WebRequestDispatcher::process_request_cb, (void *)dispatcher_, MHD_OPTION_ARRAY, ops, MHD_OPTION_END);
次は,fawkes/src/libs/pcl_utils/pcl_adapter.cpp にて,エラー….
/home/ryukoku/fawkes-robotino-2019/fawkes/src/libs/pcl_utils/utils.h:117:1: error: variable or field ‘set_time’ declared void
fawkesrobotics/fawkes/blob/master/src/libs/pcl_utils/utils.hの最新版を見てみると,削除されている模様.
あと,PointT がCloudPointTに変わっている感じですが,今,そこを追いかけるのは難しいので,今後の課題にします.
あと,200行目付近のget_timeと227行目付近のget_time,そして260行目付近のcopy_timeも同様に削除(コメントアウト)します.
template <typename PointT> inline void get_time(const boost::shared_ptr<pcl::PointCloud<PointT>> &cloud, fawkes::Time &time)
300行目付近と316行目付近の return boost::shared_ptr
template <typename PointT> typename pcl::PointCloud<PointT>::Ptr cloudptr_from_refptr(const fawkes::RefPtr<pcl::PointCloud<PointT>> &in) { // return boost::shared_ptr<pcl::PointCloud<PointT>>(*in, PointCloudNonDeleter()); return typename pcl::PointCloud<PointT>::Ptr(*in, PointCloudNonDeleter()); } template <typename PointT> typename pcl::PointCloud<PointT>::ConstPtr cloudptr_from_refptr(const fawkes::RefPtr<const pcl::PointCloud<PointT>> &in) { // return boost::shared_ptr<const pcl::PointCloud<PointT>>(*in, PointCloudNonDeleter()); return typename pcl::PointCloud<PointT>::ConstPtr(*in, PointCloudNonDeleter()); }
これで,pcl_utilsのmakeが通ります.
次は,fawkes/src/libs/aspect/blocked_timing.cpp の143行目でエラー.
/home/ryukoku/fawkes-robotino-2019/fawkes/src/libs/aspect/blocked_timing.cpp:143:35: error: expected unqualified-id before ‘&’ token
過去に見たことがあるような….Fawkes-robotino2019の確認にありますね.
「とりあえず,std::exception に修正して回避.」とのことです.
次は,
/home/ryukoku/fawkes-robotino-2019/fawkes/src/libs/protobuf_comm/peer.cpp:416:92: error: ‘_1’ was not declared in this scope
のエラー.昨日みたような….
とりあえず,削除で回避.
} else { sig_send_error_("Resolving endpoint failed, retrying"); // resolve_retry_timer_.expires_from_now(boost::posix_time::seconds(2)); // resolve_retry_timer_.async_wait(boost::bind(&ProtobufBroadcastPeer::retry_resolve, this, _1)); }
まだまだboost 関係でエラーが出ます…._2とか_3でですね.
これら,消したらまずそうなので,お手上げ状態です.とほほ.
最後の手段.禁断のアップデートをしました.
fawkes-robotino/fawkes を,最新版に置き換えました.
git clone https://github.com/fawkesrobotics/fawkes
で取ってきて,置き換えたら,makeが通った模様.
※せめて,更新履歴を追いかけて,何をどうしたら改善するかを明確にしておきたいところ.
/home/ryukoku/fawkes-robotino-2019/src/plugins/navgraph_broker/navgraph_broker_thread.cpp:135:62: error: ‘_1’ was not declared in this scope 135 | boost::bind(&NavgraphBrokerThread::handle_peer_msg, this, _1, _2, _3, _4));
またまた_1関係のエラーですね….
さっきのprotobuf_comm/peer.cpp とかをどのように回避しているのかを調べる必要がありそう.
diff fawkesにて見つけました.
diff -r fawkes-robotino-2019/fawkes/src/libs/protobuf_comm/peer.cpp fawkes/src/libs/protobuf_comm/peer.cpp 43a44 > using namespace boost::placeholders;
boost::placeholders が抜けていたんですね….
(システム(Ubuntu 18.04)によっては,これなしで通るってことですよねぇ….)
追加したら,makeが通りました.
あとは,sudo dnf install ros-desktop-devel を忘れていたのでやっておきます.
move_baseに従って,
sudo dnf copr enable nlimpert/libg2o sudo dnf install suitesparse-devel orocos-bfl-devel g2o
Do you really want to enable copr.fedorainfracloud.org/nlimpert/libg2o? [y/N]: y Error: This repository does not have any builds yet so you cannot enable it now.
ありゃりゃ….
仕方が無いので,sudo dnf install ros-libg2o-devel で代用.
gazsim-start.bash のmove_base のところがうまく動かないので,2016の書き方に戻してみます.
# roslaunch $@ --wait robotino_move_base robotino_move_base_simu.launch roslaunch $FAWKES_DIR/cfg/move_base_robotino/launch/move_base.launch
あと,gazebo の起動もうまくいかないので,gazebo $GAZEBO_WORLD_PATH で立ち上げてみます.
コメントを残す