国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【ROS2機器人入門到實戰(zhàn)】ROS2接口介紹

這篇具有很好參考價值的文章主要介紹了【ROS2機器人入門到實戰(zhàn)】ROS2接口介紹。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

7.ROS2接口介紹

寫在前面

  1. 當(dāng)前平臺文章匯總地址:ROS2機器人從入門到實戰(zhàn)
  2. 獲取完整教程及配套資料代碼,請關(guān)注公眾號<魚香ROS>獲取
  3. 教程配套機器人開發(fā)平臺:兩驅(qū)版| 四驅(qū)版
  4. 為方便交流,搭建了機器人技術(shù)問答社區(qū):地址 fishros.org.cn

本節(jié)小魚將會帶你學(xué)習(xí)認(rèn)識一個新的概念,叫做interface,即接口。

1.ROS2接口介紹

1.1 什么是接口

接口其實是一種規(guī)范

你還記得前面幾節(jié)的示例中,我們在代碼中使用過這兩種接口,這兩種數(shù)據(jù)類型分別代表字符串和32位二進制的整型數(shù)據(jù),是ROS 2提前定義的一種規(guī)范。

std_msgs/msg/String
std_msgs/msg/UInt32

1.2 為什么使用接口

小魚舉一個雷達的例子,不同的廠家生產(chǎn)出不同的類型的激光雷達,每種雷達驅(qū)動方式、掃描速率等等都不相同。

當(dāng)機器人進行導(dǎo)航時,需要激光雷達的掃描數(shù)據(jù),假如沒有統(tǒng)一接口,每次更換一個種類的雷達,都需要重新做程序適配。

于是ROS2中定義了一個統(tǒng)一的接口叫做sensor_msgs/msg/LaserScan,現(xiàn)在幾乎每個雷達的廠家都會編寫程序?qū)⒆约豪走_的數(shù)據(jù)變成sensor_msgs/msg/LaserScan格式,提供給用戶使用。

如果雷達的例子不好理解,大家可以把雷達換成手機充電器,USB接口是不是也是一種規(guī)范,所有的廠家都按照這種接口進行充電器和連接線的生產(chǎn)。

1.3. ROS2自帶的接口

前面話題通信時std_msgs功能包是我們安裝ROS2的時候ROS2為我們自動安裝的,除了std_msgs之外,ROS2還定義了很多做機器人常用的接口。

使用ros2 interface package sensor_msgs命令可以查看某一個接口包下所有的接口

比如:傳感器類的消息包sensor_msgs

打開終端輸入:ros2 interface package sensor_msgs
sensor_msgs/msg/JointState  #機器人關(guān)節(jié)數(shù)據(jù)
sensor_msgs/msg/Temperature #溫度數(shù)據(jù)
sensor_msgs/msg/Imu #加速度傳感器
sensor_msgs/msg/Image #圖像
sensor_msgs/msg/LaserScan #雷達數(shù)據(jù)
......

雖然ROS2為我們定義了大量有手就行,拿來就用的接口,但有時候還是不能滿足我們的變態(tài)想法,所以我們需要掌握自定義接口的方法。

2. 接口文件內(nèi)容

2.1 可以定義的接口三種類型

小魚提到過,ROS2提供了四種通信方式:

  • 話題-Topics
  • 服務(wù)-Services
  • 動作-Action
  • 參數(shù)-Parameters

除了參數(shù)之外,話題、服務(wù)和動作(Action)都支持自定義接口,每一種通信方式所適用的場景各不相同,所定義的接口也被分為話題接口、服務(wù)接口、動作接口三種。

2.2 接口形式

這三種接口定義起來有什么不一樣的地方呢?小魚先帶大家直觀感受一下:

話題接口格式:xxx.msg

int64 num

服務(wù)接口格式:xxx.srv

int64 a
int64 b
---
int64 sum

動作接口格式:xxx.action

int32 order
---
int32[] sequence
---
int32[] partial_sequence

2.3 接口數(shù)據(jù)類型

