ros2-rcll_refbox_peer を作ってみる.
protobuf_commが必要なので,過去のRefBoxのインストールを参考に必要なパッケージを入れてみます.
### RefBox のインストール ### まずは,必要なパッケージのインストール # sudo add-apt-repository ppa:timn/clips # ← focal のReleaseファイルが見つからないって怒られる….まぁ,そりゃそうだよね. # sudo apt-get update 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 \ lib64ncurses5-dev cmake-curses-gui git \ libmbedtls-dev gcc g++ # ↑ libclips-dev clips libclipsmm-dev を取り除いてみました. # それらはbionic 版を強引に入れてみます. 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 -y libtinfo5 sudo dpkg -i *.deb # 何とか入ったっぽい. # OPC-UA のインストール cd ~/git git clone https://github.com/FreeOpcUa/freeopcua cd freeopcua ### ↓ 選択肢は「c」→「e」→「c」→「e」→「g」 ccmake . cmake . make -j4 sudo make install sudo apt-get install -y libxml2-dev dh-autoreconf sudo ldconfig cd ..
sudo apt-get install -y libmicrohttpd-dev rapidjson-dev libaprutil1-dev libwebsocketpp-dev
cd ~/git git clone https://github.com/robocup-logistics/rcll-refbox cd rcll-refbox git checkout d0bcd590ab140691645fe8b651a3d00afad39151 make clean all -j4 sudo ldconfig
opc_utils.cppのエラーはRefBoxのインストール(Ubuntu: 2024/02/07版)を参考に.
## cd ## git clone https://github.com/robocup-logistics/rcll-refbox ## git checkout d0bcd590ab140691645fe8b651a3d00afad39151 ## cd rcll-refbox # # ... ここからですね ... # # ↓ 「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 ~/etc/buildsys/config.mk
あとは,llsf_msgsの作成ですね.
RefBoxのROS対応です.
ln -s ~/rcll-refbox/src/msgs ~/rcll-refbox/src/libs/llsf_msgs
次は,ソースコードのROS2化.
ros::param::get は,rclcpp::param::get へ置換 ← あっているかどうか知らない….
他も同様に,ros::Timeなどはrclcpp::Timeへと置換.
ROS_INFOとかROS_WARNとかは,RCLCPP_INFO,RCLCPP_WARNへと置換.
rcll_ros_msgs は,refbox_msgs へ置換.
from /home/ryukoku/ros2_ws/src/ros2-rcll_refbox_peer/refbox_peer/src/ros2-rcll_refbox_peer.cpp:23: /opt/ros/humble/include/rosidl_runtime_cpp/rosidl_runtime_cpp/bounded_vector.hpp:477:3: error: ‘emplace_back’ function uses ‘auto’ type specifier without trailing return type 477 | auto | ^~~~ /opt/ros/humble/include/rosidl_runtime_cpp/rosidl_runtime_cpp/bounded_vector.hpp:477:3: note: deduced return type only available with ‘-std=c++14’ or ‘-std=gnu++14’
んとー.c++14にしてみましょうか.c++14でもいくつかエラーが出ました.c++17だと行けそうな感じ.
以下は,元々-std=c++11と,COMPILER_SUPPORTS_CXX11 になっていたところです.11を17に置換.
CHECK_CXX_COMPILER_FLAG("-std=c++17" COMPILER_SUPPORTS_CXX17) CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X) if(COMPILER_SUPPORTS_CXX17) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17") message("-std=c++17")
さて,ここからようやく本体に手を出せそうですが,別のエントリーにします.
コメントを残す