gazebo仿真环境中添加robotiq 2f 140的gripper_controller控制器

news2024/10/2 3:22:02

gazebo仿真环境中添加robotiq 2f 140的gripper_controller控制器

搭建环境:

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

通过下面几篇博客配置好了ur3、力传感器、robotiq夹爪、realsense的rviz和gazebo仿真环境

ubuntu20.04配置UR机械臂的仿真环境
ur3+robotiq ft sensor+robotiq 2f 140配置rviz仿真环境
ur3+robotiq ft sensor+robotiq 2f 140配置gazebo仿真环境
ur3+robotiq ft sensor+robotiq 2f 140+realsense d435i配置rviz,gazebo仿真环境

通过上一篇博客在仿真环境配置好realsense后,打开发布的话题发现并没有夹爪的话题

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mgVkbKQR-1677221406695)(null)]

经过robotiq/robotiq_2f_140_gripper_gazebo/launch/robotiq_2f_140_bringup.launchuniversal_robot/ur_gazebo/launch/ur3_bringup.launch文件比对,发现ur3_bringup.launch只有机械臂的控制器(如下图),没有加上夹爪的控制器

在这里插入图片描述

找到robotiq_2f_140_bringup.launch中夹爪控制器(如下图)

在这里插入图片描述

然后将其加入到ur3_bringup.launch文件中(注意仿照这两个文件控制器的加载方式来加入,而不是单纯复制框中的代码)

我在ur3_bringup.launch加入的代码如下

<!-- Load Gripper controller settings -->
<rosparam file="$(find robotiq_2f_140_gripper_gazebo)/config/robotiq_2f_140_gripper_controllers.yaml" command="load"/>
<!-- Load and start the gripper controllers listed in the 'controllers' arg. -->
<node name="gripper_controller_spawner" pkg="controller_manager" type="spawner"
args="gripper_controller" output="screen" respawn="false" />

ur3_bringup.launch完整代码如下

<?xml version="1.0"?>
<launch>
  <!--Robot description and related parameter files -->
  <arg name="robot_description_file" default="$(dirname)/inc/load_ur3.launch.xml" doc="Launch file which populates the 'robot_description' parameter."/>
  <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"/>

  <!-- Controller configuration -->
  <arg name="controller_config_file" default="$(find ur_gazebo)/config/ur3_controllers.yaml" doc="Config file used for defining the ROS-Control controllers."/>
  <arg name="controllers" default="joint_state_controller eff_joint_traj_controller" doc="Controllers that are activated by default."/>
  <arg name="stopped_controllers" default="joint_group_eff_controller" doc="Controllers that are initally loaded, but not started."/>

  <!-- robot_state_publisher configuration -->
  <arg name="tf_prefix" default="" doc="tf_prefix used for the robot."/>
  <arg name="tf_pub_rate" default="125" doc="Rate at which robot_state_publisher should publish transforms."/>

  <!-- Gazebo parameters -->
  <arg name="paused" default="false" doc="Starts Gazebo in paused mode" />
  <arg name="gui" default="true" doc="Starts Gazebo gui" />

  <!-- Load urdf on the parameter server -->
  <include file="$(arg robot_description_file)">
    <arg name="joint_limit_params" value="$(arg joint_limit_params)"/>
    <arg name="kinematics_params" value="$(arg kinematics_params)"/>
    <arg name="physical_params" value="$(arg physical_params)"/>
    <arg name="visual_params" value="$(arg visual_params)"/>
  </include>

  <!-- Robot state publisher -->
  <node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher">
    <param name="publish_frequency" type="double" value="$(arg tf_pub_rate)" />
    <param name="tf_prefix" value="$(arg tf_prefix)" />
  </node>

  <!-- Start the 'driver' (ie: Gazebo in this case) -->
  <include file="$(dirname)/inc/ur_control.launch.xml">
    <arg name="controller_config_file" value="$(arg controller_config_file)"/>
    <arg name="controllers" value="$(arg controllers)"/>
    <arg name="gui" value="$(arg gui)"/>
    <arg name="paused" value="$(arg paused)"/>
    <arg name="stopped_controllers" value="$(arg stopped_controllers)"/>
  </include>

   <!-- Load Gripper controller settings -->
  <rosparam file="$(find robotiq_2f_140_gripper_gazebo)/config/robotiq_2f_140_gripper_controllers.yaml" command="load"/>
  <!-- Load and start the gripper controllers listed in the 'controllers' arg. -->
  <node name="gripper_controller_spawner" pkg="controller_manager" type="spawner"
    args="gripper_controller" output="screen" respawn="false" />
