こんにちは、プペウアです。普段はC言語、C++、データ構造アルゴリズムを中心に更新しています...興味のある方はフォローしてください!がっかりしませんよ。
パラメータサーバー通信とros共通ツールコマンドの紹介
0. パラメータサーバーの概念
以前の通信モデルと比較して、パラメータ サーバーは最も単純です。従来モデルでは、ROSMASTERが両者を繋ぐ橋渡し役を担っていました。
パラメータサーバーでは、ROSMASTERはメッセージを保存するコンテナとなり、ユーザーは追加、削除、確認、変更の操作を自分で完了できます。
単純な非バイナリデータを保存することのみを目的としているため、高パフォーマンスの動作が必要な場合は、他の通信方式を推奨します。
コンテナに格納できるパラメータの種類:
- 32ビット整数
- ブール値
- 文字列
- ダブルス
- ISO8601の日付
- リスト
- Base64でエンコードされたバイナリデータ
- 辞書
1. パラメータ サーバーはパラメータを追加/変更します。
- ノードを初期化する
- set_param関数を使用して追加/変更します
set_param は hash に似ています。パラメータ サーバーにそのような値が存在しない場合は値が増加し、存在する場合は最新の値に変更されます。
import rospy
rospy.init_node("param")
#设置整形
rospy.set_param("p_int",10)
#设置浮点型
rospy.set_param("p_double",3.14)
#设置bool值
rospy.set_param("p_bool",True)
#设置string
rospy.set_param("p_string","hello python")
#设置List
rospy.set_param("p_list",["hello","haha","xixi"])
#设置字典
rospy.set_param("p_dict",{
"name":"hulu","age":8})
2. パラメータサーバーがパラメータを検索します。
一般的に使用されるのは次の関数です。
- get_param(key,value) は、
キーが存在する場合は対応する値を返し、キー
が
存在しない場合はデフォルト値を返します。 システム メモリにおける高速テーブルの役割radius2=rospy.get_param_cached("radius_p",0.5) radius=rospy.get_param("radius_p",0.5)
- get_param_names() は、
現在のパラメータ リスト内のすべてのパラメータ名を取得し、返します。names=rospy.get_param_names() for name in names: print(name)
- has_param(key) は、
パラメータ リストにパラメータがあるかどうかを判断し、
Bool 値を返します。flag1=rospy.has_param("radius_p") if flag1: print("存在") else : print("不存在")
- search_param(key)
このメッセージがあるかどうかを確認し、ない場合は None を返し、ある場合はこのキーを返しますkey=rospy.search_param("radius_p") print(key)
3. パラメータ サーバーはパラメータを削除します。
- delete_param(key)
指定されたキーを削除します
これは比較的単純で、使用法を示しません。また、次のような実践的なプロジェクトが行われます。
4. 共通コマンド
前回の構成で使用したトピック通信とサービス通信が使用されます。
ロボットの実行中にノードとメッセージ キャリア間の関係を動的に表示するには、次のコマンドを使用します。
- rosnode : ノード
- ロストピック: トピック
- rosservice : サービス
- rosmsg : メッセージメッセージ
- rossrv : srv メッセージ
- rosparam : 動作パラメータサーバー
4.1 ロスノード
まず、以前に構成したカスタム msg のサブ ノードとパブ ノードを開始しましょう。具体的な構成については、この記事のトピック通信ケースを参照してください。
rosrun lesson2 demo02_pub.py
rosrun lesson2 demo02_sub.py
rosnodeを直接使用してパラメータリストを表示します
-
rosnode ping はノードへの接続ステータスをテストします
rosnode ping /person_pub
ここで /pub_person はメッセージを送信するノードであり、単なるデモンストレーションです
-
rosnode list はアクティブなノードをリストします。
rosnode list
このコマンドを使用して、現在アクティブなノードを表示します
-
rosnode infoノード情報を出力する
ronode info /person_pub ronode info /person_sub
以下を含む、送信ノードと受信ノードの情報がここに出力されます。
- ノード名
- トピックを使用する
- 受信者/送信者
合理的に使用すると、ノード間の関係を明確にしやすくなります。
- rosnode マシンは、指定されたデバイス上のノードをリストします。
- rosnode kill はノードを強制終了します
サブスクリプション ノードを強制終了しましたrosnode kill /sub_person
- rosnode クリーンアップは、接続できないノードをクリアします
。ctrl+c を押すと、一部のノードが使用できなくなることがありますが、それらはまだリスト内にあります。このとき、このコマンドを使用してノードを更新できます。
4.2 ロストピック
まず、上で使用した 2 つのノードを起動し
、ターミナルに rostopic と直接入力して、利用可能なすべてのコマンドを表示します。
-
rostopic リストには、現在使用されているすべてのトピックが表示されます
rostopic list
たとえば、ここで使用されているトピックは /che です。
-
rostopic echo は受信機として機能し、トピック情報を画面に表示できます。
rostopic echo topic
たとえば、ここでは発行者の情報が正しいかどうかを確認できます
-
rostopic info/typeの 2 つの関数は同じで、トピック通信のメッセージ タイプを表示します。info にはタイプ type が含まれます。
rostopic info topic
たとえば、ここでは Person msg メッセージ タイプが使用されています。
-
rostopic find はメッセージ タイプを使用してトピックを検索します
rostopic find lesson2/Person
たとえば、ここで、lesson2/person のメッセージ タイプを見つけるというトピックは何ですか?
-
rostopic pub がトピックにメッセージを公開します
rostopic pub topic
たとえば、ここでサブスクリプション ノードに情報を公開します。
4.3 ロスメッセージ
rosmsg は、ROS メッセージ タイプに関する情報を表示するために使用されるコマンド ライン ツールです。これ
も上記と同じで、rosmsg を直接入力すると、使用可能なコマンドが表示されます。
-
rosmsg list はすべてのメッセージ タイプをリストします。
-
rosmsg show / info は、現在のメッセージ タイプに含まれる特定のタイプをリストします。
rosmsg show msg
-
rosmsg パッケージは、パッケージ内のすべてのメッセージをリストします。
rosmsg package pack
Turtlesim のすべてのメッセージ タイプをリストする
-
rosmsg パッケージは、メッセージを含むパッケージをリストします。
rosmsg package pack
Turtlesim/Pose メッセージ タイプを含むすべてのパッケージをリストします。
4.4 ロスサービス
関連するサービス情報をクエリするには、
まず、以前に構成したカスタム Srv サーバーとクライアント ノードを起動します。具体的な構成については、この記事を参照してください。
rosrun lesson3_srv demo01_client.py
rosrun lesson3_srv demo01_server.py
ターミナルに「rosservice」と入力してパラメータリストを表示することもできます。
-
rosservice list はパラメータサービスのリストをリストします。
-
rosservice 呼び出しは、ここでサービスを呼び出して
/sum2 タブを呼び出し、完了して 2 つのパラメーターを渡しますrosservice call /sum2
-
rosservice args は、srv メッセージの特定のパラメータを表示します
rosservice args /sum2
残りの使い方は上記と同じです
4.5 ロスアールブイ
rosmsg と同様に、特定のタイプの Srv もチェックします。
4.6 ロスパラム
検証のために最初にタートルを起動しましょう
rosrun turtlesim turtlesim_node
-
rosparam listパラメータリストをリストします。
-
rosparam set は特定のパラメータ値を設定します
rosparam set 参数类型
-
rosparam get特定のパラメータ値を取得します
-
rosparam deleteパラメータの削除
-
rosparamloadはパラメータをディスクにロードします
-
rosparamダンプはディスクからパラメータをロードします