contents
ROS理解(类比安卓,机器人界的安卓)
可将ros和安卓手机系统进行类比。
ros里面有丰富的软件包,软件包是ros中的组织形式
除了ros系统自带的库和算法外,APT开源库和github也提供了丰富的第三方app(也就是库和各种算法,也就是各种各样的软件包,不需要自己重复造一些轮子,大大提高开发效率)
从apt源和github下载各种软件包,相当于从应用商店安装新的APP,类比一下,很多事情都可以很好的理解。
source + sh文件或者bashrc 就是运行这个文件。
.bashrc是终端程序启动脚本,每次执行终端程序也就是打开终端的时候,会首先执行一下这个脚本,完成一些环境变量的赋值等工作。
apt源,也就是镜像源
ROS索引是搜索ROS和ROS2资源的入口点,包括包、存储库、系统依赖项和文档。
您可以在搜索栏中输入关键字和短语,然后按资源类型筛选结果,也可以在“索引”选项卡下浏览完整的包、存储库和系统依赖项列表。
使用APT工具来安装这些软件包,用的就是软件包的名称
除了可以使用APT下载安装之外,也可以获取他们的源代码进行学习和修改。
安装语法:sudo apt install ros-noetic-rqt-robot-steering
vscode编译ros软件包快捷键配置:
ros的基础单元:node节点和package包
包里面有很多相关的节点,可以将包理解为节点的容器。软件包。
有package.xml文件的一般都是一个软件包。
里面存放的都是软件包,主要来源有两个 一个是安装ros时自带的,另一个就是自己在index网站里面使用命令行自己独立安装的。
通过apt下载的这些软件包,一般都是现成的可执行文件,可以直接运行;而自己创建的工作空间里面的软件包,都是源码文件,需要编译成可执行文件才可以运行!!
联想到bashrc里面的source指令,加载的就是apt下载的这些软件包的地址
后面加的source指令,加载的是我们自己创建的工作空间里面的软件包地址
话题并不只属于发布者或者订阅者,而是由ros系统创建管理的,只要节点向nodehander大管家提出话题发布需求或者话题订阅需求,这个话题就会被自动创建。 牛牛 只要有发布者发布话题或者订阅者订阅话题,那么rostopic list就会出现这个话题名。
launch文件是一个软件包的重要入口。
拿到一个陌生的软件包时,可以从launch文件入手, 通过文件名猜测它的功能,然后看他都需要运行哪些节点,庖丁解牛,一步步发现其内部机制。
ros通信中,要是给订阅节点突然不发数据了,那么订阅节点收的数据就一直是接受的最后一个数据包的内容。
1、launch
1.launch文件里面有各种各样的标签
launch标签为根标签。node标签 注意反斜杠
结束标记使用反斜杠 />
2、四元数 欧拉角
四元数类似于欧拉角
欧拉角:角速度有三个:俯仰 偏航 翻滚
3、cmakelist
ros中一个cpp文件未编写好后,不能在cmakelist中配置该cpp,否则编译出错
4、计算图
计算图中圆圈是节点 方框是话题 箭头表示数据的发布订阅方向
5、ros中的数据载体
ros中的数据载体,可能包括多个字段,不同的字段使用 . 进行选择
下面这种自定义的数据类型就可以使用很多字段
6、运算符重载
重载是c++的一大特色
7、rviz
rviz可以显示通用类型数据,也可以进行插件扩展,可以自定义编写插件
红绿蓝代表xyz
8、ros常用官方网站,官方网站wiki是一切ros知识的来源
查找各种数据类型 https://index.ros.org/search/?term=std_msgs
https://www.ros.org/about-ros/
http://wiki.ros.org/ROS/Introduction
http://wiki.ros.org/Distributions
9、占用栅格地图
封装 源文件 头文件分开编程
自定义消息类型生成的头文件:
base_link和base_footprint的区别