首页 > 其他分享 >ur3+robotiq ft sensor+robotiq 2f 140配置rviz仿真环境-

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

时间:2025-01-10 10:59:39浏览次数:1  
标签:ft robotiq gripper launch 140 link ur3

原文地址: 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

可以看到多出来一个夹爪

 

标签:ft,robotiq,gripper,launch,140,link,ur3
From: https://www.cnblogs.com/freedom-w/p/18663362

相关文章

  • Peft框架不提供merge_and_unload方法,如何进行peft方法和Base model的合并?以prefix tun
    Merge_peft_methods_prefix_and_prompt_tuning问题描述我想要把prefixtuning,prompttuning训练的参数和basemodel模型的参数合并,但是huggingface的peft框架只有lora存在merge_and_unload方法,其他的peft方法没有。那应该怎么办呢?这就是本文想解决的问题,把笔者踩得坑记录......
  • 一些FTP命令投喂
    1.连接与登录#连接到FTP服务器ftpftp.example.com#登录(假设用户名是anonymous,密码是空或ftp@example.com)USERanonymousPASSftp@example.com#对于某些服务器,密码可以省略或留空直接回车2.目录操作#列出当前目录内容LIST#更改到名为"files"的目录CWDfil......
  • theft和thievery的区别
    这两个词在表示抽象概念“盗窃行为、盗窃罪”时没有区别。The theftofthejewelryandothervaluableswasimmediatelyreportedtothepolice.(对珠宝和其他贵重物品的盗窃会被立即报告给警察)Hewasfoundguiltyof thievery(他犯盗窃罪被发现了)但是,theft只能表示盗窃行......
  • Ftrans汽车制造供应链管理方案,如何实现协同共赢?
    汽车制造供应链管理是指对从供应商到客户的汽车产品、信息及资金流动进行集成管理的过程,旨在最大化供应链价值。在汽车制造供应链管理中,信息流扮演着至关重要的角色。它不仅是供应链各环节之间沟通协作的桥梁,也是确保供应链高效运作、降低库存成本、提升客户满意度的重要支撑。然......
  • ftp.retrbinary() 帮助 python
    ftp.retrbinary()帮助python`ftp.retrbinary()`函数用于从FTP服务器下载二进制文件(如图片、音频等)。这个函数需要两个参数:一个是文件名,另一个是回调函数,用于处理每次接收到的数据块。下面是一个详细步骤的代码示例:```pythonimportftplib#创建一个FTP连接ftp=ftplib......
  • 探索 Microsoft AutoGen 工作流
    探索MicrosoftAutoGen框架:AI协作的新前沿在众多的工具中,Microsoft的AutoGen框架格外引人注目。它是一款强大的工具,专门用于创建和管理多Agent对话。通过这个框架,构建AI系统变得更加简便,这些系统能够利用Agent之间的交互,实现协作、推理,并解决各类复杂问题。一、......
  • C# 调用YoloSharp.Gpu,调用Microsoft.ML.OnnxRuntime.Gpu出错126
    今天使用C#调用YoloSharp.Gpu,加载onnx模型,然后检测,代码很简单。//LoadtheYOLOpredictorpredictor??=newYoloPredictor(@"pathtoyour.onnx");//Runmodelvarresult=predictor.Detect(@"pathtoyourimage");一运行就爆错ONNXRuntimeError:1:FAIL:LoadL......
  • 【2017-2024】Adobe After Effects(简称AE)强大视频后期制作工具
    AdobeAfterEffects软件简介AdobeAfterEffects(简称AE)是一款由Adobe公司开发的强大视频后期制作工具。它广泛应用于影视、广告、动画制作等多个领域,以其灵活的合成和丰富的特效处理能力,成为了行业标准的软件之一。AE结合了二位和三维动画技术,允许用户创建动态的视觉效果和......
  • FileSystemManager.ftruncateSync
    undefinedFileSystemManager.ftruncateSync(Objectobject)基础库2.16.1开始支持,低版本需做兼容处理。小程序插件:支持,需要小程序基础库版本不低于2.19.2微信鸿蒙OS版:支持相关文档:文件系统功能描述对文件内容进行截断操作参数Objectobject属性类型默......
  • FileSystemManager.ftruncate
    FileSystemManager.ftruncate(Objectobject)基础库2.16.1开始支持,低版本需做兼容处理。以Promise风格调用:不支持小程序插件:支持,需要小程序基础库版本不低于2.19.2微信鸿蒙OS版:支持相关文档:文件系统功能描述对文件内容进行截断操作参数Objectobject......