赞
踩
网页版系统演示(课程网址: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来检查系统故障。 |
作业 | 在云端系统完成报告 |
教学小结 | 教学过程可以更加生动并突出趣味性 |
----教学进度表----
|
教 学 进 度 表
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.
----
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。