ROS机器人程序设计学习笔记(二)

xiaoxiao2025-10-24  4

ROS系统架构及概念

ROS系统主要的构架:文件系统,计算图集,开源社区。

2.1ROS文件系统级

  综合功能包(含有多个功能包,综合功能包清单),功能包(含有功能包清单(.xml文件),消息类型(msg),服务类型(srv),src(代码))。

2.1.1工作空间

  工作空间:一个包含功能包、可编译源文件或编译包的文件夹。

  工作空间主要包括:源文件空间,编译空间,开发空间。

源文件空间:在src文件夹里,放置了功能包、项目、克隆包等。重要文件夹CMakeList.txt,当你在工作空间中配置功能包时,src文件夹CMakeList.txt调用CMake。这个文件通过命令catkin_init_workspace创建。

编译空间:在build文件夹里,CMake和catkin为功能包和项目保持缓存信息、配置和其他中间文件。

开发空间:devel文件夹用来保存编译后的程序。

在ROS配置的编译空间目录中,可以用以下两个命令来编辑可执行文件:

  1.$ cmake packageToBuild/  $ make   2.$ cd workspace  $ catkin_makso

2.1.2功能包

功能包是一种特定的文件结构和文件组合,结构为:

1.include/package_name/:此目录包含了你需要的库的头文件

2.msg/:非标准信息放置位置。

3.scripts/:包括了Bash、Python或者任何其它脚本文件的可执行文件。

4.src/:储存源文件的地方。

5.srv/:表示服务类型。

6.CMakeList.txt:CMake的生成文件。

7.package.xml:这是功能包清单。

创建、修改或使用功能包的命令:

1.rospack:查找工作空间。2.catkin_create_pkg 创建新的功能包。3.catkin_make 编译工作空间。4.rosdep 安装功能包的依赖项。5.rqt_dep:查看包的依赖关系图。

文件夹和功能包直接移动文件的相关命令:

roscd 更改目录  rosed 编辑文件  roscp  复制文件  rosd 列出功能包的目录  rosls 列出功能包小的文件。

综合功能包:只有一个文件的特定包,它是package.xml。

2.1.3消息

 消息类型描述语言来描述ROS节点发布的数据值。消息类型具备两个主要部分:字段和常量。字段定义了要在消息中传输的数据类型,穿了用于定义字段的名称。 文件的后缀为.msg

msg文件示例:int32 id  ;float32 vel

ROS消息中有一个特殊数据类型是报文头,主要用于添加时间戳、坐标位置等。

ROS处理消息的命令:rosmsg  输出消息定义信息,并可以找到使用该消息类型的源文件。

2.1.4 服务

服务的描述存储在功能包的srv/子目录下.srv文件中。

2.2 理解ROS计算图级

节点:主要的计算执行进程。如果你想要一个可以与其他节点进行交互的进程,那么你需要创建一个节点,并将此节点连接到ROS网络。

消息:节点通过消息完成彼此的沟通。消息包含一个节点发送到其他节点的信息数据。

主题:每个消息都必须有一个名称来被ROS网络路由。每个消息都要发送到相应的主题。当一个节点发送数据时,我们就说该节点向主题发布消息。节点可以通过订阅某个主题,接收来自其他节点的消息。主题的名称必须独一无二。

服务:服务可以允许我们直接与某个节点进行交互。服务的名称唯一。

2.2.1 节点

处理节点的工具:

rosnode info NODE  输出当前节点信息

rosnode kill NODE  结束当前运行节点进程或发送给定信号

rosnode list  列出当前活动节点

rosnode machine hostname  列出某一特定计算机上运行的节点或列出主机的名称。

rosnode ping NODE  测试节点间的连通性。

rosnode cleanup  将无法访问节点的注册信息删除。

改变主题名称:$ rosrun book_tutorials tutorialx topic1:=/levell/topic1   此命令将主题的名称topic1改成了/levell/topic1

更改节点中的参数:$ rosrun book_tutorials tutorialx _param:=9.0  参数设置成了浮点数9.0

