12.ROS编程学习:ROS常用指令

目录

rosnode

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

rostopic

1.rostopic list——list active topics

2.rostopic echo——print messages to screen

3.rostopic pub——publish data to topic

rosservice

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

rosmsg

1.rosmsg list——List all messages

2.rosmsg info——Alias for rosmsg show

rossrv

 1.rossrv list——List all services

2.rossrv info—— Alias for rossrv show

rosparam

1.rosparam list——list parameter names

2.rosparam set——set parameter

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

列出服务

(1条消息) 8.ROS编程学习:自定义服务数据python调用_机械专业的计算机小白的博客-CSDN博客https://blog.csdn.net/wzfafabga/article/details/127396059打开之前服务端。

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

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ROS(Robot Operating System)是一个用于编程和控制机器人的开源软件框架。它为机器人提供了一种灵活且可扩展的编程方式,使得开发者能够更容易地构建、测试和部署机器人系统。 ROS的中文版编程主要包括以下几个方面: 1. 安装和配置:首先,需要根据自己的操作系统选择合适的ROS版本,并通过官方网站下载安装。安装完成后,还需要进行一些系统配置,如设置ROS环境变量等。 2. 软件包管理:ROS编程是基于软件包的,开发者可以通过安装和管理软件包来实现各种功能。可以使用中文版的ROS包管理工具rospack和rosdep来管理软件包的安装和依赖关系。 3. 创建与编译软件包:开发者可以使用中文版的ROS命令行工具创建自己的软件包,并编写代码实现相应的功能。使用roscd和rosed等命令可以进入和编辑软件包的各个文件。 4. ROS节点与通信:ROS的核心概念是节点(node)和通信(communication)。开发者可以使用中文版的ROS命令行工具roscore来启动ROS主节点,并使用rosnode和rostopic等命令进行节点的管理和通信的调试。 5. ROS消息和服务:在ROS中,节点之间通过消息(message)和服务(service)进行通信。开发者可以使用中文版的ROS消息定义语言(msg)和服务定义语言(srv)来定义和描述消息和服务的数据结构和接口。 6. ROS运行功能包:除了编写单个节点外,开发者还可以创建功能包(package)来组织和管理一组相关的节点和资源。可以使用中文版的ROS命令行工具roslaunch来一次性启动多个节点。 总之,ROS机器人编程的中文版提供了一套完整的工具和框架,使得机器人开发变得更加简单易用。通过使用ROS,开发者可以更高效地编写和调试机器人程序,同时还能够借助ROS强大的社区支持和开源生态系统,共享和获取丰富的资源和经验。 ### 回答2: ROS(机器人操作系统)是一个开源的、灵活的机器人编程框架,可以帮助开发者更方便地构建、部署和管理机器人的软件系统。 ROS提供了一个通用的、模块化的架构,可以支持各种不同类型的机器人平台和硬件设备。它采用了发布-订阅模型,通过节点之间的消息传递实现了模块间的通信。这种分布式的架构使得开发者可以方便地进行功能扩展和模块化开发,提高了代码的复用性。 ROS编程语言主要有C++和Python两种,其中Python在ROS中使用较为广泛。开发者可以使用这些编程语言进行ROS程序的开发,以实现机器人的控制、感知、导航、规划等功能。 在ROS中,开发者可以使用ROS提供的各种工具和库,如rviz可视化工具、roscpp和rospy库等,来加快开发进度。此外,ROS还提供了丰富的软件包和功能模块,如导航和SLAM(同时定位与地图构建)等,可以帮助开发者快速构建复杂的机器人系统。 除了编程接口外,ROS还提供了一系列的命令行工具,例如roslaunch、rosrun等,用于方便地启动和管理ROS节点、运行ROS程序等。 由于ROS是一个开源项目,有着庞大的用户社区和丰富的资源。开发者可以在ROS官方网站上找到ROS的官方文档、教程、示例代码等,也可以参与到ROS社区中,与其他开发者交流经验和解决问题。 总而言之,ROS机器人编程是一种强大而灵活的编程框架,能够帮助开发者更方便地构建、部署和管理机器人的软件系统,推动机器人技术的发展。 ### 回答3: ROS(Robot Operating System)是一个开源的机器人软件平台,它提供了一系列的库和工具,用于编写机器人软件应用程序。ROS旨在帮助机器人开发者共享和重用代码,提高软件开发效率。 ROS编程语言支持很广泛,包括C++、Python、Java等。通过使用ROS提供的软件库和工具,开发者可以实现机器人的感知、控制、导航等功能。 在ROS中,常用编程模式是发布/订阅模式和服务调用模式。发布者(Publisher)将数据发布到特定的主题(Topic),订阅者(Subscriber)则接收并处理这些数据。这种模式可以实现多个节点之间的通信和数据共享。另外,ROS还支持服务调用模式,节点可以通过服务(Service)的方式向其他节点请求数据或执行某些功能。 除了基本的通信功能之外,ROS还提供了许多其他的功能模块,如机器人建模和仿真、机器人运动规划、图像处理等。开发者可以使用这些模块快速构建机器人应用程序。 对于中国的开发者来说,有一些优秀的ROS中文教程和文档可供参考。这些教程从入门到进阶都有涉及,可以帮助开发者快速上手ROS机器人编程。此外,国内也有一些ROS社区和讨论群,开发者可以在这里交流经验、解决问题。 总而言之,ROS机器人编程中文版提供了一个强大而灵活的开发平台,帮助开发者构建各种类型的机器人应用。通过广泛的编程语言支持和丰富的功能模块,ROS为机器人开发者提供了一个全面且易于使用的解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值