根據(jù)引用方式不同可以分為基礎(chǔ)類型和包裝類型兩類。

基礎(chǔ)類型有(同時后面加上[]可形成數(shù)組)

bool
byte
char
float32,float64
int8,uint8
int16,uint16
int32,uint32
int64,uint64
string

包裝類型

即在已有的接口類型上進行包含,比如

uint32 id
string image_name
sensor_msgs/Image

2.4 接口如何生成代碼

有的同學(xué)可能會問這樣一個問題,我們只是簡單的寫了一下變量類型和名稱,我們在程序里面怎么調(diào)用呢?

其實這里有一個轉(zhuǎn)換的過程:將msg、srv、action文件轉(zhuǎn)換為Python和C++的頭文件。

通過ROS2的IDL模塊 產(chǎn)生了頭文件,有了頭文件,我們就可以在程序里導(dǎo)入并使用這個消息模塊。

3.自定義接口實踐

3.1 場景定義

給定一個機器人開發(fā)中的常見控制場景,我們設(shè)計滿足要求的服務(wù)接口和話題接口。

設(shè)計兩個節(jié)點

  • 一個機器人節(jié)點,對外提供移動指定距離服務(wù),移動完成后返回當(dāng)前位置,同時對外發(fā)布機器人的位置和狀態(tài)(是否在移動)。
  • 機器人控制節(jié)點,通過服務(wù)控制機器人移動指定距離,并實時獲取機器人的當(dāng)前位置和狀態(tài)。

假設(shè)機器人在坐標(biāo)軸上,只能前后移動。

3.2 定義接口

服務(wù)接口MoveRobot.srv

# 前進后退的距離
float32 distance
---
# 當(dāng)前的位置
float32 pose

話題接口,采用基礎(chǔ)類型 RobotStatus.msg

uint32 STATUS_MOVEING = 1
uint32 STATUS_STOP = 1
uint32  status
float32 pose

話題接口,混合包裝類型 RobotPose.msg

uint32 STATUS_MOVEING = 1
uint32 STATUS_STOP = 2
uint32  status
geometry_msgs/Pose pose

3.3 創(chuàng)建接口功能包編接口

創(chuàng)建功能包

ros2 pkg create example_ros2_interfaces --build-type ament_cmake --dependencies rosidl_default_generators geometry_msgs

注意功能包類型必須為:ament_cmake

依賴rosidl_default_generators必須添加,geometry_msgs視內(nèi)容情況添加(我們這里有geometry_msgs/Pose pose所以要添加)。

接著創(chuàng)建文件夾和文件將3.2中文件寫入,注意話題接口放到msg文件夾下,以.msg結(jié)尾。服務(wù)接口放到srv文件夾下,以srv結(jié)尾。

.
├── CMakeLists.txt
├── msg
│   ├── RobotPose.msg
│   └── RobotStatus.msg
├── package.xml
└── srv
    └── MoveRobot.srv

2 directories, 5 files

接著修改CMakeLists.txt

find_package(rosidl_default_generators REQUIRED)
find_package(geometry_msgs REQUIRED)
# 添加下面的內(nèi)容
rosidl_generate_interfaces(${PROJECT_NAME}
  "msg/RobotPose.msg"
  "msg/RobotStatus.msg"
  "srv/MoveRobot.srv"
  DEPENDENCIES geometry_msgs
)

接著修改package.xml

  <buildtool_depend>ament_cmake</buildtool_depend>

  <depend>rosidl_default_generators</depend>
  <depend>geometry_msgs</depend>
  
  <member_of_group>rosidl_interface_packages</member_of_group> #添加這一行

  <test_depend>ament_lint_auto</test_depend>
  <test_depend>ament_lint_common</test_depend>

保存即可編譯

colcon build --packages-select example_ros2_interfaces

編譯完成后在chapt3_ws/install/example_ros2_interfaces/include下你應(yīng)該可以看到C++的頭文件。在chapt3_ws/install/example_ros2_interfaces/local/lib/python3.10/dist-packages下應(yīng)該可以看到Python版本的頭文件。

