ROS基础概念

本文主要内容是ROS基础概念。

ROS基础概念

对ROS支持最好的是Ubuntu版本的Linux系统

Ubuntu安装对比

Ubuntu安装方法对比

1. Linux终端相关命令

查看当前的位置:

pwd

上级目录和下级目录切换:

cd ..    # 切换为上级目录
cd       # 切换为root目录
cd yyy   # 打开yyy文件夹

创建新的文件夹:

mkdir test   # 创建文件夹,文件夹名字为test]]

查看当前文件夹下相关文件:

ls

创建文件:

touch test    # 创建test文件 

将文件剪切到某一个路径下:

mv test /home/yww/000   # 将test文件剪切到000文件夹中

拷贝文件并将其放到另外一个文件夹中:

cp test 111/test2   # 将当前路径下的test文件复制到当前路径下的111文件夹中,并将该test文件重新命名为test2文件

删除文件:

rm test   # 删除文件
rm -r 000/  # 删除000文件夹,-r是递归删除的意思,因为一个文件夹下可能有多个文件

提升当前文件的权限:

sudo apt-get update   # 更新当前系统的软件源列表

帮助文档:

rm --help  # 可以看到rm相关指令的使用方法
sudo --help  # 可以看到sudo相关指令的使用方法
cd --help   # 可以看到cd相关指令的使用方法

2. C++/Python极简编程基础

2.1 ROS编译命令

安装g++编译器:

sudo apt-get install g++

安装Python解释器:

sudo apt-get install python

C++编译相关命令:

g++ c++_for.cpp -o c++_for   # 通过g]]++软件编译c++_for.cpp成文件名为c++_for的可执行文件
./c++_for     # 运行可执行文件  ./ 的作用就是运行某个程序或者脚本

python编译相关命令:

python python_for.py    # 直接通过python解释器对python_for]].py文件进行解释

具体相关的操作如下:

vxTIBNMHKzgaXyd

面向对象的编译:

aBpvfiKV8UjCelT

2.2 ROS小海龟仿真

1、启动ROS Master

roscore

2、启动小海龟仿真器

rosrun turtlesim turtlesim_node

3、启动海龟控制节点

rosrun turtlesim turtle_teleop_key

3. ROS组成部分

3.1 节点与节点管理器

3.1.1 节点(Node)—执行单元
  • 执行具体任务的进程、独立运行的可执行文件;
  • 不同节点可使用不同的编程语言,可分布式运行在不同的主机上;
  • 节点在系统中的名称必须是唯一的。
3.1.2 节点管理器(ROS Master)—控制单元
  • 为节点提供命名和注册服务;
  • 跟踪和记录话题/服务通信,辅助节点相互查找、建立连接;
  • 提供参数服务器,节点使用此服务器存储和检索运行时的参数。

3.2 话题通讯

3.2.1 话题(Topic)—异步通信机制
  • 节点间用来传输数据的重要总线;
  • 使用发布/订阅模型,数据由发布者传输到订阅者,同一个话题的订阅者或发布者可以不唯一。
3.2.2 消息(Message)—话题数据
  • 具有一定的类型和数据结构,包括ROS提供的标准类型和用户自定义类型;
  • 使用编程语言无关的 .msg 文件定义,编译过程中生成对应的代码文件。

如图所示:

image-20220106155710598

3.3 服务通信

3.3.1 服务(Service)—同步通信机制
  • 使用客户端/服务器(C/S)模型,客户端发送请求数据,服务器完成处理后返回应答数据;
  • 使用编程语言无关的.srv文件定义请求和应答数据结构,编译过程中生成对应的代码。
  • 服务一般是请求一次调用一次,后续如果使用可能不会再次调用,和topic的区别在于不会多次请求。

jL2GrOVcY9DFTMW

A49f1qrIRZ7ibJO

3.3.2 话题和服务的对比

H758dzbs4JxnkPl

3.4 参数

3.4.1 参数(Parameter)—全局共享字典
  • 可通过网络访问的共享、多变量字典
  • 节点使用此服务器来存储和检索运行时的参数
  • 适合存储静态、非二进制的配置参数,不适合存储动态配置的数据。

3.5 文件系统

3.5.1 功能包(Package)
  • ROS软件中的基本单元,包含节点源码、配置文件、数据定义等
3.5.2 功能包清单(Package manifest)
  • 记录功能包的基本信息,包含作者信息、许可信息、依赖选项、编译标志等
3.5.3 元功能包(Meta Packages)
  • 组织多个用于同一目的的功能包

image-20220106151521814

image-20220106154422975

4. ROS命令行工具

rosrun turtlesim

turtlesim是一个功能包的名字,通过 tab 键可以将功能包里面所有节点列出,

image-20220105223429728

4.1 rqt_graph

rqt_graph是基于qt的可视化工具,用来显示系统计算图的工具

rqt_graph   # 显示出系统的计算图,可以知道这个系统是干嘛的

image-20220105223849599

4.2 rosnode

rosnode   # 显示系统节点的指令
rosnode list  # 将系统所有的节点全部列出的指令
rosnode info  # 用来查看某一个节点具体信息是什么样的
rosnode info /turtlesim   # 差看turtlesim这个节点是什么样的

如果不知道这个指令的意思,可以直接回车,即可看到该指令相关的含义和使用方法

对于运行小海龟后,通过 rosnode list 可以列出所有的节点为 rosout teleop_turtle turtlesim三个节点,rosout在rqt中没有体现,这个是只要启动roscore就会自动启动的一个节点,用来输出一些日志之类的信息,一般不用考虑。

image-20220105225200652

由图可以看出小海龟发布了哪些话题,订阅了哪些话题,根据订阅的话题对小海龟做一些移动,以及一些服务,通过服务完成 一些配置。

4.3 rostopic

跟话题相关的命令行工具

rostopic list  # 通过rostopic]] list可以打印出当前话题的列表

image-20220105230024752

image-20220105231138306

twist指的是消息,linear指的是线速度,angular指的是角速度,每个速度分为xyz方向上的分量。pub指令只会发布一次,如果希望小海龟一直动,需要一个循环

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

如果想看看Twist消息的结构,可以通过rosmsg来查看

rosmsg show geometry_msgs/Twist

image-20220105232232640

4.4 rosservice

rosservice list    # 通过该指令可以列出有哪些服务

image-20220105233059696

产生一个相同的海龟,可以通过以下指令

rosservice call /spawn "x: 0.0
y: 0.0
theta: 0.0
name: 'turtle2'"

这里的xy为小海龟的位置,theta为角度,name为海龟的名字

image-20220105233631611

4.5 rosbag

记录当前系统所有话题的数据,并进行保存,下次使用时再复现出来。

rosbag record -a -O cmd_record

-a 表示将所有的数据都保存下来,-O 将保存的数据保存为 cmd_record 的压缩包

image-20220105235231189

记录结束之后,按 ctrl + c 数据就被保存下来,保存的数据在当前终端的默认路径下。

启动roscore,再启动仿真器节点

rosrun turtlesim turtlesim_node

通过数据包复现刚才的指令

rosbag play cmd_record.bag

即可复现之前的操作过程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ywwsnowboy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值