《鴻蒙機(jī)器人編程》3-實(shí)踐課-動(dòng)手編譯及運(yùn)行第一個(gè)ROS程序-實(shí)訓(xùn)指南_第1頁(yè)
《鴻蒙機(jī)器人編程》3-實(shí)踐課-動(dòng)手編譯及運(yùn)行第一個(gè)ROS程序-實(shí)訓(xùn)指南_第2頁(yè)
《鴻蒙機(jī)器人編程》3-實(shí)踐課-動(dòng)手編譯及運(yùn)行第一個(gè)ROS程序-實(shí)訓(xùn)指南_第3頁(yè)
《鴻蒙機(jī)器人編程》3-實(shí)踐課-動(dòng)手編譯及運(yùn)行第一個(gè)ROS程序-實(shí)訓(xùn)指南_第4頁(yè)
《鴻蒙機(jī)器人編程》3-實(shí)踐課-動(dòng)手編譯及運(yùn)行第一個(gè)ROS程序-實(shí)訓(xùn)指南_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

實(shí)踐課-動(dòng)手編譯及運(yùn)行第一個(gè)ROS程序課程內(nèi)容:本節(jié)將對(duì)Turtlesim功能包進(jìn)行簡(jiǎn)單解讀,了解功能包結(jié)構(gòu),創(chuàng)建及編譯工作空間,了解launch文件作用及roslaunch命令使用。教學(xué)目標(biāo):了解Turtlesim功能包結(jié)構(gòu)掌握工作空間運(yùn)行機(jī)制掌握l(shuí)aunch文件使用一.功能包解析1.Turtlesim功能包結(jié)構(gòu)Turtlesim功能包下主要有images、include、launch、msg、srv、src、tutorials活頁(yè)夾及CMakeLists.txt和package.xml文件。Images--海龜圖片,用于程序加載和顯示Include--功能包頭文件launch--啟動(dòng)的配置文件msg、srv--topic和service的數(shù)據(jù)類(lèi)型定義文件src--海龜繪制的源代碼文件tutorials--控制海龜運(yùn)動(dòng)的源代碼文件功能包共有四個(gè)node:turtlesim_node:用來(lái)繪制窗口及turtlesim,并通過(guò)topic和service提供了控制turtlesim的相關(guān)接口;teleop_turtle_key:利用turtlesim的相關(guān)接口用鍵盤(pán)控制turtlesim的運(yùn)動(dòng);draw_square:利用相關(guān)接口控制turtlesim給出矩形軌跡;mimic:提供了復(fù)制海龜運(yùn)動(dòng)的接口。后三個(gè)node是控制turtlesim的三種方式示例,放在tutorials文件夾。2.核心代碼簡(jiǎn)單解讀①TurtleApp類(lèi)節(jié)點(diǎn)turtlesim_node的入口在turtlesim.cpp中,通過(guò)QApplication的繼承類(lèi)TurtleApp實(shí)現(xiàn)QT程序的初始化,并完成了node的初始化;創(chuàng)建TurtleFrame對(duì)象,顯示窗口;最后通過(guò)QApplication::exec()進(jìn)入事件循環(huán)。node的實(shí)例化使用了boost的智能指針,因?yàn)樵诎瑱nturtle_frame.h中已經(jīng)進(jìn)行了對(duì)NodeHandle實(shí)例化,所以此處使用了reset(),以保證智能指針的正常自動(dòng)銷(xiāo)毀。使用智能指針保證了NodeHandle同一實(shí)例對(duì)象在TurtleFrame類(lèi)中的正常使用。具體代碼如下:②TurtleFrame類(lèi)TurtleFrame繼承自QFrame類(lèi),實(shí)現(xiàn)有框架的窗口部件。其主要作用是窗口部件與事件管理、海龜圖片加載顯示。它提供了clear、reset、spawn、kill四個(gè)service用來(lái)提供海龜?shù)纳膳c銷(xiāo)毀等操作調(diào)用接口。clearCallback通過(guò)調(diào)用clear函數(shù),用預(yù)定的背景色重繪窗口。但并未對(duì)海龜圖片作任何操作,也就是說(shuō)只重置背景及清除海龜運(yùn)動(dòng)軌跡。實(shí)現(xiàn)如下:resetCallback先清空存放海龜對(duì)象的map,再重新生成海龜,最后調(diào)用clear函數(shù)。實(shí)現(xiàn)如下:spawnCallback通過(guò)spawnTurtle函數(shù)以服務(wù)調(diào)用請(qǐng)求的位置、朝向及名字參數(shù)生成海龜。此處會(huì)對(duì)海龜命名重名給出出錯(cuò)提示。實(shí)現(xiàn)如下:killCallback就是刪除指定名的海龜,實(shí)際是通過(guò)key清除存放海龜對(duì)象map的相應(yīng)條目,調(diào)用update()實(shí)現(xiàn)重繪。實(shí)現(xiàn)如下:QT繪制事件及ROS事件QT繪制事件通過(guò)update()手動(dòng)觸發(fā)或窗口變動(dòng)自動(dòng)觸發(fā),然后通過(guò)重寫(xiě)的paintEvent虛函數(shù)槽實(shí)現(xiàn)繪制。實(shí)現(xiàn)如下:ROS事件通過(guò)QT的信號(hào)槽機(jī)制以16ms為周期進(jìn)行,用onupdate()函數(shù)槽實(shí)現(xiàn)。③Turtle類(lèi)實(shí)際上海龜?shù)倪\(yùn)動(dòng)是通過(guò)海龜圖片的平移與旋轉(zhuǎn)實(shí)現(xiàn)的。具體代碼在Turtle類(lèi)中,共有一個(gè)訂閱的TOPIC、兩個(gè)發(fā)布的TOPIC及三個(gè)SERVICE。訂閱的TOPIC為:cmd_velcmd_vel:訂閱海龜控制的速度信息發(fā)布的TOPIC為:pose、color_sensorpose:發(fā)布海龜?shù)奈恢谩⒊?、及線速度和角速度color_sensor:發(fā)布海龜?shù)讓拥念伾齻€(gè)服務(wù)為:set_pen、teleport_relative、teleport_absoluteset_pen:為設(shè)置畫(huà)筆顏色及寬度的服務(wù)接口teleport_relative:以相對(duì)位置控制海龜運(yùn)動(dòng)teleport_absolute:以絕對(duì)位置控制海龜運(yùn)動(dòng)turtle對(duì)象創(chuàng)建中,同時(shí)以生成的海龜名為參數(shù)對(duì)NodeHandle進(jìn)行了實(shí)例化,所以上面提到的發(fā)布的TOPIC及提供的SERVICE都是有海龜名這個(gè)命名空間的。二.創(chuàng)建及編譯工作空間$mkdir-pcatkin_ws/src在終端上,利用cd命令進(jìn)入工作空間,然后用catkin_make編譯。$cd~/catkin_ws

