原文地址: ur3+robotiq ft sensor+robotiq 2f 140配置rviz仿真环境

ur3+robotiq ft sensor+robotiq 2f 140配置rviz仿真环境
搭建环境:

ubuntu: 20.04
ros: Nonetic
sensor: robotiq_ft300
gripper: robotiq_2f_140_gripper
UR: UR3

在安装sensor和gripper之前,先简单配置一下UR机械臂的仿真环境,可参考这篇博客进行配置,配置完了之后下面正式开始安装力传感器和夹爪

1. 下载sensor和gripper工具包
进入之前安装UR机械臂仿真环境创建的工作空间,克隆仓库到src文件夹中

cd ~/catkin_ws/src
git clone https://github.com/jr-robotics/robotiq.git

为什么不直接克隆robotiq官方的仓库呢?因为官方仓库中没有noetic版本, 所以采用了上图中的git仓库

2. 编译工作环境

cd ~/catkin_ws
sudo apt update -qq
rosdep update
rosdep install --from-paths src --ignore-src -y
catkin_make
source devel/setup.bash

3. 在UR3末端安装力传感器
我是直接在universal_robot和robotiq工具包中进行修改安装的,不过建议将需要修改的文件复制出来放在新建的一个包中,可以避免直接修改原仓库,提高代移植性

  • 复制universal_robot/ur_description/urdf中的ur3.xacro,并命名为ur3_ft_gripper.xacro(复制放在同一目录下)
  • 查看ur3的末端link是什么

找到universal_robot/ur_description/urdf/inc中的ur_macro.xacro文件,文件最后几行中暴露了ur机械臂的末端link为tool0

剩下的就是将力传感器接在ur3末端中,根据robotiq/robotiq_ft_sensor/urdf中的robotiq_ft300.urdf.xacro文件中的使用例子

ur3_ft_gripper.xacro文件中分别添加下面的代码

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

将官方提供的例子中parent参数改成机械臂末端link的名称,即将robot_flange_link改成tool0

此时完整的ur3_ft_gripper.xacro文件代码如下:

<?xml version="1.0"?>
<robot xmlns:xacro="http://wiki.ros.org/xacro" name="ur3_robot_ft_gripper">
<xacro:include filename="$(find ur_description)/urdf/inc/ur3_macro.xacro"/>
<xacro:ur3_robot prefix="" /> <xacro:include filename="$(find robotiq_ft_sensor)/urdf/robotiq_ft300.urdf.xacro"/> <!--robotiq_ft_sensor-->
<xacro:robotiq_ft300 prefix="" parent="tool0">
<origin xyz="0 0 0" rpy="0 0 0"/>
</xacro:robotiq_ft300> </robot>
  • 修改三个launch文件

复制universal_robot/ur_description/launch文件夹下中的view_ur3.launch,load_ur3.launch,load_ur.launch文件,分别命名为view_ur3_ft_gripper.launch,load_ur3_ft_gripper.launch,load_ur_ft_gripper.launch文件

修改view_ur3_ft_gripper.launch文件,将include标签中的load_ur3.launch改成load_ur3_ft_gripper.launch,整个文件如下

<?xml version="1.0"?>
<launch>
<include file="$(find ur_description)/launch/load_ur3_ft_gripper.launch"/> <node name="joint_state_publisher_gui" pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" />
<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.rviz" required="true" />
</launch>

修改load_ur3_ft_gripper.launch文件,将include标签中的load_ur.launch改成load_ur_ft_gripper.launch,整个文件如下

<?xml version="1.0"?>
<launch>
<!--ur3 parameters files -->
<arg name="joint_limit_params" default="$(find ur_description)/config/ur3/joint_limits.yaml"/>
<arg name="kinematics_params" default="$(find ur_description)/config/ur3/default_kinematics.yaml"/>
<arg name="physical_params" default="$(find ur_description)/config/ur3/physical_parameters.yaml"/>
<arg name="visual_params" default="$(find ur_description)/config/ur3/visual_parameters.yaml"/>
<!--common parameters -->
<arg name="transmission_hw_interface" default="hardware_interface/PositionJointInterface" />
<arg name="safety_limits" default="false" doc="If True, enable the safety limits controller"/>
<arg name="safety_pos_margin" default="0.15" doc="The lower/upper limits in the safety controller" />
<arg name="safety_k_position" default="20" doc="Used to set k position in the safety controller" /> <arg name="robot_model" value="ur3" /> <!-- use common launch file and pass all arguments to it -->
<include file="$(find ur_description)/launch/load_ur_ft_gripper.launch" pass_all_args="true"/>
</launch>

修改load_ur_ft_gripper.launch文件,将param标签中command第二个路径中的ur.xacro改成刚刚一开始修改的xacro文件ur3_ft_gripper.xacro,整个文件如下

