Robotics Software engineer笔记
1.ROS简介与虚拟机配置
(1)ROS简介
ROS是一款机器人软件框架,即机器人操作系统(Robot Operating System)。
ROS的前身是斯坦福人工智能实验室为了支持斯坦福智能机器人STAIR而建立的交换庭(switchyard)项目。在2007 年 ROS 在 Willow Garage 的支持下成为了一家正式实体。从 2013 年开始 开源机器人学基金会一直在维护并开发ROS。
然而更确切地说,ROS是一个元操作系统 (Meta-Operating System)。元操作系统不是一个明确定义的术语,而是一个利用应用稳序和分布式计算资源之间的虚拟化层来运用分布式计算资源来执行调度、加载、监视、错误处理等任务的系统。
ROS不是传统的操作系统如Windows、Linux和Android,反而是在利用现有的操作系统。使用ROS前需要先安装诸如Ubuntu的Linux发行版操作系统,之后再安装 ROS,以使用进程管理系统、文件系统、用户界面、程序实用程序 (编译器、线程模型等) 。此外,它还以库的形式提供了机器人应用程序所需的多数不同类型的硬件之间的数据传输/接收、调度和错误处理等功能。这个概念也被称为中间件 (Middleware) 或软件框架 (Software framework)。
ROS开发、管理和提供基于元操作系统的各种用途的应用功能包.并拥有一个负责分享用户所开发的功能包的生态系统 (Ecosystem)。 如图所示。ROS是在使用现有的 传统操作系统的同时,通过使用硬件抽象概念来控制机器人应用程序所必需的机器人和传感器,同时也是开发用户的机器人应用程序的支持系统。
(2)虚拟机配置
在这里我使用的是Udacity提供的Vmware磁盘映像,使用VMware player15免费版作为虚拟机的运行ROS。
安装步骤:
- 下载并安装VMPlayer
- 从提供的链接下载压缩包
- 解压缩压缩包
- 打开VMware
- 按“打开虚拟机”
- 选择较大的.ova文件
- 等待文件导入(可能需要一些时间)
- 如果弹出错误,请单击“重试”
- 安装完成
注意:
-
这里可能会出现未开启虚拟化错误,进入BIOS打开CPU虚拟化即可。
-
虚拟机的密码是robo-nd
2. 环境设置
在开始在虚拟机中使用ROS之前,必须要检测所有的环境变量。所以首先要获取ROS提供的安装脚本
source /opt/ros/kinetic/setup.bash
注意: 使用source 而不是 ./,因为这两个命令之间有一个微妙的区别,即 source 在当前会话中执行脚本,而 ./ 将启动一个包含当前环境副本的新会话。当 ./ 退出执行的脚本时,由它设置的所有环境变量都将丢失。
(1) 检查环境
特殊环境变量
ROS_ROOT=/opt/ros/kinetic/share/ros
存储核心ros包的路径
PATH=/opt/ros/kinetic/bin:...
ROS二进制文件的路径
ROS_DISTRO=kinetic
正在使用哪种ROS分布
PYTHONPATH=/opt/ros/kinetic/lib/python2.7/dist-packages
ROS python包的路径,
有关上述环境变量,此处未提及的环境变量以及其他变量的更多信息,请参见 此处。
(2)自动配置环境
为了避免每次打开新的终端窗口时设置ROS环境,我们可以简单地添加命令来将工作空间源化为我们的~/.bashrc file。这将导致文件在创建新终端会话时获取我们的环境。
注意:
提供的VM已配置此配置,因此无需执行此步骤!
3. 运行Turtlesim
(1) 启动主进程
在运行任何ROS节点之前,必须启动主进程。
主进程负责:
-
为其他正在运行的节点提供命名和注册服务
-
跟踪所有发布者和订阅者
-
聚合节点生成的日志信息
-
促进节点生成日志信息
要运行主进程,必须执行命令roscore
roscore
输出如下:
(2) 运行Turtlesim节点
现在已经运行了ROS的主程序了,接下来运行其他两个节点。
1)首先新建bash shell,在新的窗口中在turtlesim包中使用命令turtlesim_node
rosrun turtlesim turtlesim_node
2)接下来再新建bash shell 并在turtlesim包中使用命令turtle_teleop_key
rosrun turtlesim turtle_teleop_key
选中运行turtl_teleop_key的bash shell,就可以通过方向键控制小龟方向了。
参考