http://www.autolabor.com.cn/book/ROSTutorials/
1、ROS简介
ROS 是一个适用于机器人的开源的元操作系统。其实它并不是一个真正的操作系统,其
底层的任务调度、编译、寻址等任务还是由 Linux 操作系统完成,也就是说 ROS 实际上是运
行在 Linux 上的次级操作系统。但是 ROS 提供了操作系统应用的各种服务(如:硬件抽象、
底层设备控制、常用函数实现、进程间消息传递、软件包管理等),也提供了用于获取、编
译、跨平台运行代码的工具和函数。 ROS 主要采用松耦合点对点进程网络通信,目前主要还
是支持 Ubuntu 系统, windows 和 Mac OS 目前支持的还不好,所以推荐在 Ubuntu 系统上安
装使用 ROS。
ROS是一套机器人通用软件框架,可以提升功能模块的复用性。
设计思想、核心概念、核心模块、核心工具:
ROS 的设计思路主要是分布式架构,将机器人的功能和软件做成一个个节点,然后每个
节点通过 topic 进行沟通,这些节点可以部署在同一台机器上,也可以部署在不同机器上,
还可以部署在互联网上。
ROS 的核心概念主要是节点和用于节点间通信的话题与服务。管理器 Master 管理节点
与话题之间通信的过程,并且还提供一个参数服务用于全局参数的配置。 ROS 通过功能包集
stack 和功能包 package 来组织代码。
ROS 的核心模块包括:通信结构基础、机器人特性功能、工具集。通信结构基础主要是
消息传递、记录回放消息、远程过程调用、分布式参数系统;机器人特性功能主要是标准机
器人消息、机器人几何库、机器人描述语言、抢占式远程过程调用、诊断、位置估计、定位
导航;工具集主要是命令式工具、可视化工具、图形化接口。
ROS 核心工具很丰富, ROS 常用命令工具是 rostopic、 rosservice、 rosnode、 rosparam、
rosmsg、 rossrv、 roswtf; ROS 常用可视化工具是 rqt、 rviz; ROS 用于存储与回放数据的
工具 rosbag; ROS 的 log 系统记录软件运行的相关信息; ROS 还拥有强大的第三方工具支持:
三维仿真环境 Gazebo、计算机视觉库 OpenCV、点云库 PCL、机械臂控制库 MoveIt、工业应
用库 Industrial、机器人编程工具箱 MRPT、实时控制库 Orocos。
ROS可以通过自身携带的主板汇总信息给远程PC,由远程PC担任数据处理任务,最后返回结果给主板处理;
ROS设计目标:
代码复用:支持机器人技术研发中的代码重用
分布式:ROS是进程的分布式框架,ROS中的进程可分布于不同的主机,不同主机协同工作,从而分散计算压力。
松耦合:ROS的功能模块封装于独立的功能包或元功能包,便于分享,功能包内的模块以节点位单位运行,以ros标准的IO作为接口,开发者不需要关注模块内部的实现,只要了解接口规则就能实现复用,实现了模块间点对点的松耦合连接;
精简:为ROS编写的代码可以与其他机器人软件框架一起使用,ROS易于与其他机器人软件框架集成:ROS已与OpenRAVE,Orocos和Player集成
语言独立性:java,cpp,Python等,为了支持更多的应用开发和一致,ros设计为一种语言弱相关的框架结构;允许消息接口的嵌套使用
易于测试:ROS具有称为rostest的内置单元/集成测试框架,可以轻松安装和拆卸测试工具
大型应用:ROS适用于大型运行时系统和大型开发流程
丰富的组件化工具包:ROS可采用组件化方式集成一些工具和软件到系统中并作为一个组件直接使用;
免费且开源:开发者多,功能包多。
ROS安装:详见本文头的链接;
配置ros环境变量:
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
测试ros代码:
使用记事本编写ros程序:
创建工作空间并初始化:
mkdir -p 名称/src
cd 名称
catkin_make
进入src创建ros包并添加依赖:
cd src
catkin_create_pkg 自定义ROS包名 roscpp rospy std_msgs
helloworld:
1\进入 ros 包添加 scripts 目录并编辑 python 文件
cd ros包
mkdir scripts
2\新建 python 文件: (文件名自定义)
#! /usr/bin/env python
"""
Python 版 HelloWorld
"""
import rospy
if __name__ == "__main__":
rospy.init_node("Hello")
rospy.loginfo("Hello World!!!!")
3\为 python 文件添加可执行权限
chmod +x 自定义文件名.py
4\编辑 ros 包下的 CamkeList.txt 文件
catkin_install_python(PROGRAMS scripts/自定义文件名.py
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)
5\进入工作空间目录并编译
cd 自定义空间名称
catkin_make
6.进入工作空间目录并执行
先启动命令行1:
roscore
再启动命令行2:
cd 工作空间
source ./devel/setup.bash
rosrun 包名 自定义文件名.py