UR3机械臂添加robotiq FT sensor和robotiq 140 2指夹爪

  • ```建议参考这篇```,[ur机械臂 + robotiq gripper + robotiq ft sensor + gazebo + 连接真实机械臂 + 网页控制](https://blog.csdn.net/bornfree5511/article/details/107529420),```这是后来做的代码更加规范、内容更加丰富的一个,并且bug更少。```
  • 一、下载ur、robotiq的官方ros package
  • 二、新建一个工作空间,对用到的文件进行裁剪,并装配ur、ft sensor、gripper
    • ① 添加ft sensor到ur末端
    • ② 添加robotiq 2 finger 140 gripper

ur3机械臂机器学习平台代码

笔者环境:ros kinetic
IDE:roboware 1.2.0,roboware的官方最新版下载地址可查看Ubuntu - 安装官方最新RoboWare


建议参考这篇ur机械臂 + robotiq gripper + robotiq ft sensor + gazebo + 连接真实机械臂 + 网页控制,这是后来做的代码更加规范、内容更加丰富的一个,并且bug更少。


一、下载ur、robotiq的官方ros package

安装ur的ros驱动和ros package,可点击查看详细信息,下面只把安装过程列出:

# source global ros
$ source /opt/ros/<your_ros_version>/setup.bash# create a catkin workspace
$ mkdir -p catkin_ws/src && cd catkin_ws# clone the driver
$ git clone https://github.com/UniversalRobots/Universal_Robots_ROS_Driver.git src/Universal_Robots_ROS_Driver# clone fork of the description. This is currently necessary, until the changes are merged upstream.
$ git clone -b calibration_devel https://github.com/fmauch/universal_robot.git src/fmauch_universal_robot# install dependencies
$ sudo apt update -qq
$ rosdep update
$ rosdep install --from-paths src --ignore-src -y# build the workspace
$ catkin_make# activate the workspace (ie: source it)
$ source devel/setup.bash

下载robotiq的ros package

cd ~/catkin_ws/src
git clone https://github.com/ros-industrial/robotiq.git
rosdep install robotiq_modbus_tcp
sudo apt-get install ros-melodic-soem  # 官方是ros-kinetic-soem,要换成对应的ros版本

二、新建一个工作空间,对用到的文件进行裁剪,并装配ur、ft sensor、gripper

mkdir -p ~/ml_ws/src
cd ~/ml_ws/src
catkin_init_workspace

然后使用roboware打开该工作空间。
现阶段,我们只使用到了三个设备的描述文件(description),所以在ml_ws/src下建立ur3robotiq两个文件夹。将下载robotiq的ros package robotiq中的robotiq_ft_sensorrobotiq_2f_140_gripper_visualization文件夹和ur机械臂的ros package famuch_universal_robot中的ur_description复制一份到~/ml_ws/src文件夹下。最后目录结构如图:(ur_moveit_config是后面使用moveit_setup_assistant生成的)

打开roboware,执行ROS->Build。

① 添加ft sensor到ur末端

查看ft sensor的urdf,
可以看到整个ft sensor的描述文件在robotiq_ft300.urdf.xacro文件中被描述成了一个宏,并且第一个joint提供了parent *origin等参数,所以只需要给这个宏的参数赋值,就可以将ft sensor集成到新的描述文件中。

查看ur的描述文件ur3.urdf.xacro(这里使用ur3),

同样ur3也被声明为一个宏。在文件的最后,

可以看到ur3暴露给最外面的link是${prefix}tool0

我们只需要将ft sensor的宏定义的parent赋值为tool0即可。
同时观察文件中还有ur3_robot.urdf.xacro文件,这是对调用ur3.urdf.xacro中的宏定义的一个使用示例代码,同样的也可以应用于所有的宏定义的调用方式。

新建文件ur3_ft_robot.urdf.xacro,将ur3_robot.urdf.xacro中的代码(这是对ur3机械臂宏定义的调用)复制过来,并添加robotiq_ft300.urdf.xacro的宏定义的调用。添加如下代码:

<xacro:include filename="$(find robotiq_ft_sensor)/urdf/robotiq_ft300.urdf.xacro" /><!--robotiq FT_300 sernsor--><xacro:robotiq_ft300 prefix="" parent="tool0" ><origin xyz="0 0 0" rpy="0 0 0"/>
</xacro:robotiq_ft300>

最后整个文件的 代码为:

<?xml version="1.0"?>
<robot xmlns:xacro="http://wiki.ros.org/xacro"name="ur3" ><xacro:arg name="transmission_hw_interface" default="hardware_interface/PositionJointInterface"/><!-- common stuff --><xacro:include filename="$(find ur_description)/urdf/common.gazebo.xacro" /><!-- ur3 --><xacro:include filename="$(find ur_description)/urdf/ur3.urdf.xacro" /><xacro:include filename="$(find robotiq_ft_sensor)/urdf/robotiq_ft300.urdf.xacro" /><!-- arm --><xacro:arg name="kinematics_config" default="$(find ur_description)/config/ur3_default.yaml"/><xacro:ur3_robot prefix="" joint_limited="false"transmission_hw_interface="$(arg transmission_hw_interface)"kinematics_file="${load_yaml('$(arg kinematics_config)')}"/><link name="world" /><joint name="world_joint" type="fixed"><parent link="world" /><child link = "base_link" /><origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0" /></joint><!--robotiq FT_300 sernsor--><xacro:robotiq_ft300 prefix="" parent="tool0" ><origin xyz="0 0 0" rpy="0 0 0"/> </xacro:robotiq_ft300></robot>

然后,在ur3的ur_description文件夹的launch文件夹下新建view_ur3_ft.launch
此文件是在view_ur3.launch基础上做了修改。

<?xml version="1.0"?>
<launch><include file="$(find ur_description)/launch/ur3_ft_upload.launch"/><node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" ><param name="use_gui" value="true"/></node><node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" /><node name="rviz" pkg="rviz" type="rviz" args="-d $(find ur_description)/cfg/view_robot_ft.rviz" required="true" />
</launch>

新建ur3_ft_upload.launch

<?xml version="1.0"?>
<launch><arg name="limited" default="false" doc="If true, limits joint range [-PI, PI] on all joints." /><arg name="transmission_hw_interface" default="hardware_interface/PositionJointInterface" /><arg name="kinematics_config" default="$(find ur_description)/config/ur3_default.yaml"/><param unless="$(arg limited)" name="robot_description" command="$(find xacro)/xacro --inorder '$(find ur_description)/urdf/ur3_ft_robot.urdf.xacro'transmission_hw_interface:=$(arg transmission_hw_interface)kinematics_config:=$(arg kinematics_config)" /><param if="$(arg limited)" name="robot_description" command="$(find xacro)/xacro --inorder '$(find ur_description)/urdf/ur3_joint_limited_robot.urdf.xacro'transmission_hw_interface:=$(arg transmission_hw_interface)kinematics_config:=$(arg kinematics_config)" />
</launch>

运行view_ur3_ft.launch,可以看到ft sensor被成功添加。
完整的代码可参考github上源码

② 添加robotiq 2 finger 140 gripper

查看gripper的描述文件,就发现复杂的多了,因为gripper 的组件实在太多。我们慢慢来分析。
robotiq_arg2f_140_model.xacro

是一个对gripper宏定义的调用,类似ur中的ur3_robot.urdf.xacro文件。
根据include,查看robotiq_arg2f_140_model_macro.xacro文件,这里的宏定义就非常非常多了。
如果不清楚这里的宏定义分别是对应哪个部位,可以先运行launch文件中的test_2f_140_model.launch文件,在rviz中取消每个link的选择来查看对应的组件。


robotiq_arg2f_140_model_macro.xacro文件的最后,我们终于看到了整个夹爪的宏定义。

但是奇怪的是它引用了几个当前文件中没有的宏定义,还剩一个文件没看,robotiq_arg2f.xacro,查看这个文件的源码,发现是对robotiq_arg2f_140_model_macro.xacro文件中的所有宏定义的一个调用,相当于在函数的外面又封装了一层函数,用来简化代码。现在整个描述文件的源码架构已经被我们搞清楚了。现在来魔改。robotiq gripper的代码和ft sensor的还不太一样,需要修改的地方稍多一些。

新建ur3_ft_gripper140_robot.urdf.xacro

<?xml version="1.0"?>
<robot xmlns:xacro="http://wiki.ros.org/xacro"name="ur3" ><xacro:arg name="transmission_hw_interface" default="hardware_interface/PositionJointInterface"/><!-- common stuff --><xacro:include filename="$(find ur_description)/urdf/common.gazebo.xacro" /><!-- ur3 --><xacro:include filename="$(find ur_description)/urdf/ur3.urdf.xacro" /><xacro:include filename="$(find robotiq_ft_sensor)/urdf/robotiq_ft300.urdf.xacro" /><xacro:include filename="$(find robotiq_2f_140_gripper_visualization)/urdf/robotiq_arg2f_140_model_macro.xacro" /><!-- arm --><xacro:arg name="kinematics_config" default="$(find ur_description)/config/ur3_default.yaml"/><xacro:ur3_robot prefix="" joint_limited="false"transmission_hw_interface="$(arg transmission_hw_interface)"kinematics_file="${load_yaml('$(arg kinematics_config)')}"/><link name="world" /><joint name="world_joint" type="fixed"><parent link="world" /><child link = "base_link" /><origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0" /></joint><!--robotiq FT_300 sernsor--><xacro:robotiq_ft300 prefix="" parent="tool0" ><origin xyz="0 0 0" rpy="0 0 0"/> </xacro:robotiq_ft300><xacro:robotiq_arg2f_140 prefix=""/><joint name="ft_gripper_joint" type="fixed"><parent link="robotiq_ft_frame_id"/><child link="robotiq_arg2f_base_link"/><origin xyz="0 0 0" rpy="0 0 0"/></joint></robot>

可以看出这个文件是在ur3_ft_robot.urdf.xacro的基础上,添加了

<xacro:include filename="$(find robotiq_2f_140_gripper_visualization)/urdf/robotiq_arg2f_140_model_macro.xacro" />

 <xacro:robotiq_arg2f_140 prefix=""/><joint name="ft_gripper_joint" type="fixed"><parent link="robotiq_ft_frame_id"/><child link="robotiq_arg2f_base_link"/><origin xyz="0 0 0" rpy="0 0 0"/></joint>

为什么要无中生有一个joint出来的,查看ft sensor的宏定义(robotiq_ft300.urdf.xacro文件),可以看到最后暴露的link是而gripper的宏定义(robotiq_arg2f_140_model_macro文件),暴露的第一个却是一个link。

link与link之间需要有一个joint来连接并确定位置。
同样,在ur_description/launch文件夹新建新的launch文件,view_ur3_ft_gripper140.launch
ur3_ft_gripper140_upload.launch

完整的代码可参考github上源码

最后,用moveit_setup_assistant生成新的配置文件,就可以进行moveit规划。

ROS - UR3机械臂添加robotiq FT sensor和robotiq 140 2指夹爪相关推荐

  1. 强化学习UR机械臂仿真环境搭建(一) - 为UR3机械臂添加robotiq ft300力传感器

    为UR3机械臂添加robotiq ft300力传感器 ```建议参考这篇```,[ur机械臂 + robotiq gripper + robotiq ft sensor + gazebo + 连接真实 ...

  2. ROS Nonetic: 机械臂UR5 + RobotIQ FT300 传感器 配置

    今天需要使用 ROBOTIQ FT300的力/力矩传感器,所以记录一下自己的配置情况. 环境: Ubuntu 20.04, ROS Noetic 机械臂:UR5 (关于如何通过序列号判断UR型号,可以 ...

  3. ur机械臂 + robotiq gripper + robotiq ft sensor + gazebo + 连接真实机械臂 + 网页控制

    ur机械臂 + robotiq gripper + robotiq ft sensor + gazebo + 连接真实机械臂 + 网页控制 仓库地址:[ur_ws](https://github.co ...

  4. ur3+robotiq ft sensor+robotiq 2f 140配置rviz仿真环境

    ur3+robotiq ft sensor+robotiq 2f 140配置rviz仿真环境 搭建环境: ubuntu: 20.04 ros: Nonetic sensor: robotiq_ft30 ...

  5. robotiq 2f 140安装在UR3机械臂后面在gazebo仿真中散架、抖动

    robotiq 2f 140安装在UR3机械臂后面在gazebo仿真中散架.抖动 搭建环境: ubuntu: 20.04 ros: Nonetic sensor: robotiq_ft300 grip ...

  6. 【从零开始的ROS四轴机械臂控制】(三) - 为机械臂添加摄像头和夹爪、解决gazebo模型抖动、使用gazebo建立sdf模型

    [从零开始的ROS四轴机械臂控制(三)] 五.在gazebo中添加摄像头 1.修改arm1.gazebo.xacro文件 2.修改arm1.urdf.xacro文件 3.查看摄像头图像 六.为模型添加 ...

  7. ros kinetic-moveit驱动ur3机械臂------控制真实机械臂并且能动

    ros kinetic-moveit驱动ur3机械臂------控制真实机械臂并且能动 本文工作环境配置: ubuntu16.04.6 ros-kinetic ur3 已验证本教程代码在Ubuntu1 ...

  8. ubuntu16.04安装UR3/UR5/UR10机械臂的ROS驱动并实现gazebo下Moveit运动规划仿真以及真实UR3机械臂的运动控制(1)

    1. 下载并编译UR3/UR5/UR10驱动包 我们在Home目录下创建一个文件夹(命名为ur_ws),这就是UR驱动的工作空间了,并且创建一个src文件夹,如下. 然后去下载驱动包,如下图. 下载后 ...

  9. UR3机械臂+Realsense D435+ROS手眼标定记录

    UR3机械臂+Realsense D435+ROS手眼标定记录 前面一段时间,由于实验室工作安排,上手了UR3机械臂和Realsense D435深度相机,在手眼标定这一段真的是让人心累,断断续续折腾 ...

最新文章

  1. Windows核心编程 第九章 线程与内核对象的同步(下)
  2. keepalived 主从配置日志报错:one or more vip associated with vrid mismatch actual master advert...
  3. TypeScript Type Assertions - 类型断言
  4. 在Linux中发现IP地址冲突的方法
  5. ssl2295-暗黑破坏神【dp练习】
  6. android传感器博客,Android实现接近传感器
  7. SAP License:SAP新总帐-开篇
  8. centos yum install 默认目录_Centos7如何更换yum仓库
  9. 单独编译使用WebRTC的音频处理模块 - android
  10. 解决PRINT函数UTF-8问题
  11. multiply 和 dot 的区别
  12. while方法判断回文数的两种方式以及使用String 的reverse方法
  13. [转] 做一个让人欣赏的女子
  14. powerapps简介
  15. Matlab中mapminmax函数使用注意事项
  16. React脚手架项目示例
  17. engineercms整合mindoc
  18. win10浏览器加载很慢_Win10 IE浏览器的网页加载速度很慢总是卡死怎么办
  19. asp.net使用Aspose.Cells实现excel预览
  20. seo 站内发表文章

热门文章

  1. Java制作登陆页面
  2. 传播的两种类型(包括NPS指标的定义)
  3. python写一个笔记软件_程序员们都用什么记笔记软件?
  4. Bootstrap 关于背景图像的自适应和行的栅格化
  5. 分享掘金量化实现参数优化的过程步骤
  6. 固定支撑约束在ANSYS有限元计算中的三大注意事项
  7. 计算机与教育教学,计算机网络技术与教育教学
  8. stress的安装和基本使用
  9. Oracle ERP 11i中英对照词汇表
  10. 王峰十问蔡文胜:BEC美链究竟是不是美图上市公司的资产?