大学机器人类公选课(ROS机器人高效编程)申请表、大纲、部分教案、进度表等材料分享
課程采用理論講授和云端實踐相結合的方式進行,具體如下:
網(wǎng)頁版系統(tǒng)演示(課程網(wǎng)址:https://www.shiyanlou.com/courses/854):
手機端直接觀看:
----申請表----
xxxxxx新開公共選修課申請表
教學單位 (填負責審核的單位) | xxxx學院 | 課程名稱 | ? ? ? ? ? ?ROS機器人高效 編程 | 總學時 | 30 | |||||||
學分 | 2學分 | 課程編號 | ? | |||||||||
課程類型 | □人文社科類?? □藝術類?? √科學技術類?? □經(jīng)濟管理類??? □創(chuàng)新創(chuàng)業(yè)類 | |||||||||||
選課對象 | 全校本科生 | 先修課程要求 | 無 | |||||||||
教材或參考書 | 《ROS機器人高效編程》(原書第3版) 機械工業(yè)出版社 2017 | |||||||||||
課程簡介(不少于300字): ? 本課程包含實際動手操作的示例,幫助學生快速入門開發(fā)機器人程序,并提供使用開源ROS庫和工具的完整解決方案。本課程還介紹如何使用虛擬機和Docker容器來簡化Ubuntu和ROS框架的安裝,可以在隔離和可控的環(huán)境中開始工作,而無須更改常規(guī)的計算機設置。 本課程首先介紹ROS的安裝和基本概念,然后講述ROS支持的更復雜的模塊,如傳感器和執(zhí)行器集成模塊(驅(qū)動程序)、導航和地圖構建模塊(創(chuàng)建自主移動機器人)、操作模塊、計算機視覺模塊、3D感知模塊等。完成本課程后,將能夠使用ROS Kinetic的全部功能來設計和開發(fā)一個滿足個性需求的功能齊全的機器人。 課程內(nèi)容包括: 1.?? ROS的概念、命令行工具、可視化GUI以及如何調(diào)試ROS 2.?? 如何將機器人傳感器和執(zhí)行器連接到ROS 3.?? 如何從攝像頭和3D傳感器獲取數(shù)據(jù)并分析數(shù)據(jù) 4.?? 如何在機器人/傳感器和環(huán)境仿真中使用Gazebo 5.?? 如何設計機器人和如何使其構建環(huán)境地圖、自主導航,以及在環(huán)境中使用MoveIt!操作物體 6.?? 如何使用OpenCV 3.0為機器人添加視覺功能 7.?? 如何使用最新版本的PCL向機器人添加3D感知功能 ? | ||||||||||||
課程團隊教師基本情況(可增加行) | ||||||||||||
任課 教師1 | 姓名 | 專業(yè)技術職務 | 學歷/學位 | |||||||||
高校教齡 | 14 | 是否具有教師資格證 | 是 | 系統(tǒng)獨立講授過的課程名稱 | 電路、模擬電子技術、現(xiàn)代檢測技術、電氣與電子CAD,機器人概論 | |||||||
任課 教師2 | 姓名 | 專業(yè)技術職務 | 學歷/學位 | |||||||||
高校教齡 | 10 | 是否具有教師資格證 | 是 | 系統(tǒng)獨立講授過的課程名稱 | 電子電子學 電路分析基礎 控制器編程基礎 | |||||||
任課 教師3 | 姓名 | 專業(yè)技術職務 | 學歷/學位 | |||||||||
高校教齡 | 2 | 是否具有教師資格證 | 是 | 系統(tǒng)獨立講授過的課程名稱 | 機器人系統(tǒng)設計與控制技術、單片機技術理論與實踐、現(xiàn)代控制理論、計算機控制技術、專業(yè)工具軟件及應用 | |||||||
任課 教師4 | 姓名 | 專業(yè)技術職務 | 學歷/學位 | |||||||||
高校教齡 | 2 | 是否具有教師資格證 | 是 | 系統(tǒng)獨立講授過的課程名稱 | 數(shù)字電子技術 單片機原理及應用 DSP原理及應用 數(shù)字信號處理 微機原理及接口技術 | |||||||
課程團隊教師教學簡要情況: ? 課程團隊成員多年從事機器人方向教學與研究工作,于2016年獲批《機器人與人工智能》優(yōu)質(zhì)公選課建設項目,包含《機器人概論》、《機器人創(chuàng)新實踐與競賽》、《智能科學發(fā)展史》、《ROS機器人編程基礎與實踐》、《人機交互技術賞踐》、《圖像處理與機器視覺技術賞踐》等課程,目前畢博網(wǎng)絡課程已經(jīng)初步建設并開始使用。 ? ? ? | ||||||||||||
申請人所在單位推薦意見 | 推薦意見: ?????????? ? ? ????????????????????????? ? (單位蓋章)??????????? 負責人簽字:????????????? 年??? 月??? 日 ? | |||||||||||
課程學科所在單位審核意見 | 審核意見: ?????????? ? ? ? ????????????????????????? ? (單位蓋章)? ??????????負責人簽字:????????????? 年??? 月??? 日 ? | |||||||||||
注:
1.選課對象:請明確描述選課學生類型,比如全校本科生、除xx專業(yè)學生。
2.新開課程除提交本表外,還需另附課程教學大綱、教案(部分章節(jié))、教學進度表及參考資料目錄。
3.若申請人所在單位與課程學科所在單位一致,只需在“課程學科所在單位審核情況”欄下填寫審核意見。
4.如申請課程為開放性實驗,請在課程名稱后備注。例:**課程(開放性實驗)。
5.創(chuàng)新創(chuàng)業(yè)類公共選修課需到經(jīng)濟與管理學院審核。
6.此表分別在申請人所在單位和課程學科所在單位留存1份,存檔備查。
----公共選修課教學大綱----
?
《ROS機器人高效編程》
課程編號:
學??? 分:2
學??? 時:30(其中:講課學時:30????? 實驗學時:0?????? 上機學時:0??? )
選課對象:全校本科生
先修課程要求:無
建議教材:《ROS機器人高效編程》(原書第3版) 機械工業(yè)出版社 2017
開課單位:電氣與自動化工程學院
?
一、課程的教學目的
?
本課程包含實際動手操作的示例,幫助學生快速入門開發(fā)機器人程序,并提供使用開源ROS庫和工具的完整解決方案。本課程還介紹如何使用虛擬機和Docker容器來簡化Ubuntu和ROS框架的安裝,可以在隔離和可控的環(huán)境中開始工作,而無須更改常規(guī)的計算機設置。
本課程首先介紹ROS的安裝和基本概念,然后講述ROS支持的更復雜的模塊,如傳感器和執(zhí)行器集成模塊(驅(qū)動程序)、導航和地圖構建模塊(創(chuàng)建自主移動機器人)、操作模塊、計算機視覺模塊、3D感知模塊等。完成本課程后,將能夠使用ROS Kinetic的全部功能來設計和開發(fā)一個滿足個性需求的功能齊全的機器人。
課程內(nèi)容包括:
1.??? ROS的概念、命令行工具、可視化GUI以及如何調(diào)試ROS
2.??? 如何將機器人傳感器和執(zhí)行器連接到ROS
3.??? 如何從攝像頭和3D傳感器獲取數(shù)據(jù)并分析數(shù)據(jù)
4.??? 如何在機器人/傳感器和環(huán)境仿真中使用Gazebo
5.??? 如何設計機器人和如何使其構建環(huán)境地圖、自主導航,以及在環(huán)境中使用MoveIt!操作物體
6.??? 如何使用OpenCV 3.0為機器人添加視覺功能
7.??? 如何使用最新版本的PCL向機器人添加3D感知功能
?
二、課程的主要內(nèi)容及學時分配
?
章節(jié)名稱 | 主要內(nèi)容 | 學時 |
第1章 ROS入門 | 機器人操作系統(tǒng)安裝、虛擬機、Docker、嵌入式系統(tǒng) | 2 |
第2章 ROS架構及概念 | 機器人操作系統(tǒng)文件系統(tǒng)級、計算圖級、社區(qū)級、創(chuàng)建功能包并實現(xiàn)功能等 | 4 |
第3章 可視化和調(diào)試工具 | 調(diào)試ROS節(jié)點、日志消息、檢測系統(tǒng)狀態(tài)、設置動態(tài)參數(shù)、roswtf、可視化節(jié)點診斷、繪制標量數(shù)據(jù)圖、圖像可視化、3D可視化、保存與回放數(shù)據(jù)、插件 | 4 |
第4章 3D建模與仿真 | 自定義機器人3D模型,創(chuàng)建一個URDF文件、xacro文件、ROS仿真 | 4 |
第5章 導航功能包入門 | 創(chuàng)建變換、發(fā)布傳感器消息、里程數(shù)據(jù)信息、創(chuàng)建基礎控制器、創(chuàng)建地圖 | 4 |
第6章 導航功能包進階 | 機器人配置、全局和局部代價地圖、rviz詳細配置、自適應蒙特卡洛定位,避障,目標發(fā)送 | 4 |
第7章 使用MoveIt! | 機械臂、體系結構、簡單運動規(guī)劃、抓取放置任務 | 2 |
第8章 在ROS下使用傳感器 | 使用游戲手柄、使用RGBD傳感器 | 4 |
第9章 計算機視覺 | ROS攝像頭驅(qū)動、ROS與OpenCV庫、標定攝像頭、視覺里程計 | 2 |
第10章 點云 | 點云庫、可視化點云、濾波和縮減采樣、配準與匹配、點云分區(qū) | 2 |
?
三、教學方法及手段
1、本課程主要采用多媒體教學手段與虛擬實驗室實踐結合;
2、本課程采用大作業(yè)和實踐考核形式,重點考查學生機器人相關知識的運用能力;
3、本課程使用的教材是機械工業(yè)出版社2017年出版,本書以機器人控制為主要內(nèi)容,系統(tǒng)地介紹了機器人系統(tǒng)的結構原理、外設模塊、示例程序和應用例程,同時配套有非常詳細的網(wǎng)絡資源和在線云系統(tǒng)實驗平臺。
?
四、課程考核辦法
考核方式:考查(大作業(yè)+實踐測評)
本課程的學生成績由平時成績、實踐成績和大作業(yè)三部分組成,其中平時成績占總成績的20%,實踐成績占總成績的40%,大作業(yè)占總成績的40%。
平時成績由平時作業(yè)和出勤綜合評定,其中平時作業(yè)分別占平時成績的80%,出勤占平時成績的20%。
?
?
?
五、參考書目
1 張建偉, 張立偉, 胡穎,等. 開源機器人操作系統(tǒng)----ROS[M]. 科學出版社, 2012.
2 馬丁內(nèi)斯, 費爾南德斯劉品杰. ROS機器人程序設計: Learning ROS forrobotics programming[M]. 機械工業(yè)出版社, 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 王之元, 周云, 易曉東,等. 機器人操作系統(tǒng)研究型課程建設[J]. 計算機教育, 2016,No.253(1):77-80.
5 肖軍浩, 盧惠民, 薛小波,等. 將機器人操作系統(tǒng)(ROS)引入本科實踐教學[J]. 科技創(chuàng)新導報,2016(22):157-158.
6 R.帕特里克?戈貝爾, 戈貝爾, 羅哈斯. ROS入門實例[M]. 中山大學出版社, 2016.
7 R.帕特里克?戈貝爾, 戈貝爾, 羅哈斯. ROS進階實例[M]. 中山大學出版社, 2017.
8 李振偉. ROS入門與實戰(zhàn)[M]. 中國礦業(yè)大學出版社, 2016.
9 恩里克·費爾南德斯等著,張瑞雷、劉錦濤譯 ROS機器人程序設計(原書第2版)[M] 機械工業(yè)出版社 2016
10 杰森 M. 奧凱恩著 ; 肖軍浩譯 機器人操作系統(tǒng)淺析[M] 國防工業(yè)出版社 2016
11周興社機器人操作系統(tǒng)ROS原理與應用[M] 機械工業(yè)出版社 2017
12郎坦·約瑟夫(Lentin Joseph)機器人系統(tǒng)設計與制作:Python語言實現(xiàn)[M] 機械工業(yè)出版社 2017
13何炳蔚,張立偉,張建偉 基于ROS的機器人理論與應用[M] 科學出版社 2017
14陳金寶 ROS開源機器人控制基礎[M] 上海交通大學出版社 2016
15 盧惠民,肖軍浩,鄭志強 ROS與中型組足球機器人[M] 國防工業(yè)出版社 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版) 張瑞雷、劉錦濤 機械工業(yè)出版社 2017 ? |
?
課程的教學目的 |
本課程包含實際動手操作的示例,幫助學生快速入門開發(fā)機器人程序,并提供使用開源ROS庫和工具的完整解決方案。本課程還介紹如何使用虛擬機和Docker容器來簡化Ubuntu和ROS框架的安裝,可以在隔離和可控的環(huán)境中開始工作,而無須更改常規(guī)的計算機設置。 本課程首先介紹ROS的安裝和基本概念,然后講述ROS支持的更復雜的模塊,如傳感器和執(zhí)行器集成模塊(驅(qū)動程序)、導航和地圖構建模塊(創(chuàng)建自主移動機器人)、操作模塊、計算機視覺模塊、3D感知模塊等。完成本課程后,將能夠使用ROS Kinetic的全部功能來設計和開發(fā)一個滿足個性需求的功能齊全的機器人。 課程內(nèi)容包括: 1.??? ROS的概念、命令行工具、可視化GUI以及如何調(diào)試ROS 2.??? 如何將機器人傳感器和執(zhí)行器連接到ROS 3.??? 如何從攝像頭和3D傳感器獲取數(shù)據(jù)并分析數(shù)據(jù) 4.??? 如何在機器人/傳感器和環(huán)境仿真中使用Gazebo 5.??? 如何設計機器人和如何使其構建環(huán)境地圖、自主導航,以及在環(huán)境中使用MoveIt!操作物體 6.??? 如何使用OpenCV 3.0為機器人添加視覺功能 7.??? 如何使用最新版本的PCL向機器人添加3D感知功能 ? |
?
?
課程的主要內(nèi)容及學時分配 | ||
章節(jié)名稱 | 主要內(nèi)容 | 學時 |
第1章 ROS入門 | 機器人操作系統(tǒng)安裝、虛擬機、Docker、嵌入式系統(tǒng) | 2 |
第2章 ROS架構及概念 | 機器人操作系統(tǒng)文件系統(tǒng)級、計算圖級、社區(qū)級、創(chuàng)建功能包并實現(xiàn)功能等 | 4 |
第3章 可視化和調(diào)試工具 | 調(diào)試ROS節(jié)點、日志消息、檢測系統(tǒng)狀態(tài)、設置動態(tài)參數(shù)、roswtf、可視化節(jié)點診斷、繪制標量數(shù)據(jù)圖、圖像可視化、3D可視化、保存與回放數(shù)據(jù)、插件 | 4 |
第4章 3D建模與仿真 | 自定義機器人3D模型,創(chuàng)建一個URDF文件、xacro文件、ROS仿真 | 4 |
第5章 導航功能包入門 | 創(chuàng)建變換、發(fā)布傳感器消息、里程數(shù)據(jù)信息、創(chuàng)建基礎控制器、創(chuàng)建地圖 | 4 |
第6章 導航功能包進階 | 機器人配置、全局和局部代價地圖、rviz詳細配置、自適應蒙特卡洛定位,避障,目標發(fā)送 | 4 |
第7章 使用MoveIt! | 機械臂、體系結構、簡單運動規(guī)劃、抓取放置任務 | 2 |
第8章 在ROS下使用傳感器 | 使用游戲手柄、使用RGBD傳感器 | 4 |
第9章 計算機視覺 | ROS攝像頭驅(qū)動、ROS與OpenCV庫、標定攝像頭、視覺里程計 | 2 |
第10章 點云 | 點云庫、可視化點云、濾波和縮減采樣、配準與匹配、點云分區(qū) | 2 |
?
教學方法及手段 |
1、本課程主要采用多媒體教學手段與虛擬實驗室實踐結合; 2、本課程采用大作業(yè)和實踐考核形式,重點考查學生機器人相關知識的運用能力; 3、本課程使用的教材是機械工業(yè)出版社2017年出版,本書以機器人控制為主要內(nèi)容,系統(tǒng)地介紹了機器人系統(tǒng)的結構原理、外設模塊、示例程序和應用例程,同時配套有非常詳細的網(wǎng)絡資源和在線云系統(tǒng)實驗平臺。 |
?
?
課程考核辦法 |
考核方式:考查(大作業(yè)+實踐測評) 本課程的學生成績由平時成績、實踐成績和大作業(yè)三部分組成,其中平時成績占總成績的20%,實踐成績占總成績的40%,大作業(yè)占總成績的40%。 平時成績由平時作業(yè)和出勤綜合評定,其中平時作業(yè)分別占平時成績的80%,出勤占平時成績的20%。 |
?
第一講
章節(jié)名稱 | ROS入門 |
課程內(nèi)容 | 機器人操作系統(tǒng)安裝、虛擬機、Docker、嵌入式系統(tǒng) |
授課學時 | 2 |
教學目標與要求 | 掌握ROS在操作系統(tǒng)上的安裝與配置 |
難點與重點 | 機器人操作系統(tǒng)安裝與環(huán)境配置 |
教學手段 | 1 課堂多媒體,啟發(fā)式教學 2 云端實驗室環(huán)境 |
課時分配 | 機器人操作系統(tǒng)安裝 50分鐘、虛擬機15分鐘、Docker 15分鐘、嵌入式系統(tǒng)20分鐘 |
教學內(nèi)容 | 安裝并配置ROS環(huán)境 簡介: 本教程詳細描述了ROS的安裝與環(huán)境配置。 1 安裝ROS 在開始學習這些教程之前請先按照ROS安裝說明完成安裝,在線環(huán)境中實驗樓已安裝了ROS。 如需本地安裝,請參考安裝文檔。 注意: 如果你是使用類似apt這樣的軟件管理器來安裝ROS的,那么安裝后這些軟件包將不具備寫入權限,當前系統(tǒng)用戶比如你自己也無法對這些軟件包進行修改編輯。當你的開發(fā)涉及到ROS軟件包源碼層面的操作或者在創(chuàng)建一個新的ROS軟件包時,你應該是在一個具備讀寫權限的目錄下工作,就像在你當前系統(tǒng)用戶的home目錄下一樣。 2 管理環(huán)境 在安裝ROS期間,你會看到提示說需要 source 多個 setup.*sh 文件中的某一個,或者甚至提示添加這條source命令到你的啟動腳本里面。這些操作是必須的,因為ROS是依賴于某種組合空間的概念,而這種概念就是通過配置腳本環(huán)境來實現(xiàn)的。這可以讓針對不同版本或者不同軟件包集的開發(fā)更加容易。 如需深入了解,請參考環(huán)境變量。 如果你在查找和使用ROS軟件包方面遇到了問題,請確保你已經(jīng)正確配置了腳本環(huán)境。一個檢查的好方法是確保你已經(jīng)設置了像ROS_ROOT和ROS_PACKAGE_PATH這樣的環(huán)境變量,可以通過以下命令查看: $ export | grep ROS 或者 $ printenv | grep ROS 如果發(fā)現(xiàn)沒有配置,那這個時候你就需要source某些setup.*sh文件了。 ROS會幫你自動生成這些setup.*sh文件,通過以下方式生成并保存在不同地方。 通過類似apt的軟件包管理器安裝ROS軟件包時會生成setup.*sh文件。 在rosbuild workspaces中通過類似rosws的工具生成。 在編譯 或 安裝 catkin 軟件包時自動生成。 注意: 在所有教程中你將會經(jīng)??吹椒謩e針對rosbuild 和 catkin的不同操作說明,這是因為目前有兩種不同的方法可以用來組織和編譯ROS應用程序。一般而言,rosbuild比較簡單也易于使用,而catkin使用了更加標準的CMake規(guī)則,所以比較復雜,但是也更加靈活,特別是對于那些想整合外部現(xiàn)有代碼或者想發(fā)布自己代碼的人。關于這些如果你想了解得更全面請參閱catkin或者rosbuild。 如果你是通過 ubuntu 上的 apt 工具來安裝 ROS 的,那么你將會在/opt/ros/<distro>/目錄中看到setup.*sh文件,然后你可以執(zhí)行下面的source命令: $ source /opt/ros/<distro>/setup.zsh 請使用具體的ROS發(fā)行版名稱代替<distro>。 比如你安裝的是ROS Indigo,則上述命令改為: $ source /opt/ros/indigo/setup.zsh 在每次打開終端時你都需要先運行上面這條命令后才能運行ros相關的命令,為了避免這一繁瑣過程,你可以事先在.bashrc文件(初學者請注意:該文件是在當前系統(tǒng)用戶的home目錄下。)中添加這條命令,這樣當你每次登錄后系統(tǒng)已經(jīng)幫你執(zhí)行這些命令配置好環(huán)境。這樣做也可以方便你在同一臺計算機上安裝并隨時切換到不同版本的ROS(比如fuerte和groovy)。 此外,你也可以在其它系統(tǒng)平臺上相應的ROS安裝目錄下找到這些setup.*sh文件。 3 創(chuàng)建ROS工作空間 catkin 這些操作方法只適用于ROS Groovy及后期版本,對于ROS Fuerte及早期版本請選擇rosbuild。 下面我們開始創(chuàng)建一個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工作環(huán)境的最頂層,想了解更多請參考catkin文檔。接下來首先source一下新生成的setup.*sh文件: $ source devel/setup.zsh 要想保證工作空間已配置正確需確保ROS_PACKAGE_PATH環(huán)境變量包含你的工作空間目錄,采用以下命令查看: $ echo $ROS_PACKAGE_PATH /home/<youruser>/catkin_ws/src:/opt/ros/indigo/share:/opt/ros/indigo/stacks 到此你的工作環(huán)境已經(jīng)搭建完成,接下來可以繼續(xù)學習 ROS文件系統(tǒng)教程。 4 探索 在home文件夾下已經(jīng)有ros_ws工作區(qū),可以看看其中的文件和上面創(chuàng)建的有哪些不同和相同之處。 ? |
作業(yè) | 在云端系統(tǒng)完成報告 |
教學小結 | 教學過程可以更加生動并突出趣味性 |
?
第四講
章節(jié)名稱 | 可視化和調(diào)試工具 |
課程內(nèi)容 | 調(diào)試ROS節(jié)點、日志消息、檢測系統(tǒng)狀態(tài)、設置動態(tài)參數(shù)、roswtf、可視化節(jié)點診斷、繪制標量數(shù)據(jù)圖、圖像可視化、3D可視化、保存與回放數(shù)據(jù)、插件 |
授課學時 | 4 |
教學目標與要求 | 掌握ROS基本使用 |
難點與重點 | 機器人操作系統(tǒng)基本調(diào)試與工具使用 |
教學手段 | 1 課堂多媒體,啟發(fā)式教學 2 云端實驗室環(huán)境 |
教學內(nèi)容 | 錄制與回放數(shù)據(jù) 簡介: 本教程將教你如何將ROS系統(tǒng)運行過程中的數(shù)據(jù)錄制到一個.bag文件中,然后通過回放數(shù)據(jù)來重現(xiàn)相似的運行過程。 關鍵: data, rosbag, record, play, info, bag 相關資料:錄制與回放數(shù)據(jù) 1 錄制數(shù)據(jù)(通過創(chuàng)建一個bag文件) 本小節(jié)將教你如何記錄ROS系統(tǒng)運行時的話題數(shù)據(jù),記錄的話題數(shù)據(jù)將會累積保存到bag文件中。 首先,執(zhí)行以下命令: $ roscore $ rosrun turtlesim turtlesim_node $ rosrun turtlesim turtle_teleop_key 以上操作將會啟動兩個節(jié)點——一個turtlesim可視化節(jié)點和一個turtlesim鍵盤控制節(jié)點。在運行turtlesim鍵盤控制節(jié)點的終端窗口中你應該會看到如下類似信息: Reading from keyboard --------------------------- Use arrow keys to move the turtle. 這時按下鍵盤上的方向鍵應該會讓turtle運動起來。需要注意的是要想控制turtle運動你必須先選中啟動turtlesim鍵盤控制節(jié)點時所在的終端窗口而不是顯示虛擬turtle所在的窗口。 1.1 錄制所有發(fā)布的話題 首先讓我們來檢查看當前系統(tǒng)中發(fā)布的所有話題。要完成此操作請打開一個新終端并執(zhí)行: $ 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 上面所發(fā)布話題部分列出的話題消息是唯一可以被錄制保存到文件中的的話題消息,因為只有消息已經(jīng)發(fā)布了才可以被錄制。/turtle1/command_velocity話題是 teleop_turtle 節(jié)點所發(fā)布的命令消息并作為 turtlesim 節(jié)點的輸入。而/turtle1/color_sensor和/turtle1/pose是 turtlesim 節(jié)點發(fā)布出來的話題消息。 現(xiàn)在我們開始錄制。打開一個新的終端窗口,在終端中執(zhí)行以下命令: $ mkdir ~/bagfiles $ cd ~/bagfiles $ rosbag record -a 在這里我們先建立一個用于錄制的臨時目錄,然后在該目錄下運行 rosbag record 命令,并附加 -a 選項,該選項表示將當前發(fā)布的所有話題數(shù)據(jù)都錄制保存到一個bag文件中。 然后回到 turtle_teleop 節(jié)點所在的終端窗口并控制 turtle 隨處移動10秒鐘左右。 在運行 rosbag record 命令的窗口中按 Ctrl-C 退出該命令?,F(xiàn)在檢查看 ~/bagfiles 目錄中的內(nèi)容,你應該會看到一個以年份、日期和時間命名并以 .bag 作為后綴的文件。這個就是 bag 文件,它包含 rosbag record 運行期間所有節(jié)點發(fā)布的話題。 2 檢查并回放 bag 文件 現(xiàn)在我們已經(jīng)使用 rosbag record 命令錄制了一個 bag 文件,接下來我們可以使用 rosbag info 檢查看它的內(nèi)容,使用 rosbag play 命令回放出來。接下來我們首先會看到在 bag 文件中都錄制了哪些東西。我們可以使用 info 命令,該命令可以檢查看 bag 文件中的內(nèi)容而無需回放出來。在 bag 文件所在的目錄下執(zhí)行以下命令: $ 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 文件中所包含話題的名稱、類型和消息數(shù)量。我們可以看到,在之前使用 rostopic 命令查看到的五個已公告的話題中,其實只有其中的四個在我們錄制過程中發(fā)布了消息。因為我們帶 -a 參數(shù)選項運行 rosbag record 命令時系統(tǒng)會錄制下所有節(jié)點發(fā)布的所有消息。 下一步是回放 bag 文件以再現(xiàn)系統(tǒng)運行過程。首先在 turtle_teleop_key 節(jié)點運行時所在的終端窗口中按 Ctrl+C 退出該節(jié)點。讓 turtlesim 節(jié)點繼續(xù)運行。在終端中 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秒)后才真正開始發(fā)布bag文件中的內(nèi)容。等待一段時間的過程可以通知消息訂閱器消息已經(jīng)公告了消息數(shù)據(jù)可能會馬上到來。如果 rosbag play 在公告消息后立即發(fā)布,訂閱器可能會接收不到幾條最先發(fā)布的消息。等待時間可以通過 -d 選項來指定。 最終/turtle1/command_velocity話題將會被發(fā)布,同時在turtuelsim虛擬畫面中turtle應該會像之前你通過turtle_teleop_key節(jié)點控制它一樣開始移動。從運行rosbag play到turtle開始移動時所經(jīng)歷時間應該近似等于之前在本教程開始部分運行rosbag record后到開始按下鍵盤發(fā)出控制命令時所經(jīng)歷時間。你可以通過-s參數(shù)選項讓rosbag play命令等待一段時間跳過bag文件初始部分后再真正開始回放。最后一個可能比較有趣的參數(shù)選項是-r選項,它允許你通過設定一個參數(shù)來改變消息發(fā)布速率。如果你執(zhí)行: $ rosbag play -r 2 <your bagfile> 你應該會看到turtle的運動軌跡有點不同了,這時的軌跡應該是相當于當你以兩倍的速度通過按鍵發(fā)布控制命令時產(chǎn)生的軌跡。 3 錄制數(shù)據(jù)子集 當運行一個復雜的系統(tǒng)時,比如PR2軟件系統(tǒng),會有幾百個話題被發(fā)布,有些話題會發(fā)布大量數(shù)據(jù)(比如包含攝像頭圖像流的話題)。在這種系統(tǒng)中,要想把所有話題都錄制保存到硬盤上的單個bag文件中是不切實際的。rosbag record命令支持只錄制某些特別指定的話題到單個bag文件中,這樣就允許用戶只錄制他們感興趣的話題。 如果還有turtlesim節(jié)點在運行,先退出他們,然后重新啟動(relaunch)鍵盤控制節(jié)點相關的啟動文件(launch file): $ rosrun turtlesim turtlesim_node $ rosrun turtlesim turtle_teleop_key 在bag文件所在目錄下執(zhí)行以下命令: $ rosbag record -O subset /turtle1/cmd_vel /turtle1/pose 上述命令中的-O參數(shù)告訴rosbag record將數(shù)據(jù)記錄保存到名為subset.bag的文件中,同時后面的話題參數(shù)告訴rosbag record只能錄制這兩個指定的話題。然后通過鍵盤控制turtle隨處移動幾秒鐘,最后按Ctrl+C退出rosbag record命令。 現(xiàn)在檢查看bag文件中的內(nèi)容(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 命令的局限性 在前述部分中你可能已經(jīng)注意到了turtle的路徑可能并沒有完全地映射到原先通過鍵盤控制時產(chǎn)生的路徑上——整體形狀應該是差不多的,但沒有完全一樣。造成該問題的原因是turtlesim的移動路徑對系統(tǒng)定時精度的變化非常敏感。rosbag受制于其本身的性能無法完全復制錄制時的系統(tǒng)運行行為,rosplay也一樣。對于像turtlesim這樣的節(jié)點,當處理消息的過程中系統(tǒng)定時發(fā)生極小變化時也會使其行為發(fā)生微妙變化,用戶不應該期望能夠完美的模仿系統(tǒng)行為。 現(xiàn)在你已經(jīng)學會了如何錄制和回放數(shù)據(jù),接下來我們開始學習如何使用 roswtf來檢查系統(tǒng)故障。 |
作業(yè) | 在云端系統(tǒng)完成報告 |
教學小結 | 教學過程可以更加生動并突出趣味性 |
?
?
?
----教學進度表----
|
教 學 進 度 表
?
2017??????? ~2018????????? 學年度第????? 二??? 學期
課程名稱:ROS機器人高效編程
任課教師:
授課班級:全校公共選修課?????????????????
教學院長(簽名)??????????????????
?
周次 | 起止日期 | 講課內(nèi)容分章和分節(jié)的名稱 | 課時數(shù) | 習題、實驗、設計、實踐或科學實驗名稱 | 課時數(shù) |
1 | 3月5日 -3月9日 | 第1章 ROS入門 | 2 | 機器人操作系統(tǒng)安裝、虛擬機、Docker、嵌入式系統(tǒng) | ? |
2 | 3月12日 -3月16日 | 第2章 ROS架構及概念 | 2 | 機器人操作系統(tǒng)文件系統(tǒng)級、計算圖級、社區(qū)級、創(chuàng)建功能包并實現(xiàn)功能等 | ? |
3 | 3月19日 -3月23日 | 第2章 ROS架構及概念 | 2 | 機器人操作系統(tǒng)文件系統(tǒng)級、計算圖級、社區(qū)級、創(chuàng)建功能包并實現(xiàn)功能等 | ? |
4 | 3月26日 -3月30日 | 第3章 可視化和調(diào)試工具 | 2 | 調(diào)試ROS節(jié)點、日志消息、檢測系統(tǒng)狀態(tài)、設置動態(tài)參數(shù)、roswtf、可視化節(jié)點診斷、繪制標量數(shù)據(jù)圖、圖像可視化、3D可視化、保存與回放數(shù)據(jù)、插件 | ? |
5 | 4月2日 -4月6日 | 第3章 可視化和調(diào)試工具 | 2 | 調(diào)試ROS節(jié)點、日志消息、檢測系統(tǒng)狀態(tài)、設置動態(tài)參數(shù)、roswtf、可視化節(jié)點診斷、繪制標量數(shù)據(jù)圖、圖像可視化、3D可視化、保存與回放數(shù)據(jù)、插件 | ? |
6 | 4月9日 -4月13日 | 第4章 3D建模與仿真 | 2 | 自定義機器人3D模型,創(chuàng)建一個URDF文件、xacro文件、ROS仿真 | ? |
7 | 4月16日 -4月20日 | 第4章 3D建模與仿真 | 2 | 自定義機器人3D模型,創(chuàng)建一個URDF文件、xacro文件、ROS仿真 | ? |
8 | 4月23日 -4月27日 | 第5章 導航功能包入門 | 2 | 創(chuàng)建變換、發(fā)布傳感器消息、里程數(shù)據(jù)信息、創(chuàng)建基礎控制器、創(chuàng)建地圖 | ? |
9 | 4月30日 -5月5日 | 第5章 導航功能包入門 | 2 | 創(chuàng)建變換、發(fā)布傳感器消息、里程數(shù)據(jù)信息、創(chuàng)建基礎控制器、創(chuàng)建地圖 | ? |
10 | 5月7日 -5月11日 | 第6章 導航功能包進階 | 2 | 機器人配置、全局和局部代價地圖、rviz詳細配置、自適應蒙特卡洛定位,避障,目標發(fā)送 | ? |
11 | 5月14日 -5月18日 | 第6章 導航功能包進階 | 2 | 機器人配置、全局和局部代價地圖、rviz詳細配置、自適應蒙特卡洛定位,避障,目標發(fā)送 | ? |
12 | 5月21日 -5月25日 | 第7章 使用MoveIt! | 2 | 機械臂、體系結構、簡單運動規(guī)劃、抓取放置任務 | ? |
13 | 5月28日 -6月1日 | 第8章 在ROS下使用傳感器 | 2 | 使用游戲手柄、使用RGBD傳感器 | ? |
14 | 6月4日 -6月8日 | 第9章 計算機視覺 | 2 | ROS攝像頭驅(qū)動、ROS與OpenCV庫、標定攝像頭、視覺里程計 | ? |
15 | 6月11日 -6月15日 | 第10章 點云 | 2 | 點云庫、可視化點云、濾波和縮減采樣、配準與匹配、點云分區(qū) | ? |
? | ? | ? | ? | ? | ? |
? | ? | ? | ? | ? | ? |
2017年10月
----公選課參考資料----
參考資料目錄:
1 張建偉, 張立偉, 胡穎,等. 開源機器人操作系統(tǒng)----ROS[M]. 科學出版社, 2012.
2 馬丁內(nèi)斯, 費爾南德斯劉品杰.ROS機器人程序設計:Learning ROS for robotics programming[M]. 機械工業(yè)出版社, 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 王之元, 周云,易曉東,等.機器人操作系統(tǒng)研究型課程建設[J].計算機教育,2016, No.253(1):77-80.
5 肖軍浩, 盧惠民,薛小波,等.將機器人操作系統(tǒng)(ROS)引入本科實踐教學[J].科技創(chuàng)新導報,2016(22):157-158.
6 R.帕特里克?戈貝爾,戈貝爾,羅哈斯.ROS入門實例[M].中山大學出版社,2016.
7 R.帕特里克?戈貝爾,戈貝爾,羅哈斯.ROS進階實例[M].中山大學出版社,2017.
8 李振偉. ROS入門與實戰(zhàn)[M].中國礦業(yè)大學出版社,2016.
9 恩里克·費爾南德斯等著,張瑞雷、劉錦濤譯ROS機器人程序設計(原書第2版)[M]機械工業(yè)出版社2016
10 杰森 M. 奧凱恩著; 肖軍浩譯 機器人操作系統(tǒng)淺析[M]國防工業(yè)出版社2016
11周興社機器人操作系統(tǒng)ROS原理與應用[M]機械工業(yè)出版社2017
12郎坦·約瑟夫(LentinJoseph)機器人系統(tǒng)設計與制作:Python語言實現(xiàn)[M]機械工業(yè)出版社2017
13何炳蔚,張立偉,張建偉 基于ROS的機器人理論與應用[M]科學出版社2017
14陳金寶 ROS開源機器人控制基礎[M]上海交通大學出版社2016
15 盧惠民,肖軍浩,鄭志強 ROS與中型組足球機器人[M]國防工業(yè)出版社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机器人高效编程)申请表、大纲、部分教案、进度表等材料分享的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 异步socket_java S
- 下一篇: xman的思维导图快捷键_一图胜千言,免