01 ROS基本概念及命令

本文涉及的产品
资源编排,不限时长
简介: 这篇文章介绍了ROS(机器人操作系统)的基本概念,如节点、ROS Master、参数、通信机制(话题和消息、服务)、功能包、命名空间和命名重映射,以及一些基本的ROS命令行工具的使用,例如rosnode、rostopic、rossrv、rosservice、rosparam和roslaunch。

基本概念

1.节点Node

执行具体任务的独立文件
不同节点可以使用不同的编程语言
节点在系统中的名称唯一

2.节点管理器 ROS Master

完成节点的命名、注册
辅助节点之间的查找、连接、通信
储存参数,供节点调用

3.参数 Parameter

节点可通过网络访问Master的参数服务器
适合存储静态、配置类的参数

4.通信

类型① 话题 Topic

异步通信机制,单向传输
由发布者Publisher发布给订阅者Subscriber
同一话题的发布者与订阅者不唯一

消息 Message

话题所传输的数据
具有类型和数据结构
由无关编程语言的.msg文件定义

类型② 服务 Service

同步通信机制,双向传输
客户端/服务器模型 请求与应答 request&response
由无关编程语言的.srv文件定义请求与应答的数据结构

5.功能包 Package

ROS中的基本单元 包含源码、配置文件、数据定义等
功能包清单Package Manifest 包含功能包的相关信息,包括对其他功能包的依赖信息等
元功能包 Meta Packages

6.命名空间

整不明白 详见ROS机器人开发实践P52

7.命名重映射

整不明白 详见ROS机器人开发实践P54

基本命令

1.rosnode

rosnode is a command-line tool for printing information about ROS Nodes.

rosnode

可获取有关rosnode的相关指令
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

例子1:获取节点相关信息
rosnode info /turtlesim

2.rostopic

rostopic is a command-line tool for printing information about ROS Topics.

rostopic

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

例子1:发布话题数据

rostopic pub -r 频率 话题名 话题数据类型 具体数据

rostopic pub -r 10 /turtle1/cmd_vel geometry_msgs/Twist "linear:
  x: 0.0
  y: 1.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 0.0"

rosmsg

rosservice

工具 rqt_graph
工具rosbag

例子2:记录所有发布的数据
rosbag record -a -O rosbag_rocrd_test
例子3:分类查看所有话题

-v可以分为被pub和被sub查看所有的Topic

rostopic list -v

3.rossrv

rossrv

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

例子1:查看数据类型定义

以srv中的std_srvs/Trigger类型为例

rossrv show std_srvs/Trigger

结果:

---
bool success
string message

—之上的为request要求的格式
下面的为feedback要求的格式

4.rosservice

rosservice

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

例子1:请求服务

将海龟背景色的GREEN值修改为144
并请求服务,重新加载背景图

rosparam set /turtlesim/background_g 144
rosservice call /clear "{}"

5.rosparam

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:修改参数

将海龟背景色的GREEN值修改为144
并重新加载背景图

rosparam set /turtlesim/background_g 144
rosservice call /clear "{}"
例子2:访问参数

访问ROS的当前版本类型参数

rosparam  get /rosdistro
rosparam get /rosversion

结果:

'noetic ’
'1.15.14 ’

例子3:保存参数到文件

以yaml格式(一种参数保存格式)保存参数
保存位置为当前终端窗口运行的位置

rosparam dump param_test.yaml
例子4:加载参数文件

从当前终端运行位置的目录下调用参数文件

rosparam load param_test.yaml
例子5:删除参数
rosparam delete /turtlesim/background_g

6.roslaunch

roslaunch packageName launchFileName

启动launch文件

相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
目录
相关文章
|
3月前
|
Ubuntu Shell C++
在Ubuntu18.04上安装ros2的环境,ros2的常用命令:播放包、录制包等
在Ubuntu18.04上安装ros2的环境,ros2的常用命令:播放包、录制包等
123 1
|
6月前
|
机器人 Unix C++
ROS机器人编程技术架构命令应用
ROS机器人编程技术架构命令应用
82 1
|
机器学习/深度学习 数据可视化 网络协议
ubuntu16.04下ROS操作系统学习笔记(二)命令工具了解和仿真小海龟
ubuntu16.04下ROS操作系统学习笔记(二)命令工具了解和仿真小海龟
267 0
|
存储
【古月21讲】ROS入门系列(1)——ROS命令工具的使用及创建工作空间和功能包
【古月21讲】ROS入门系列(1)——ROS命令工具的使用及创建工作空间和功能包
328 0
【古月21讲】ROS入门系列(1)——ROS命令工具的使用及创建工作空间和功能包
|
18天前
|
Ubuntu 机器人 Linux
|
6月前
|
传感器 人工智能 算法
ROS机器人操作系统
ROS机器人操作系统
166 1
|
18天前
|
传感器 数据可视化 机器人
【ROS速成】半小时入门机器人ROS系统简明教程之可视化系统(三)
半小时入门机器人ROS系统简明教程之可视化系统
|
18天前
|
机器人
【ROS速成】半小时入门机器人ROS系统简明教程之安装测速(二)
半小时入门机器人ROS系统简明教程之安装测速
|
5月前
|
机器学习/深度学习 传感器 算法
强化学习(RL)在机器人领域的应用,尤其是结合ROS(Robot Operating System)和Gazebo(机器人仿真环境)
强化学习(RL)在机器人领域的应用,尤其是结合ROS(Robot Operating System)和Gazebo(机器人仿真环境)
199 2

推荐镜像

更多