</launch>

查看效果

运行命令

cd ~/catkin_ws
source devel/setup.bash
roslaunch ur_gazebo ur3_bringup.launch

在这里插入图片描述

现在多出来gripper夹爪控制器的话题

遇到的bug

在弄完上面的直接运行会发现命令行中有一个报错

在这里插入图片描述

主要原因是universal_robot/ur_gazebo/urdf/ur_macro.xacro文件和robotiq/robotiq_2f_140_gripper_gazebo/urdf/robotiq_arg2f_140_macro.xacro都有声明ros_control如下图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7QfPAujc-1677221386428)(null)]

只要注释掉其中一个ros_control就可以了,这里我注释了robotiq_arg2f_140_macro.xacro中的,问题解决,没有再报错

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vuejs文件传参方式

vue2版本 vscode 大致总结一下几种情况&#xff1a; 1.父传子&#xff0c;父组件利用props向子组件传递数据 1.在父组件的子组件标签上绑定一个属性&#xff0c;挂载要传输的变量 2.在子组件中通过props来接受数据&#xff0c;props可以是数组也可以是对象&#xff0c;接受的数…

RayVentory updated

RayVentory updated RayVentory Aspera连接器12.5.0.11850[更新1] 增加了对Docker容器的支持。 已将Xen虚拟机的设备类型更改为“Virtual_Machine”。 RayVentory扫描引擎12.5.3579.69[更新1] 添加了法语UI翻译预览。 RayVentory提供了硬件和软件的全面清单&#xff0c;并提供了…

mars3d获取视窗的范围

期望效果 :1.我现在想获取到当前视窗的地图范围&#xff0c;请问有什么⽅法可以拿到吗 2.⽐如当前视窗地图范围的边界点&#xff0c;每个边界点的经纬度 回复&#xff1a;1.mars3d的API⽂档中有相关的⽅法 2.具体使⽤可以参考⽂档地址&#xff1a;http://mars3d.cn/api/Map.htm…

长期跑步需要买个运动耳机吗、最好用的5款跑步耳机推荐

告别了寒冬&#xff0c;迎来了暖春。我的健身计划也开始提上了日程。最开始跑步还有点新鲜感&#xff0c;但是时间一久&#xff0c;自己在公园跑步那种枯燥感就会袭来&#xff0c;一个坚持跑步一年多的朋友告诉我&#xff0c;可以试一下跑步时听听音乐&#xff0c;既能锻炼身体…

JVM虚拟机栈

1、概述Java虚拟机栈&#xff08;Java Virtual Machine Stack&#xff09;&#xff0c;早期也叫Java栈。每个线程在创建时都会创建一个虚拟机栈&#xff0c;其内部保存一个个的栈帧&#xff08;Stack Frame&#xff09;&#xff0c;对应着一次次的Java方法调用&#xff0c;是线…

Codeforces Round #850 (Div. 2, based on VK Cup 2022 - Final Round)(A~E)

t宝酱紫喜欢出这种分类讨论的题&#xff1f;&#xff01;A1. Non-alternating Deck (easy version)给出n张牌&#xff0c;按照题目给的顺序分给两人&#xff0c;问最后两人手中各有几张牌。思路&#xff1a;模拟。AC Code&#xff1a;#include <bits/stdc.h>typedef long…

SpringBoot+Vue前后端分离管理系统03:后端

后端项目初始化 1、创建一个springboot 2.7.8项目 2、导入依赖 <!-- web --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- mysql -->…

MIND——Modality independent neighbourhood descriptor 模态无关邻域描述符

参考&#xff1a;https://blog.mbedded.ninja/programming/signal-processing/image-processing/image-registration/modality-independent-neighbourhood-descriptor-mind/《MIND: Modality independent neighbourhood descriptor for multi-modal deformable registration》论…

【离线数仓-6-数据仓库开发ODS层设计要点】

离线数仓-6-数据仓库开发ODS层设计要点离线数仓-6-数据仓库开发ODS层1.数据仓库开发ODS层设计要点2.ODS层用户行为日志表1.hive中复杂结构体复习1.array2.map3.struct 复杂结构4.嵌套格式2.hive中针对复杂结构字符串的练习1.针对ods层为json格式数据的练习2.用户行为日志表的设…

Linux学习(5)nano与正确关机方法sync shutdown