<?xml version="1.0"?>
<launch>
<!--ur parameters files -->
<arg name="joint_limit_params" doc="YAML file containing the joint limit values"/>
<arg name="kinematics_params" doc="YAML file containing the robot's kinematic parameters. These will be different for each robot as they contain the robot's calibration."/>
<arg name="physical_params" doc="YAML file containing the phycical parameters of the robots"/>
<arg name="visual_params" doc="YAML file containing the visual model of the robots"/>
<!--common parameters -->
<arg name="transmission_hw_interface" default="hardware_interface/PositionJointInterface" />
<arg name="safety_limits" default="false" doc="If True, enable the safety limits controller"/>
<arg name="safety_pos_margin" default="0.15" doc="The lower/upper limits in the safety controller" />
<arg name="safety_k_position" default="20" doc="Used to set k position in the safety controller" /> <arg name="robot_model" /> <param name="robot_description" command="$(find xacro)/xacro '$(find ur_description)/urdf/ur3_ft_gripper.xacro'
robot_model:=$(arg robot_model)
joint_limit_params:=$(arg joint_limit_params)
kinematics_params:=$(arg kinematics_params)
physical_params:=$(arg physical_params)
visual_params:=$(arg visual_params)
transmission_hw_interface:=$(arg transmission_hw_interface)
safety_limits:=$(arg safety_limits)
safety_pos_margin:=$(arg safety_pos_margin)
safety_k_position:=$(arg safety_k_position)"
/>
</launch>
  • 查看效果  
    运行命令
cd ~/catkin_ws
source devel/setup.bash
roslaunch ur_description view_ur3_ft_gripper.launch

可以看到多出来一截,就是力传感器

4. 在力传感器末端安装夹爪

  • 查看力传感器末端link是什么

找到robotiq/robotiq_ft_sensor/urdf中的robotiq_ft300.urdf.xacro文件,文件最后几行中暴露了力传感器的末端link为robotiq_ft_frame_id

  • 再来看看夹爪末端的link是什么

找到robotiq/robotiq_2f_140_gripper_visualization/urdf中的robotiq_arg2f_140_macro.xacro文件,文件最后几段就是在将夹爪拼接起来,其中看到robotiq_arg2f_base_link拼接到base_link上,说明夹爪的末端link就是robotiq_arg2f_base_link

将框中的这几行注释掉,因为不能让他再和base_link连接起来,而是将它连接到力传感器上

  • 修改universal_robot/ur_description/urdf/ur3_ft_gripper.xacro文件

添加下面代码,将夹爪包含进来

<xacro:include filename="$(find robotiq_2f_140_gripper_visualization)/urdf/robotiq_arg2f_140.xacro" />
<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是为了将力传感器末端link和夹爪末端link连接起来

该文件完整代码如下:

<?xml version="1.0"?>
<robot xmlns:xacro="http://wiki.ros.org/xacro" name="ur3_robot_ft_gripper">
<xacro:include filename="$(find ur_description)/urdf/inc/ur3_macro.xacro"/>
<xacro:ur3_robot prefix="" /> <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.xacro" /> <!--robotiq_ft_sensor-->
<xacro:robotiq_ft300 prefix="" parent="tool0">
<origin xyz="0 0 0" rpy="0 0 0"/>
</xacro:robotiq_ft300> <!--robotiq_arg2f_140.xacro已经调用了robotiq_arg2f_140宏定义,这里只需要把gripper和sensor用joint连接起来即可--> <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>
  • 本来也需要修改三个launch文件,但是上面安装力传感器已经修改了,所以不用再修改了

  • 查看效果
    运行命令

cd ~/catkin_ws
source devel/setup.bash
roslaunch ur_description view_ur3_ft_gripper.launch

可以看到多出来一个夹爪

