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