目录 文书编辑器 nano 正确的关机方法: sync, shutdown, reboot, halt, poweroff, init 数据同步写入磁盘&#xff1a;sync 惯用的关机命令&#xff1a; shutdown 重新启动&#xff0c;关机&#xff1a; reboot, halt, poweroff 切换运行等级&#xff1a; init 以下内容转载…

linux编程之经典多级时间轮定时器(C语言版)

一. 多级时间轮实现框架 上图是5个时间轮级联的效果图。中间的大轮是工作轮&#xff0c;只有在它上的任务才会被执行&#xff1b;其他轮上的任务时间到后迁移到下一级轮上&#xff0c;他们最终都会迁移到工作轮上而被调度执行。 多级时间轮的原理也容易理解&#xff1a;就拿时…

技术分享| anyRTC回声消除算法进化

本文将从基础概念、经典算法、主要挑战&#xff0c;以及人工智能回声消除技术探索等方面&#xff0c;分享anyRTC在 AEC 技术方面的实践及效果。 一.什么是回声消除 回音消除一直是语音通信的难点&#xff0c;最早的回声消除是从电话兴起的时候就有了&#xff0c;电话机的硬件…

postgres 源码解析51 LWLock轻量锁--2

本篇将着重讲解LWLock涉及的主要API工作流程与实现原理&#xff0c;相关基础知识见回顾&#xff1a;postgres 源码解析50 LWLock轻量锁–1 API介绍 函数API功能CreateLWLocks分配LWLocks所需的内存并进行初始化LWLockNewTrancheId分配新的Tranche ID,供用户使用Extension模块…

Helm安装Harbor

一、介绍 1.1 Harbor Harbor 是由 VMware 公司为企业用户设计的 Registry Server 开源项目&#xff0c;包括了权限管理 (RBAC)、LDAP、审计、管理界面、自我注册、HA 等企业必需的功能&#xff0c;同时针对中国用户的特点&#xff0c;设计镜像复制和中文支持等功能。目前该项…

说说Java“锁“ 事

文章目录前言大厂面试题复盘 —— 并发编程高级面试解析从轻松的乐观锁和悲观锁开讲通过8种情况演示锁运行案例&#xff0c;看看我们到底锁的是什么公平锁和非公平锁可重入锁(又名递归锁)死锁及排查写锁(独占锁)/读锁(共享锁)自旋锁SpinLock无锁 -> 独占锁 -> 读写锁 -&g…

五种IO模型以及select多路转接IO模型

目录 一、典型IO模型 1.1 阻塞IO 1.2 非阻塞IO 1.3 信号驱动I0 1.4 IO多路转接 1.5 异步IO 多路转接的作用和意义 二、多路转接IO模型&#xff08;select&#xff09; 2.1 接口 2.2 接口当中的事件集合&#xff1a; fd_set 2.2 select使用事件集合&#xff08;位图&am…

ip公司和soc公司是什么?

IP 公司和 SoC 公司都是半导体行业的重要组成部分&#xff0c;但它们的角色和职责略有不同。IP&#xff08;Intellectual Property&#xff09;公司主要提供可重用的知识产权组件&#xff0c;也称为 IP 核或 IP 模块&#xff0c;这些组件可以在设计芯片的过程中被集成到芯片中。…

Git代码冲突-不同分支之间的代码冲突

1、解决思路在团队开发中&#xff0c;提交代码到Git仓库时经常会遇到代码冲突的问题。- 原因&#xff1a;多人对相同的文件进行了编辑&#xff0c;造成代码存在差异化- 解决方案&#xff1a;1. 使用工具或git命令对比不同分支代码的差异化2. 把不同分支中有效代码进行保留&…

[译文] 基于PostGIS3.1 生成格网数据

根据格网进行数据统计与分析是一种常用的方法&#xff0c;相比自然地理边界与行政管理边界而言&#xff0c;使用格网有如下特点&#xff1a;每个格网之间地位相等&#xff0c;没有上下级之分。每个格网的面积都相等。相邻两个格网单元中心点之间距离相等。适用于将数据从“空间…

ThreeJS加载公路GeoJson数据实现流光效果

threejs加载公路geojson数据,跟加载行政区域的原理一样,唯一不同的是geojson格式不一样,路线并不是连贯起来的,按照路段进行的拆分,在加载的时候问题不大,正常解析然后转墨卡托投影,但是在做流光效果时,需要对geojson进行重新组合. 实现效果: