ROS2との連携について

お世話になっております。鈴木@JAEAです。

ROS2との連携について、
2024/7/29時点のchoreonoid及びchoreonoid_rosの最新版を使用して
ビルドを試みたところ、エラーが出力されてビルドを完了できませんでした。

choreonoid本体のfmt::formatに関する変更に起因するものかと思います。
つきましては、ご多用のところ恐れ入りますが、
上記について確認・修正いただきたくお願いいたします。

ご報告ありがとうございます。
当方でUbuntu22.04 + ROS 2 Humbleの環境で確認したところ、ビルド・実行ともに正常にできております。

環境の違いや、オプションの違いなどによってエラーになっていることが考えられますので、それらの情報をお知らせいただけますでしょうか?具体的にはUbuntuのバージョンやROS 2のディストリビューション、ビルドオプションなどが分かるとありがたいです。よろしくお願いします。

確認いただきありがとうございました。

環境ですが、こちらもUbuntu 22.04 + ROS 2 Humbleです。
ビルドオプション等は一切指定していません。

エラーメッセージは以下のとおりで、
choreonoid_rosのBodyROS2Item内のテキスト翻訳がエラーになっていました。

Starting >>> choreonoid
[Processing: choreonoid]
[Processing: choreonoid]
[Processing: choreonoid]
[Processing: choreonoid]
[Processing: choreonoid]
[Processing: choreonoid]
[Processing: choreonoid]
[Processing: choreonoid]
[Processing: choreonoid]
[Processing: choreonoid]
[Processing: choreonoid]
— stderr: choreonoid
lto-wrapper: warning: using serial compilation of 2 LTRANS jobs
lto-wrapper: warning: using serial compilation of 8 LTRANS jobs
lto-wrapper: warning: using serial compilation of 17 LTRANS jobs
lto-wrapper: warning: using serial compilation of 23 LTRANS jobs
lto-wrapper: warning: using serial compilation of 13 LTRANS jobs
lto-wrapper: warning: using serial compilation of 17 LTRANS jobs
lto-wrapper: warning: using serial compilation of 2 LTRANS jobs
lto-wrapper: warning: using serial compilation of 2 LTRANS jobs
lto-wrapper: warning: using serial compilation of 9 LTRANS jobs

Finished <<< choreonoid [5min 42s]
Starting >>> choreonoid_ros
— stderr: choreonoid_ros
In file included from /home/k38-suzuki/ros2_ws/install/choreonoid/include/choreonoid-2.2/cnoid/GettextUtil:1,
from /home/k38-suzuki/ros2_ws/src/choreonoid_ros/src/plugin/gettext.h:3,
from /home/k38-suzuki/ros2_ws/src/choreonoid_ros/src/plugin/BodyROS2Item.cpp:15:
/home/k38-suzuki/ros2_ws/src/choreonoid_ros/src/plugin/BodyROS2Item.cpp: In member function ‘virtual bool cnoid::BodyROS2Item::initialize(cnoid::ControllerIO*)’:
/home/k38-suzuki/ros2_ws/src/choreonoid_ros/src/plugin/BodyROS2Item.cpp:139:28: error: call to non-‘constexpr’ function ‘char* dgettext(const char*, const char*)’
139 | ->putln(format(_("BodyROS2Item "{0}" is invalid because it is "
| ^
In file included from /usr/include/x86_64-linux-gnu/c++/11/bits/messages_members.h:36,
from /usr/include/c++/11/bits/locale_facets_nonio.h:2026,
from /usr/include/c++/11/locale:41,
from /usr/include/c++/11/iomanip:43,
from /opt/ros/humble/include/rosidl_runtime_cpp/rosidl_runtime_cpp/traits.hpp:19,
from /opt/ros/humble/include/builtin_interfaces/builtin_interfaces/msg/detail/duration__traits.hpp:15,
from /opt/ros/humble/include/builtin_interfaces/builtin_interfaces/msg/duration.hpp:9,
from /opt/ros/humble/include/rclcpp/rclcpp/duration.hpp:20,
from /opt/ros/humble/include/rclcpp/rclcpp/qos.hpp:20,
from /opt/ros/humble/include/rclcpp/rclcpp/node_interfaces/node_graph_interface.hpp:32,
from /opt/ros/humble/include/rclcpp/rclcpp/client.hpp:42,
from /opt/ros/humble/include/rclcpp/rclcpp/callback_group.hpp:24,
from /opt/ros/humble/include/rclcpp/rclcpp/any_executable.hpp:20,
from /opt/ros/humble/include/rclcpp/rclcpp/memory_strategy.hpp:25,
from /opt/ros/humble/include/rclcpp/rclcpp/memory_strategies.hpp:18,
from /opt/ros/humble/include/rclcpp/rclcpp/executor_options.hpp:20,
from /opt/ros/humble/include/rclcpp/rclcpp/executor.hpp:37,
from /opt/ros/humble/include/rclcpp/rclcpp/executors/multi_threaded_executor.hpp:25,
from /opt/ros/humble/include/rclcpp/rclcpp/executors.hpp:21,
from /opt/ros/humble/include/rclcpp/rclcpp/rclcpp.hpp:155,
from /home/k38-suzuki/ros2_ws/src/choreonoid_ros/src/plugin/BodyROS2Item.h:14,
from /home/k38-suzuki/ros2_ws/src/choreonoid_ros/src/plugin/BodyROS2Item.cpp:1:
/usr/include/libintl.h:44:14: note: ‘char* dgettext(const char*, const char*)’ declared here
44 | extern char *dgettext (const char *__domainname, const char *__msgid)
| ^~~~~~~~
gmake[2]: *** [src/plugin/CMakeFiles/CnoidROSPlugin.dir/build.make:108: src/plugin/CMakeFiles/CnoidROSPlugin.dir/BodyROS2Item.cpp.o] エラー 1
gmake[2]: *** 未完了のジョブを待っています…
gmake[1]: *** [CMakeFiles/Makefile2:211: src/plugin/CMakeFiles/CnoidROSPlugin.dir/all] エラー 2
gmake: *** [Makefile:146: all] エラー 2

Failed <<< choreonoid_ros [21.8s, exited with code 2]

Summary: 1 package finished [6min 4s]
1 package failed: choreonoid_ros
2 packages had stderr output: choreonoid choreonoid_ros

以上、ご参考まで。

ご報告ありがとうございます。
同じ症状をこちらでも再現できました。
確認に不備がありまして大変申し訳ありませんでした。
colconでビルドする際にソース変更後の再コンパイルがされていなかったのかもしれません。
こちらビルドできるように対処します。

ビルドできるようにchoreonoid_rosを修正しました。

ご指摘いただいたとおり、choreonoid本体のfmt::formatに関する変更に起因する問題でした。ご迷惑をおかけしてすみません。また、ご報告ありがとうございました。

ビルドできることを確認しました。
迅速なご対応感謝いたします。