《鴻蒙機(jī)器人編程》9-ROS外接設(shè)備-教案_第1頁(yè)
《鴻蒙機(jī)器人編程》9-ROS外接設(shè)備-教案_第2頁(yè)
《鴻蒙機(jī)器人編程》9-ROS外接設(shè)備-教案_第3頁(yè)
《鴻蒙機(jī)器人編程》9-ROS外接設(shè)備-教案_第4頁(yè)
《鴻蒙機(jī)器人編程》9-ROS外接設(shè)備-教案_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

ROS外接設(shè)備介紹輸入設(shè)備搖桿、鍵盤(pán)和鼠標(biāo)是最常見(jiàn)的計(jì)算機(jī)外部設(shè)備,相信大家都非常熟悉。在這一節(jié)我們首先介紹一下如何在ROS中使用這類設(shè)備,并結(jié)合小海龜?shù)葘?shí)例進(jìn)行操作學(xué)習(xí)搖桿就是有一組按鈕和電位器的裝置,能夠?qū)崿F(xiàn)或控制多種運(yùn)動(dòng)模式。在ROS系統(tǒng)中,使用搖桿能夠?qū)崿F(xiàn)機(jī)器人的遠(yuǎn)程控制。ROS支持大部分通用性搖桿作為輸入設(shè)備。功能包的安裝配置我們需要安裝一些功能包并進(jìn)行配置$sudoaptinstallros-noetic-joystick-drivers$rosstackprofile&rospackprofile搖桿測(cè)試插入之后,我們要檢測(cè)搖桿能否被識(shí)別:$ls/dev/input/使用jstest命令檢測(cè)搖桿工作情況(視情況js0、js1等):$sudojstest/dev/input/js1這里,搖動(dòng)搖桿或點(diǎn)擊按鈕就會(huì)有相應(yīng)的輸出。如果一切正常就可以在ROS系統(tǒng)中使用它。搖桿使用首先,啟動(dòng)joy_node:$rosrunjoyjoy_node查看節(jié)點(diǎn)發(fā)布的消息:$rostopicecho/joy這里,有軸向信息,也有按鈕信息。查看消息類型:$rostopictype/joy查看消息中使用的字段:$rosmsgshowsensor_msgs/Joy搖桿示例運(yùn)行以下命令就可以實(shí)現(xiàn)用搖桿控制,小海龜運(yùn)動(dòng)。也可以通過(guò)類似的步驟控制Gazebo中的一些模擬機(jī)器人以及真實(shí)機(jī)器人運(yùn)動(dòng)。我們需要修改發(fā)布關(guān)聯(lián)話題的名稱,將被控對(duì)象訂閱的話題改為/cmd_vel。$rosrunteleop_twist_joyteleop_node以下是運(yùn)行界面:鍵盤(pán)和鼠標(biāo)如果沒(méi)有搖桿,使用鍵盤(pán)或鼠標(biāo)也能進(jìn)行機(jī)器人的簡(jiǎn)單遙控。這里簡(jiǎn)單介紹一下使用teleop_twist_keyboard和mouse_teleop遙控功能包。也需要修改發(fā)布關(guān)聯(lián)主題的名稱等,和上面示例類似,*_keyboard.py(/cmd_vel)、mouse_teleop.py(/mouse_vel)。使用的命令如下:$rosrunturtlesimturtlesim_node$rosrunteleop_twist_keyboardteleop_twist_keyboard.py$rosrunmouse_teleopmouse_teleop.pyROS的輸入設(shè)備除了典型的三種之外,還可以用手機(jī)等與機(jī)器人進(jìn)行交互,大家有空可以進(jìn)一步探索,發(fā)現(xiàn)最適合的方式去控制機(jī)器人。感知設(shè)備對(duì)周圍環(huán)境感知是機(jī)器人的一項(xiàng)重要能力。激光雷達(dá)(lidar)是環(huán)境感知的一種重要傳感器,能測(cè)量出障礙物的距離信息。這些信息非常重要,可用來(lái)構(gòu)建地圖、避障、導(dǎo)航等。本節(jié)以杉川激光雷達(dá)為例。激光雷達(dá)配置首先,需要下載spark代碼并安裝依賴(帶小主機(jī)的spark版本已集成,可忽略此步驟):$gitclone/NXROBO/spark_noetic.git一旦驅(qū)動(dòng)安裝完畢,就可以檢測(cè)安裝是否正確,系統(tǒng)能否檢測(cè)并使用它。$ll/dev/|grep3ilidar這里,需要注意,如果沒(méi)有安裝相關(guān)依賴,啟動(dòng)激光節(jié)點(diǎn)有可能遇到問(wèn)題,例如串口權(quán)限等。啟動(dòng)激光雷達(dá)一切正常工作后,就可以使用激光雷達(dá)獲取信息了,使用下面命令啟動(dòng)節(jié)點(diǎn):$roslaunchiiiroboticslidar23iroboticslidar2.launch激光雷達(dá)使用使用rostopic查看主題是否發(fā)布數(shù)據(jù):$rostopiclist其中/scan,是正在發(fā)布消息的主題,查看節(jié)點(diǎn)類型:$rostopictype/scan使用以下命令查看數(shù)據(jù)結(jié)構(gòu):$rosmsgshowsensor_msgs/LaserScan如果想查看激光雷達(dá)發(fā)布的消息,可以使用如下命令:$rostopicecho/scan此時(shí)單純顯示數(shù)字不形象,難以理解,可以使用rviz在圖形化接口下顯示數(shù)據(jù):$rviz下面為運(yùn)行界面:視覺(jué)傳感器在ROS系統(tǒng)中,視覺(jué)傳感器主要包括RGB攝像頭與RGBD深度傳感器這兩類設(shè)備。USB攝像頭最為普遍,如筆記內(nèi)置攝像頭等,在ROS使用這類設(shè)備非常輕松。首先,安裝相應(yīng)功能包:$sudoaptinstallros-noetic-usb-cam這里,在使用前需要注意,攝像頭的pixel_format,有些設(shè)備是yuyv格式的,需要修改,否則會(huì)出錯(cuò)并無(wú)法看到圖像。$rosrunusb_camusb_cam_node也可以使用以下命令測(cè)試USB攝像頭是否在ROS中正常工作:$roslaunchusb_camusb_cam-test.launch使用rostopiclist來(lái)查看主題列表,也可以使用rqt_image_view或在rviz中查看:$rosrunrqt_image_viewrqt_image_view下面為運(yùn)行界面:另一種攝像頭是RGBD攝像頭。這種攝像頭多了一種深度的信息。以?shī)W比中光3D深度攝像頭為例,它包括一個(gè)彩色的VGA視頻攝像頭、深度傳感器以及麥克風(fēng)數(shù)組。我們的spark已安裝該款攝像頭的驅(qū)動(dòng)及依賴,安裝完成后,僅需插好該攝像頭USB界面,運(yùn)行節(jié)點(diǎn)并使用它:$roslaunchastra_launchastra.launch同樣的,我們可以用rostopiclist查看主題列表,找到攝像頭相關(guān)的話題,類似/camera/rgb/image_raw,/camera/depth/image。也可以用rostopicecho命令、image_view、rviz等工具查看攝像頭獲取到的數(shù)據(jù)。還可用rqt_image_view功能包查看視頻圖像:$rosrunrqt_image_viewrqt_image_view3D深度攝像頭還可產(chǎn)生點(diǎn)云數(shù)據(jù),如果你需要查看點(diǎn)云數(shù)據(jù),可以在rviz中,點(diǎn)擊Add按鈕,添加PointCloud2。傳感器IMUIMU,也就是慣性測(cè)量模塊,是測(cè)量物體速度姿態(tài)等信息的電子設(shè)備,主要由三軸陀螺和三軸加速度計(jì),甚至還包括磁力計(jì)等組成。這兒以xsens為例做簡(jiǎn)單介紹。想要使用,首先驅(qū)動(dòng)安裝:$sudoapt-getinstallros-noetic-xsens-driver$rosstackprofile&&rospackprofile啟動(dòng)設(shè)備:$roslaunchxsens_driverxsens_driver.launch然后就可以查看傳感器數(shù)據(jù)了,使用以下命令:$rostopicecho/imu/data當(dāng)然,也可以在rviz中顯示可視化的姿態(tài)數(shù)據(jù)。傳感器GPS全球定位系統(tǒng)GPS可以獲取地球上幾乎所有地區(qū)的位置和時(shí)間信息。在ROS中使用GPS,需要安裝NMEAGPS驅(qū)動(dòng):$sudoaptinstallros-noetic-nmea-*$rosstackprofile&&rospackprofile啟動(dòng)節(jié)點(diǎn),_port是端口號(hào),_baud是串口傳輸速率:$rosrunnmea_navsat_drivernmea_serial_driver_port:=/dev/rfcomm0_baud:=115200使用rostopiclist可以看到/fix的主題,如下圖所示。查看主題消息內(nèi)容可以使用rostopicecho/fix:$rostopicecho/fix也可以使用以下命令查看原始NMEA數(shù)據(jù):$rosrunnmea_navsat_drivernmea_topic_serial_reader_port:=/dev/rfcomm0_baud:=115200$rostopicecho/nmea_sentence驅(qū)動(dòng)設(shè)備在機(jī)器人中舵機(jī)使用非常廣泛,可以直接搭建關(guān)節(jié)機(jī)器人,這里簡(jiǎn)單介紹一下Dynamixel伺服電機(jī)的使用。首先,是驅(qū)動(dòng)安裝:$sudoaptinstallros-noetic-dynamixel-*$rosstackprofile&&rospackprofile安裝完成后,將設(shè)備接到計(jì)算機(jī),并運(yùn)行以下命令:$roslaunchdynamixel_tutorialscontroller_manager.launch接著運(yùn)行:$roslaunchdynamixel_tutorialscontroller_spawner.launch使用/tilt_controller/command通過(guò)rostopicpub發(fā)布消息驅(qū)動(dòng)電機(jī):$rostopicpub/tilt_controller/commandstd_msgs/Float64--0.5注意,這里0.5是弧度,約為28.65度。使用底層嵌入式控制器,可以極大擴(kuò)展ROS外接的傳感器和執(zhí)行器的種類和數(shù)量,如Arduino、STM32等。ROS主要通過(guò)rosserial功能包使用這類設(shè)備。通常用串口建立底層嵌入式設(shè)備和計(jì)算器的數(shù)據(jù)交互,rosserial支持很多使用串口連接的設(shè)備,這里我們以Arduino為例。首先,輸入以下命令,安裝功能包:$sudoaptinstallros-noetic-rosserial-arduino$sudoaptinstallros-noetic-rosserial如果你已經(jīng)安裝了ArduinoIDE,忽略這一步,否則運(yùn)行以下命令:$sudoaptupdate&&sudoaptinstallarduinoarduino-core這些都安裝完畢后,需要運(yùn)行以下命令:$cd~/sketchbook/libraries$rm-rfros_lib$rosrunrosserial_arduinomake_libraries.py.Arduino示例使用1:輸出“helloworld”在ros_lib中提供了豐富的示例代碼,例如選擇helloworld,并下載,這些示例代碼都在include中包含了ros.h頭文件。代碼主要包括兩個(gè)函數(shù):setup()和loop(),分別用于初始化和連續(xù)運(yùn)行。在此,發(fā)送消息主題名稱為chatter。Arduino示例使用2:控制LED燈的狀態(tài)在啟動(dòng)roscore后,在新終端運(yùn)行下輸入命令:$rosrunrosserial_pythonserial_no

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論