从零开始建立机械臂URDF模型
1.創建功能包,初始化環境
catkin_create_pkg mbot_description urdf xacro2.配置環境
3.在src文件夾下新建urdf、meshes、launch、config文件夾
4.在urdf文件里面新建一個marm.urdf文件
5.配置marm.launch啟動文件
<launch><!-- 設置機器人模型路徑參數 --><param name="robot_description" textfile="$(find marm_description)/urdf/marm.urdf" /><!-- 運行joint_state_publisher節點,發布機器人的關節狀態 --><node name="joint_state_publisher_gui" pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" /><!-- 運行robot_state_publisher節點,發布tf --><node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" /><!-- 運行rviz可視化界面 --><node name="rviz" pkg="rviz" type="rviz" args="-d $(find marm_description)/config/marm_urdf.rviz" required="true" /> </launch>以后若要換,只需要修改機器人模型路徑參數即可
6.編輯marm.urdf文件,先建立一個底座:
<?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.加入第一個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: 一個不受限制的, 繞著一根軸的轉動副.
revolute: 一個轉動角度受到限制的, 繞著一根軸的轉動副.
prismatic: 一個沿著一根軸的滑動副, 并且有限位.
fixed: 固定關節.
floating: 這個關節允許六個自由度的運動, 浮動關節.
planar: wiki上的原話是: This joint allows motion in a plane perpendicular to the axis. 我理解是, 這個關節允許再垂直于軸的一個平面內進行運動, 參考"ROS機器人開發實踐"第115頁上的內容. 這里的運動應該即包括平移, 也包括旋轉.
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.添加機械爪:
采用的是簡易的抓取方法,爪1來移動,爪2固定不動
爪1的模式為prismatic(prismatic: 一個沿著一根軸的滑動副, 并且有限位)。
效果如下:
10.又新建了一個無顯示的link,來形成抓取坐標系
值得一提的是,只要有link,無論有無顯示,都要附加一個joint
最終效果圖:
tf坐標:
11.查看urdf結構圖
urdf_to_graphiz marm.urdf
總結
以上是生活随笔為你收集整理的从零开始建立机械臂URDF模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 实数型变量定义,MySQL实
- 下一篇: Tomcat 解决“At least o