日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ROS 总结(二):创建URDF模型

發布時間:2025/6/17 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ROS 总结(二):创建URDF模型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在機器人仿真中,URDF模型包含了機器人運動學和動力學的所有特征,可以自動進行運動學和動力學建模。

1、生成mesh文件

mesh文件一把分兩種:

  • visual
    一般是 <.dae> 格式的,主要用來顯示模型。

  • collision

    一般是 <.stl > 格式的,主要用來進行碰撞檢測。

一般的三維制圖軟件都可以導出各種格式的文件,可以用 < Google Sketchup >、< SolidWorks> 等軟件生成。

如果不進行碰撞檢測,完全可以用圓柱體、長方體等常見形狀來代替。

只要質量、質心、慣量矩陣等設置正確,運動學和動力學仿真沒有任何問題。顯示模型的形狀只是為了好看,而其設置的屬性才是根本。

2、建模

文件框架如下所示:

<robot name="pr2"><link> ... </link><link> ... </link><link> ... </link><joint> .... </joint><joint> .... </joint><joint> .... </joint></robot>

第一個連桿的名稱必須是 base_link。

具體的建模細節可以參考:

http://blog.csdn.net/xuehuafeiwu123/article/details/54311457 http://blog.csdn.net/xuehuafeiwu123/article/details/54288561 http://blog.csdn.net/xuehuafeiwu123/article/details/54287829 http://wiki.ros.org/urdf/XML

建模需要注意的主要有:

  • 1、DH矩陣

DH矩陣的重要性就不說的,如果錯誤,后面的一切都是浮云。
這里要說的是,DH矩陣和連桿坐標系緊密相連,如果連桿坐標系建立的不一樣,DH矩陣也會有差別。

  • 2、質量、質心

是連桿的質量包括連桿、電機、減速器等,這個要具體計算,而質心是和質量一一對應的。如果質量是分開算的,那質心也得分開算。

  • 3、轉動慣量

轉動慣量具體指的是 相對于坐標系在質心,坐標軸和連桿坐標系平行的坐標系的轉動慣量矩陣。這一項對于計算機器人的動力學非常重要,而通常又是非常難以計算準確的一個參數。總之、要認證仔細了。

  • 4、旋轉軸

旋轉軸是指連桿的轉動軸。一般設置為連桿坐標系的 Z<script type="math/tex" id="MathJax-Element-1">Z</script> 軸。

  • 5、坐標系

坐標系的變換是各個和坐標系有關的量的基準,例如質心、轉動慣量等,一定要清楚每一個量相對應的坐標系,對不同的坐標系,他們的值往往是變化的。

3、使用宏

使用 xacro 文件的時候,經常用到宏。

<xacro:macro name="pr2_arm" params="suffix parent reflect"><pr2_upperarm suffix="${suffix}" reflect="${reflect}" parent="${parent}" /><pr2_forearm suffix="${suffix}" reflect="${reflect}" parent="elbow_flex_${suffix}" /> </xacro:macro><xacro:pr2_arm suffix="left" reflect="1" parent="torso" /> <xacro:pr2_arm suffix="right" reflect="-1" parent="torso" />

相當于建立的四個連桿:

<pr2_upperarm suffix="left" reflect="1" parent="torso" /> <pr2_forearm suffix="left" reflect="1" parent="elbow_flex_left" /> <pr2_upperarm suffix="right" reflect="-1" parent="torso" /> <pr2_forearm suffix="right" reflect="-1" parent="elbow_flex_right" /> ##

這樣的話會使得建模簡單化,對于一些結構相同,知識參數賦值不同的塊來說,既加快了開發速度,有不容易出錯。

4、在rviz中查看模型

一般編寫 launch 文件

格式如下:

<launch><!-- Load the URDF/Xacro model of our robot --><param name="robot_description" command="$(find xacro)/xacro.py '$(find rbx2_description)/urdf/pedestal_pi/pedestal_pi_with_gripper.xacro'" /><!-- Provide simulated control of the robot joint angles --><node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher"><param name="/use_gui" value="True"/><param name="rate" value="20"/></node><!-- Publish the robot state --><node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher"><param name="publish_frequency" value="20.0"/></node></launch>

至少要包含三個節點:

1、urdf文件加載模型,可以用 <include> 等。2、joint_ state_publisher此節點讀取機器人模型中的集合參數,并且發布一系列的變換矩陣組成機器人的 tf 樹。3、robot_ state_publisher這個節點是專門在 rviz 中使用的。可以顯示各關節的滑動條。<para name="use_gui" value="true"/>當然還可以設置其他參數。

關于 launch 文件,可以參考:

http://blog.csdn.net/xuehuafeiwu123/article/details/53991226

5、加載部件

可以把 ROS 上已經存在的部件加到自己的文件中而不需要自己重新建模。

已經存在的模型可以參考:

http://gazebosim.org/models

也可以直接加其他機器人包中的部件。只要在 < geometry>標簽中寫上正確的路徑即可。如:

<geometry><mesh filename="package://pr2_description/meshes/gripper_v0/1_finger.dae"/> <\geometry>

ROS上的很多東西都可以共享的。

6、參考文件

http://wiki.ros.org/
http://wiki.ros.org/xacro
劉平杰等譯,ROS機器人程序設計,機械工業出版社,2014.09
R. PATRICK GOEBEL,ROS By Example(VOLUME 2),July 2014

總結

以上是生活随笔為你收集整理的ROS 总结(二):创建URDF模型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。