12. ROSプログラミング学習:ROS共通命令

目次

ロスノード

1.rosnode list - アクティブなノードをリストします。

2.rosnode ping—ノードへの接続をテストします

3.rosnode info—ノードに関する情報を出力します。

4.rosnode マシン - 特定のマシン上で実行されているノードをリストする、またはマシンをリストする

5.rosnode kill - 実行中のノードを強制終了します。

6.rosnode—到達不能なノードのパージ登録情報をクリーンアップする

バラ色の

1.rostopic リスト - アクティブなトピックをリストします。

2.rostopic echo—メッセージを画面に出力します

3.rostopic pub—トピックにデータを公開する

ロスサービス

1.rosservice list—アクティブなサービスをリストします。

2.rosservice call—提供された引数を使用してサービスを呼び出します

3.rosservice info—サービスに関する情報を印刷します。

4.rosservice タイプ—印刷サービス タイプ

ロスメッセージ

1.rosmsg list—すべてのメッセージをリストします。

2.rosmsg info——rosmsg showのエイリアス

ロスルブ

 1.rossrv list—すべてのサービスをリストします。

2.rossrv info—— rossrv showのエイリアス

ロスパラム

1.rosparam list—パラメータ名のリスト

2.rosparam set—パラメータを設定します

3.rosparam delete—パラメータの削除

4. rosparamload——パラメータをファイルからロード、rosparamdump——パラメータをファイルにダンプ

学習参考書:他の本では詳しく書かれていない趙雪作の講座。

ROS システムダイナミクスの共通コマンドとして学習する必要があり、ツールとしてテストやエラー修正によく使用されるため、テストやエラー修正が正当化されます。

ロスノード

rosnode は 6 つの命令を提供します

rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosnode 
cleanup  info     kill     list     machine  ping     

 ヘルプのために -h を追加します。

rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosnode -h
rosnode is a command-line tool for printing information about ROS Nodes.

Commands:
        rosnode ping    test connectivity to node
        rosnode list    list active nodes
        rosnode info    print information about node
        rosnode machine list nodes running on a particular machine or list machines
        rosnode kill    kill a running node
        rosnode cleanup purge registration information of unreachable nodes

Type rosnode <command> -h for more detailed usage, e.g. 'rosnode ping -h'
rosnode ping    测试到节点的连接状态
rosnode list    列出活动节点
rosnode info    打印节点信息
rosnode machine    列出指定设备上节点
rosnode kill    杀死某个节点
rosnode cleanup    清除不可连接的节点

1.rosnode list - アクティブなノードをリストします。

準備:

4. ROS プログラミング学習: カスタム トピック メッセージと C ++呼び出し

ROS マスターを開始します。

roscore

サブスクライバを開始します。

source ./devel/setup.bash 
rosrun sub_pub sub_person

パブリッシャーを開始します。

source ./devel/setup.bash 
rosrun sub_pub pub_person

 ロスノードリスト:

rosnode list
rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosnode list
/ren_pub
/ren_sub
/rosout

このうち、/ren_pub ノードと /ren_sub ノードはパブリッシャー ノードとサブスクライバー ノードであり、/rosout は ROS マスターのログ出力ノードです。

2.rosnode ping—ノードへの接続をテストします

rosnode ping /节点名

ノードの接続性を確認します。

rosnode ping /ren_pub

 接続に成功し、接続遅延が表示されます。

rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosnode ping /ren_pub
rosnode: node is [/ren_pub]
pinging /ren_pub with a timeout of 3.0s
xmlrpc reply from http://rosmelodic-virtual-machine:40397/      time=14.780998ms
xmlrpc reply from http://rosmelodic-virtual-machine:40397/      time=0.508070ms
xmlrpc reply from http://rosmelodic-virtual-machine:40397/      time=0.519991ms

存在しないノードのクエリ: クエリは失敗しました。

rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosnode ping /ren_pu
rosnode: node is [/ren_pu]
cannot ping [/ren_pu]: unknown node

3.rosnode info—ノードに関する情報を出力します。

ノード情報を出力します。これは非常に便利で、包括的な情報が含まれています。

rosnode info /节点名
rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosnode info /ren_pub
--------------------------------------------------------------------------------
Node [/ren_pub]
Publications: 
 * /renxinxi [sub_pub/Person]
 * /rosout [rosgraph_msgs/Log]

Subscriptions: None

Services: 
 * /ren_pub/get_loggers
 * /ren_pub/set_logger_level


contacting node http://rosmelodic-virtual-machine:40397/ ...
Pid: 50789
Connections:
 * topic: /rosout
    * to: /rosout
    * direction: outbound (34961 - 127.0.0.1:37480) [11]
    * transport: TCPROS
 * topic: /renxinxi
    * to: /ren_sub
    * direction: outbound (34961 - 127.0.0.1:37490) [12]
    * transport: TCPROS

4.rosnode マシン - 特定のマシン上で実行されているノードをリストする、またはマシンをリストする

ROS 分散通信では複数のデバイスが存在する場合があるため、この方法で特定のマシン内のどのマシンとノードを問い合わせる必要があります。

rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosnode machine 
rosmelodic-virtual-machine
rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosnode machine rosmelodic-virtual-machine
/ren_pub
/ren_sub
/rosout

5.rosnode kill - 実行中のノードを強制終了します。

ノードを強制終了する

rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosnode kill
1. /ren_pub
2. /ren_sub
3. /rosout

Please enter the number of the node you wish to kill.
> 1  
killing /ren_pub
killed

強制終了されたノードのコンソールでは、次の警告が表示されます。

[ WARN] [1666318180.274086439]: Shutdown request received.
[ WARN] [1666318180.274148151]: Reason given for shutdown: [user request]

6.rosnode—到達不能なノードのパージ登録情報をクリーンアップする

ゾンビノードを削除することも一般的な操作です。

Ctrl+C でクリアされないノードをクリアするか、誤ってコンソールを閉じてください。

rosnode cleanup

まず、すべてのパブリッシャーとサブスクライバーを起動し、同時にコンソール ウィンドウを閉じます。

クエリ: これら 2 つのノードはまだ存在しますが、もう存在させたくありません。

rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosnode list
/ren_pub
/ren_sub
/rosout

この時点で、rosnode クリーンアップによって尋ねられるので、y を選択します

rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosnode cleanup 
ERROR: connection refused to [http://rosmelodic-virtual-machine:33389/]
ERROR: connection refused to [http://rosmelodic-virtual-machine:33313/]
Unable to contact the following nodes:
 * /ren_sub
 * /ren_pub
Warning: these might include alive and functioning nodes, e.g. in unstable networks.
Cleanup will purge all information about these nodes from the master.
Please type y or n to continue:
y
Unregistering /ren_sub
Unregistering /ren_pub
done

再度確認すると消えていました。

rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosnode list
/rosout

バラ色の

rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rostopic 
bw    echo  find  hz    info  list  pub   type 
rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rostopic -h
rostopic is a command-line tool for printing information about ROS Topics.

Commands:
        rostopic bw     display bandwidth used by topic
        rostopic delay  display delay of topic from timestamp in header
        rostopic echo   print messages to screen
        rostopic find   find topics by type
        rostopic hz     display publishing rate of topic    
        rostopic info   print information about active topic
        rostopic list   list active topics
        rostopic pub    publish data to topic
        rostopic type   print topic or field type

Type rostopic <command> -h for more detailed usage, e.g. 'rostopic echo -h'
rostopic bw     显示主题使用的带宽
rostopic delay  显示带有 header 的主题延迟
rostopic echo   打印消息到屏幕
rostopic find   根据类型查找主题
rostopic hz     显示主题的发布频率
rostopic info   显示主题相关信息
rostopic list   显示所有活动状态下的主题
rostopic pub    将数据发布到主题
rostopic type   打印主题类型

1.rostopic リスト - アクティブなトピックをリストします。

アクティブなトピックをリストする

rosnode の準備と同様に、カスタム メッセージ タイプのパブリッシャーとサブスクライバーを有効にします。

それから

rostopic list 
rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rostopic list 
/renxinxi
/rosout
/rosout_agg

/rosout と /rosout_agg はログ出力に関連し、/renxinxi は準備作業のトピック通信のトピックです。パブリッシャーとサブスクライバーのトピック名は同じである必要があるため、2 つのトピック通信ノードは 1 つのトピックのみを参照します。

2.rostopic echo—メッセージを画面に出力します

メッセージを画面に出力します。

rostopic echo /话题名
rostopic echo /renxinxi
rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rostopic echo /renxinxi
name: !!python/str "\u5F20\u4E09"
age: 293
height: 1.73000001907
---

注意しなければならない詳細が 1 つあります。ワークスペースで実行する必要があります。テスト時にソースする必要はありませんが、ワークスペースに入るたびにソースするのは良い習慣です。

3.rostopic pub—トピックにデータを公開する

トピックにメッセージを投稿します。

rostopic pub /话题名

サブスクライバーをオンにして、残りのタブをすべて完了してください。

rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rostopic pub /renxinxi sub_pub/Person "name: ''
age: 0
height: 0.0" 

 デフォルトのパラメータを変更します。これらのパラメーターは、以前に作成されたカスタム メッセージ タイプです。

rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rostopic pub /renxinxi sub_pub/Person "name: '测试'
age: 100
height: 100.0" 
publishing and latching message. Press ctrl-C to terminate

購読者がメッセージを受信する

[ INFO] [1666320824.118656090]: 订阅人信息:测试, 100,100.00

詳しい操作を知りたい+-h

rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rostopic pub -h
Usage: rostopic pub /topic type [args...]

Options:
  -h, --help            show this help message and exit
  -v                    print verbose output
  -r RATE, --rate=RATE  publishing rate (hz).  For -f and stdin input, this
                        defaults to 10.  Otherwise it is not set.
  -1, --once            publish one message and exit
  -f FILE, --file=FILE  read args from YAML file (Bagy)
  -l, --latch           enable latching for -f, -r and piped input.  This
                        latches the first message.
  -s, --substitute-keywords
                        When publishing with a rate, performs keyword ('now'
                        or 'auto') substitution for each message
  --use-rostime         use rostime for time stamps, else walltime is used
rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rostopic pub -r 10 /renxinxi sub_pub/Person "name: '测试'
age: 100
height: 100.0" 

プラス10HZサイクル

[ INFO] [1666321347.407684082]: 订阅人信息:测试, 100,100.00
[ INFO] [1666321347.506901662]: 订阅人信息:测试, 100,100.00
[ INFO] [1666321347.607206839]: 订阅人信息:测试, 100,100.00
[ INFO] [1666321347.707196168]: 订阅人信息:测试, 100,100.00
[ INFO] [1666321347.806850353]: 订阅人信息:测试, 100,100.00

ロスサービス

rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosservice 
args  call  find  info  list  type  uri  
rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosservice -h
Commands:
        rosservice args print service arguments
        rosservice call call the service with the provided args
        rosservice find find services by service type
        rosservice info print information about service
        rosservice list list active services
        rosservice type print service type
        rosservice uri  print service ROSRPC uri

Type rosservice <command> -h for more detailed usage, e.g. 'rosservice call -h'
rosservice args 打印服务参数
rosservice call    使用提供的参数调用服务
rosservice find    按照服务类型查找服务
rosservice info    打印有关服务的信息
rosservice list    列出所有活动的服务
rosservice type    打印服务类型
rosservice uri    打印服务的 ROSRPC uri

1.rosservice list—アクティブなサービスをリストします。

リストサービス

(1 メッセージ) 8. ROS プログラミングの学習: カスタム サービス データの Python呼び出し。

rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosservice list
/add_ints
/jiafa_server_p/get_loggers
/jiafa_server_p/set_logger_level
/rosout/get_loggers
/rosout/set_logger_level

このうち、/add_ints はサービスの名前であり、ロガーに関するものはすべてログ出力に関するものです。jiafa_server_p と rosout は両方とも ros ノード名です。

2.rosservice call—提供された引数を使用してサービスを呼び出します

サービスにパラメータを提供する

rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosservice call /add_ints "num1: 20 
num2: 10" 
sum: 30

トピックコミュニケーションの呼び出しと同じように使用されます。

3.rosservice info—サービスに関する情報を印刷します。

サービス情報を印刷する

rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosservice info /add_ints 
Node: /jiafa_server_p
URI: rosrpc://rosmelodic-virtual-machine:42357
Type: server_client/AddInts
Args: num1 num2

4.rosservice タイプ—印刷サービス タイプ

印刷サービスのデータ型

rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosservice type /add_ints 
server_client/AddInts

ロスメッセージ

rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosmsg
rosmsg is a command-line tool for displaying information about ROS Message types.

Commands:
        rosmsg show     Show message description
        rosmsg info     Alias for rosmsg show
        rosmsg list     List all messages
        rosmsg md5      Display message md5sum
        rosmsg package  List messages in a package
        rosmsg packages List packages that contain messages

Type rosmsg <command> -h for more detailed usage
rosmsg show    显示消息描述
rosmsg info    显示消息信息
rosmsg list    列出所有消息
rosmsg md5    显示 md5 加密后的消息
rosmsg package    显示某个功能包下的所有消息
rosmsg packages    列出包含消息的功能包

1.rosmsg list—すべてのメッセージをリストします。

すべてのメッセージをリストします。

rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosmsg list | grep -i person
sub_pub/Person

2.rosmsg info——rosmsg showのエイリアス

以前にカスタマイズしたメッセージ タイプをクエリするために使用されます。

rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosmsg info 
actionlib/                geometry_msgs/            rosgraph_msgs/            tf2_msgs/
actionlib_msgs/           graph_msgs/               rospy_tutorials/          theora_image_transport/
actionlib_tutorials/      map_msgs/                 sensor_msgs/              trajectory_msgs/
bond/                     moveit_msgs/              shape_msgs/               turtle_actionlib/
controller_manager_msgs/  nav_msgs/                 smach_msgs/               turtlesim/
control_msgs/             object_recognition_msgs/  std_msgs/                 visualization_msgs/
diagnostic_msgs/          octomap_msgs/             stereo_msgs/              
dynamic_reconfigure/      pcl_msgs/                 sub_pub/                  
gazebo_msgs/              roscpp/                   tf/     

 カスタム メッセージ タイプのコンテンツをクエリするために使用されます。

rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosmsg info sub_pub/Person 
string name
int32 age
float32 height

ロスルブ

カスタム サービス タイプをクエリするには、ワークスペースに入り、それをソースする必要があります。

rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rossrv 
list      md5       package   packages  show  
rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rossrv -h
rossrv is a command-line tool for displaying information about ROS Service types.

Commands:
        rossrv show     Show service description
        rossrv info     Alias for rossrv show
        rossrv list     List all services
        rossrv md5      Display service md5sum
        rossrv package  List services in a package
        rossrv packages List packages that contain services

Type rossrv <command> -h for more detailed usage
rossrv show    显示服务消息详情
rossrv info    显示服务消息相关信息
rossrv list    列出所有服务信息
rossrv md5    显示 md5 加密后的服务消息
rossrv package    显示某个包下所有服务消息
rossrv packages    显示包含服务消息的所有包

 1.rossrv list—すべてのサービスをリストします。

rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rossrv list | grep -i AddInts
server_client/AddInts

2.rossrv info—— rossrv showのエイリアス

rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rossrv info server_client/AddInts
int32 num1
int32 num2
---
int32 sum

ロスパラム

rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosparam
rosparam is a command-line tool for getting, setting, and deleting parameters from the ROS Parameter Server.

Commands:
        rosparam set    set parameter
        rosparam get    get parameter
        rosparam load   load parameters from file
        rosparam dump   dump parameters to file
        rosparam delete delete parameter
        rosparam list   list parameter names

1.rosparam list—パラメータ名のリスト

rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosparam list
/rosdistro
/roslaunch/uris/host_rosmelodic_virtual_machine__41207
/rosversion
/run_id

2.rosparam set—パラメータを設定します

パラメータサーバーはパラメータを追加します。

rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosparam set name xiaohuang
rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosparam list
/name
/rosdistro
/roslaunch/uris/host_rosmelodic_virtual_machine__41207
/rosversion
/run_id

3.rosparam delete—パラメータの削除

パラメータサーバーはパラメータを削除します。

rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosparam delete name
rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosparam list
/rosdistro
/roslaunch/uris/host_rosmelodic_virtual_machine__41207
/rosversion
/run_id

4. rosparamload——パラメータをファイルからロード、rosparamdump——パラメータをファイルにダンプ

パラメータサーバーのパラメータは、ファイル形式で保存および読み取りされます。

パラメータを追加します。

rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosparam set name xiaohuang

パラメータサーバーのパラメータは yaml ファイルとして保存されます

rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosparam dump params.yaml

 Params.yaml が現在のディレクトリに表示されます

 

ロススコアを閉じる前に

rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosparam list
/name
/rosdistro
/roslaunch/uris/host_rosmelodic_virtual_machine__41207
/rosversion
/run_id

 roscoreを終了してroscoreを再起動する場合

rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosparam list
/rosdistro
/roslaunch/uris/host_rosmelodic_virtual_machine__38179
/rosversion
/run_id

作成したばかりのパラメータサーバーパラメータが消えています。

パラメータサーバーパラメータをファイルから読み取ります。

rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosparam load params.yaml 

次に、以下を列挙します。

rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosparam list
/name
/rosdistro
/roslaunch/uris/host_rosmelodic_virtual_machine__38179
/roslaunch/uris/host_rosmelodic_virtual_machine__41207
/rosversion
/run_id

おすすめ

転載: blog.csdn.net/wzfafabga/article/details/127439536