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

news/2024/3/29 13:31:32/文章来源:https://blog.csdn.net/weixin_48319333/article/details/129128647

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_robotrobotiq工具包中进行修改安装的,不过建议将需要修改的文件复制出来放在新建的一个包中,可以避免直接修改原仓库,提高代移植性

  • 复制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

20230220161059

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

20230220163231

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.launchload_ur3.launchload_ur.launch文件,分别命名为view_ur3_ft_gripper.launchload_ur3_ft_gripper.launchload_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

20230220171354

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

4. 在力传感器末端安装夹爪
  • 查看力传感器末端link是什么

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

20230220161709

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

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

20230220172147

将框中的这几行注释掉,因为不能让他再和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

20230220173028

可以看到多出来一个夹爪

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

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

相关文章

jenkins下载与简单使用

1.jenkins下载 因为我仍然使用的是jdk1.8进行开发&#xff0c;所以我下载的是jenkins2.332.1版本&#xff08;jenkins2.346.1版本在2022年末不再支持java8&#xff0c;如果项目使用的是jdk11可以继续使用该jenkins版本&#xff09;&#xff0c;更多版本下载请点击jenkins下载 …

ADRC自抗扰控制总结

目录 前言 1.ADRC形式 1.1形一 1.2形二 2.被控对象 3.仿真分析 3.1仿真模型 3.2仿真结果 4.学习问题 前言 前面的3篇文章依次介绍了微分跟踪器TD、状态观测器ESO和非线性状态误差反馈NLSEF三部分内容&#xff0c;至此ADRC的结构已经介绍完毕&#xff0c;现在对分块学习…

pytorch零基础实现语义分割项目(四)——模型训练与预测

模型训练与预测项目列表前言损失函数one_hotDice LossFocal Loss模型参数与训练预测项目列表 语义分割项目&#xff08;一&#xff09;——数据概况及预处理 语义分割项目&#xff08;二&#xff09;——标签转换与数据加载 语义分割项目&#xff08;三&#xff09;——语义…

JVM系统优化实践(1):JVM概览

您好&#xff0c;我是湘王&#xff0c;这是我的CSDN博客&#xff0c;欢迎您来&#xff0c;欢迎您再来&#xff5e;这是多年之前做过的学习笔记&#xff0c;今天再翻出来&#xff0c;觉得仍然是记忆犹新。「独乐乐不如众乐乐」&#xff0c;就拿出来分享给「众乐乐」吧。目前大多…

用户画像——如何构建用户画像系统

为什么需要用户画像 如果你是用户,当你使用抖音、今日头条的时候,如果平台推荐给你的内容都是你感兴趣的,能够为你节省大量搜索内容的时间。 如果你是商家,当你投放广告的时候,如果平台推送的用户都是你的潜在买家,能够使你花更少的钱,带来更大的收益。 这两者背后都…

KeePass敏感信息明文传输漏洞复现 (CVE-2023-24055)

一、漏洞描述 漏洞简述 KeePass 是一款免费的开源密码管理器&#xff0c;可帮助您以安全的方式管理您的密码。您可以将所有密码存储在一个数据库中&#xff0c;该数据库由一把万能钥匙锁定。因此&#xff0c;您只需记住一个主密钥即可解锁整个数据库。数据库文件使用目前已知…

面试个3年自动化测试,测试水平一言难尽。。。。

公司前段缺人&#xff0c;也面了不少测试&#xff0c;结果竟然没有一个合适的。 一开始瞄准的就是中级的水准&#xff0c;也没指望来大牛&#xff0c;提供的薪资在10-20k&#xff0c;面试的人很多&#xff0c;但平均水平很让人失望。 看简历很多都是3年工作经验&#xff0c;但…

中间件安全—Apache常见漏洞

中间件安全—Apache常见漏洞1.Apache常见漏洞1.1.Apache介绍1.2.Apache HTTPD 换行解析漏洞&#xff08;CVE-2017-15715&#xff09;1.2.1.漏洞介绍1.2.2.漏洞环境1.2.2.1.运行漏洞环境1.2.2.2.访问漏洞环境1.2.3.漏洞复现1.2.3.1.拦截1.2.3.2.添加换行1.2.3.3.访问文件1.3.Apa…

steam搬砖信息差项目,新手1周拿到结果!

项目具体是什么呢&#xff1f; 项目简单概括通过选品软件自动分析出此商品国内外商品价格&#xff0c;计算出利润率&#xff0c;选择出有利润销量好的商品&#xff0c;在以最低价格上架到国内buff的平台里&#xff0c;既能快速的卖出&#xff0c;还能获利。 主要利润在于商品…