$catkin_make或$cd~/catkin_ws$catkin_make-DCATKIN_WHITELIST_PACKAGES=“turtlesim”1.將項(xiàng)目源代碼中的turtlesim功能包復(fù)制到工作空間的src目錄下2.編譯turtlesim功能包$cd~/catkin_ws

$catkin_make3.新建終端,運(yùn)行roscore$roscore4.動(dòng)手運(yùn)行ROS節(jié)點(diǎn),控制小烏龜運(yùn)動(dòng)運(yùn)行小烏龜節(jié)點(diǎn)$sourcedevel/setup.bash$rosrunturtlesimturtlesim_node查看發(fā)布的TOPIC及其數(shù)據(jù)和提供的服務(wù),rostopic和rosservice工具$rostopiclist讓海龜作圓周運(yùn)動(dòng)(可使用rqt工具):$rostopicpub-r10/turtle1/cmd_velgeometry_msgs/Twist'{linear:{x:0.2,y:0,z:0},angular:{x:0,y:0,z:0.3}}'生成新的海龜(可使用rqt工具):$roservicecallspawn330myturtle啟動(dòng)鍵盤(pán)控制:$rosrunturtlesimturtle_teleop_key5.查看launch文件,運(yùn)行roslaunch啟動(dòng)launch文件:$roslau

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論