最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

6.5 URDF優(yōu)化_xacro

2023-11-07 10:13 作者:猛獅集訓營  | 我要投稿

6.5 URDF優(yōu)化_xacro

場景

前面 URDF 文件構建機器人模型的過程中,存在若干問題。

問題1:在設計關節(jié)的位置時,需要按照一定的規(guī)則計算,規(guī)則是固定的,但是在 URDF 中依賴于人工計算,存在不便,容易計算失誤,且當某些參數(shù)發(fā)生改變時,還需要重新計算。 問題2:URDF中的部分內容是高度重復的,比如車輪的設計實現(xiàn),不同輪子只是部分參數(shù)不同,形狀、顏色、翻轉量都是一致的,在實際應用中,構建復雜的機器人模型時,更是易于出現(xiàn)高度重復的設計,按照一般的編程思想涉及到重復代碼應該考慮封裝、復用,但是在之前的URDF文件中并沒有相關操作。 ......

如果在一般編程語言中遇到類似問題,我們可以通過變量結合函數(shù)解決。對應的,在 ROS 中也給出了類似編程的優(yōu)化方案,該方案稱之為:Xacro。

概念

Xacro 是 XML Macros 的縮寫,Xacro 是一種 XML 宏語言,是可編程的 XML。

Xacro 可以聲明變量,可以通過數(shù)學運算求解;可以使用流程控制控制執(zhí)行順序;還可以通過宏封裝、復用功能,從而提高代碼復用率以及程序的安全性。

作用

較之于純粹的 URDF 實現(xiàn),可以編寫更安全、精簡、易讀性更強的機器人模型文件,且可以提高編寫效率。

6.5.1 xacro_快速體驗

1.需求

使用xacro優(yōu)化6.4.4 URDF練習中的小車底盤實現(xiàn),需要使用變量封裝車輛參數(shù),并使用 xacro 宏封裝輪子重復的代碼并調用宏創(chuàng)建四個輪子(注意: 在此,演示 xacro 的基本使用,不必要生成合法的 URDF )。

2.實現(xiàn)

功能包cpp06_urdf的urdf/xacro目錄下,新建xacro文件demo01_helloworld.urdf.xacro,并編輯文件,輸入如下內容:

終端下進入當前文件所述目錄,輸入如下指令:

xacro demo01_helloworld.urdf.xacro

終端將會輸出如下內容:

6.5.2 xacro_使用語法

xacro 提供了可編程接口,類似于計算機語言,包括變量聲明調用、函數(shù)聲明與調用等語法實現(xiàn)。在使用 xacro 生成 urdf 時,根標簽robot中必須包含命名空間聲明:xmlns:xacro="http://wiki.ros.org/xacro"。

1.變量與算數(shù)運算

變量用于封裝 URDF 中的一些字段,比如: PAI 值,小車的尺寸,輪子半徑 ....,變量的基本使用語法包括變量定義、變量調用、變量運算等。

1.1變量定義

1.2變量調用

1.3變量運算

2.宏

類似于函數(shù)實現(xiàn),提高代碼復用率,優(yōu)化代碼結構,提高安全性。宏的基本使用語法包括宏的定義與調用。

2.1宏定義

語法格式:

2.2宏調用

3.文件包含

機器人由多部件組成,不同部件可能封裝為單獨的 xacro 文件,最后再將不同的文件集成,組合為完整機器人,可以使用文件包含實現(xiàn)。

6.5.3 xacro_練習

1.需求

使用xacro創(chuàng)建一個四輪機器人模型,該模型底盤可以參考6.4.4 URDF練習中的實現(xiàn),并且在底盤之上添加了相機與激光雷達。相機與激光雷達的尺寸參數(shù)、安裝位置可自定義。

2.實現(xiàn)分析

需求中的機器人模型是由底盤、攝像頭和雷達三部分組成的,那么可以將每一部分都封裝進一個xacro文件,最后再通過xacro文件包含組織成一個完整的機器人模型。

3.實現(xiàn)

功能包cpp06_urdf的urdf/xacro目錄下,新建多個xacro文件,分別為:

  • car.urdf.xacro:用于包含不同機器人部件對應的xacro文件;

  • car_base.urdf.xacro:描述機器人底盤的xacro文件;

  • car_camera.urdf.xacro:描述攝像頭的xacro文件;

  • car_laser.urdf.xacro:描述雷達的xacro文件。

編輯car.urdf.xacro文件,輸入如下內容:<robot name="car" xmlns:xacro="http://wiki.ros.org/xacro"> ? ?<xacro:include filename="car_base.urdf.xacro"/> ? ?<xacro:include filename="car_camera.urdf.xacro"/> ? ?<xacro:include filename="car_laser.urdf.xacro"/> </robot>

編輯car_base.urdf.xacro文件,輸入如下內容:

編輯car_camera.urdf.xacro文件,輸入如下內容:

ros2 launch cpp06_urdf display.launch.py model:=`ros2 pkg prefix --share cpp06_urdf`/urdf/xacro/car.urdf.xacro

命令執(zhí)行后,rviz2 中可以顯示與需求類似的機器人模型。

B站有完整的ros系列教程視頻,可以觀看完整內容ros課程ROS2理論與實踐

更多內容將在猛獅知識星球社區(qū)更新最新課程,后續(xù)將推出更多優(yōu)質內容——詳情可關注猛獅集訓營公眾號和猛獅集訓營官方網站

6.5 URDF優(yōu)化_xacro的評論 (共 條)

分享到微博請遵守國家法律
正阳县| 四子王旗| 凌云县| 金门县| 门源| 霍山县| 布拖县| 昌都县| 沭阳县| 周宁县| 县级市| 聊城市| 息烽县| 六枝特区| 安多县| 若羌县| 襄汾县| 天全县| 科尔| 合川市| 扎囊县| 宝清县| 襄垣县| 旬阳县| 霍邱县| 上思县| 项城市| 定远县| 汉川市| 武威市| 通渭县| 樟树市| 花莲县| 岑溪市| 瑞安市| 高淳县| 安岳县| 株洲市| 日照市| 抚远县| 始兴县|