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>(*in, PointCloudNonDeleter());もshared_ptrがboostのメンバーでないと怒られます.

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 で立ち上げてみます.

コメントを残す

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

*