このエラー対応は、恐らく近い将来本体にマージされます。
実際のところ
ROS2 humble用のプロジェクトでもROSBOARDを使ってみようとしたところ、以下のようなエラーが。
[INFO] [XXX.YYY] [rosboard_node]: Subscribing to /camera/camera/color/camera_info
>>> [rcutils|error_handling.c:108] rcutils_set_error_state()
This error state is being overwritten:'Unknown QoS history policy, at ./src/qos.cpp:61'
with this new error message:
'create_publisher() failed setting topic QoS, at ./src/subscription.cpp:221'
rcutils_reset_error() should be called after error handling to avoid this.<<<
エラー形式からしてQoSの問題のようです。
自前のスクリプトなら兎も角、Realsenseのような複雑なモンのコードなど書き換えるのは無謀です。
というわけで、rosboard本体の方で対応することに。
#... elif os.environ.get("ROS_VERSION") == "2": import rosboard.rospy2 as rospy # ROS2 # 15行目 # from rclpy.qos import QoSProfile, QoSReliabilityPolicy, QoSDurabilityPolicy # 以下の様にする from rclpy.qos import HistoryPolicy, QoSProfile, QoSReliabilityPolicy, QoSDurabilityPolicy
134行目あたり
#... if rospy.__name__ == "rospy2": topic_info = rospy._node.get_publishers_info_by_topic(topic_name=topic_name) if len(topic_info): ## 以下の二行を追加 if topic_info[0].qos_profile.history == HistoryPolicy.UNKNOWN: topic_info[0].qos_profile.history = HistoryPolicy.KEEP_LAST return topic_info[0].qos_profile
以上の状態で
$ cd ~/ $ colcon build --packages-select rosboard
参考もと
I added the following in `rosboard/rosboard.py` after line 135 and it works. · Issue #119 · dheera/rosboard · GitHub
Ensure compatible QoS in ros2 subscriptions by pepisg · Pull Request #104 · dheera/rosboard · GitHub
Fix rosboard for unknown qos. by brendandburns · Pull Request #121 · dheera/rosboard · GitHub