ROS是什么?
ROS 历史起源
ROS 发展背景
- 问题:机器人跨学科特点,系统庞大,工程应用涉及面广,硬件繁多,软件开发困难、低级重复
- 基础:机器人研究相关领域发展迅速:计算机视觉,异构计算加速,室内移动机器人算法的成熟等等
- 需求:机器人研究过程中需要统一开发/测试平台
- 解决方法:机器人软件中间件
ROS总体设计
一个目标
提高机器人开发中的代码复用率
五个特点
- 免费且开源
- BSD许可,可修改,可复用,可商用
- 软件包数量级数增长,良好生态环境
- 工具包丰富
- 3D可视化工具 rviz
- 物理仿真环境 gazebo
- 数据记录工具 rosbag
- QT工具箱 rqt*
- 精简与集成
- 每个功能节点单独编译
- 集成众多开源项目
- 同一接口,代码复用率高
- 多语言支持
ROS现在支持许多种不同的语言,例如C++、Python、Octave和LISP,也包含其他语言的多种接口实现 - 点对点
- 一个使用ROS的系统包括一系列进程,这些进程存在于多个不同的主机并且在运行过程中通过端对端的拓扑结构进行联系。虽然基于中心服务器的那些软件框架也可以实现多进程和多主机的优势,但是在这些框架中,当各电脑通过不同的网络进行连接时,中心数据服务器就会发生问题
- ROS的点对点设计以及服务和节点管理器等机制可以分散由计算机视觉和语音识别等功能带来的实时计算压力,能够适应多机器人遇到的挑战
ROS是开源的,是用于机器人的一种后操作系统,或者说次级操作系统。它提供类似操作系统所提供的功能,包含硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间的消息传递、程序发行包管理,它也提供一些工具程序和库用于获取、建立、编写和运行多机整合的程序
ROS是对机器人的硬件进行封装,不同的机器人、不同的传感器,在ROS里可以用相同的方式表示(topic等),供上层应用程序(运动规划等)调用
四位一体
ROS提供了全新的通信机制,全面的开发工具,多样的应用功能,完整的生态系统。提供了机器人开发的统一标准
总结
ROS 不足
- 目前基于Ubuntu系统,移植嵌入式系统困难
- 通信实时性能有限
- 体积较大
- 系统整体运行效率低
- 系统稳定性尚不满足工业级要求,不擅长开发成熟的商业产品
- 安全性上没有防护措施
- 主要支持的操作系统是Linux(Ubuntu),windows刚宣布支持不久,但不够成熟
操作小记
乌龟爬爬爬
# 启动节点
$ roscore
# 生成小乌龟
$ rosrun turtlesim turtlesim_node
# 使用键盘上的箭头按键控制乌龟移动
$ rosrun turtlesim turtle_teleop_key
效果
pr2机器人体验
# 安装pr节点
$ sudo apt-get install ros-kinetic-pr2-*
# 启动机器人三维仿真模型
$ roslaunch pr2_gazebo pr2_empty_word.launch
# 启动键盘控制机器人在仿真环境下移动
$ roslaunch pr2_teleop_general pr2_teleop_general_keyboard.launch
效果
中国大学MOOC《机器人操作系统入门》课程代码示例体验
$ sudo apt-get install git
$ cd
$ mkdir -p tutorial_ws/src
$ cd tutorial_ws/src
$ git clone https://github.com/DroidAITech/ROS-Academy-for-Beginners.git
$ cd ~/catkin_ws
$ rosdep install --from-paths src --ignore-src --rosdistro=kinetic -y
$ gazebo -v #确认7.0以上,推荐7.9
$ ~/tutorial_ws
$ catkin_make
$ source ~/tutorial_ws/devel/setup.bash #刷新环境 方法一
$ rospack profile #刷新环境 方法二
$ echo "source ~/tutorial_ws/devel/setup.bash" >> ~/.bashrc #刷新环境 方法三(永久)
# 启动机器人
$ rospack profile
$ roslaunch robot_sim_demo robot_spawn.launch
# 另一个终端
# 键盘控制
$ rosrun robot_sim_demo robot_keyboard_teleop.py