版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
實(shí)踐課-
動手編譯及運(yùn)行第一個ROS程序課程介紹課程內(nèi)容:講解Turtlesim功能包文件結(jié)構(gòu)核心代碼簡單解讀動手編譯Turtlesim動手運(yùn)行ROS節(jié)點(diǎn),控制小烏龜運(yùn)動目的:掌握功能包的編譯與運(yùn)行掌握rostopic和rosservice命令行工具的使用通過rostopic和rosservice工具了解topic和service的工作機(jī)理2?NXROBO2022TurtleSim運(yùn)行效果3?NXROBO2022Turtlesim功能包文件結(jié)構(gòu)功能包下主要有images、include、launch、msg、srv、src、tutorials活頁夾及CMakeLists.txt和package.xml文件。Images--海龜圖片,用于程序加載和顯示Include--功能包頭文件launch
--啟動的配置文件msg、srv--topic和service的數(shù)據(jù)類型定義文件src--海龜繪制的源代碼文件tutorials--控制海龜運(yùn)動的源代碼文件4?NXROBO2022Turtlesim功能包邏輯結(jié)構(gòu)功能包共有四個node:turtlesim_node:用來繪制窗口及turtlesim,并通過topic和service提供了控制turtlesim的相關(guān)接口;teleop_turtle_key:利用turtlesim的相關(guān)接口用鍵盤控制turtlesim的運(yùn)動;draw_square:利用相關(guān)接口控制turtlesim給出矩形軌跡;mimic:提供了復(fù)制海龜運(yùn)動的接口。后三個node是控制turtlesim的三種方式示例,放在tutorials文件夾。5?NXROBO2022TurtleApp類節(jié)點(diǎn)turtlesim_node的入口在turtlesim.cpp中通過QApplication的繼承類TurtleApp實(shí)現(xiàn)QT程序的初始化,并完成了node的初始化;創(chuàng)建TurtleFrame對象,顯示窗口;最后通過QApplication::exec()進(jìn)入事件循環(huán)。node的實(shí)例化使用了boost的智能指針,因?yàn)樵诎瑱nturtle_frame.h中已經(jīng)進(jìn)行了對NodeHandle實(shí)例化,所以此處使用了reset(),以保證智能指針的正常自動銷毀。使用智能指針保證了NodeHandle同一實(shí)例對象在TurtleFrame類中的正常使用。6?NXROBO2022TurtleFrame類TurtleFrame繼承自QFrame類,實(shí)現(xiàn)有框架的窗口部件其主要作用是窗口部件與事件管理、海龜圖片加載顯示提供了clear、reset、spawn、kill四個service用來提供海龜?shù)纳膳c銷毀等操作調(diào)用接口。7?NXROBO2022TurtleFrame類——clear服務(wù)實(shí)現(xiàn)clearCallback通過調(diào)用clear函數(shù),用預(yù)定的背景色重繪窗口。但并未對海龜圖片作任何操作,也就是說只重置背景及清除海龜運(yùn)動軌跡。8?NXROBO2022TurtleFrame類——reset服務(wù)實(shí)現(xiàn)resetCallback先清空存放海龜對象的map,再重新生成海龜,最后調(diào)用clear函數(shù)。9?NXROBO2022TurtleFrame類——spawn服務(wù)實(shí)現(xiàn)spawnCallback通過spawnTurtle函數(shù)以服務(wù)調(diào)用請求的位置、朝向及名字參數(shù)生成海龜。此處會對海龜命名重名給出出錯提示。10?NXROBO2022TurtleFrame類——kill服務(wù)實(shí)現(xiàn)killCallback就是刪除指定名的海龜,實(shí)際是通過key清除存放海龜對象map的相應(yīng)條目,調(diào)用update()實(shí)現(xiàn)重繪。11?NXROBO2022TurtleFrame類——QT繪制事件QT繪制事件通過update()手動觸發(fā)或窗口變動自動觸發(fā),然后通過重寫的paintEvent虛函數(shù)槽實(shí)現(xiàn)繪制12?NXROBO2022TurtleFrame類——ROS事件ROS事件通過QT的信號槽機(jī)制以16ms為周期進(jìn)行用onupdate()函數(shù)槽實(shí)現(xiàn)13?NXROBO2022實(shí)際上海龜?shù)倪\(yùn)動是通過海龜圖片的平移與旋轉(zhuǎn)實(shí)現(xiàn)的。具體代碼在Turtle類中,共有一個訂閱的TOPIC、兩個發(fā)布的TOPIC及三個SERVICE。訂閱的TOPIC為:cmd_velcmd_vel:訂閱海龜控制的速度信息。發(fā)布的TOPIC為:pose、color_sensorpose:發(fā)布海龜?shù)奈恢?、朝向、及線速度和角速度color_sensor:發(fā)布海龜?shù)讓拥念伾齻€服務(wù)為:set_pen、teleport_relative、teleport_absoluteset_pen:為設(shè)置畫筆顏色及寬度的服務(wù)接口teleport_relative:以相對位置控制海龜運(yùn)動teleport_absolute:以絕對位置控制海龜運(yùn)動14?NXROBO2022Turtle類Turtle類turtle對象創(chuàng)建中,同時以生成的海龜名為參數(shù)對NodeHandle進(jìn)行了實(shí)例化,所以上面提到的發(fā)布的TOPIC及提供的SERVICE都是有海龜名這個命名空間的。15?NXROBO2022package.xml和Cmakelist.txt16?NXROBO2022編譯turtlesim在終端上,利用cd命令進(jìn)入工作空間,然后用catkin_make編譯
或17?NXROBO2022$cd~/catkin_ws
$catkin_make$cd~/catkin_ws$catkin_make-DCATKIN_WHITELIST_PACKAGES=“turtlesim”實(shí)操示例查看發(fā)布的TOPIC及其數(shù)據(jù)和提供的服務(wù),rostopic和rosservice工具讓海龜作圓周運(yùn)動(可使用rqt工具):
生成新的海龜(可使用rqt工具):啟動鍵盤控制:18rostopicpub/turtle1/command_velocityturtlesim/Velocity-r1--2.0-1.8roservicecallspawn330myturtlerosrunturtlesimturtle_teleop_key?NXROBO2022實(shí)操示例-海龜跟隨launch文件<launch> <groupns="turtlesim1"> <nodepkg="turtlesim"name="sim"type="turtlesim_node"/> </group> <groupns="turtlesim2"> <nodepkg="turtlesim"name="sim"type="turtlesim_node"/> </group> <nodepkg="turtlesim"name="mimic"type="mimic"> <remapfrom="input"to="turtlesim1/turtle1"/> <remapfrom="output"to="turtlesim2/turtle1"/> </node> <nodepkg="turtlesim"name="turtle_teleop_key"type="turtle_teleop_key"> <remapfrom="/turtle1/cmd_vel"to="/turtlesim1/turtle1/cmd_vel"/> </node> </launch>19?NXROBO202
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度金融信息服務(wù)臨時工勞動合同書
- 2025年度商鋪?zhàn)赓U合同范本:現(xiàn)代商業(yè)綜合體租賃管理細(xì)則3篇
- 個性化私人合作協(xié)議模板2024版B版
- 2025年度個人與個人草原保護(hù)管理服務(wù)合同范本3篇
- 2025年字畫裝裱作品定制與售后服務(wù)合同3篇
- 2025年度美甲行業(yè)品牌形象設(shè)計與承包合同
- 2025年精裝房裝修材料運(yùn)輸與儲存合同3篇
- 土地登記相關(guān)法律知識-土地登記代理人《土地登記相關(guān)法律》押題密卷1
- 2025年度生態(tài)環(huán)保技術(shù)引進(jìn)承包合同規(guī)范范本4篇
- 2025版文化創(chuàng)意設(shè)計師專屬聘用協(xié)議3篇
- 《社會工作實(shí)務(wù)》全冊配套完整課件3
- 單位違反會風(fēng)會書檢討書
- 2024年4月自考00832英語詞匯學(xué)試題
- 《電力用直流電源系統(tǒng)蓄電池組遠(yuǎn)程充放電技術(shù)規(guī)范》
- 《哪吒之魔童降世》中的哪吒形象分析
- 信息化運(yùn)維服務(wù)信息化運(yùn)維方案
- 汽車修理廠員工守則
- 公安交通管理行政處罰決定書式樣
- 10.《運(yùn)動技能學(xué)習(xí)與控制》李強(qiáng)
- 冀教版數(shù)學(xué)七年級下冊綜合訓(xùn)練100題含答案
- 1神經(jīng)外科分級護(hù)理制度
評論
0/150
提交評論