ROS
- 是什么?
- 一款开源机器人操作系统
- 提供包括硬件抽象, 底层设备控制, 进程间的数据交互, 功能包管理, 各种工具和库
- 实现几种不同风格的通信: 通过服务进行的同步RPC式通信, 通过主题进行的异步数据流, 参数服务器上的数据存储
- 非实时框架
工作空间
catkin
- catkin工作空间文件夹中, 可定义,编译,安装cantkin包
- 工作空间中包括
- SOURCE SPACE
- catkin包的源码, 在此可对源码进行提取,检查,克隆将要编译的代码
- source space的每个文件夹含1或多个catkin包
- space应在配置,构建,安装时保持不变
- space根部含指向CMakeLists.txt的符号链接, 文件在配置catkin工程时被CMake调用
- BUILD SPACE
- space是Cmake用于编译catkkin包, 保存缓存信息和其他中间文件
- 不一定包含在工作空间内/源空间之外
- DEVELOPMENT SPACE
- 安装前放置已建目标的地方, 提供安装步骤之外的测试开发环境
- 位置由CMake参数
CATKIN_DEVEL_PREFIX
决定, 默认<build space>/develspace
- INSTALL SPACE
- 编译后可被安装在install space
- 不含于工作空间
- 被
CMAKE_INSTALL_PREFIX
配置, 默认/usr/local
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make
source devel/setup.bash
$ echo $ROS_PACKAGE_PATH /home/<youruser>/catkin_ws/src:/opt/ros/indigo/share:/opt/ros/indigo/stacks
rosbuild
- rosws: 提供各种版本控制系统(git,svn)统一接口, 管理所有软件包的工具
- 非自带
sudo pt-get install python-rosinstall
- 旧版编译工具, 已被catkin替代
文件系统
- Packages: ROS代码中的软件组织单元, 每个package包含libraries库, executables可执行文件, scripts脚本, other artifacts
- Manifests(package.xml): 一个pakcage的说明, 定义包之间的依赖, 捕捉包的元信息(version, maintainer, license)
文件系统工具
rospack
- 获取packages的信息
- find: 返回package的路径
rospack find [package_name]
rospack find roscpp
roscd
- rosbash套件的一部分, 改变路径到一个pckage/stack
roscd <package-or-stack>[/subdir]
roscd roscpp
- 只能找到
ROS_PACKAGE_PATH
包含的目录
- 查看PATH中有什么
echo $ROS_PACKAGE_PATH
roscd log
: 进入ROS存放log的地方
rosls
- rosbash套件的一部分, 允许以名字ls
rosls <package-or-stack>[/subdir]
rosls roscpp_tutorials