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")

さて,ここからようやく本体に手を出せそうですが,別のエントリーにします.

コメントを残す

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

*