AttributeError: module ‘em’ has no attribute ‘Interpreter’

Ubuntu 24.04にROS2に従って,ROS2をいれて,ros2_ws/src の下にrefbox_peer とrefbox_msgsを配置してcolcon buildしたら,

AttributeError: module 'em' has no attribute 'Interpreter'

のエラーが出ました.
emを入れたらいいのかなと思ったけど,empyのバージョンに依存しているところもあるみたい.

pip3 uninstall em
pip3 install empy==3.3.4

で,colcon build したら,次は,

    from catkin_pkg.package import parse_package_string
ModuleNotFoundError: No module named 'catkin_pkg'

とのこと.

pip3 install pyyaml jinja2 typeguard
pip3 install catkin_pkg

次は,

    from lark import Lark
ModuleNotFoundError: No module named 'lark'

とのこと.

pip3 install lark

次は,

/home/wataru/ros2_ws/src/refbox_peer/src/ros2-rcll_refbox_peer.cpp:25:10: fatal error: protobuf_comm/peer.h: No such file or directory
   25 | #include <protobuf_comm/peer.h>
      |          ^~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

あーー.
protobuf_comm は,refbox の古いバージョンのソースから作っていたような….
ros2-rcll_refbox_peer を作ってみる.を参考に作業しましょう.

sudo apt-get install -y libmodbus-dev \
                     protobuf-compiler libprotobuf-dev libprotoc-dev \
                     libboost-all-dev libmodbus-dev \
                     libglibmm-2.4-dev libgtkmm-3.0-dev \
                     libncursesw5-dev libyaml-cpp-dev libavahi-client-dev \
                     libssl-dev libgecode-dev \
                     libncurses5-dev cmake-curses-gui git \
                     libmbedtls-dev gcc g++
cd ~/Downloads
wget http://ppa.launchpad.net/timn/clips/ubuntu/pool/main/c/clips/clips_6.30-2ppa4~bionic1_amd64.deb
wget http://ppa.launchpad.net/timn/clips/ubuntu/pool/main/c/clips/clips-common_6.30-2ppa4~bionic1_all.deb
wget http://ppa.launchpad.net/timn/clips/ubuntu/pool/main/c/clips/libclips_6.30-2ppa4~bionic1_amd64.deb
wget http://ppa.launchpad.net/timn/clips/ubuntu/pool/main/c/clips/libclips-dev_6.30-2ppa4~bionic1_amd64.deb
wget http://ppa.launchpad.net/timn/clips/ubuntu/pool/main/c/clips/xclips_6.30-2ppa4~bionic1_amd64.deb
wget http://ppa.launchpad.net/timn/clips/ubuntu/pool/main/libc/libclipsmm/libclipsmm-dev_0.3.4-1ppa1~bionic1_amd64.deb
wget http://ppa.launchpad.net/timn/clips/ubuntu/pool/main/libc/libclipsmm/libclipsmm_0.3.4-1ppa1~bionic1_amd64.deb
# sudo apt-get install libtinfo6
wget http://security.ubuntu.com/ubuntu/pool/universe/n/ncurses/libtinfo5_6.3-2ubuntu0.1_amd64.deb
sudo dpkg -i *.deb

あぁ.なんとか入ったかな.

sudo apt-get install -y libxml2-dev dh-autoreconf rapidjson-dev libmicrohttpd-dev

opcua は使わないから無視します.

/export/git/rcll-refbox/src/libs/rest-api/clips-rest-api/clips-rest-api.cpp:179:41: error: ISO C++ forbids converting a string constant to ‘char*’ [-Werror=write-strings]
  179 |                 PrintFact(env_->cobj(), (const char *)"ProcPPForm", (struct fact *)fact->cobj(), FALSE, FALSE);
      |                                         ^~~~~~~~~~~~~~~~~~~~~~~~~~

結局,「-Werror=write-strings」ですね.

# ... ここからですね ...
#
# ↓ 「error: ‘streamed’ is not a member of ‘fmt’」に対しては,606行目をコメントアウトで対処.
#   https://www.kdel.org/wp/?p=3229
vi ~/rcll-refbox/src/libs/mps_comm/opcua/opc_utils.cpp
# ↓ 「error: ISO C++ forbids converting a string constant to ‘char*’ [-Werror=write-strings]」に対しては,
#   etc/buildsys/config.mkの最後の方に以下を加えて対応.
# CLIPS_OLD_63_API = YES
vi ~/git/refbox/etc/buildsys/config.mk
cd ~/git
git clone https://github.com/robocup-logistics/rcll-refbox
cd rcll-refbox
git checkout d0bcd590ab140691645fe8b651a3d00afad39151
make clean all -j4
ln -s ~/git/rcll-refbox/src/msgs ~/git/rcll-refbox/src/llsf_msgs
ln -s ~/git/rcll-refbox/src/llsf_msgs ~/git/rcll-refbox/src/libs/
sudo ldconfig

refbox_peer のCMakeLists.txt はユーザ名ryukoku で決め打ちしています.

CMakeLists.txt:list(APPEND Fawkes_LIBRARIES "/home/ryukoku/git/rcll-refbox/lib/libllsf_protobuf_comm.so")
CMakeLists.txt:list(APPEND Fawkes_LIBRARIES "/home/ryukoku/git/rcll-refbox/lib/protobuf/libllsf_msgs.so")
CMakeLists.txt:list(APPEND Fawkes_LIBRARIES "/home/ryukoku/git/rcll-refbox/lib/protobuf/libllsf_log_msgs.so")

ここを直しても良いのですが,手抜きとしてはシンボリックリンクで逃げる手もあります.

ln -s `cd|pwd` /home/ryukoku

これで,colcon build が通るかなぁ.

cd ~/ros2_ws
colcon build
ros2 run refbox_peer refbox_peer

↑ ネットワークの設定を本当は引数(param)で扱うべきだけど,今,調整不足なのでソースに直に書いています.
とのことですので,ソースを修正して,colcon build しましょう.

コメントを残す

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

*