学习网址:Introduction · GitBook (autolabor.com.cn)
b站:【奥特学园】ROS机器人入门课程《ROS理论与实践》零基础教程_哔哩哔哩_bilibili
创建一个ROS Workspace 的简单方法:
mkdir -p ~/catkin_ws/src(在/home/自己的用户名目录/下创建一个catkin_ws工作空间/创建文件夹src)
cd ~/catkin_ws/src(进入工作空间catkin_ws中的文件夹src)
catkin_init_workspace(对工作空间进行初始化,会在src留下一个CMakeLists.txt文件)
cd ~/catkin_ws/ (返回到catkin_ws中)
catkin_make (执行完该命令后,发现工作空间catkin_ws中有三个目录: build devel src src是在第一条命令创建工作空间时就创建了,另外两个是这时创建的)
source devel/setup.bash
对于 source ./devel/setup.bash 的解释(使用source构建环境变量)
将对应的工作空间的路径加入环境变量ROS_PACKAGE_PATH中。
如果新开了一个终端命令行,在使用该工作空间前,必须先将该工作空间的路径加入环境变量ROS_PACKAGE_PATH中
这句话的目的就是在开新的terminal的时候,运行这个setup.bash,而这个setup.bash的作用是让一些ROS* 开头的命令可以使用。
在工作空间的devel文件夹中存在几个setup.*sh形式的环境变量设置脚本。使用source命令运行这些脚本文件,则工作空间的环境变量设置可以生效(如可以找到该工作空间内的项目)
echo $ROS_PACKAGE_PATH (查看当前环境变量)
小笔记:
sudo apt install terminator
Terminator的 快捷操作:
第一部分:关于在同一个标签页内操作
Alt+Up //移动到上面的终端
Alt+Down //移动到下面的终端
Alt+Left //移动到左边的终端
Alt+Right //移动到右边的终端
Ctrl+Shift+O //水平分割终端
Ctrl+Shift+E //垂直分割终端
Ctrl+Shift+Right //在垂直分割的终端中将分割条向右移动
Ctrl+Shift+Left //在垂直分割的终端中将分割条向左移动
Ctrl+Shift+Up //在水平分割的终端中将分割条向上移动
Ctrl+Shift+Down //在水平分割的终端中将分割条向下移动
Ctrl+Shift+S //隐藏/显示滚动条
Ctrl+Shift+F //搜索
Ctrl+Shift+C //复制选中的内容到剪贴板
Ctrl+Shift+V //粘贴剪贴板的内容到此处
Ctrl+Shift+W //关闭当前终端
Ctrl+Shift+Q //退出当前窗口,当前窗口的所有终端都将被关闭
Ctrl+Shift+X //最大化显示当前终端(再一次操作就是撤销)
Ctrl+Shift+Z //最大化显示当前终端并使字体放大
Ctrl+Shift+N or Ctrl+Tab //移动到下一个终端
Ctrl+Shift+P or Ctrl+Shift+Tab //Crtl+Shift+Tab 移动到之前的一个终端
第二部分:有关各个标签之间的操作
F11 //全屏开关
Ctrl+Shift+T //打开一个新的标签
Ctrl+PageDown //移动到下一个标签
Ctrl+PageUp //移动到上一个标签
Ctrl+Shift+PageDown //将当前标签与其后一个标签交换位置
Ctrl+Shift+PageUp //将当前标签与其前一个标签交换位置
Ctrl+Plus (+) //增大字体
Ctrl+Minus (-) //减小字体
Ctrl+Zero (0) //恢复字体到原始大小
Ctrl+Shift+R //重置终端状态
Ctrl+Shift+G //重置终端状态并clear屏幕
Super+g //绑定所有的终端,以便向一个输入能够输入到所有的终端
Super+Shift+G //解除绑定
Super+t //绑定当前标签的所有终端,向一个终端输入的内容会自动输入到其他终端
Super+Shift+T //解除绑定
Ctrl+Shift+I //打开一个窗口,新窗口与原来的窗口使用同一个进程
Super+i //打开一个新窗口,新窗口与原来的窗口使用不同的进程
Launch文件
目的:在一个程序中可能需要启动多个节点(需要启动多个窗口),如果每次都调用rosrun逐一启动,会造成效率低下,而通过使用launch文件,可以一次性启动多个ROS节点
2.实现
选定功能包右击 ---> 添加 launch 文件夹
选定 launch 文件夹右击 ---> 添加 launch 文件
编辑 launch 文件内容
node ---> 包含的某个节点
pkg -----> 功能包
type ----> 被运行的节点文件(与cmakelist里面节点的名字)
name --> 为节点命名(可任意取)
output-> 设置日志的输出目标
运行 launch 文件(在此之前先输入 source ./devel/setup.bash)
运行结果: 一次性启动了多个节点
ROS文件系统相关命令
1.增
catkin_create_pkg 自定义包名 依赖包 === 创建新的ROS功能包
sudo apt install xxx === 安装 ROS功能包
2.删
sudo apt purge xxx ==== 删除某个功能包
3.查(就是在普通的linux命令前加上ros)
rospack list === 列出所有功能包
rospack find 包名 === 查找某个功能包是否存在,如果存在返回安装路径
roscd 包名 === 进入某个功能包(输入 cd - 就可以退出当前功能包)
rosls 包名 === 列出某个包下的文件
apt search xxx === 搜索某个功能包
4.改
rosed 包名 文件名 === 修改功能包文件
需要安装 vim
比如:
输入rosed turtlesim Color.msg 输入完之后会出现:
这时只需把红色圈里面的 sudo apt install vim 复制粘贴到下面的命令行中然后回车,再安装vim
5.1 roscore 是 ROS 的系统先决条件节点和程序的集合, 必须运行 roscore 才能使 ROS 节点进行通信。
运行roscore 将启动:
ros master
ros 参数服务器
rosout 日志节点
5.2 rosrun
rosrun 包名 可执行文件名 === 运行指定的ROS节点
5.3 roslaunch
roslaunch 包名 launch文件名 === 执行某个包下的 launch 文件
忘记时就看这儿:什么是SDK:什么是SDK - 简书 (jianshu.com)
ROS计算图
ROS文件结构,是磁盘上 ROS 程序的存储结构,是静态的,而 ros 程序运行之后,不同的节点之间是错综复杂的,ROS 中提供了一个实用的工具:rqt_graph。
rqt_graph能够创建一个显示当前系统运行情况的动态图形。ROS 分布式系统中不同进程需要进行数据交互,计算图可以以点对点的网络形式表现数据交互过程。rqt_graph是rqt程序包中的一部分。
跳过安装,直接演示:(以ROS内置小乌龟案例来演示计算图)
2.打开后,新开一个终端输入rqt_graph 或 rosrun rqt_graph rqt_graph
上图中,左侧是键盘控制,右侧是乌龟运动,中间是两者间的数据交互(载体是/turtle1/cmd_vel) 具体实现:当我们按键盘时,会将信息封装进/turtle1/cmd_vel这种类型的数据中,再传进/turtle_GUI,再对数据进行解析,然后转化成窗口中乌龟的运动。