看完这个还能不知道ROS是啥?!
-
-
第1讲 课程介绍
ROS:Robot Operating System,机器人操作系统
通信机制+开发工具+应用功能+生态系统
Powering the world’s robots——机器人领域的普遍标准
基础概述
核心概念
编程基础
常用组件
进阶展望
使用Google浏览器可以找到很多问题第2讲 Linux系统介绍及安装
1991年,芬兰赫尔辛基的大学生Linus Torvalds编写
企鹅logo:敢作敢为,热爱生活-
第3讲 Linux系统基础操作
软件源
软件更新中可以设置软件源,校园网用edu的源,家里的话可以用阿里云命令行
可扩展性和灵活性更好
根目录是“/”文件夹,里边有home,usr等文件夹
软件安装一般在usr文件夹
home文件夹中有以用户名字为名称的文件夹,进去之后是自己的文档资料,或者叫“主目录”
pwd:查看当前终端所在路径
cd:切换路径
cd /home:到达/home目录下
cd …:回到上一级
mkdir:创建文件夹命令
touch:创建文件命令
mv:剪切命令
cp:拷贝命令
rm:删除命令,-r表示递归删除
sudo:表示指令以最高权限执行
sudo apt-get update:更新系统软件源列表
[指令] --help:帮助指令,看到指令使用方法第4讲 C++&Python极简基础
g++是c++的编译器:sudo apt-get install g++
安装Python解析器:sudo apt-get insta;; python编译&运行.cpp文件:g++ [.cpp] -o [可执行文件] + ./[可执行文件]
解析.py文件:python [.py]
可以使用Tab键进行命令的补全第5讲 安装ROS系统
看一遍授课视频,结合官方的安装流程,就基本上问题不大。官网安装教程如下:
官方安装教程.
遇到了一个小问题,解决办法如下:
ubuntu18.04安装ROS时出现错误ERROR: cannot download default sources list from解决办法.
最终实现小乌龟跑动: -
第6讲 ROS是什么
2007年诞生,2010年,ROS正式进入公众视野(正式发布)。
核心目标:提高机器人研发中的软件复用率通信机制:松耦合分布式通信
开发工具:命令行&编译器、TF坐标变换、QT工具箱、Rviz、Gazebo
应用功能:Navigation、SLAM、Movelt
生态系统:发行版、软件源、ROS wiki、邮件列表、ROS Answers、Blog博客
第7讲 ROS的核心概念
节点与节点管理器
节点(Node):执行单元可执行文件
可以是不同的语言,可分布式运行在不同的主机
节点名称必须唯一
节点管理器(ROS Master):控制中心为节点提供命名和注册
跟踪和记录话题/服务通信,辅助节点相互查找、建立连接
提供参数服务器(Parameter Server),节点使用此服务器存储和检索运行时的参数(全局参数笔记本)
话题通信
话题(Topic):异步通信机制节点间传输数据的重要总线
使用发布/订阅模型,数据由发布者传输到订阅者,同一话题的订阅者或发布者可以不唯一
消息(Message):话题数据具有一定的类型和数据结构,包括ROS提供的标准类型和用户自定义类型
使用变成语言无关的.msg文件定义,编译过程生成对应的代码文件
服务通信
服务(Service):同步通信机制使用客户端/服务器(C/S)模型,客户端发送请求数据,服务器完成处理后返回应答数据(请求&应答)
使用编程语言无关的.srv文件定义请求和应答数据结构,编译过程中生成对应的代码文件 -
参数
参数(Parameter):全局共享字典可通过网络访问的共享、多变量词典
节点使用此服务器来存储和检索运行时的参数
适合存储静态、非二进制的配置参数,不适合存储动态配置的数据
文件系统
功能包(Package):ROS软件中的基本单元,包含节点源码、配置文件、数据定义
功能包清单(Package manifest):记录功能包的基本信息,包含作者信息、许可信息、依赖选项、编译标志
元功能包(Meta Packages):组织多个用于同一目的的功能包 - 第8讲:ROS命令行工具小海龟运行解析:
- rqt_graph:显示系统计算图的命令
- 通过图可以看到系统全貌,各节点关系rosnode:显示节点信息指令
-
直接打rosnode就可以看后边可以加入哪些选项
rosnode list:显示有哪些节点
rosnode info [Node]:可以看某个节点的信息rostopic:话题信息显示指令
可以用命令行控制小乌龟的移动rosmsg:显示消息的相关信息
例如用:rosmsg show [Message]可以看某条指令的含义rosservice:显示服务的相关内容
rosservice list:显示有哪些可选选项
如spawn可以产生多只海龟 -
rosbag:话题记录工具
保存一段时间的操作,这样就不用每次运行都重新手动操作第9讲 创建工作空间与功能包
工作空间(workspace)
是一个存放工程开发相关文件的文件夹src:代码空间(Source Space)
build:编译空间(Build Space)
devel:开发空间(Development Space)
install:安装空间(Install Space)
同一个工作空间下,不允许存在同名功能包
不同工作空间下,则可以存在
这一节主要展示了工作空间的创建,以及编译等操作,具体建议直接看视频第10讲 发布者Publisher的编程实现
话题模型 -
小乌龟运动为例,结构框架如图:节点管理器、发布者、订阅者、话题
这里我们要自己定义一个Publisher,在此基础上实现它指令的不断发送,控制小乌龟的运动。
这里涉及到了如何实现一个发布者的编程实现:初始化ROS节点
向ROS Master注册节点信息,包括发布的话题名和话题中的消息类型
创建消息数据
按照一定频率循环发布消息
具体的操作过程建议参照视频来做,里边提到了很多操作细节。
这里遇到了一个问题,关于环境变量的设置问题,需要在工作空间的根目录下进行环境变量配置(没有采用视频中讲环境变量写入.bashrc的方法),参照该文章,解决了配置环境变量进而运行的目的。
[古月居ros21讲出现问题及个人解决方案1]第十讲出现:[rospack] Error: package’learning_topic’not found
这里使用Ctrl+h在文件夹中显示隐藏文件
最终实现了小乌龟的画圆圈运动。 -
第11讲 订阅者Subscriber的编程实现
和第10讲几乎一样的操作
创建一个订阅者,不断打印小乌龟所位置的数据
这里涉及如何实现一个订阅者的编程实现:初始化ROS节点
订阅需要的话题
循环等待话题消息,接收到消息后进入回调函数
在回调函数中完成消息处理
回调函数类似嵌入式中的中断服务函数,程序会进入一个等待的循环状态,程序一旦识别到有话题消息,就进入回调函数来处理消息。
最终实现在命令行不断打印小乌龟的姿态信息。 - 第12讲 话题消息的定义和使用
在这一讲,我们不再使用ROS自带的话题模板(我目前是这样理解的),而是自定义一个话题消息,并且建立发布者和订阅者的联系。
首先在功能包learning_topic内创建一个msg文件夹,用于存放我们将要定义的话题消息,里边创建一个Person.msg文件,用于存放具体的消息内容: - 在此基础上,在源文件src目录下创建一个发布者和一个订阅者的源码:
- 之后,在
CMakeLists.txt
里写入一些我们需要的编译选项,这里还不是太懂具体怎么回事。
最后在根目录下使用如下指令进行编译: -
catkin_make
- 而后在不同终端下用如下指令即可实现发布者和订阅者之间的通信:
-
cd ~/catkin_ws catkin_make source devel/setup.bash roscore rosrun learning_topic person_subscriber rosrun learning_topic person_publisher
- 这里需要注意的是,我们没有将环境变量添加到某个文件中(应该是第10讲或者第11讲讲过来着),所以每次运行需要先配置环境变量,再rosrun我们需要的东西,这里是一个小坑,具体操作可以参考这篇博文:
古月居……[rospack] Error: package ‘learning_topic’ not found
我们可以先运行订阅者,等待发布者的运行
运行发布者后,发布者发布的信息会被订阅者接受,二者同步显示: -
另外,如果开始运行后,关闭
ROS Master
,并不会让话题中断,因为前者只是用于建立链接,链接建立成功后就不再起作用了,可以类比婚介所的作用
这样我们就完成了本讲的操作
-
评论(0)
您还未登录,请登录后发表或查看评论