はじめに
本記事は、ROS2アドベントカレンダー10日目の記事です。
ROS2では起動しているノードの確認、サービスの実行などなどのためにCLIツールが用意されています。
ros2 node/topic list
などですね。
それらをPythonからも使うことができるので紹介します。
仕組み
仕組みは単純で、そもそもROS2のCLIのソースコードは以下のGitHubで公開されておりPythonで書かれています。ROS2がインストールされた環境であれば、適切にimportして自分のPythonコードからも呼び出すことができます。
それぞれコマンドごとにディレクトリが分かれていて、その中のapi/__init__.py
に関数が定義されているようです。
例
ROS2のノード一覧を取得
以下の__init__.pyにあるget_node_names()
を使用すればよさそうです。
import rclpy
from ros2node.api import get_node_names
rclpy.init()
node = rclpy.create_node("test_node")
print(get_node_names(node=node))
rclpy.shutdown()
ROS2のトピック一覧を取得
以下のget_topic_names()
を使用すればよさそうです。
import rclpy
from ros2topic.api import get_topic_names
rclpy.init()
node = rclpy.create_node("test_node")
print(get_topic_names(node=node))
rclpy.shutdown()
おわりに
ソースコードが公開されているので使えるものは使っていきたいですね。