课程采用理论讲授和云端实践相结合的方式进行,具体如下:

网页版系统演示(课程网址:https://www.shiyanlou.com/courses/854):

手机端直接观看:

----申请表----

xxxxxx新开公共选修课申请表

教学单位

(填负责审核的单位)

xxxx学院

课程名称

ROS机器人高效

编程

总学时

30

学分

2学分

课程编号

课程类型

□人文社科类   □艺术类   √科学技术类   □经济管理类    □创新创业类

选课对象

全校本科生

先修课程要求

教材或参考书

《ROS机器人高效编程》(原书第3版) 机械工业出版社 2017

课程简介(不少于300字):

本课程包含实际动手操作的示例,帮助学生快速入门开发机器人程序,并提供使用开源ROS库和工具的完整解决方案。本课程还介绍如何使用虚拟机和Docker容器来简化Ubuntu和ROS框架的安装,可以在隔离和可控的环境中开始工作,而无须更改常规的计算机设置。

本课程首先介绍ROS的安装和基本概念,然后讲述ROS支持的更复杂的模块,如传感器和执行器集成模块(驱动程序)、导航和地图构建模块(创建自主移动机器人)、操作模块、计算机视觉模块、3D感知模块等。完成本课程后,将能够使用ROS Kinetic的全部功能来设计和开发一个满足个性需求的功能齐全的机器人。

课程内容包括:

1.   ROS的概念、命令行工具、可视化GUI以及如何调试ROS

2.   如何将机器人传感器和执行器连接到ROS

3.   如何从摄像头和3D传感器获取数据并分析数据

4.   如何在机器人/传感器和环境仿真中使用Gazebo

5.   如何设计机器人和如何使其构建环境地图、自主导航,以及在环境中使用MoveIt!操作物体

6.   如何使用OpenCV 3.0为机器人添加视觉功能

7.   如何使用最新版本的PCL向机器人添加3D感知功能

课程团队教师基本情况(可增加行)

任课

教师1

姓名

专业技术职务

学历/学位

高校教龄

14

是否具有教师资格证

系统独立讲授过的课程名称

电路、模拟电子技术、现代检测技术、电气与电子CAD,机器人概论

任课

教师2

姓名

专业技术职务

学历/学位

高校教龄

10

是否具有教师资格证

系统独立讲授过的课程名称

电子电子学

电路分析基础

控制器编程基础

任课

教师3

姓名

专业技术职务

学历/学位

高校教龄

2

是否具有教师资格证

系统独立讲授过的课程名称

机器人系统设计与控制技术、单片机技术理论与实践、现代控制理论、计算机控制技术、专业工具软件及应用

任课

教师4

姓名

专业技术职务

学历/学位

高校教龄

2

是否具有教师资格证

系统独立讲授过的课程名称

数字电子技术

单片机原理及应用

DSP原理及应用

数字信号处理

微机原理及接口技术

课程团队教师教学简要情况:

课程团队成员多年从事机器人方向教学与研究工作,于2016年获批《机器人与人工智能》优质公选课建设项目,包含《机器人概论》、《机器人创新实践与竞赛》、《智能科学发展史》、《ROS机器人编程基础与实践》、《人机交互技术赏践》、《图像处理与机器视觉技术赏践》等课程,目前毕博网络课程已经初步建设并开始使用。

申请人所在单位推荐意见

推荐意见:

(单位盖章)            负责人签字:              年    月    日

课程学科所在单位审核意见

审核意见:

(单位盖章)            负责人签字:              年    月    日

注:

1.选课对象:请明确描述选课学生类型,比如全校本科生、除xx专业学生。

2.新开课程除提交本表外,还需另附课程教学大纲、教案(部分章节)、教学进度表及参考资料目录。

3.若申请人所在单位与课程学科所在单位一致,只需在“课程学科所在单位审核情况”栏下填写审核意见。

4.如申请课程为开放性实验,请在课程名称后备注。例:**课程(开放性实验)。

5.创新创业类公共选修课需到经济与管理学院审核。

6.此表分别在申请人所在单位和课程学科所在单位留存1份,存档备查。

----公共选修课教学大纲----

《ROS机器人高效编程》

课程编号:

学    分:2

学    时:30(其中:讲课学时:30      实验学时:0       上机学时:0    )

选课对象:全校本科生

先修课程要求:无

建议教材:《ROS机器人高效编程》(原书第3版) 机械工业出版社 2017

开课单位:电气与自动化工程学院

一、课程的教学目的

 

本课程包含实际动手操作的示例,帮助学生快速入门开发机器人程序,并提供使用开源ROS库和工具的完整解决方案。本课程还介绍如何使用虚拟机和Docker容器来简化Ubuntu和ROS框架的安装,可以在隔离和可控的环境中开始工作,而无须更改常规的计算机设置。

本课程首先介绍ROS的安装和基本概念,然后讲述ROS支持的更复杂的模块,如传感器和执行器集成模块(驱动程序)、导航和地图构建模块(创建自主移动机器人)、操作模块、计算机视觉模块、3D感知模块等。完成本课程后,将能够使用ROS Kinetic的全部功能来设计和开发一个满足个性需求的功能齐全的机器人。

课程内容包括:

1.    ROS的概念、命令行工具、可视化GUI以及如何调试ROS

2.    如何将机器人传感器和执行器连接到ROS

3.    如何从摄像头和3D传感器获取数据并分析数据

4.    如何在机器人/传感器和环境仿真中使用Gazebo

5.    如何设计机器人和如何使其构建环境地图、自主导航,以及在环境中使用MoveIt!操作物体

6.    如何使用OpenCV 3.0为机器人添加视觉功能

7.    如何使用最新版本的PCL向机器人添加3D感知功能

二、课程的主要内容及学时分配

 

章节名称

主要内容

学时

第1章 ROS入门

机器人操作系统安装、虚拟机、Docker、嵌入式系统

2

第2章 ROS架构及概念

机器人操作系统文件系统级、计算图级、社区级、创建功能包并实现功能等

4

第3章 可视化和调试工具

调试ROS节点、日志消息、检测系统状态、设置动态参数、roswtf、可视化节点诊断、绘制标量数据图、图像可视化、3D可视化、保存与回放数据、插件

4

第4章 3D建模与仿真

自定义机器人3D模型,创建一个URDF文件、xacro文件、ROS仿真

4

第5章 导航功能包入门

创建变换、发布传感器消息、里程数据信息、创建基础控制器、创建地图

4

第6章 导航功能包进阶

机器人配置、全局和局部代价地图、rviz详细配置、自适应蒙特卡洛定位,避障,目标发送

4

第7章 使用MoveIt!

机械臂、体系结构、简单运动规划、抓取放置任务

2

第8章 在ROS下使用传感器

使用游戏手柄、使用RGBD传感器

4

第9章 计算机视觉

ROS摄像头驱动、ROS与OpenCV库、标定摄像头、视觉里程计

2

第10章 点云

点云库、可视化点云、滤波和缩减采样、配准与匹配、点云分区

2

 

三、教学方法及手段

1、本课程主要采用多媒体教学手段与虚拟实验室实践结合;

2、本课程采用大作业和实践考核形式,重点考查学生机器人相关知识的运用能力;

3、本课程使用的教材是机械工业出版社2017年出版,本书以机器人控制为主要内容,系统地介绍了机器人系统的结构原理、外设模块、示例程序和应用例程,同时配套有非常详细的网络资源和在线云系统实验平台。

四、课程考核办法

考核方式:考查(大作业+实践测评)

本课程的学生成绩由平时成绩实践成绩大作业三部分组成,其中平时成绩占总成绩的20%,实践成绩占总成绩的40%,大作业占总成绩的40%。

平时成绩由平时作业和出勤综合评定,其中平时作业分别占平时成绩的80%,出勤占平时成绩的20%。

五、参考书目

1 张建伟, 张立伟, 胡颖,等. 开源机器人操作系统----ROS[M]. 科学出版社, 2012.

2 马丁内斯, 费尔南德斯刘品杰. ROS机器人程序设计: Learning ROS forrobotics programming[M]. 机械工业出版社, 2014.

3Quigley M, Conley K, Gerkey B P, et al. ROS: an open-source Robot OperatingSystem[C]// ICRA Workshop on Open Source Software. 2009.

4 王之元, 周云, 易晓东,等. 机器人操作系统研究型课程建设[J]. 计算机教育, 2016,No.253(1):77-80.

5 肖军浩, 卢惠民, 薛小波,等. 将机器人操作系统(ROS)引入本科实践教学[J]. 科技创新导报,2016(22):157-158.

6 R.帕特里克・戈贝尔, 戈贝尔, 罗哈斯. ROS入门实例[M]. 中山大学出版社, 2016.

7 R.帕特里克・戈贝尔, 戈贝尔, 罗哈斯. ROS进阶实例[M]. 中山大学出版社, 2017.

8 李振伟. ROS入门与实战[M]. 中国矿业大学出版社, 2016.

9 恩里克·费尔南德斯等著,张瑞雷、刘锦涛译 ROS机器人程序设计(原书第2版)[M] 机械工业出版社 2016

10 杰森 M. 奥凯恩著 ; 肖军浩译 机器人操作系统浅析[M] 国防工业出版社 2016

11周兴社机器人操作系统ROS原理与应用[M] 机械工业出版社 2017

12郎坦·约瑟夫(Lentin Joseph)机器人系统设计与制作:Python语言实现[M] 机械工业出版社 2017

13何炳蔚,张立伟,张建伟 基于ROS的机器人理论与应用[M] 科学出版社 2017

14陈金宝 ROS开源机器人控制基础[M] 上海交通大学出版社 2016

15 卢惠民,肖军浩,郑志强 ROS与中型组足球机器人[M] 国防工业出版社 2016

16Wyatt Newman A Systematic Approach to Learning Robot Programming with ROS[M]Chapman and Hall/CRC 2017

17Lentin Joseph ROS Robotics Projects[M] Packt Publishing 2017

18 AnilMahtani, Aaron Martinez, Enrique Fernandez Perdomo, Luis Sánchez EffectiveRobotics Programming with ROS - Third Edition[M] Packt Publishing 2016

19Fairchild, Carol and Harman, Dr. Thomas ROS Robotics By Example[M] PacktPublishing 2016

20Quigley, Morgan and Gerkey, Brian and Smart, William D. Programming Robots withROS[M] O'Reilly Media 2015

21Lentin Joseph Learning Robotics using Python[M] Packt Publishing 2015

22Koubaa A. Robot Operating System (ROS) The Complete Reference (Volume 1) [M].Springer International Publishing, 2016.

23Koubaa A. Robot Operating System (ROS) The Complete Reference (Volume 2) [M].Springer International Publishing, 2017.

制定人:                                      制定日期:  2017年10月

 

----公共选修课教案----

ROS机器人高效编程课程教案

基本介绍

学    分:2

学    时:30(其中:讲课学时:30      实验学时:0       上机学时:0    )

选课对象:全校本科生

先修课程要求:无

建议教材:《ROS机器人高效编程》(原书第3版) 张瑞雷、刘锦涛 机械工业出版社 2017

 

课程的教学目的

本课程包含实际动手操作的示例,帮助学生快速入门开发机器人程序,并提供使用开源ROS库和工具的完整解决方案。本课程还介绍如何使用虚拟机和Docker容器来简化Ubuntu和ROS框架的安装,可以在隔离和可控的环境中开始工作,而无须更改常规的计算机设置。

本课程首先介绍ROS的安装和基本概念,然后讲述ROS支持的更复杂的模块,如传感器和执行器集成模块(驱动程序)、导航和地图构建模块(创建自主移动机器人)、操作模块、计算机视觉模块、3D感知模块等。完成本课程后,将能够使用ROS Kinetic的全部功能来设计和开发一个满足个性需求的功能齐全的机器人。

课程内容包括:

1.    ROS的概念、命令行工具、可视化GUI以及如何调试ROS

2.    如何将机器人传感器和执行器连接到ROS

3.    如何从摄像头和3D传感器获取数据并分析数据

4.    如何在机器人/传感器和环境仿真中使用Gazebo

5.    如何设计机器人和如何使其构建环境地图、自主导航,以及在环境中使用MoveIt!操作物体

6.    如何使用OpenCV 3.0为机器人添加视觉功能

7.    如何使用最新版本的PCL向机器人添加3D感知功能

 

 

 

课程的主要内容及学时分配

章节名称

主要内容

学时

第1章 ROS入门

机器人操作系统安装、虚拟机、Docker、嵌入式系统

2

第2章 ROS架构及概念

机器人操作系统文件系统级、计算图级、社区级、创建功能包并实现功能等

4

第3章 可视化和调试工具

调试ROS节点、日志消息、检测系统状态、设置动态参数、roswtf、可视化节点诊断、绘制标量数据图、图像可视化、3D可视化、保存与回放数据、插件

4

第4章 3D建模与仿真

自定义机器人3D模型,创建一个URDF文件、xacro文件、ROS仿真

4

第5章 导航功能包入门

创建变换、发布传感器消息、里程数据信息、创建基础控制器、创建地图

4

第6章 导航功能包进阶

机器人配置、全局和局部代价地图、rviz详细配置、自适应蒙特卡洛定位,避障,目标发送

4

第7章 使用MoveIt!

机械臂、体系结构、简单运动规划、抓取放置任务

2

第8章 在ROS下使用传感器

使用游戏手柄、使用RGBD传感器

4

第9章 计算机视觉

ROS摄像头驱动、ROS与OpenCV库、标定摄像头、视觉里程计

2

第10章 点云

点云库、可视化点云、滤波和缩减采样、配准与匹配、点云分区

2

 

教学方法及手段

1、本课程主要采用多媒体教学手段与虚拟实验室实践结合;

2、本课程采用大作业和实践考核形式,重点考查学生机器人相关知识的运用能力;

3、本课程使用的教材是机械工业出版社2017年出版,本书以机器人控制为主要内容,系统地介绍了机器人系统的结构原理、外设模块、示例程序和应用例程,同时配套有非常详细的网络资源和在线云系统实验平台。

 

课程考核办法

考核方式:考查(大作业+实践测评)

本课程的学生成绩由平时成绩实践成绩大作业三部分组成,其中平时成绩占总成绩的20%,实践成绩占总成绩的40%,大作业占总成绩的40%。

平时成绩由平时作业和出勤综合评定,其中平时作业分别占平时成绩的80%,出勤占平时成绩的20%。

第一讲

章节名称

ROS入门

课程内容

机器人操作系统安装、虚拟机、Docker、嵌入式系统

授课学时

2

教学目标与要求

掌握ROS在操作系统上的安装与配置

难点与重点

机器人操作系统安装与环境配置

教学手段

1 课堂多媒体,启发式教学

2 云端实验室环境

课时分配

机器人操作系统安装 50分钟、虚拟机15分钟、Docker 15分钟、嵌入式系统20分钟

教学内容

安装并配置ROS环境

简介: 本教程详细描述了ROS的安装与环境配置。

1 安装ROS

在开始学习这些教程之前请先按照ROS安装说明完成安装,在线环境中实验楼已安装了ROS。

如需本地安装,请参考安装文档。

注意: 如果你是使用类似apt这样的软件管理器来安装ROS的,那么安装后这些软件包将不具备写入权限,当前系统用户比如你自己也无法对这些软件包进行修改编辑。当你的开发涉及到ROS软件包源码层面的操作或者在创建一个新的ROS软件包时,你应该是在一个具备读写权限的目录下工作,就像在你当前系统用户的home目录下一样。

2 管理环境

在安装ROS期间,你会看到提示说需要 source 多个 setup.*sh 文件中的某一个,或者甚至提示添加这条source命令到你的启动脚本里面。这些操作是必须的,因为ROS是依赖于某种组合空间的概念,而这种概念就是通过配置脚本环境来实现的。这可以让针对不同版本或者不同软件包集的开发更加容易。

如需深入了解,请参考环境变量。

如果你在查找和使用ROS软件包方面遇到了问题,请确保你已经正确配置了脚本环境。一个检查的好方法是确保你已经设置了像ROS_ROOT和ROS_PACKAGE_PATH这样的环境变量,可以通过以下命令查看:

$ export | grep ROS

或者

$ printenv | grep ROS

如果发现没有配置,那这个时候你就需要source某些setup.*sh文件了。

ROS会帮你自动生成这些setup.*sh文件,通过以下方式生成并保存在不同地方。

通过类似apt的软件包管理器安装ROS软件包时会生成setup.*sh文件。

在rosbuild workspaces中通过类似rosws的工具生成。

在编译 或 安装 catkin 软件包时自动生成。

注意: 在所有教程中你将会经常看到分别针对rosbuild 和 catkin的不同操作说明,这是因为目前有两种不同的方法可以用来组织和编译ROS应用程序。一般而言,rosbuild比较简单也易于使用,而catkin使用了更加标准的CMake规则,所以比较复杂,但是也更加灵活,特别是对于那些想整合外部现有代码或者想发布自己代码的人。关于这些如果你想了解得更全面请参阅catkin或者rosbuild。

如果你是通过 ubuntu 上的 apt 工具来安装 ROS 的,那么你将会在/opt/ros/<distro>/目录中看到setup.*sh文件,然后你可以执行下面的source命令:

$ source /opt/ros/<distro>/setup.zsh

请使用具体的ROS发行版名称代替<distro>。

比如你安装的是ROS Indigo,则上述命令改为:

$ source /opt/ros/indigo/setup.zsh

在每次打开终端时你都需要先运行上面这条命令后才能运行ros相关的命令,为了避免这一繁琐过程,你可以事先在.bashrc文件(初学者请注意:该文件是在当前系统用户的home目录下。)中添加这条命令,这样当你每次登录后系统已经帮你执行这些命令配置好环境。这样做也可以方便你在同一台计算机上安装并随时切换到不同版本的ROS(比如fuerte和groovy)。

此外,你也可以在其它系统平台上相应的ROS安装目录下找到这些setup.*sh文件。

3 创建ROS工作空间

catkin

这些操作方法只适用于ROS Groovy及后期版本,对于ROS Fuerte及早期版本请选择rosbuild。

下面我们开始创建一个catkin 工作空间:

$ mkdir -p ~/catkin_ws/src

$ cd ~/catkin_ws/src

即使这个工作空间是空的(在'src'目录中没有任何软件包,只有一个CMakeLists.txt链接文件),你依然可以编译它:

$ cd ~/catkin_ws/

$ catkin_make

catkin_make命令在catkin工作空间中是一个非常方便的工具。如果你查看一下当前目录应该能看到'build'和'devel'这两个文件夹。在'devel'文件夹里面你可以看到几个setup.*sh文件。source这些文件中的任何一个都可以将当前工作空间设置在ROS工作环境的最顶层,想了解更多请参考catkin文档。接下来首先source一下新生成的setup.*sh文件:

$ source devel/setup.zsh

要想保证工作空间已配置正确需确保ROS_PACKAGE_PATH环境变量包含你的工作空间目录,采用以下命令查看:

$ echo $ROS_PACKAGE_PATH

/home/<youruser>/catkin_ws/src:/opt/ros/indigo/share:/opt/ros/indigo/stacks

到此你的工作环境已经搭建完成,接下来可以继续学习 ROS文件系统教程。

4 探索

在home文件夹下已经有ros_ws工作区,可以看看其中的文件和上面创建的有哪些不同和相同之处。

作业

在云端系统完成报告

教学小结

教学过程可以更加生动并突出趣味性

第四讲

章节名称

可视化和调试工具

课程内容

调试ROS节点、日志消息、检测系统状态、设置动态参数、roswtf、可视化节点诊断、绘制标量数据图、图像可视化、3D可视化、保存与回放数据、插件

授课学时

4

教学目标与要求

掌握ROS基本使用

难点与重点

机器人操作系统基本调试与工具使用

教学手段

1 课堂多媒体,启发式教学

2 云端实验室环境

教学内容

录制与回放数据

简介: 本教程将教你如何将ROS系统运行过程中的数据录制到一个.bag文件中,然后通过回放数据来重现相似的运行过程。

关键: data, rosbag, record, play, info, bag

相关资料:录制与回放数据

1 录制数据(通过创建一个bag文件)

本小节将教你如何记录ROS系统运行时的话题数据,记录的话题数据将会累积保存到bag文件中。

首先,执行以下命令:

$ roscore

$ rosrun turtlesim turtlesim_node

$ rosrun turtlesim turtle_teleop_key

以上操作将会启动两个节点——一个turtlesim可视化节点和一个turtlesim键盘控制节点。在运行turtlesim键盘控制节点的终端窗口中你应该会看到如下类似信息:

Reading from keyboard

---------------------------

Use arrow keys to move the turtle.

这时按下键盘上的方向键应该会让turtle运动起来。需要注意的是要想控制turtle运动你必须先选中启动turtlesim键盘控制节点时所在的终端窗口而不是显示虚拟turtle所在的窗口。

1.1 录制所有发布的话题

首先让我们来检查看当前系统中发布的所有话题。要完成此操作请打开一个新终端并执行:

$ rostopic list -v

这应该会生成以下输出:

Published topics:

* /turtle1/color_sensor [turtlesim/Color] 1 publisher

* /turtle1/command_velocity [turtlesim/Velocity] 1 publisher

* /rosout [roslib/Log] 2 publishers

* /rosout_agg [roslib/Log] 1 publisher

* /turtle1/pose [turtlesim/Pose] 1 publisher

Subscribed topics:

* /turtle1/command_velocity [turtlesim/Velocity] 1 subscriber

* /rosout [roslib/Log] 1 subscriber

上面所发布话题部分列出的话题消息是唯一可以被录制保存到文件中的的话题消息,因为只有消息已经发布了才可以被录制。/turtle1/command_velocity话题是 teleop_turtle 节点所发布的命令消息并作为 turtlesim 节点的输入。而/turtle1/color_sensor和/turtle1/pose是 turtlesim 节点发布出来的话题消息。

现在我们开始录制。打开一个新的终端窗口,在终端中执行以下命令:

$ mkdir ~/bagfiles

$ cd ~/bagfiles

$ rosbag record -a

在这里我们先建立一个用于录制的临时目录,然后在该目录下运行 rosbag record 命令,并附加 -a 选项,该选项表示将当前发布的所有话题数据都录制保存到一个bag文件中。

然后回到 turtle_teleop 节点所在的终端窗口并控制 turtle 随处移动10秒钟左右。

在运行 rosbag record 命令的窗口中按 Ctrl-C 退出该命令。现在检查看 ~/bagfiles 目录中的内容,你应该会看到一个以年份、日期和时间命名并以 .bag 作为后缀的文件。这个就是 bag 文件,它包含 rosbag record 运行期间所有节点发布的话题。

2 检查并回放 bag 文件

现在我们已经使用 rosbag record 命令录制了一个 bag 文件,接下来我们可以使用 rosbag info 检查看它的内容,使用 rosbag play 命令回放出来。接下来我们首先会看到在 bag 文件中都录制了哪些东西。我们可以使用 info 命令,该命令可以检查看 bag 文件中的内容而无需回放出来。在 bag 文件所在的目录下执行以下命令:

$ rosbag info <your bagfile>

你应该会看到如下类似信息:

bag: 2009-12-04-15-02-56.bag

version: 1.2

start_time: 1259967777871383000

end_time: 1259967797238692999

length: 19367309999

topics:

- name: /rosout

count: 2

datatype: roslib/Log

md5sum: acffd30cd6b6de30f120938c17c593fb

- name: /turtle1/color_sensor

count: 1122

datatype: turtlesim/Color

md5sum: 353891e354491c51aabe32df673fb446

- name: /turtle1/command_velocity

count: 23

datatype: turtlesim/Velocity

md5sum: 9d5c2dcd348ac8f76ce2a4307bd63a13

- name: /turtle1/pose

count: 1121

datatype: turtlesim/Pose

md5sum: 863b248d5016ca62ea2e895ae5265cf9

这些信息告诉你 bag 文件中所包含话题的名称、类型和消息数量。我们可以看到,在之前使用 rostopic 命令查看到的五个已公告的话题中,其实只有其中的四个在我们录制过程中发布了消息。因为我们带 -a 参数选项运行 rosbag record 命令时系统会录制下所有节点发布的所有消息。

下一步是回放 bag 文件以再现系统运行过程。首先在 turtle_teleop_key 节点运行时所在的终端窗口中按 Ctrl+C 退出该节点。让 turtlesim 节点继续运行。在终端中 bag 文件所在目录下运行以下命令:

$ rosbag play <your bagfile>

在这个窗口中你应该会立即看到如下类似信息:

Hit space to pause.

[ INFO] 1260210510.566003000: Sleeping 0.200 seconds after advertising /rosout...

[ INFO] 1260210510.766582000: Done sleeping.

[ INFO] 1260210510.872197000: Sleeping 0.200 seconds after advertising /turtle1/pose...

[ INFO] 1260210511.072384000: Done sleeping.

[ INFO] 1260210511.277391000: Sleeping 0.200 seconds after advertising /turtle1/color_sensor...

[ INFO] 1260210511.477525000: Done sleeping.

默认模式下,rosbag play 命令在公告每条消息后会等待一小段时间(0.2秒)后才真正开始发布bag文件中的内容。等待一段时间的过程可以通知消息订阅器消息已经公告了消息数据可能会马上到来。如果 rosbag play 在公告消息后立即发布,订阅器可能会接收不到几条最先发布的消息。等待时间可以通过 -d 选项来指定。

最终/turtle1/command_velocity话题将会被发布,同时在turtuelsim虚拟画面中turtle应该会像之前你通过turtle_teleop_key节点控制它一样开始移动。从运行rosbag play到turtle开始移动时所经历时间应该近似等于之前在本教程开始部分运行rosbag record后到开始按下键盘发出控制命令时所经历时间。你可以通过-s参数选项让rosbag play命令等待一段时间跳过bag文件初始部分后再真正开始回放。最后一个可能比较有趣的参数选项是-r选项,它允许你通过设定一个参数来改变消息发布速率。如果你执行:

$ rosbag play -r 2 <your bagfile>

你应该会看到turtle的运动轨迹有点不同了,这时的轨迹应该是相当于当你以两倍的速度通过按键发布控制命令时产生的轨迹。

3 录制数据子集

当运行一个复杂的系统时,比如PR2软件系统,会有几百个话题被发布,有些话题会发布大量数据(比如包含摄像头图像流的话题)。在这种系统中,要想把所有话题都录制保存到硬盘上的单个bag文件中是不切实际的。rosbag record命令支持只录制某些特别指定的话题到单个bag文件中,这样就允许用户只录制他们感兴趣的话题。

如果还有turtlesim节点在运行,先退出他们,然后重新启动(relaunch)键盘控制节点相关的启动文件(launch file):

$ rosrun turtlesim turtlesim_node

$ rosrun turtlesim turtle_teleop_key

在bag文件所在目录下执行以下命令:

$ rosbag record -O subset /turtle1/cmd_vel /turtle1/pose

上述命令中的-O参数告诉rosbag record将数据记录保存到名为subset.bag的文件中,同时后面的话题参数告诉rosbag record只能录制这两个指定的话题。然后通过键盘控制turtle随处移动几秒钟,最后按Ctrl+C退出rosbag record命令。

现在检查看bag文件中的内容(rosbag info subset.bag)。你应该会看到如下类似信息,里面只包含录制时指定的话题:

bag: subset.bag

version: 1.2

start_time: 3196900000000

end_time: 3215400000000

length: 18500000000

topics:

- name: /turtle1/command_velocity

count: 8

datatype: turtlesim/Velocity

md5sum: 9d5c2dcd348ac8f76ce2a4307bd63a13

- name: /turtle1/pose

count: 1068

datatype: turtlesim/Pose

md5sum: 863b248d5016ca62ea2e895ae5265cf9

4 rosbag record/play 命令的局限性

在前述部分中你可能已经注意到了turtle的路径可能并没有完全地映射到原先通过键盘控制时产生的路径上——整体形状应该是差不多的,但没有完全一样。造成该问题的原因是turtlesim的移动路径对系统定时精度的变化非常敏感。rosbag受制于其本身的性能无法完全复制录制时的系统运行行为,rosplay也一样。对于像turtlesim这样的节点,当处理消息的过程中系统定时发生极小变化时也会使其行为发生微妙变化,用户不应该期望能够完美的模仿系统行为。

现在你已经学会了如何录制和回放数据,接下来我们开始学习如何使用 roswtf来检查系统故障。

作业

在云端系统完成报告

教学小结

教学过程可以更加生动并突出趣味性

----教学进度表----

每周         2      学时

学分         2      学分

讲课         30    学时

实验                 学时

机动                 学时

总共          30   学时

考核形式  

教 学 进 度 表

2017        ~2018          学年度第      二    学期

课程名称:ROS机器人高效编程

任课教师:

授课班级:全校公共选修课

教学院长(签名)

周次

起止日期

讲课内容分章和分节的名称

课时数

习题、实验、设计、实践或科学实验名称

课时数

1

3月5日

-3月9日

第1章 ROS入门

2

机器人操作系统安装、虚拟机、Docker、嵌入式系统

2

3月12日

-3月16日

第2章 ROS架构及概念

2

机器人操作系统文件系统级、计算图级、社区级、创建功能包并实现功能等

3

3月19日

-3月23日

第2章 ROS架构及概念

2

机器人操作系统文件系统级、计算图级、社区级、创建功能包并实现功能等

4

3月26日

-3月30日

第3章 可视化和调试工具

2

调试ROS节点、日志消息、检测系统状态、设置动态参数、roswtf、可视化节点诊断、绘制标量数据图、图像可视化、3D可视化、保存与回放数据、插件

5

4月2日

-4月6日

第3章 可视化和调试工具

2

调试ROS节点、日志消息、检测系统状态、设置动态参数、roswtf、可视化节点诊断、绘制标量数据图、图像可视化、3D可视化、保存与回放数据、插件

6

4月9日

-4月13日

第4章 3D建模与仿真

2

自定义机器人3D模型,创建一个URDF文件、xacro文件、ROS仿真

7

4月16日

-4月20日

第4章 3D建模与仿真

2

自定义机器人3D模型,创建一个URDF文件、xacro文件、ROS仿真

8

4月23日

-4月27日

第5章 导航功能包入门

2

创建变换、发布传感器消息、里程数据信息、创建基础控制器、创建地图

9

4月30日

-5月5日

第5章 导航功能包入门

2

创建变换、发布传感器消息、里程数据信息、创建基础控制器、创建地图

10

5月7日

-5月11日

第6章 导航功能包进阶

2

机器人配置、全局和局部代价地图、rviz详细配置、自适应蒙特卡洛定位,避障,目标发送

11

5月14日

-5月18日

第6章 导航功能包进阶

2

机器人配置、全局和局部代价地图、rviz详细配置、自适应蒙特卡洛定位,避障,目标发送

12

5月21日

-5月25日

第7章 使用MoveIt!

2

机械臂、体系结构、简单运动规划、抓取放置任务

13

5月28日

-6月1日

第8章 在ROS下使用传感器

2

使用游戏手柄、使用RGBD传感器

14

6月4日

-6月8日

第9章 计算机视觉

2

ROS摄像头驱动、ROS与OpenCV库、标定摄像头、视觉里程计

15

6月11日

-6月15日

第10章 点云

2

点云库、可视化点云、滤波和缩减采样、配准与匹配、点云分区

2017年10月

----公选课参考资料----

参考资料目录:

1 张建伟, 张立伟, 胡颖,等. 开源机器人操作系统----ROS[M]. 科学出版社, 2012.

2 马丁内斯, 费尔南德斯刘品杰.ROS机器人程序设计:Learning ROS for robotics programming[M]. 机械工业出版社, 2014.

3 Quigley M, Conley K, Gerkey B P, et al.ROS: an open-source Robot Operating System[C]// ICRA Workshop on Open SourceSoftware. 2009.

4 王之元, 周云,易晓东,等.机器人操作系统研究型课程建设[J].计算机教育,2016, No.253(1):77-80.

5 肖军浩, 卢惠民,薛小波,等.将机器人操作系统(ROS)引入本科实践教学[J].科技创新导报,2016(22):157-158.

6 R.帕特里克・戈贝尔,戈贝尔,罗哈斯.ROS入门实例[M].中山大学出版社,2016.

7 R.帕特里克・戈贝尔,戈贝尔,罗哈斯.ROS进阶实例[M].中山大学出版社,2017.

8 李振伟. ROS入门与实战[M].中国矿业大学出版社,2016.

9 恩里克·费尔南德斯等著,张瑞雷、刘锦涛译ROS机器人程序设计(原书第2版)[M]机械工业出版社2016

10 杰森 M. 奥凯恩著; 肖军浩译 机器人操作系统浅析[M]国防工业出版社2016

11周兴社机器人操作系统ROS原理与应用[M]机械工业出版社2017

12郎坦·约瑟夫(LentinJoseph)机器人系统设计与制作:Python语言实现[M]机械工业出版社2017

13何炳蔚,张立伟,张建伟 基于ROS的机器人理论与应用[M]科学出版社2017

14陈金宝 ROS开源机器人控制基础[M]上海交通大学出版社2016

15 卢惠民,肖军浩,郑志强 ROS与中型组足球机器人[M]国防工业出版社2016

16 Wyatt Newman A Systematic Approach toLearning Robot Programming with ROS[M]Chapman and Hall/CRC 2017

17 Lentin Joseph ROS Robotics Projects[M] Packt Publishing 2017

18 Anil Mahtani, Aaron Martinez, EnriqueFernandez Perdomo, Luis Sánchez Effective Robotics Programming with ROS - ThirdEdition[M] PacktPublishing 2016

19 Fairchild, Carol and Harman, Dr. ThomasROS Robotics By Example[M]Packt Publishing 2016

20 Quigley, Morgan and Gerkey, Brian andSmart, William D. Programming Robots with ROS[M] O'Reilly Media 2015

21 Lentin Joseph Learning Robotics usingPython[M] PacktPublishing 2015

22 Koubaa A. Robot Operating System (ROS)The Complete Reference (Volume 1) [M]. Springer International Publishing, 2016.

23 Koubaa A. Robot Operating System (ROS)The Complete Reference (Volume 2) [M]. Springer International Publishing, 2017.

----

大学机器人类公选课(ROS机器人高效编程)申请表、大纲、部分教案、进度表等材料分享相关推荐

  1. ROS机器人高效编程(原书第3版)勘误、问题及资料汇总

    ROS机器人高效编程(原书第3版)勘误.问题及资料汇总--持续更新 如果小伙伴发现书中错误,恳请批评指正,非常感谢.勘误在文末. 补充一行代码装ROS,适用于14.04LTS(indigo)和16.0 ...

  2. 机器人控制器编程课程大纲(Arduino+ROS+IoT+SLAM……)2019-2020-1

    补充说明:很多中小学已经开设了此类课程(需要预习哦): 面向中小学的Arduino机器人课程 全国青少年机器人等级考试1-6级大纲下载链接: 链接:https://pan.baidu.com/s/1M ...

  3. ROS机器人程序设计部分大纲-适用于蓝桥云课及ROS1 KINETIC/MELODIC/NOETIC

    ROS机器人程序设计 ROS robot programming 课程编号 16300021 学分 3 开课学期 6 学时 讲课:32学时      实验:16 学时       实践:0学时 课程类 ...

  4. 如何在机器人工程培养方案中实现全栈ROS机器人工程师课程规划总结篇(2021之1024)

    历经7年不断迭代和失败,现将经历和教训总结一下. 科研.社会以及毕业设计等工作不列. 学年 学期 开课学院 课程代码 课程名称 课程性质 总学时 计划总学时 学分 教学班 教学班组成 起始结束周 选课 ...

  5. 蓝桥云课ROS机器人发布5年啦(原实验楼ROS机器人在线云实践课程)

    在2017年春开发了这款课程,到2022年春已经5年了,并在近期逐步在博客公开了课程的扩展功能.当然这些工作都在2019年之前完成测试工作,后续全力转入ROS2课程及其相关应用型课程中. 感谢易科机器 ...

  6. Python教你18个高效编程的方法

    Python真的是满足了我上学时候对编程语言的所有要求,怎么会有人还不知道Python18个高效编程的技巧.Python语言的高级编程技巧满足了我大学时对编程语言的所有要求,用过的应该都喜欢,终于从C ...

  7. ROS机器人星火计划公开课总结

    非常荣幸参加了两次星火计划公开课(上海站), 感谢NXROBO.EXBOT以及所有支持ROS机器人星火计划的小伙伴们. ----废话开始,与课程总结无关,可跳过---- 在国内20多年的求学生涯以及2 ...

  8. ROS机器人程序设计(原书第2版).

    机器人设计与制作系列 ROS机器人程序设计 (原书第2版) Learning ROS for Robotics Programming,Second Edition 恩里克·费尔南德斯(Enrique ...

  9. 发展型机器人:由人类婴儿启发的机器人. 2.3 类人婴儿机器人

    2.3  类人婴儿机器人 发展型机器人技术的研究诞生于21世纪初,它引发了各种类人婴儿机器人的研究和平台制造.伴随着更新型.更标准的类人成人机器人平台的研发,婴儿机器人也已经在一些发展型机器人研究中使 ...

  10. ROS机器人操作系统新发布软件包摘录--(2018.03)

    ROS机器人操作系统功能包摘录--(2018.04) 可以编译并改进源码用于公选课研究论文的提交(适用本科一年级-三年级,专业不限). VisioTec ROS软件包 1 https://wiki.r ...

最新文章

  1. (十二) 完整注释的代码摘录
  2. Javascript 未结束的字符串常量
  3. Apiggs —— 非侵入性的 RestDoc 文档生成工具
  4. java json 转map_Java对接Omni/USDT教程「OmniTool.Java」
  5. linux安全服务管理,Linux系统安全管理服务配置方法与技巧
  6. ios command
  7. java n*n矩阵求值及求逆矩阵
  8. MS sql server 基础知识回顾(二)-表连接和子查询
  9. average diffusion distance
  10. java的本质_Java线程本质
  11. Vensim建模--基于系统动力学的私人小汽车出行特征建模分析
  12. 计算机关于剪贴板的知识,如何打开电脑剪贴板图文教程
  13. Linux部署SSM项目
  14. spring-quartz表达式介绍
  15. 软件测试人才培养全景图新版本
  16. UG参数化建模代入ansys workbench进行优化设计的处理步骤
  17. Word2013论文的目录和页眉页脚设置
  18. #业余学习 java基础
  19. Python CNN卷积神经网络实例讲解,CNN实战,CNN代码实例,超实用
  20. Spark1.5.2伪分布安装

热门文章

  1. 使用LitePal查询数据
  2. Pytorch 多GPU数据并行(DataParallel)
  3. sqlyog证书秘钥(注册码)
  4. 计算机初级基础知识教程,计算机基础知识教程 适合初学者的计算机入门知识...
  5. WebStorm 2018破解版
  6. 三码合一方法 制作QQ、微信、支付宝收款码合一
  7. 富士施乐打印机双面打印设置方法
  8. sublime开发apicloud项更新apploader解决
  9. Vue移动端项目模板h5
  10. 思科CISCO常用命令汇总