1.创建功能包,初始化环境

catkin_create_pkg mbot_description urdf xacro

2.配置环境
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: 一个沿着一根轴的滑动副, 并且有限位)。

<!-- //   GRIPPER   // --><link name="gripper_finger_link1"><visual><origin rpy="0 1.5707 0" xyz="0.03 0 0"/><geometry><box size="0.03 0.01 0.06"/></geometry><material name="White"/></visual></link><link name="gripper_finger_link2"><visual><origin rpy="0 1.5707 0" xyz="0.03 0 0"/><geometry><box size="0.03 0.01 0.06"/></geometry><material name="White"/></visual></link><joint name="finger_joint1" type="prismatic"><parent link="link6"/><child link="gripper_finger_link1"/><origin rpy="0 0 0" xyz="0.02 -0.03 0"/><axis xyz="0 1 0"/><limit effort="100" lower="0" upper="0.06" velocity="0.02"/></joint><joint name="finger_joint2" type="fixed"><parent link="link6"/><child link="gripper_finger_link2"/><origin rpy="0 0 0" xyz="0.02 0.03 0"/></joint>

效果如下:

10.又新建了一个无显示的link,来形成抓取坐标系
值得一提的是,只要有link,无论有无显示,都要附加一个joint

<!-- //   GRASPING FRAME   // --><link name="grasping_frame"/><joint name="grasping_frame_joint" type="fixed"><parent link="link6"/><child link="grasping_frame"/><origin rpy="0 0 0" xyz="0.06 0 0"/></joint>

最终效果图:

tf坐标:

11.查看urdf结构图

urdf_to_graphiz marm.urdf



从零开始建立机械臂URDF模型相关推荐

  1. 机械臂urdf模型修改及功能包配置

    目录 一.前清提要 二.操作过程 1.转夹爪stl为urdf模型,得到夹爪包命名为GripperURDF 2.将夹爪包移到工作空间下,查看其是否完整,符合要求 3.将夹爪urdf包和机械臂urdf包合 ...

  2. 从零开始的机械臂yolov5抓取gazebo仿真(一)

    从SOLIDWORKS中导出机械臂URDF 一.下载sw_urdf_export插件 插件的安装和下载可详见我写的差速小车第一章的内容 对机械臂模型进行开源(博主用的是SW2019版本).当时拿到这个 ...

  3. 【神经网络】基于RBF神经网络的六关节机械臂无模型控制

    前言:最近在搞神经网络,看到有用神经网络逼近未建模动态的,也有用神经网络来逼近整个模型的,后者即是无模型控制.无模型控制它不需要知道系统的名义模型,直接用神经网络来逼近整个系统,感觉这个方法还蛮厉害的 ...

  4. 机械臂matlab运动学仿真,matlab建立机械臂运动学仿真

    文件名大小更新时间 D-H方法建模思想,matlab建立机械臂运动学仿真软件\Robotic Manipulator Kinematics\scm\bmp\fig_cloos.bmp750542005 ...

  5. 机器人建模中移动关节如何建立坐标系_机器人工程师进阶之路(八)指数积(PoE)建立机械臂模型及正运动...

    梁政:机器人工程师进阶之路(六)旋量法(上)​zhuanlan.zhihu.com 梁政:机器人工程师进阶之路(七)旋量法(下)​zhuanlan.zhihu.com 从上两篇我们可以了解到,利用旋量 ...

  6. MoveIt的使用(二)机械臂URDF在ROS中MoveIt的配置和使用

    一.机械臂在ros里面的可视化 在SOLIDWORKS转换成urdf文件之后,生成的文件放在新建的功能包中后,编译(catkin_make),再执行下面代码即可运行可视化文件 roslaunch de ...

  7. 从零开始的机械臂yolov5抓取gazebo仿真(环境搭建篇下)

    sunday功能包使用介绍以及开源 sunday我给自己机械臂的命名,原型是innfos的gluon机械臂.通过sw模型文件转urdf.Sunday项目主要由六个功能包sunday_descripti ...

  8. 基于李群及旋量理论的机械臂运动学模型的建立

    本文机器人模型:史陶比尔6轴机器人

  9. 记录一下,simulink使用导入的机械臂CAD模型

    先留个链接,后续用到再看 Simulink仿真入门到精通(二) Simulink模块 Simulink仿真入门到精通(五) Simulink模型的仿真 Simulink仿真入门到精通(七) Simul ...

最新文章

  1. waf旁路oracle客户端,WAF Bypass数据库特性(Oracle探索篇)
  2. ocr中文 java_java 中文ocr
  3. cat卡特鞋有实体店吗_保养课堂 | 小小密封件,竟然是CAT油缸和连杆耐用的秘密...
  4. nagios+cacit 整合(rpm)
  5. 基于face_recognition 人脸识别系统安装实现说明书
  6. VTK:可视化之ProgrammableGlyphFilter
  7. oracle数据库某一年的数据总量_Liunx静默安装Oracle数据库
  8. Volley的原理解析
  9. 分享美化复选框和单选框插件
  10. dell主板恢复出厂设置_如何清除DELL电脑主板CMOS信息并恢复默认设置
  11. React_music开发日记
  12. 字体样式font-style的介绍
  13. idea如何全局搜索关键字_intellij idea 怎么全局搜索
  14. CSDN最全数学公式
  15. SketchUp安装组件失败“.Net FrameWork 4.5.2”的解决办法
  16. CAN总线协议:标准CAN和扩展CAN
  17. 苹果对NFT敞开怀抱?最新App Store审核指南解读
  18. 【已解决】计算机丢失d3d12.dll怎么办?d3d12.dll加载失败怎么办
  19. 如何删除/选择电脑上的输入法
  20. KVM虚拟化技术(三)之克隆虚拟机

热门文章

  1. SRILM文档分析之Prob.h
  2. Python学习 Task9:文件与文件系统
  3. 2007世界大学学术排名(上海交大)
  4. EPON OLT光模块RSSI问题分析报告
  5. 关于互联网时代的自助旅游
  6. 计算机常用英语术语、词汇表
  7. Funexpected宣布推出全新的遵循渐进式课程,它有直观界面、丰富多彩的游戏世界、个性化数字导师等
  8. LeetCode-589. N-ary Tree Preorder Traversal
  9. 深度学习入门笔记(五):神经网络的编程基础
  10. 一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。