首页 > Udacity机器人软件工程师课程笔记(七)-ROS介绍和Turtlesim包的使用

Udacity机器人软件工程师课程笔记(七)-ROS介绍和Turtlesim包的使用

Robotics Software engineer笔记

1.ROS简介与虚拟机配置

(1)ROS简介

ROS是一款机器人软件框架,即机器人操作系统(Robot Operating System)。

图片来源:Udacity机器人软件工程师视频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,就可以通过方向键控制小龟方向了。

在这里插入图片描述

参考

  • ROS学习笔记(一):ROS简介
  • Udacity Robotics software engineer 课程

更多相关:

  • 最近想使用OpenCV 和ROS实现点云的拼接,实现三维重建,那么在学习了kinect的基本的使用方法以后我们知道,直接使用ROS 的包即可得到点云,深度图,rgb图等信息,   roslaunch openni_launch openni.launch(深度图彩色图,还有点云都获取了) rosrun openni_camera...

  • 第二章  配置开发环境...

  • 文章目录1. 编译前基本环境准备2. 编译 及 导入 Intellij IDEA3. Zookeeper 运行环境配置...

  • 查看环境变量 查看某一环境变量:比如我们需要查看HOME这个环境变量,我们可以在shell下直接输入echo $HOME 我们可以把所有的环境变量和环境变量的值都打印出来 打印环境变量 libc中定义的全局变量environ指向环境变量表,environ没有包含在任何头文件中,所以 在使用时 要用extern声明...

  •  step1: 安装虚拟环境: sudo pip3 install virtualenv # 安装虚拟环境sudo pip3 install virtualenvwrapper # 安装虚拟环境扩展包# 编辑家目录下的 .bashrc 文件,在最下面添加下面三行代码   export WORKON_HOME=$HOME/...

  • 学习到javascript的运行机制时,有几个概念经常出现在各种文章中且容易混淆。Execution Context(执行环境或执行上下文),Context Stack (执行栈),Variable Object(VO: 变量对象),Active Object(AO: 活动对象),LexicalEnvironment(词法环境),V...

  • nan 是not a number ,inf是无穷大 numpy.nan_to_num(x): 使用0代替数组x中的nan元素,使用有限的数字代替inf元素...

  • 简介 Simple Reference  基础CUDA示例,适用于初学者, 反映了运用CUDA和CUDA runtime APIs的一些基本概念.Utilities Reference  演示如何查询设备能力和衡量GPU/CPU 带宽的实例程序。Graphics Reference  图形化示例展现的是 CUDA, OpenGL,...

  • 在做开发的过程中难免需要给内核及下载的一些源码打补丁,所以我们先学习下Linux下使用如如何使用diff制作补丁以及如何使用patch打补丁。...

  • 我在调研ATS 4.2.3挂载SSD的过程中,遇到很多坑,特此详细记录我摸索的主要过程,以便大家以后避免之。 基本思路可以完全照搬参考文献[2][3] 下面的安装假定是以root用户身份进行的,Linux服务器已经安装好系统,磁盘已经做好分区。 首先需要认识我们的Linux服务器的硬件配置和软件情况 硬件配置: DELL...

  • 该博文整理一些在使用stl编程过程中遇到的小经验: 1.在多线程环境下面打印调试,如何使用cout及时刷新到屏幕上? 在C中我们经常这样使用: printf("Hello World "); fflush(stdout); 如果使用stl,我们可以这样使用: cout << "Hello World" << endl <...