ROS基础学习

学习环境

操作系统:Ubuntu 18.04
ROS版本:melodic

ROS主要的命令
  • roscore 运行基于ROS系统必需的节点和程序的集合。为了保证节点能够通信,至少要有一个roscore在运行。roscore当前定义为:
    1) master
    2) parameter server
    3) rosout

  • rosnode 可以查看ros节点相关的调试信息

  • rostopic 获取有关ROS信息的主题

  • rosmsg/rossrv 显示消息或者服务的数据结构定义。

  • rosrun 允许用户不必先改变到相应的目录就可以执行在任意一个功能包下的可执行文件。

  • roslaunch 通过SSH和在参数服务器上设置参数来局部和远程启动ROS节点。它通过调用一个或者多个XML配置文件来完成启动过程。在配置文件中会对每一个要启动的节点进行描述。

  • rostopic 一个用于显示ROS主题(包括发布、订阅、发布频率和消息)调试信息的工具。

  • rosservice 一个用于列表和查询ROS服务器的工具。服务是节点之间相互通信的另一种方式,服务允许节点发送请求和接收响应。

  • rosparam 一个获取和设置参数服务器上用YAML编码的文件的工具。

  • rospack 可以获取软件包的有关信息。
    1) 在这个命令中,depends1 是查看一个包的依赖项
    2) depends 是递归查看一个包的所有依赖项

  • roscd 在工作空间中快速切换工作目录

传感器数据记录与可视化工具
  • rosbag 它是一个用于记录和回放ROS主题的工具集合。它的目的是提供高效的执行,避免消息的反序列化和重序列化。
    话题记录:$ rosbag record –a –O cmd-record
    话题复现 $ rosbag play cmd-record.bag
    -a 为保存所有数据,cmd-record为保存的文件名
  • rxbag 是一个记录和管理消息记录包文件的应用工具。rxbag可以通过插件扩展,核心插件包含在visualization 功能包集下的rxbag_plugins功能包中。
    用法:rxbag bag_file.bag
    其主要特点为:
    1) 显示消息记录包消息内容的树状视图;
    2) 显示图像消息;
    3) 画出可配置的消息值时间序列;
    4) 在特定主题上发布/记录消息;
    5) 导出一个时间段内的消息到一个新的消息记录包;
    6) 导出消息内容到以逗号作为分隔符的(CSV)文件。
工作空间
  • 工作空间内容:
    a) src 代码空间 (存放功能包源码)
    b) build 编译空间 (编译过程的一些中间文件)
    c) devel 开发空间 (开发过程中的一些可执行文件和一些库)
    d) install 安装空间 (最终编译生成的可执行文件)
  • 创建工作空间:
    a) 创建一个文件夹ws,作为ROS的工作空间
    b) 在ws里创建一个src文件夹,用于存放功能包和源码
    c) 在src中终端使用命令catkin_init_workspace初始化工作空间
    d) 回到工作空间根目录ws,通过指令catkin_make来编译src里所有功能包的源码
    e) 在ws中用catkin_make_install命令,创建一个install文件夹
在工作空间的src文件夹创建功能包

$ catkin_create_pkg pkg roscpp rospy std_msgs
该命令中,pkg是创建的功能包名称,然后后面是该功能包依赖的功能包。
每个功能包都会有CMakeLists.txt和package.xml这两个文件。
每次创建功能包都要返回到工作空间根目录ws,执行catkin_make命令编译工作空间。

环境变量
  • 设置工作空间的环境变量:
    在工作空间ws中用终端输入命令
    $ source devel/setup.bash
  • 查看环境变量:
    $ echo $ROS_PACKAGE_PATH
实现发布者

① 初始化ROS节点
② 向ROS Master注册节点信息,包括发布的话题名和话题中的消息类型
③ 创建消息数据
④ 按照一定的频率循环发布消息

实现订阅者

① 初始化ROS节点
② 订阅需要的话题名
③ 循环等待话题消息,接收到消息后进入回调函数
④ 在回调函数中完成对接收到的消息的处理

实现客户端

① 初始化ROS节点
② 创建一个Client实例
③ 发布服务请求数据
④ 等待Server处理之后的应答结果

实现服务端

① 初始化ROS节点
② 创建Server实例
③ 循环等待服务请求,进入回调函数
④ 在回调函数中完成服务功能的处理,并反馈应答数据

参数模型

① ROS Master有个全局字典 Parameter Server,用来保存各个节点配置的参数
② 主要的命令:rosparam
③ 参数比较多的话会有一个YAML的参数文件来存储参数

TF功能包

① 在启动TF后,就会在后台维护一个叫“TF树”的树形结构,所有坐标系都是保存在TF树中
② TF树默认会记住10秒内所有坐标系的位置关系
③ $ rosrun tf view_frames 可视化查看整个系统中全部tf 之间的关系
④ tf_echo 工具的功能是查看指定参考系之间的变换关系

可视化工具

$ rqt调出ROS里rqt工具的集合
$ rqt_console 用来查看日志信息
$ rqt_plot 用来绘制数据曲线
$ rqt_image_view显示图像
② rxgraph 是以图形形式显示当前正在运行的节点和主题的工具。
③ rxconsole 是rxtools包中一个消息查看工具。显示消息被发布到rosout,rxcondole根据时间记录所发布的消息,并提供按照重要性和文本索引两种方法进行消息搜索。注意:C++和python中将消息发布到rxconsole方法是完全不同的。
④ RViz 数据显示平台,本身不具备模拟功能,需要安装模拟器
⑤ Gazebo 每次开启都要在线加载许多资源,比较卡

发布了8 篇原创文章 · 获赞 0 · 访问量 137

猜你喜欢

转载自blog.csdn.net/Kingknot/article/details/104268139