1. ROS是什么
1.1 ROE发展史
1.2 ROS是什么
复用别人已经开发好的代码或功能,做进一步扩展和完善,加速机器人开发。含通信机制,开发工具,应用功能,生态系统四大部分。
1.3 ROS的四个组成部分
1.3.1 ROS的通信机制
每个椭圆代表一个节点,如图像采集,图像处理,SLAM导航等相关算法,每一个具体功能都是一个节点,节点之间的箭头连接代表节点间通信时的数据流向,由此简化出该计算图。
1.3.2 ROS的开发工具
用于机器人开发调试,可视化工具,建立仿真环境等一系列开发工具
1.3.3 ROS中的应用功能
ROS中应用功能非常丰富,可用于开发机械臂,水下机器人,无人机等,如导航,建图,运动规划等功能包,这些功能包是ROS社区围绕一定框架,协议或接口的标准所开发的一系列算法,我们只需关心其接口输入,输出,围绕所需实现的计算功能,以类似搭积木的方式完成基础开发,在根据具体需求进行完善。
1.3.4 ROS中的生态系统
2. ROS命令行工具的使用
小海龟示例
rosrun 功能包 节点名 :用于运行功能包中某节点
rqt_graph :ROS中有许多rqt开头的命令,是基于QT的可视化工具,直观查看一些信息,此命令是用于显示系统计算图的工具,查看节点与节点间的关系
rosnode :用于显示系统与节点相关的信息eg :rosnode list , rosnode info 节点名
rostopic :查看使用系统发布相关话题
rosmsg :查看消息数据结构
rosseverci :查看使用ros服务
3. 创建工作空间与功能包
工作空间中含四个相应文件夹src,build,devel,install
src :代码空间,用于存放功能包代码,配置文件,launch文件等
build :编译空间,用于存放编译过程中产生的中间文件
devel :开发空间,用于存放编译后产生的可执行文件,库以及一些脚本
install :安装空间,使用install命令安装成功后存放位置
4. 发布者Publisher的编程代码实现
步骤
创建工作空间
代码实现,在learning_topic功能包的src文件夹下创建cpp文件,代码如下
Python版代码
将所需编译内容写入功能包CMakeLists文件中
编译并运行发布者
5. 订阅者Subscribe代码实现
在learning_topic功能包的src文件夹下创建cpp文件
Python语言
将所需编译内容写入功能包CMakeLists文件中
编译并运行订阅者
6. 话题消息的定义和使用
在learning_topic功能包的src文件夹下创建msg文件夹
catkin_package 修改如下
发布者与订阅者创建
在learning_topic功能包的src文件夹下创建cpp文件夹
发布者代码
订阅者代码
CMakeLists添加如下代码
编译运行
7.客户端Client的编程实现
创建功能包
创建客户端代码
C++
Python代码
配置客户端代码编译规则
编译并运行客户端
8. 服务端Sever的编程实现
服务器代码
配置服务器代码编译规则
编译并运行服务器
9. launch启动文件的使用方法
9.1 launch文件的作用
9.2 launch文件的常用语法
更多标签参见 roslaunch/XML - ROS Wiki
launch示例
10. ROS中常用可视化工具的使用
rqt
Rviz
Gazebo