在Vue.js中应该避免的三件事

1. 尽量避免使用行内事件代码(inline script) 这是一个行内事件代码 的例子 <div click"alert(hello world); doSomething();" />这种代码虽然第一次写起来很简单&#xff0c;但是很容易出bug。这样做有两个缺点。 VS Code 无法检查行内事件代码的错误 VS …

移动WEB开发五、响应式布局

零、文章目录 文章地址 个人博客-CSDN地址&#xff1a;https://blog.csdn.net/liyou123456789个人博客-GiteePages&#xff1a;https://bluecusliyou.gitee.io/techlearn 代码仓库地址 Gitee&#xff1a;https://gitee.com/bluecusliyou/TechLearnGithub&#xff1a;https:…

Dubbo之SpringBoot启动源码详解

需要前置知识&#xff0c;了解spring源码&#xff0c;springboot自动加载机制等 DubboBootstrap启动 详细信息可看 学习Dubbo源码需要了解的基础内容源码详解 DubboBootstrap 启动所需要的信息 添加应用程序配置添加注册中心配置添加协议配置添加服务配置启动 SpringBoot启…

音视频基础之音频编码原理简介

一&#xff1a;隐蔽信号 数字音频信号如果不加压缩地直接进行传送&#xff0c;将会占用极大的带宽。例如&#xff0c;一套双声道数字音频若取样频率为44.1KHz&#xff0c;每样值按16bit量化&#xff0c;则其码率为&#xff1a; 244.1kHz16bit1.411Mbit/s 如此大的带宽将给信号…

电商数据查询平台:母婴行业妈妈用品全网热销,头部品牌格局初现

以往&#xff0c;奶粉、纸尿裤这类产品基本就代表了整体母婴市场中的消费品。而如今&#xff0c;随着母婴行业的高速发展和消费升级&#xff0c;母婴商品的种类日益丰富&#xff0c;需求也不断深入。 在京东平台&#xff0c;母婴大品类中除了包含婴童相关的食品&#xff08;奶粉…

2022爱分析·事务型关系数据库市场厂商评估报告:万里数据库

目录 1. 研究范围定义 2. 事务型关系数据库市场定义 3. 厂商评估&#xff1a;万里数据库 4. 入选证书 1. 研究范围定义 在国内数字化转型以及信创建设持续推进的大背景下&#xff0c;众多厂商入局国内数据库市场&#xff0c;为企业提供了面向多种应用场景的数据库&am…

「7」线性代数(期末复习)

&#x1f680;&#x1f680;&#x1f680;大家觉不错的话&#xff0c;就恳求大家点点关注&#xff0c;点点小爱心&#xff0c;指点指点&#x1f680;&#x1f680;&#x1f680; 目录 第五章 相似矩阵及二次型 &4&#xff09;对称阵的对角化 &5二次型及其标准型 …

《mysql技术内幕:innodb存储引擎》笔记

任何时候Why都比What重要&#xff1b;不要相信任何的“神话”,学会自己思考&#xff1b;不要墨守成规,大部分人都知道的事情可能是错误的&#xff1b;不要相信网上的传言,去测试,根据自己的实践做出决定&#xff1b;花时间充分地思考,敢于提出质疑。1.MYSQL被设计为一个单进程多…

Elasticsearch也能“分库分表“,rollover实现自动分索引

一、自动创建新索引的方法 MySQL的分库分表大家是非常熟悉的&#xff0c;在Elasticserach中有存在类似的场景需求。为了不让单个索引太过于庞大&#xff0c;从而引发性能变差等问题&#xff0c;我们常常有根据索引大小、时间等创建新索引的需求&#xff0c;解决方案一般有两个…

虚拟 DOM 详解

什么是虚拟 dom&#xff1f; 虚拟 dom 本质上就是一个普通的 JS 对象&#xff0c;用于描述视图的界面结构 在vue中&#xff0c;每个组件都有一个render函数&#xff0c;每个render函数都会返回一个虚拟 dom 树&#xff0c;这也就意味着每个组件都对应一棵虚拟 DOM 树 查看虚拟…

C#中多态、抽象类、虚方法

多态、重装、重写 •多态&#xff1a;同一操作作用于不同的对象&#xff0c;可以有不同的解释&#xff0c;产生不同的执行结果&#xff0c;这就是多态性。抽象类、虚函数、接口三种方法实现的可以是多态性。•重载&#xff08;overload&#xff09;&#xff1a;对象中同名函数&…