2.2.2 主题

  每个主题都是强类型,发布到主题上的消息必须与主题的ROS消息类型相匹配,并且节点只能接收类型匹配的消息。节点要想订阅主题,就必须具有相同的消息类型。

主题操作工具:

rostopic bw/topic  显示主题所使用的带宽。

rostopic echo/topic  将消息输出到屏幕。

rostopic find message_type  按照类型查找主题。

rostopic hz/topic  显示主题的发布频率。

rostopic info/topic  输出活动主题、发布的主题、主题订阅者和服务的信息。

rostopic list  输出活动主题的列表

rostopic pub/topic type args  将数据发布到主题。它允许我们直接从命令行中对任意主题创建和数据发布

2.2.3 服务

当你需要直接与节点通信并获得应答时,将无法通过主题实现,而需要使用服务。服务类型是功能包名称和.srv文件名称的组合。例如chapter2_tutorials/srv/chapter2_srv1.srv文件的服务类型是chapter2_tutorials/chapter2_srv1。

服务的操作工具: rosservice call/service args  根据命令行参数调用服务。

rosservice find msg-type  根据服务类型查询服务。

rosservice info/service 输出服务信息。

rosservice list  输出活动服务清单。

rosservice type/service  输出服务类型。

rosservice uri/service  输出服务的ROSRPC URI

2.2.4 消息

消息的命名方式:功能包名称/.msg文件名称。例如,std_msgs/msg/String.msg的消息类型是std_msgs/String。

消息的操作工具:

rosmsg show 显示一条消息的字段。

rosmsg list 列出所有消息。

rosmsg package 列出功能包的所有消息。

rosmsg packages  列出所有具有该消息的功能包。

rosmsg users  搜索使用该消息类型的代码文件。

rosmsg md5  显示一条消息的MD5求和结果。

2.2.5 消息记录包

消息记录包是由ROS创建的一组文件。它使用.bag格式保存消息、主题、服务、和其他ROS数据信息。

2.2.6 节点管理器(ROS Master)

ROS节点管理器向ROS系统中其他节点提供命名和注册服务。节点管理器的作用是使ROS节点之间能够相互查找。

2.3 系统试用练习

2.3.1 文件系统导览

$ rospack find turtlesim  //获得功能包turtlesim的路径

$ rosstack find ros_comm  //获得综合功能包ros_comm的路径

$ rosls turtlesim  //获得功能包下面的文件列表

2.3.2 创建工作空间

$ echo $ROS_PACKAGE_PATH //查看ROS正在使用的工作空间

创建工作空间:

$ mkdir -p ~/dev/catkin_ws/src //建空文件夹

$ cd ~/dev/catkin_ws/src 

$ catkin_init_workspace //初始化工作空间,创建CMakelist.txt 文件

$ cd ~/dev/catkin_ws

$ catkin_make //编译工作空间

$ source devel/setup.bash  //完成配置,从新加载setup.bash 文件。

2.3.3 创建ROS功能包和综合功能包

使用以下命令在之前建立的工作空间创建新的功能包:

$ cd ~/dev/catkin_ws/src

$ catkin_craete_pkg chapter2_tutorials std_msgs roscpp  //此命令格式包括了功能包的名称和依赖项

对功能包操作的相关命令:

rospack profile  //通知新添加的内容

rospack find chapter2_tutorials //查找路径

rospack depends chapter2_tutorials  //查看依赖关系

2.3.4 编译ROS功能包

$ cd ~/dev/catkin_ws/

$ catkin_make  //必须在工作空间文件夹里运行catkin_make命令

2.3.5 使用ROS节点 2.3.6 主题与节点交互 2.3.7 使用服务 (略)

2.3.8 使用参数服务器

参数服务器用于存储所有节点均可访问的共享数据。

操作命令:

rosparam set parameter value 设置参数值

rosparam get paraeter  获取参数值

rosparam load file  从文件加载参数

rosparam dump file  将参数保存到一个文件

rosparam delete parameter  删除参数

rosparam list  列出所有参数名

 

转载请注明原文地址: https://www.6miu.com/read-5038428.html

最新回复(0)