ROS 2行動(dòng)-actions-

      網(wǎng)友投稿 833 2025-03-31

      前序:ROS 2參數(shù)-parameters-


      視頻教程(Linux):https://www.bilibili.com/video/BV1St4y197MP/

      本節(jié)詳細(xì)介紹行動(dòng)action。

      1. 如何理解行動(dòng)action:

      行動(dòng)action是ROS 2中用于長(zhǎng)時(shí)間運(yùn)行任務(wù)的通信類型之一。 它由三部分組成:目標(biāo),結(jié)果和反饋。

      行動(dòng)基于主題和服務(wù)。 它們的功能與服務(wù)相似,但行動(dòng)是可搶占的模式(即,可以在執(zhí)行時(shí)將其取消)。 與返回單個(gè)響應(yīng)的服務(wù)不同,它們還提供穩(wěn)定的反饋(過(guò)程狀態(tài)反饋)。

      行動(dòng)使用客戶端-服務(wù)器端模型,類似于發(fā)布者-訂閱者模型(已經(jīng)在主題教程中進(jìn)行了介紹)。 “行動(dòng)客戶端”節(jié)點(diǎn)將目標(biāo)發(fā)送到“行動(dòng)服務(wù)器”節(jié)點(diǎn),該節(jié)點(diǎn)確認(rèn)目標(biāo)并返回反饋流和一個(gè)結(jié)果。

      2. 行動(dòng)action有哪些命令功能:

      ros2 action -h

      命令如下:

      info:顯示行動(dòng)具體信息

      list:輸出行動(dòng)名列表

      send_goal:發(fā)送行動(dòng)目標(biāo)

      show:顯示行動(dòng)類型定義

      行動(dòng)消息格式如下:

      # The desired heading in radians

      float32 theta

      ---

      # The angular displacement in radians to the starting position

      float32 delta

      ---

      # The remaining rotation in radians

      float32 remaining

      主題消息,沒有---

      服務(wù)消息,一個(gè)---

      行動(dòng)消息,兩個(gè)---

      3. 行動(dòng)命令實(shí)踐

      啟動(dòng)turtesim案例如下:

      ros2 run turtlesim turtlesim_node

      ros2 run turtlesim turtle_teleop_key

      3.1 小試牛刀

      啟動(dòng)/teleop_turtle節(jié)點(diǎn)時(shí),在終端中看到以下消息:

      專注于第二行,它對(duì)應(yīng)于一個(gè)行動(dòng)。 (第一條指令對(duì)應(yīng)于主題教程中先前討論的“ cmd_vel”主題。)

      請(qǐng)注意,字母鍵G | B | V | C | D | E | R | T在鍵盤上的F鍵周圍形成一個(gè)“框”。 F周圍每個(gè)鍵的位置都對(duì)應(yīng)于turtlesim中的方向。 例如,E會(huì)將烏龜?shù)姆较蛐D(zhuǎn)到左上角。

      注意節(jié)點(diǎn)/turtlesim正在運(yùn)行的終端。 每次按這些鍵之一,就向一個(gè)目標(biāo)服務(wù)器發(fā)送目標(biāo),該服務(wù)器是/ turtlesim節(jié)點(diǎn)的一部分。 目標(biāo)是旋轉(zhuǎn)烏龜以使其朝向特定方向。 烏龜完成旋轉(zhuǎn)后,將顯示一條有關(guān)目標(biāo)結(jié)果的消息:

      E:

      V:

      F鍵將取消目標(biāo)的中間執(zhí)行,表明行動(dòng)具有可搶占的功能。

      嘗試按C鍵,在烏龜完成旋轉(zhuǎn)之前按F鍵。 在/turtlesim節(jié)點(diǎn)運(yùn)行的終端中,將看到以下消息:

      客戶端(在Teleop中的輸入)不僅可以搶占目標(biāo),而且服務(wù)器端(/turtlesim節(jié)點(diǎn))也可以搶占目標(biāo)。 當(dāng)服務(wù)器端搶占一個(gè)行動(dòng)時(shí),它“中止”了目標(biāo)。

      嘗試先按D鍵,在完成第一次旋轉(zhuǎn)之前按G鍵。 在/turtlesim節(jié)點(diǎn)運(yùn)行的終端中,將看到以下消息:

      服務(wù)器端中止了前一個(gè)目標(biāo),因?yàn)樗恢袛嗔恕?/p>

      3.2 節(jié)點(diǎn)信息(行動(dòng))

      要查看/turtlesim節(jié)點(diǎn)的行動(dòng),請(qǐng)打開一個(gè)新終端并運(yùn)行以下命令:

      ros2 node info /turtlesim

      這將返回/turtlesim的訂閱者,發(fā)布者,服務(wù),行動(dòng)服務(wù)器和行動(dòng)客戶端的列表:

      請(qǐng)注意,/turtlesim的行動(dòng)/turtle1/rotate_absolute位于行動(dòng)服務(wù)器端下。 這意味著/turtlesim會(huì)響應(yīng)行動(dòng)/turtle1/rotate_absolute并提供反饋。

      節(jié)點(diǎn)/teleop_turtle在“行動(dòng)客戶端”下具有名稱/turtle1/rotate_absolute,這表示它發(fā)送該目標(biāo)行動(dòng)的名稱。

      ros2 node info /teleop_turtle

      通俗一點(diǎn):

      節(jié)點(diǎn)turtlesim為行動(dòng)服務(wù)器端

      節(jié)點(diǎn)teleop_turtle為行動(dòng)客戶端

      3.3 行動(dòng)列表

      ROS 2行動(dòng)-actions-

      顯示ROS圖中的所有行動(dòng),運(yùn)行以下命令:

      ros2 action list

      返回值:

      /turtle1/rotate_absolute

      這是目前ROS圖中唯一的行動(dòng)。 如先前所見,它控制著烏龜?shù)男D(zhuǎn)。 使用ros2節(jié)點(diǎn)信息命令可以為該操作提供一個(gè)行動(dòng)客戶端(/teleop_turtle的一部分)和一個(gè)行動(dòng)服務(wù)器(/turtlesim的一部分)。

      3.4 行動(dòng)信息

      使用以下命令進(jìn)一步查詢/turtle1/rotate_absolute行動(dòng):

      ros2 action info /turtle1/rotate_absolute

      返回:

      運(yùn)行ros2節(jié)點(diǎn)信息:/teleop_turtle節(jié)點(diǎn)有一個(gè)行動(dòng)客戶端,/turtlesim節(jié)點(diǎn)有一個(gè)針對(duì)/turtle1/rotate_absolute行動(dòng)服務(wù)器。

      3.5 行動(dòng)接口

      發(fā)送或執(zhí)行目標(biāo)行動(dòng)之前,需要知道是行動(dòng)的結(jié)構(gòu)類型。

      回想一下,在運(yùn)行ros2行動(dòng)列表-t時(shí),已經(jīng)確定了/turtle1/rotate_absolute的類型。 在終端中輸入以下命令和行動(dòng)類型:

      ros2 interface show turtlesim/action/RotateAbsolute.action

      返回:

      該消息的位于---上方的第一部分,是目標(biāo)請(qǐng)求結(jié)構(gòu)(數(shù)據(jù)類型和名稱)。中間部分是結(jié)果的結(jié)構(gòu)。 最下面一部分是反饋的結(jié)構(gòu)。

      3.6 命令行發(fā)布行動(dòng)

      現(xiàn)在,使用以下語(yǔ)法從命令行發(fā)送一個(gè)目標(biāo)行動(dòng):

      ros2 action send_goal

      必須為YAML格式。

      密切注意turtlesim窗口,并在終端中輸入以下命令:

      ros2 action send_goal /turtle1/rotate_absolute turtlesim/action/RotateAbsolute {"theta: 1.57"}

      顯示如下:

      所有目標(biāo)都有唯一的ID,如返回消息所示。 還可以看到結(jié)果,一個(gè)名為delta的字段,它是到起始位置的位移。

      要查看此目標(biāo)的反饋,請(qǐng)將--feedback添加到運(yùn)行的最后一個(gè)命令。 首先,請(qǐng)確保更改theta的值。 運(yùn)行上一條命令后,烏龜將已經(jīng)處于1.57弧度的方向,因此除非傳遞新的theta,否則它不會(huì)移動(dòng)。

      ros2 action send_goal /turtle1/rotate_absolute turtlesim/action/RotateAbsolute {"theta: -1.57"} --feedback

      過(guò)程1:

      過(guò)程2:

      將繼續(xù)收到剩余弧度值的反饋,直到完成目標(biāo)。

      4. 小結(jié)

      行動(dòng)類似服務(wù),實(shí)現(xiàn)執(zhí)行長(zhǎng)時(shí)間運(yùn)行的任務(wù),提供定期反饋并可以取消。

      機(jī)器人系統(tǒng)可能會(huì)使用行動(dòng)進(jìn)行導(dǎo)航。 一個(gè)行動(dòng)目標(biāo)可以告訴機(jī)器人去某個(gè)位置。 機(jī)器人導(dǎo)航到該位置時(shí),可以沿途發(fā)送更新(即反饋),一旦到達(dá)目的地,它就會(huì)發(fā)送最終結(jié)果消息。

      Turtlesim有一個(gè)行動(dòng)服務(wù)器,行動(dòng)客戶端可以將目標(biāo)發(fā)送給旋轉(zhuǎn)的烏龜。 在本教程中,對(duì)行動(dòng)/turtle1/rotate_absolute進(jìn)行了分析,更好地了解什么是行動(dòng)以及它們?nèi)绾喂ぷ鳌?/p>

      機(jī)器人

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:快速只允許在一系列單元格中輸入特定字符
      下一篇:excel建立數(shù)據(jù)透視表(excel建立數(shù)據(jù)透視表行標(biāo)簽列標(biāo)簽)
      相關(guān)文章
      亚洲精品色在线网站| 亚洲色精品三区二区一区| 亚洲国产午夜精品理论片在线播放 | 77777午夜亚洲| 亚洲AV无码一区东京热| 精品亚洲成α人无码成α在线观看 | 亚洲精品国产日韩无码AV永久免费网| 亚洲日韩av无码中文| 亚洲人配人种jizz| 亚洲制服丝袜一区二区三区| 亚洲国产亚洲片在线观看播放| 亚洲精品国产啊女成拍色拍| 777亚洲精品乱码久久久久久 | 人人狠狠综合久久亚洲| 亚洲国产精品精华液| 亚洲第一成年免费网站| 亚洲av无码专区亚洲av不卡| 亚洲国产精品精华液| 国产成人亚洲综合在线| 丁香亚洲综合五月天婷婷| 国产成人亚洲毛片| 亚洲AV无码国产一区二区三区| 亚洲精品456人成在线| 亚洲综合色一区二区三区| 亚洲精品GV天堂无码男同| 亚洲AⅤ男人的天堂在线观看| 亚洲暴爽av人人爽日日碰| 国产亚洲欧美在线观看| 免费亚洲视频在线观看| 亚洲精品tv久久久久| 日韩一卡2卡3卡4卡新区亚洲| 亚洲熟妇丰满多毛XXXX| 国产av天堂亚洲国产av天堂| 亚洲AV成人片色在线观看| 久久久亚洲欧洲日产国码二区 | 亚洲欧洲日韩不卡| 亚洲日韩乱码中文无码蜜桃臀| 亚洲人成网站18禁止久久影院 | 亚洲AV成人噜噜无码网站| 亚洲熟女综合色一区二区三区| 亚洲AV无码一区二区三区电影|