智能網(wǎng)聯(lián)汽車計算平臺部署與測試 課件 第3章 ROS 編程_第1頁
智能網(wǎng)聯(lián)汽車計算平臺部署與測試 課件 第3章 ROS 編程_第2頁
智能網(wǎng)聯(lián)汽車計算平臺部署與測試 課件 第3章 ROS 編程_第3頁
智能網(wǎng)聯(lián)汽車計算平臺部署與測試 課件 第3章 ROS 編程_第4頁
智能網(wǎng)聯(lián)汽車計算平臺部署與測試 課件 第3章 ROS 編程_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

智能網(wǎng)聯(lián)創(chuàng)新實驗室無人駕駛系統(tǒng)編成目錄1ROS編成2ROSCPP3ROSPY4ROSLISP目錄1ROS編成2ROSCPP3ROSPY4ROSLISPPage.

4ROS編成Page.

5ROS編程Page.

6ROS概述roscpp:ROS中的C++客戶端庫,執(zhí)行效率高,在ROS中使用最廣泛。rospy:ROS中的python客戶端庫,使得ROS可以享有面向?qū)ο蟮哪_本語言所帶來的便利。rospy注重開發(fā)效率而不是運行效率,master,roslaunch和很多工具都是采用rospy開發(fā)的。roslisp:用于LISP的客戶端庫,它目前用于開發(fā)規(guī)劃庫。其他實驗庫:rosjava,roslua目錄1ROS編成2ROSCPP3ROSPY4ROSLISPPage.

8ROSCPP簡單的主題發(fā)布者和主題訂閱者:編寫主題發(fā)布者節(jié)點需要:初始化ROS系統(tǒng)廣播消息:在foo主題上發(fā)布Foo_type_msg類型的消息已指定頻率發(fā)布消息到foo主題編寫主題訂閱者需要:初始化ROS從foo主題訂閱消息Spin,然后等待消息到達當消息到達時,Msg_Callback()函數(shù)被調(diào)用Page.

9ROSCPPPage.

10ROSCPP簡單的服務(wù)器端和客戶端:服務(wù)器端客戶端如何使用參數(shù)提取參數(shù)boolgetParam(conststd::string&key,parameter_type

&output_value)constparameter_typeparam(conststd::string&

param_name,parameter_type&

default_val)設(shè)置參數(shù)voidsetParam(conststd::string&key,parameter_type&v)

const刪除參數(shù)booldeleteParam(conststd::string&key)

const檢查存在性boolhasParam(conststd::string&key)

constPage.

11ROSCPPPage.

12ROSCPPPage.

13ROSCPPPage.

14ROSCPPHello

World程序節(jié)點:

2個節(jié)點talker

(talker.cpp)

:

包含一個發(fā)布者節(jié)點listener

(listener.cpp)

:

包含一個接收者節(jié)點間的通訊:Topic(話題的名稱):“chatter”Message(傳遞的數(shù)據(jù)類型):std_msgs::StringString為

ROS自定義的數(shù)據(jù)類型String中包含唯一變量為

std::string

dataPage.

15ROSCPPHelloWorld程序Page.

16ROSCPPHello

World程序Page.

17ROSCPPHelloWorld程序目錄1ROS編成2ROSCPP3ROSPY4ROSLISPPage.

19ROSPYrospy是ROS的純Python客戶端庫。rospy客戶端API使Python程序員能夠快速與ROS

主題,服務(wù)和參數(shù)進行交互。rospy的設(shè)計有利于運行時性能的實現(xiàn)速度(即開發(fā)者時間),以便可以在ROS內(nèi)快速對原型和測試進行算法測試。它也非常適合非關(guān)鍵路徑代碼,例如配置和初始化代碼。許多ROS工具都是用rospy編寫的,以利用類型內(nèi)省功能。許多ROS工具,例如rostopic

和rosservice,都建立在rospy之上。Page.

20ROSPY編寫發(fā)布節(jié)點“Node”(節(jié)點)是ROS術(shù)語,表示被連接到ROS網(wǎng)絡(luò)的可執(zhí)行文件。在這里,我們將創(chuàng)建發(fā)布者("talker")節(jié)點,這將持續(xù)的廣播一個消息。目錄更改為beginner_tutorials包,你在前面的教程中創(chuàng)建一個package(包):$roscd

beginner_tutorials我們創(chuàng)建一個“腳本”文件夾來存儲我們的Python腳本:$mkdir

scripts$cd

scripts那么示例腳本下載talker.py到新的腳本,目錄,使其可執(zhí)行:$wget/ros/ros_t...

_listener/talker.py$chmod+x

talker.py您可以查看和編輯文件

$

rosed

beginner_tutorials

talker.py

或者看下面。Page.

21ROSPY//

切換行號顯示#!/usr/bin/env

python#licenseremovedfor

brevityimport

rospy//每個Python

ROS

節(jié)點都會有這樣的聲明在頂部from

std_msgs.msg

import

String

//

std_msgs.msg導入,使我們可以重新使用std_msgs

/String消息類型發(fā)布。def

talker():pub

=

rospy.Publisher('chatter',

String,

queue_size=10)

//聲明節(jié)點發(fā)布到話題使用消息類型是String。String這里實際上是std_msgs.msg.String類。該queue_size參數(shù)是在新的ROS

hydro中,

若subscriber

(訂閱者)接收并不是足夠的快的情況下

,限制隊列消息的數(shù)量。rospy.init_node('talker',

anonymous=True)

//是非常重要的,因為它會告訴rospy節(jié)點的名稱—直到rospy有這方面的信息,就不能開始與ROS

Master(ROS控制器)通信。在這種情況下,您的節(jié)點將命名為talker.

。rate=rospy.Rate(10)

#

10hz //該行創(chuàng)建了一個Rate的對象。其為了方便實現(xiàn)sleep()方法,它提供了一個便捷的途徑在所需的速度下循環(huán)。隨著它的參數(shù)10,我們應(yīng)該預料到每秒10次經(jīng)過一個循環(huán)while

not

rospy.is_shutdown():

//這個循環(huán)是一個很標準的rospy結(jié)構(gòu):檢查rospy.is_shutdown()標志位,然后進入while循環(huán)。你必須察看is_shutdown()來檢查你的程序應(yīng)該退出rospy.get_time() rospy.loginfo(hello_str)hello_str

=

"hello

world

s"pub.publish(hello_str)rate.sleep()if__name

=='__main

':try:talker() //除了標準的

Python

__main

check之外,還將獲得一個rospy.ROSInterruptException.except

rospy.ROSInterruptException:pass //當按下Ctrl-C鍵被按下或當節(jié)點關(guān)閉時,可以通過rospy.sleep()和rospy.Rate.sleep()方法關(guān)閉節(jié)點。這引發(fā)異常的原因是為了在執(zhí)行代碼

sleep()

后繼續(xù)執(zhí)行。目錄1ROS編成2ROSCPP3

ROSPY 4ROSLISPPage.

23ROSLISPRoslisp是用于在慣用Common

Lisp中編寫ROS節(jié)點的客戶端庫。該庫的編寫是為了支持易用性,快速編寫節(jié)點腳本以

溫馨提示

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

評論

0/150

提交評論