学习ROS需要配置一系列的应用环境
Ubuntu里面终端的快捷键
vscode
{ // 有关 tasks.json 格式的文档,请参见 // https://go.microsoft.com/fwlink/?LinkId=733558 "version": "2.0.0", "tasks": [ { "label": "catkin_make:debug", "type": "shell", "command": "catkin_make", "args": [], "group": {"kind":"build","isDefault":true}, "presentation": { "reveal": "always" }, "problemMatcher": "$msCompile" } ] }src文件夹下
launch文件
当一个程序需要启动多个节点可以使用launch文件
ROS架构
ROS文件系统
ROS文件系统指的是在硬盘上肉松源代码的组织形式
catkin:相当于工作的总目录
src:源码,目录下可有多个功能包
devel:开发空间
build:编译空间
ROS文件系统的相关命令
1.增
catkin_create_pkg 自定义包名 依赖包===创建新的ros功能包
sudo apt install xxx===安装ros功能包
2.删
sudo apt purge xxx===删除某个功能包
3.查
rospack list === 列出所有功能包
rospack find 包名 === 查找某个功能包是否存在,如果存在返回安装路径
roscd 包名 === 进入某个功能包
rosls 包名 === 列出某个包下的文件
apt search xxx === 搜索某个功能包
4.改
rosed 包名 文件名===修改功能包文件
需要安装vimr
5.执行
roscore是ROS系统先决条件节点和程序集合,必须运行roscore才能使ROS节点进行通信
roscore将启动:ros master ros参数服务器 rosout日志节点
rosrun
rosrun 包名 可执行文件名===运行指定的ros节点
roslunch
roslunch 包名 launch文件名===执行某个包下的launch文件
ROS计算图
不同节点之间的关系可以用rqt_graph来查看,此实用工具可以创建一个显示当前系统运行情况的动态图形
使用ros内置的小乌龟案例来演示计算图
先打开小乌龟
再开一个终端输入
ROS通信机制
ros中的基本通信机制只要有如下三种实现策略:
话题通信(发布订阅模式)
服务通信(client—》server——》response)
参数服务器(参数共享模式)
话题通信
话题通信是基于发布订阅模式的,即一个节点发布消息,另一个节点订阅该消息
用于不断更新的,少逻辑处理的数据传输场景
ROS Master:管理者,可以根据话题建立订阅者和发布者之间的连接
Talker:发布者
Listener:订阅者
使用RPC,TCP协议,步骤0和1没有顺序关系,talker和listener可以有多个,talker和listener建立联系后,master就可以关闭了
上述实现流程已经封装了,以后直接调用即可
话题通信基本操作
需求1:编写发布订阅实现,要求发布方以10HZ的频率发布文本消息,订阅方订阅消息并将消息内容打印输出
流程:
1编写发布方实现
2.编写订阅方式实现
3.为Python文件添加可执行权限
4.编辑配置文件
5.编译并执行
实现流程
首先,新建独立操作空间
打开终端,复制下面这一行,粘贴,回车
mkdir -p ~/demo03_ws/src
进入src目录
cd ~/demo03_ws/src
catkin_create_pkg demo03 roscpp rospy std_msgs
回车
此时创建好了src回到工作空间根目录,执行编译 catkin_make
cd ~/demo03_ws
catkin_make
刷新环境变量
source ./devel/setup.bash
验证是否成功
rospack find demo03
输出类似 /home/rosdemo/demo03_ws/src/demo03 代表创建成功
再添加功能包scripts和Python文件
简单的发布框架如下:
紧接着给功能包scripts提供可执行权限,文件夹打开终端
再到CMake放开注释
放开注释后修改名称
对框架进行优化:
终端运行:
rosrun demo03 demo01_pub_p.py
下一步用Python实现订阅
然后去CMake里面编辑配置文件
接下来执行,先启动roscore