从零开始建立机械臂URDF模型
1.創(chuàng)建功能包,初始化環(huán)境
catkin_create_pkg mbot_description urdf xacro2.配置環(huán)境
3.在src文件夾下新建urdf、meshes、launch、config文件夾
4.在urdf文件里面新建一個(gè)marm.urdf文件
5.配置marm.launch啟動(dòng)文件
<launch><!-- 設(shè)置機(jī)器人模型路徑參數(shù) --><param name="robot_description" textfile="$(find marm_description)/urdf/marm.urdf" /><!-- 運(yùn)行joint_state_publisher節(jié)點(diǎn),發(fā)布機(jī)器人的關(guān)節(jié)狀態(tài) --><node name="joint_state_publisher_gui" pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" /><!-- 運(yùn)行robot_state_publisher節(jié)點(diǎn),發(fā)布tf --><node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" /><!-- 運(yùn)行rviz可視化界面 --><node name="rviz" pkg="rviz" type="rviz" args="-d $(find marm_description)/config/marm_urdf.rviz" required="true" /> </launch>以后若要換,只需要修改機(jī)器人模型路徑參數(shù)即可
6.編輯marm.urdf文件,先建立一個(gè)底座:
<?xml version="1.0" ?> <robot name="marm"><!-- / COLOR / --><material name="Black"><color rgba="0 0 0 1"/></material><material name="White"><color rgba="1 1 1 1"/></material><material name="Blue"><color rgba="0 0 1 1"/></material><material name="Red"><color rgba="1 0 0 1"/></material><!-- / BASE / --><link name="base_link"><visual><origin rpy="0 0 0" xyz="0 0 0"/><geometry><cylinder length="0.04" radius="0.05"/></geometry><material name="White"/></visual></link>效果圖如下:
7.加入第一個(gè)link:
<!-- / LINK1 // --><link name="link1"><visual><origin rpy="0 1.5707 0" xyz="-0.05 0 0"/><geometry><cylinder length="0.1" radius="0.03"/></geometry><material name="Blue"/></visual></link><joint name="joint1" type="revolute"><parent link="base_link"/><child link="link1"/><origin rpy="0 1.5707 0" xyz="0 0 0.02"/><axis xyz="-1 0 0"/><limit effort="300" lower="-3.14159" upper="3.14159" velocity="1"/></joint>效果圖如下:
continuous: 一個(gè)不受限制的, 繞著一根軸的轉(zhuǎn)動(dòng)副.
revolute: 一個(gè)轉(zhuǎn)動(dòng)角度受到限制的, 繞著一根軸的轉(zhuǎn)動(dòng)副.
prismatic: 一個(gè)沿著一根軸的滑動(dòng)副, 并且有限位.
fixed: 固定關(guān)節(jié).
floating: 這個(gè)關(guān)節(jié)允許六個(gè)自由度的運(yùn)動(dòng), 浮動(dòng)關(guān)節(jié).
planar: wiki上的原話是: This joint allows motion in a plane perpendicular to the axis. 我理解是, 這個(gè)關(guān)節(jié)允許再垂直于軸的一個(gè)平面內(nèi)進(jìn)行運(yùn)動(dòng), 參考"ROS機(jī)器人開發(fā)實(shí)踐"第115頁(yè)上的內(nèi)容. 這里的運(yùn)動(dòng)應(yīng)該即包括平移, 也包括旋轉(zhuǎn).
8.依次添加link2、link3、link4、link5、link6
<!-- /// LINK2 // --><link name="link2"><visual><origin rpy="0 0 0" xyz="0 0 0.07"/><geometry><cylinder length="0.14" radius="0.03"/></geometry><material name="White"/></visual></link><joint name="joint2" type="revolute"><parent link="link1"/><child link="link2"/><origin rpy="-1.5707 0 1.5707" xyz="-0.1 0 0.0"/><axis xyz="1 0 0"/><limit effort="300" lower="-3.14159" upper="3.14159" velocity="1"/></joint><!-- / LINK3 / --><link name="link3"><visual><origin rpy="0 0 0" xyz="0 0 -0.075"/><geometry><cylinder length="0.15" radius="0.03"/></geometry><material name="Blue"/></visual></link><joint name="joint3" type="revolute"><parent link="link2"/><child link="link3"/><origin rpy="0 3.14159 0" xyz="0 0 0.14"/><axis xyz="-1 0 0"/><limit effort="300" lower="-3.14159" upper="3.14159" velocity="1"/></joint><!-- /// LINK4 --><link name="link4"><visual><origin rpy="0 1.5707 0" xyz="0.03 0 0"/><geometry><cylinder length="0.06" radius="0.025"/></geometry><material name="Black"/></visual></link><joint name="joint4" type="revolute"><parent link="link3"/><child link="link4"/><origin rpy="0 1.5707 3.14159" xyz="0.0 0.0 -0.15"/><axis xyz="1 0 0"/><limit effort="300" lower="-3.14159" upper="3.14159" velocity="1"/></joint><!-- // LINK5 / --><link name="link5"><visual><origin rpy="0 0 0" xyz="0 0 0.03"/><geometry><cylinder length="0.06" radius="0.03"/></geometry><material name="White"/></visual></link><joint name="joint5" type="revolute"><parent link="link4"/><child link="link5"/><origin rpy="0 1.5707 0" xyz="0.06 0.0 0.0"/><axis xyz="1 0 0"/><limit effort="300" lower="-3.14159" upper="3.14159" velocity="1"/></joint><!-- LINK6 / --><link name="link6"><visual><origin rpy="0 1.5707 0" xyz="0.01 0 0 "/><geometry><cylinder length="0.02" radius="0.04"/></geometry><material name="Blue"/></visual></link><joint name="joint6" type="revolute"><parent link="link5"/><child link="link6"/><origin rpy="4.712385 -1.5707 0" xyz="0 0 0.06"/><axis xyz="1 0 0"/><limit effort="300" lower="-6.28318" upper="6.28318" velocity="1"/></joint>效果如下:
9.添加機(jī)械爪:
采用的是簡(jiǎn)易的抓取方法,爪1來(lái)移動(dòng),爪2固定不動(dòng)
爪1的模式為prismatic(prismatic: 一個(gè)沿著一根軸的滑動(dòng)副, 并且有限位)。
效果如下:
10.又新建了一個(gè)無(wú)顯示的link,來(lái)形成抓取坐標(biāo)系
值得一提的是,只要有l(wèi)ink,無(wú)論有無(wú)顯示,都要附加一個(gè)joint
最終效果圖:
tf坐標(biāo):
11.查看urdf結(jié)構(gòu)圖
urdf_to_graphiz marm.urdf
總結(jié)
以上是生活随笔為你收集整理的从零开始建立机械臂URDF模型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mysql 实数型变量定义,MySQL实
- 下一篇: Tomcat 解决“At least o