接下來的代碼里我們就可以通過頭文件導(dǎo)入和使用我們定義的接口了。

@TODO 講一下為什么要source

4.ROS2接口常用CLI命令

最后給大家講一下ROS2接口相關(guān)的常用命令有哪些。

4.1查看接口列表

ros2 interface list

ros2 接口,ROS2機器人入門到實戰(zhàn),機器人,ROS2,接口介紹

4.2 查看某一個接口詳細(xì)的內(nèi)容

ros2 interface show std_msgs/msg/String

ros2 接口,ROS2機器人入門到實戰(zhàn),機器人,ROS2,接口介紹文章來源地址http://www.zghlxwxcb.cn/news/detail-754757.html

到了這里,關(guān)于【ROS2機器人入門到實戰(zhàn)】ROS2接口介紹的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【ROS2機器人入門到實戰(zhàn)】ROS2話題入門

    【ROS2機器人入門到實戰(zhàn)】ROS2話題入門

    當(dāng)前平臺文章匯總地址:ROS2機器人從入門到實戰(zhàn) 獲取完整教程及配套資料代碼,請關(guān)注公眾號魚香ROS獲取 教程配套機器人開發(fā)平臺:兩驅(qū)版| 四驅(qū)版 為方便交流,搭建了機器人技術(shù)問答社區(qū):地址 fishros.org.cn 話題是ROS2中最常用的通信方式之一,話題通信采取的是訂閱發(fā)布

    2024年02月04日
    瀏覽(25)
  • 【ROS2機器人入門到實戰(zhàn)】ROS2服務(wù)入門

    【ROS2機器人入門到實戰(zhàn)】ROS2服務(wù)入門

    當(dāng)前平臺文章匯總地址:ROS2機器人從入門到實戰(zhàn) 獲取完整教程及配套資料代碼,請關(guān)注公眾號魚香ROS獲取 教程配套機器人開發(fā)平臺:兩驅(qū)版| 四驅(qū)版 為方便交流,搭建了機器人技術(shù)問答社區(qū):地址 fishros.org.cn 大家好,帥魚又蹬蹬蹬的游回來了。本節(jié)小魚將要帶大家一起了解

    2024年02月07日
    瀏覽(54)
  • 【ROS2機器人入門到實戰(zhàn)】

    當(dāng)前平臺文章匯總地址:ROS2機器人從入門到實戰(zhàn) 獲取完整教程及配套資料代碼,請關(guān)注公眾號魚香ROS獲取 教程配套機器人開發(fā)平臺:兩驅(qū)版| 四驅(qū)版 為方便交流,搭建了機器人技術(shù)問答社區(qū):地址 fishros.org.cn 第 1 章 ROS2介紹與安裝 基礎(chǔ)篇-Linux基礎(chǔ) 1.Linux與Ubuntu系統(tǒng)介紹 2.在

    2024年02月16日
    瀏覽(54)
  • 【ROS2機器人入門到實戰(zhàn)】3.動手安裝ROS2

    【ROS2機器人入門到實戰(zhàn)】3.動手安裝ROS2

    當(dāng)前平臺文章匯總地址:ROS2機器人從入門到實戰(zhàn) 獲取完整教程及配套資料代碼,請關(guān)注公眾號魚香ROS獲取 教程配套機器人開發(fā)平臺:兩驅(qū)版| 四驅(qū)版 為方便交流,搭建了機器人技術(shù)問答社區(qū):地址 fishros.org.cn 到了這一節(jié),終于可以開始安裝ROS2了。安裝ROS2本來是一件比較麻

    2024年02月13日
    瀏覽(29)
  • 【ROS2機器人入門到實戰(zhàn)】4.ROS2初體驗

    【ROS2機器人入門到實戰(zhàn)】4.ROS2初體驗

    當(dāng)前平臺文章匯總地址:ROS2機器人從入門到實戰(zhàn) 獲取完整教程及配套資料代碼,請關(guān)注公眾號魚香ROS獲取 教程配套機器人開發(fā)平臺:兩驅(qū)版| 四驅(qū)版 為方便交流,搭建了機器人技術(shù)問答社區(qū):地址 fishros.org.cn 通過幾個簡單的小例子來體驗ROS2軟件庫和工具集。 游戲內(nèi)容:很

    2024年02月04日
    瀏覽(20)
  • 【ROS2機器人入門到實戰(zhàn)】2.ROS與ROS2對比

    【ROS2機器人入門到實戰(zhàn)】2.ROS與ROS2對比

    當(dāng)前平臺文章匯總地址:ROS2機器人從入門到實戰(zhàn) 獲取完整教程及配套資料代碼,請關(guān)注公眾號魚香ROS獲取 教程配套機器人開發(fā)平臺:兩驅(qū)版| 四驅(qū)版 為方便交流,搭建了機器人技術(shù)問答社區(qū):地址 fishros.org.cn 經(jīng)過上一節(jié)的學(xué)習(xí),相信你已經(jīng)對ROS和ROS2的發(fā)展有了一定的了解

    2024年02月04日
    瀏覽(28)
  • 【ROS2機器人入門到實戰(zhàn)】2.ROS2功能包與工作空間

    【ROS2機器人入門到實戰(zhàn)】2.ROS2功能包與工作空間

    當(dāng)前平臺文章匯總地址:ROS2機器人從入門到實戰(zhàn) 獲取完整教程及配套資料代碼,請關(guān)注公眾號魚香ROS獲取 教程配套機器人開發(fā)平臺:兩驅(qū)版| 四驅(qū)版 為方便交流,搭建了機器人技術(shù)問答社區(qū):地址 fishros.org.cn 大家好,我是小魚~上一節(jié)小魚給大家介紹了一下節(jié)點,運行一個

    2024年01月23日
    瀏覽(48)
  • 【ROS2機器人入門到實戰(zhàn)】地圖保存與編輯

    【ROS2機器人入門到實戰(zhàn)】地圖保存與編輯

    當(dāng)前平臺文章匯總地址:ROS2機器人從入門到實戰(zhàn) 獲取完整教程及配套資料代碼,請關(guān)注公眾號魚香ROS獲取 教程配套機器人開發(fā)平臺:兩驅(qū)版| 四驅(qū)版 為方便交流,搭建了機器人技術(shù)問答社區(qū):地址 fishros.org.cn 可以看到有下面的用法 我們的地圖話題為map,文件名字我們用f

    2024年02月03日
    瀏覽(32)
  • 【ROS2機器人入門到實戰(zhàn)】Colcon使用進階

    【ROS2機器人入門到實戰(zhàn)】Colcon使用進階

    當(dāng)前平臺文章匯總地址:ROS2機器人從入門到實戰(zhàn) 獲取完整教程及配套資料代碼,請關(guān)注公眾號魚香ROS獲取 教程配套機器人開發(fā)平臺:兩驅(qū)版| 四驅(qū)版 為方便交流,搭建了機器人技術(shù)問答社區(qū):地址 fishros.org.cn 基礎(chǔ)篇中小魚帶你用gcc編譯了ROS2節(jié)點。對你來說,使用CMake(GC

    2024年02月02日
    瀏覽(54)
  • 【ROS2機器人入門到實戰(zhàn)】話題之RCLCPP實現(xiàn)

    【ROS2機器人入門到實戰(zhàn)】話題之RCLCPP實現(xiàn)

    當(dāng)前平臺文章匯總地址:ROS2機器人從入門到實戰(zhàn) 獲取完整教程及配套資料代碼,請關(guān)注公眾號魚香ROS獲取 教程配套機器人開發(fā)平臺:兩驅(qū)版| 四驅(qū)版 為方便交流,搭建了機器人技術(shù)問答社區(qū):地址 fishros.org.cn 本節(jié)我們學(xué)習(xí)使用ROS2的RCLCPP客戶端庫來實現(xiàn)話題通信。 RCLCPP為

    2024年02月07日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包