目录
1.rosnode list——list active nodes
2.rosnode ping——test connectivity to node
3.rosnode info——print information about node
4.rosnode machine——list nodes running on a particular machine or list machines
5.rosnode kill——kill a running node
6.rosnode——cleanup purge registration information of unreachable nodes
1.rostopic list——list active topics
2.rostopic echo——print messages to screen
3.rostopic pub——publish data to topic
1.rosservice list——list active services
2.rosservice call——call the service with the provided args
3.rosservice info——print information about service
4.rosservice type——print service type
1.rosmsg list——List all messages
2.rosmsg info——Alias for rosmsg show
1.rossrv list——List all services
2.rossrv info—— Alias for rossrv show
1.rosparam list——list parameter names
3.rosparam delete——delete parameter
4. rosparam load——load parameters from file、rosparam dump——dump parameters to file
学习参考:赵虚左的课程,其他书上不详细。
有必要学习,作为ROS系统动态的常用指令,同时作为一个工具,常用来测试和改错,让测试和改错有理有据。
rosnode
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——list active nodes
准备工作:
4.ROS编程学习:自定义话题消息与c++调用_机械专业的计算机小白的博客-CSDN博客https://blog.csdn.net/wzfafabga/article/details/127161241启动之前实现的c++调用自定义消息类型的话题通信。
启动ROS Master:
roscore
启动订阅者:
source ./devel/setup.bash
rosrun sub_pub sub_person
启动发布者:
source ./devel/setup.bash
rosrun sub_pub pub_person
rosnode list:
rosnode list
rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosnode list
/ren_pub
/ren_sub
/rosout
其中/ren_pub和/ren_sub节点为发布者和订阅者节点,/rosout是ROS Master的日志输出节点。
2.rosnode ping——test connectivity to node
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——print information about node
打印节点信息,用处大包含信息全面。
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 machine——list nodes running on a particular machine or list machines
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——kill a running node
杀掉一个节点
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——cleanup purge registration information of unreachable nodes
也是常用操作,用来删除僵尸节点!
清除掉通过ctrl+c没有清除掉或者不小心关闭控制台的节点。
rosnode cleanup
首先把发布者和订阅者全启动,同时关闭控制台窗口。
查询:这两个节点还在,但是我们这时已经不想让它存在了
rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosnode list
/ren_pub
/ren_sub
/rosout
此时,rosnode cleanup ,会询问,选择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
rostopic
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 list——list active topics
列出活跃状态的话题
还是像rosnode准备工作一样,开启自定义消息类型的发布者和订阅者。
然后
rostopic list
rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rostopic list
/renxinxi
/rosout
/rosout_agg
/rosout、/rosout_agg与日志输出相关,/renxinxi是准备工作中话题通信的话题,其中发布者和订阅者话题名必须相同,故两个话题通讯节点只看到了一个话题。
2.rostopic echo——print messages to screen
将消息打印在屏幕上。
rostopic echo /话题名
rostopic echo /renxinxi
rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rostopic echo /renxinxi
name: !!python/str "\u5F20\u4E09"
age: 293
height: 1.73000001907
---
有一个必须注意的细节!必须在工作空间下去运行!最好再source一下,我测试时无需source,但是好习惯时每次进入工作空间都要source一下。
3.rostopic pub——publish data to topic
发布信息给话题。
rostopic pub /话题名
开启订阅者,剩下全部Tab补齐!
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
rosservice
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——list active services
列出服务
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为服务的名称,有关于logger的都是有关于日志输出。jiafa_server_p与rosout都是ros节点名。
2.rosservice call——call the service with the provided args
给服务提供参数
rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosservice call /add_ints "num1: 20
num2: 10"
sum: 30
与话题通信的call相同用法。
3.rosservice info——print information about service
打印服务信息
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 type——print service type
打印服务的数据类型
rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosservice type /add_ints
server_client/AddInts
rosmsg
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——List all messages
列出全部的消息。
rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosmsg list | grep -i person
sub_pub/Person
2.rosmsg info——Alias for 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
rossrv
查询自定义的服务类型要进入工作空间再source一下。
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——List all services
rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rossrv list | grep -i AddInts
server_client/AddInts
2.rossrv info—— Alias for rossrv show
rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rossrv info server_client/AddInts
int32 num1
int32 num2
---
int32 sum
rosparam
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——list parameter names
rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosparam list
/rosdistro
/roslaunch/uris/host_rosmelodic_virtual_machine__41207
/rosversion
/run_id
2.rosparam set——set parameter
参数服务器加入参数。
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——delete parameter
参数服务器删除参数。
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. rosparam load——load parameters from file、rosparam dump——dump parameters to file
参数服务器参数以文件形式保存,与读取。
加入参数:
rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosparam set name xiaohuang
参数服务器参数保存成yaml文件
rosmelodic@rosmelodic-virtual-machine:~/catkin_ws$ rosparam dump params.yaml
在当前目录出现params.yaml
关闭roscore前
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