1. ur3+robotiq ft sensor+robotiq 2f 140配置rviz仿真环境-的更多相关文章

  1. MySQL数据库的安装与密码配置

                      MySQL是由MySQL AB公司开发,后由Oracle公司收购     MySQL是一个关系型数据库管理系统       分为社区版和企业版            ...

  2. windows配置xhprof,PHP性能分析工具

    本来以为配置这么一个工具不会费很大的力气,后面发现完全不是. 一.小插曲 早上显示电脑不能显示虚拟目录下的所有域名,但是能打开localhost,数据库连接也不行了.这个问题纠缠了我一个上午.对了还有 ...

  3. openldap+phpadmin的搭建安装

    1.概念介绍 LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP.它是基于X.500标准的,但是简单多了并且可以根据 ...

  4. Maven(一)简介和基本安装使用

    简介 如今用于项目管理和自动化构建的东东用的比较多的,比如: eclipse中用到的ant 现今流行的android studio中用到的gradle 这里将介绍另一种工具——maven (也可以用来 ...

  5. Hadoop实战课程

    Hadoop生态系统配置Hadoop运行环境Hadoop系统架构HDFS分布式文件系统MapReduce分布式计算(MapReduce项目实战)使用脚本语言Pig(Pig项目实战)数据仓库工具Hive ...

  6. appium_python_android测试环境搭建

    第一步  安装appium •Appium是由.NET 开发的,所以,它会依赖 .NET framework相关组件,所以先安装.net framework 4.5,备注: Appium最低支持.ne ...

  7. Maven学习入门——2016-2-17

    一.Maven的基本概念 1.1Mawen是干啥的??? 我们第一次接触Maven一般就是用Maven为我们的项目加入jar包,非常的方便. maven到底是干什么的??说白了,maven就是用来管理 ...

  8. YOLO-V3实战(darknet)

    一. 准备工作 1)实验环境: darknet 是由 C 和 CUDA 开发的,不需要配置其他深度学习的框架(如,tensorflow.caffe 等),支持 CPU 和 GPU 运算,而且安装过程非 ...

  9. 深入linux kernel内核配置选项

    ============================================================================== 深入linux kernel内核配置选项 ...

  10. OpenVINO计算机视觉模型加速

    OpenVINO计算机视觉模型加速 OpenVINO介绍 计算机视觉部署框架,支持多种边缘硬件平台 Intel开发并开源使用的计算机视觉库 支持多个场景视觉任务场景的快速演示 四个主要模块: 1.开发 ...

随机推荐

  1. 20250620 - Bonding 攻击事件: 项目方不创建的池子由我攻击者来创建

    背景信息 本次攻击涉及 Bonding 和 LBM 两种代币,用户可以通过 Bonding.buy() 用 USDC 购买 Bonding,当 Bonding 合约中的 USDC 累积超过一定阈值时会 ...

  2. 客户端和服务端通信的多种函数的对比。linux 网络编程

    第一种普通的read recv write Makefile #LOCAL_LIBRARY += -L./lib -lpal #LOCAL_LDFLAGS += -lm -lopus -lwebsoc ...

  3. SciTech-BigDataAIML-CV+CG-Digital Image Processing-编辑与合成RGBA图片与视频:RGB图片转换成RGBA:增加Alpha Mask(透明遮罩, 即Alpha Channel透明度通道)

    层层堆叠RGBA图片层就可实时修改图片与视频流 用AI自动生成RGBA格式的PNG图片:一层层堆叠. 这也是Adobe Photoshop的Mask原理? https://learnopencv.co ...

  4. Linguistics-English-高频词辩析 + 常用句式:keep me posted(有消息通知我 )

    高频词辨析 some VS any: some: 肯定句式, i have some pen. can i borrow some pen? any: 疑问/否定 句式 i don't have an ...

  5. 标准结构篇:9.1)JB5054-2000流程

    本章目的:了解这个最基础的产品设计研发流程标准 1.前言 JB5054-2000流程是2000年的研发流程,如果你自家公司的研发流程环节或提交资料比这个还少,就真的要考虑一下,到底是什么地方漏了. 2 ...

  6. unity2d 完美斜坡方案

    来自油管大神:https://www.youtube.com/watch?v=QPiZSTEuZnw&lc=z22ehdxp5wmrg1jkvacdp431qmalafpquvm0apfrjr ...

  7. 招聘系统哪个好?2025 年口碑 TOP10 排行榜及测评

    在当今竞争白热化的人才市场,企业招聘正面临着前所未有的挑战.一方面,优质人才的稀缺使得企业间的争夺愈发激烈,招聘周期被不断拉长,原本一个月就能完成的招聘流程,现在可能需要两个月甚至更久,这严重影响了企 ...

  8. 面向数据科学的AI助手:SageMaker Canvas中的Amazon Q开发者工具

    开发基于AI的预测模型通常需要数据科学专业知识.机器学习算法经验以及对业务场景的理解.完整的数据科学应用开发周期(从数据获取到模型训练评估)往往耗时数日甚至数周. 2024年re:Invent大会首次 ...

  9. P1763 埃及分数(小理解,后续补充线性方程优化)

    P1763 埃及分数 1.读题: 将一个真分数表示为一堆分子为 \(1\) 的分式相加,其中我们可以简单概括为 \[\frac{a}{b} = \frac{1}{x_1} + \frac{1}{x_2 ...

  10. 【转】-Java CAS 原理剖析

    Java CAS 原理剖析 本文转载来自​卡巴拉的树​的​Java CAS 原理剖析 在Java并发中,我们最初接触的应该就是synchronized关键字了,但是synchronized属于重量级锁 ...