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,就可以通过方向键控制小龟方向了。


参考

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

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

  1. Udacity机器人软件工程师课程笔记(五)-样本搜索和找回-基于漫游者号模拟器-自主驾驶

    9.自主驾驶 在接下来的环节中,我们要实现漫游者号的自动驾驶功能. 完成这个功能我们需要四个程序,第一个为感知程序,其对摄像头输入的图片进行变换处理和坐标变换使用.第二个程序为决策程序,功能是帮助漫游 ...

  2. Udacity机器人软件工程师课程笔记(八)-ROS Turtlesim 包的相关命令

    Turtlesim 包的相关命令 这个部分包含五个子主题,分别是 列出所有活动节点 列出所有主题 获取有关主题的信息 显示消息信息 实时回应消息 1.列出所有的活动节点 为了获取所用的活动且向ROS ...

  3. Udacity机器人软件工程师课程笔记(十)-ROS-Catkin-包(package)和gazebo

    包和gazebo仿真 1.添加包 (1)克隆simple_arm包 克隆现有的包并将其添加到我们新创建的工作区. 首先导航到src目录,然后从其github仓库克隆本课程 simple_arm 的包. ...

  4. Udacity机器人软件工程师课程笔记(十六)-机械臂仿真控制实例(其一)-Gazebo、RViz和Moveit!

    机械臂仿真控制实例 目录 环境设置 项目工具介绍 Gazebo (1)Gazebo组件 (2)Gazebo界面 统一机器人描述格式(URDF) RViz Moveit! 1.环境设置 对于此项目,使用 ...

  5. Udacity机器人软件工程师课程笔记(十八)-机械臂仿真控制实例(其三)-KR210机械臂反向运动学

    机械臂仿真控制实例(其二)-KR210正向运动学 目录 反向运动学概述 为Kuka KR210创建IK解算器 1.反向运动学概述 KR210的最后三个关节是满足三个相邻的关节轴线在单点处相交的旋转关节 ...

  6. Udacity机器人软件工程师课程笔记(十二)-ROS-编写更复杂的ROS节点(arm_mover节点 和 look_away 节点)

    更复杂的ROS节点 1. Arm_mover节点 为了打好更好的基础,这是在Arm_mover节点还需要学习的内容 自定义消息生成 服务 参数 启动文件 为了理解上述内容,我们将编写另一个名为arm_ ...

  7. Udacity机器人软件工程师课程笔记(十一)-ROS-编写ROS节点

    编写ROS节点 1.ROS节点概述 simple_mover 只发布关节角度命令 simple_arm . 在了解用Python编写的ROS节点的一般结构之后,现在要编写另一个名为 arm_mover ...

  8. Udacity机器人软件工程师课程笔记(三十五) - SLAM - 基于网格的FastSLAM

    一.SLAM介绍 即使定位和建图问题(simultaneous localization and mapping),一般简称为SLAM, 也称作(Concurrent Mapping and Loca ...

  9. Udacity机器人软件工程师课程笔记(二十一) - 对点云进行集群可视化 - 聚类的分割 - K-means|K均值聚类, DBSCAN算法

    聚类的分割 1.K-均值聚类 (1)K-均值聚类介绍 k均值聚类算法(k-means clustering algorithm)是一种迭代求解的聚类分析算法,其步骤是随机选取K个对象作为初始的聚类中心 ...

最新文章

  1. 安装node.js 附带node.js以及npm初步认识 设置淘宝/npm镜像 命令
  2. 你还记得当初为什么进入IT行业吗?
  3. asp.net core 系列 18 web服务器实现
  4. Linux调度系统全景指南(中篇)
  5. elasticsearch5.3安装插件head
  6. 定义工作,解读自我——IT帮2019年2月线下活动回顾
  7. xposed获取context 的方法
  8. 演示辅助软件 ZoomIt 的使用
  9. 沙普利算法java实现_Java实现婚姻稳定匹配Gale- Shapley算法
  10. serialVersionUID详解
  11. android 关闭来电铃声,Android删除除自定义铃声后,来电铃声显示是一串数字
  12. Oracle账号怎么注销,qq账号如何永久注销?qq账号永久注销的条件以及详细操作方法...
  13. Error,java对常量池来说字符串xxx的UTF8表示过长
  14. 计算机主板现状及发展趋势论文,2020年计算机主板发展趋势分析 2020-2026年全球与中国计算机主板市场深度调研与发展趋势分析...
  15. 如何利用MATLAB对多项式进行计算?
  16. Asp.Net常见问题及技术实现方案(一)
  17. buck dcm占空比计算_如何计算BOOST转换器的占空比
  18. PHP 的输入与输出
  19. 如何找到SQL server数据库的数据源地址
  20. M102: MongoDB for DBAs chapter 4 replication学习记录

热门文章

  1. PASCAL VOC工具包解读
  2. 自兴人工智能——Python运算符和操作对象
  3. Go 学习笔记(9)— 循环(for、for range访问数组、切片、字符串和通道、goto、continue、break)
  4. 运算符及题目(2017.1.8)
  5. IOSUIcontrol事件
  6. 【SVN多用户开发】代码冲突解决办法
  7. GHOST还原教程详细
  8. yolact_ros出坑记录
  9. 刷题:二叉树的非递归遍历方式
  10. 方法 注释_注释模板导入操作方法