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

news/2025/1/10 10:58:46/文章来源:https://www.cnblogs.com/freedom-w/p/18663362

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

可以看到多出来一个夹爪

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/867062.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python】简单实现Http网络请求功能

1.安装uvicorn和FastAPI pip3 install uvicorn pip3 install FastAPI2.python代码实现 import uvicorn from fastapi import FastAPIapp = FastAPI() @app.post("/ShowNum") async def ShowNum(x:int=1,y:int=2):print(和为:%d % (x+y))return x+yif __name__ == &q…

JMeter自动执行生成报告,批处理脚本

1、新建文件后缀.bat: 字符集使用 ANSI 编码,不然有中文会乱码,执行失败2、输入内容如下,根据实际情况修改路径:@echo off REM 设置 JMeter 的安装目录,根据实际情况修改路径 set JMETER_HOME=C:\apache-jmeter-5.4.1 REM 设置测试计划的路径,根据实际情况修改路径 set T…

奇迹mu1.03单机版安装教程+无需虚拟机+GM工具

今天为大家带来一款怀旧网单《奇迹mu1.03》的游戏架设,适用于单机娱乐, 仅供怀旧,本人已经安装游戏成功,特此带来详细安装教程。 适用环境单机视频演示 https://githubs.xyz/show/330.mp4亲测截图 架设步骤 关闭默认杀毒软件和其它自己下的杀毒软件 ,一定要检查关闭!!…

Toeplitz矩阵

具有下面形式的矩阵称为 Toeplitz 矩阵 (即在同一条对角线上的元素都相等) • Toeplitz 矩阵只有 2n − 1 个独立元素, 因此在存储一个 Toepliz 矩阵时, 只需存储第一列和第一行 (或第一列和最后一列);• 如果 T 对称, 则只需存储第一列. 用途:

【转载】【cursor】解决 cursor IDE 不能正常给 python 代码高亮的问题

原文链接:How to use python with the Cursor IDE首先参照上面的解决方法进行配置,配置完成后若不生效,请检查:1. 在 cursor 中把本地和远程的 python 扩展设置都进行以下修改 2. 若修改后不生效,重启 python 插件(看不明白的话请留言)

2025 年,程序员如何找准技术“掘金点”?

大家好,我是 V 哥,最近有很多小伙伴来问V哥,悲催的2024终于过去了,有的早早就给自己放假等春节了,有的也没逃过临了被约喝咖啡☕️,都想着先过完年再考虑怎么办,躺平可不行,又有谁会跟钱过不支呢。2025 年,V 哥也跟一些行业大佬聊过,共同的一个点就是市场经济依然不会…

基于ODX的工程诊断仪 - DST.Tester

INTEWORK-DST(Tester Option,以下简称DST.Tester)是经纬恒润自主研发的工程诊断仪,适用于新车型和ECU的诊断和刷写。DST.Tester不仅支持多种ISO协议,也可以按照客户需求开发刷写流程,满足整车厂和零部件供应商的诊断工程师使用需求。概述INTEWORK-DST(Tester Option,以下简…

JS-25 字符串方法_indexOF()

indexOf方法用于确定一个字符串再另一个字符串中第一次出现的位置,返回结果是匹配开始的位置。如果返回-1,就表示不匹配 hello world.indexOf(o)//4 hello world.indexOf(a)//4-1 床前明月光,疑是地上霜。一去二三里,举头望明月,低头思故乡。.indexOf("一去二三里&qu…

点特征直方图

对点特征的描述常见的描述手段有,曲率、法线等,由于点云散乱无序形态各异,即使人眼是判别特征与非特征点都极其困难,所以仅仅凭借曲率、法线来对点云特征进行描述,显然是不够的。那如何准确或者全面的去描述点的特征呢,这也是很多算法的基石,特征描述准确与否直接会影响…

高斯金字塔,高斯模糊,高斯差分

高斯金字塔、高斯模糊和高斯差分是图像处理中非常重要的技术,常用于图像缩放、降噪、特征提取等领域。 1. 高斯模糊(Gaussian Blur) 高斯模糊是一种降噪技术,基于高斯函数的图像处理技术,用于平滑图像,减少噪声或细节。它在图像处理和计算机视觉中非常常用,尤其是在预处…

改造应用从容器tomcat迁移到pas(信创容器中间件)的适配工作

背景 近年来由于信创要求的重视,软件国产化越来越要提上日程了,相信在相关行业的人已经有很多开始在准备信创相关适配改造工作了吧 我们公司也一样,经过2个月的研究终于算是把我们的主要产品改造成功,下面我就介绍下: 我们无源代码的tomcat容器应用如何迁移到普元Pas 正文…