ROS-机器人操作系统----带你一文入门
1.1.ROS发展史
- 2000 ROS起源: 斯坦福大学机器人软件系统框架
- 2007 ROS正式发布:柳树车库(willow Garage) 发起
- 2010 ROS 1.0 发布
- ROS逐渐流行:ROS,Indigo,ROS kinetic(LTS)
1.2.什么是ROS
- ROS 实质上并不是操作系统,而是中间件/类操作系统
- 硬件抽象
- 底层设备控制
- 常用函数实现
- 进程间消息传递
- 包管理
- ROS 官方解释:框架+工具+功能+社区
- 框架:
- 分布式
- 节点: ROS中用节点表示进程,即Node
- 分布式架构优点:扩展性好,软件复用率高
- 进程管理
- 进程通信
- 框架示意图如下:
- 分布式
- 工具:
- 仿真
- 数据可视化
- 图形界面
- 数据记录
- 功能:
- 控制
- 规划
- 视觉
- 建图
- 社区:
- 软件包管理
- 教程
- 文档
- 框架:
1.3 ROS 安装
- ROS:官方网站:www.ros.org
- 打开wiki
- 点击 install
- 选择 ROS kinetic版本
- 自己搭建虚拟机ubuntu,更新软件源
- 按照手册在终端操作即可
- 教程代码包:重德重能教学代码包(github网站)
- 安装开发IDE:Roboware(实质是基于vscode)
2.1 ROS 工程结构
- catkin 工作空间
- catkin: ROS定制的编译构建系统,对CMake的扩展
- 组织和管理功能包的文件夹,以catkin工具编译
- 操作:
- 建立工作空间:
- mkdir -p ~/catkin_ws/src
- cd ~/catkin_ws/
- catkin_make
- 编译:
- cd ~/catkin_ws #注意,一定要切换到此处进行编译
- catkin_make
- source ~/catkin_ws/devel/setup.bash # 编译完成后需要source刷新环境
- 建立工作空间:
- catkin worksapce:
- src:package 源代码,真正写代码的地方
- src通常放置功能包package,Eg.package1,package2.etc
- package是catkin编译的基本单元,catkin编译的对象就是一个又一个的package
- 编译系统会递归的查询每一个package
- package
- ROS软件的基本组织形式,
- catkin编译的基本单元
- 一个package可以包含多个可执行文件(节点)
- 判断package的方式:至少包含CMakeLists.txt,package.xml
- CMakeLists.txt:
- 规定catkin编译的规则,例如,源文件,依赖项,目标文件
- package.xml
- 定义package的属性,例如:包名,版本号.作者,依赖项
- scripts:
- 脚本 (python 文件,shell文件)
- include
- C++头文件
- src
- C++源文件
- python modue
- srv(服务)
- *.srv
- msg(消息)
- *.msg
- 动作(action)
- *.action
- launch:*.launch
- config:*.yaml
- CMakeLists.txt:
- build: cmake & catkin 缓存和中间文件
- devel: 目标文件
- 头文件
- 动态链接库
- 静态链接库
- 可执行文件
- src:package 源代码,真正写代码的地方
- rosbuild:ROS早期采用的编译系统,目前主流的ROS项目已经不采用
- 常用指令:
- rospack
- 查找某个pkg的地址
- rospack find package_name
- 列出本地所有pkg
- rospack list
- 查找某个pkg的地址
- roscd
- 跳转到某个pkg路径下
- roscd package_name
- 跳转到某个pkg路径下
- rosls
- 列举某个pkg下的文件信息
- rosls package_name
- 列举某个pkg下的文件信息
- rosed
- 编辑pkg的文件
- rosed package_name file_name
- 编辑pkg的文件
- catkin_create_pkg
- 创建一个pkg
- catkin_create_pkg <pkg_nmae>
- 创建一个pkg
- rospack