从零开始的机械臂yolov5抓取gazebo仿真(二)

news2024/11/26 7:50:18

使用moveit_setup_assistant配置机械臂(上)

观察机械臂模型

上一节中拿到了sunday_description功能包,将功能包放进工作空间进行编译,可将工作空间路径写进.bashrc文件中,这样就不必每次都source了

例如:source ~/catkin_ws/devel/setup.bash --extend

编译通过后,修改sunday_description/launch/display.launch文件将<arg name="gui" default="False" />改为<arg name="gui" default="Ture" />,运行launch文件

roslaunch sunday_description display.launch

在这里插入图片描述
可以看到机械臂模型和控制关节运动的gui,若机械臂模型并不是竖直向上的,而是横着的或者倒的,请重新在solidworks中导出urdf模型,在solidworks中模型位置竖直方向为Z轴正向。

修改urdf文件,并转为xacro

转xacro

观察urdf模型无误后,复制sunday_description.urdf文件,并将其命名为sunday.xacro
修改<robot name="sunday_description"><robot name="sunday" xmlns:xacro="http://ros.org/wiki/xacro">

添加base_footprint

    <link name="base_footprint">
    </link>

    <joint name="base_link2base_footprint" type="fixed">
        <parent link="base_footprint" />
        <child link="base_link"/>
        <origin xyz="0 0 0.032" rpy="0 0 0" />
    </joint>

修改惯性参数

将每一个机械臂关节link的惯性参数修改为:

<inertia ixx="1" ixy="0" ixz="0" iyy="1" iyz="0" izz="1" />

这里修改为1是较为合理的选择,各位也可以参考之前的博客,将机械臂关节看做是圆柱体并计算大致惯性参数。

将机械臂在world中固定

这一段可以在使用moveit配置完后再添加

<!-- Used for fixing robot to Gazebo 'base_link' -->
  <link name="world"/>

  <joint name="fixed" type="fixed">
    <origin
      xyz="0 0 1.1"
      rpy="0 0 0" />
    <parent link="world"/>
    <child link="base_footprint"/>
  </joint>

添加d435摄像头

将原先的摄像头部分注释,添加realsense_ros_gazebo功能包中的realsense摄像头

  <!-- <xacro:include filename="$(find sunday_description)/urdf/realsense/realsense.xacro"/> -->
<xacro:include filename="$(find realsense_ros_gazebo)/xacro/depthcam.xacro"/>
<xacro:realsense_d435 sensor_name="camera" parent_link="link_5" rate="30">
    <origin xyz="-0.00068847 -0.06 -0.13" rpy="-3.14 0 -1.5708"/>
</xacro:realsense_d435>

添加ros_control插件

  <!-- ros_control plugin -->
  <gazebo>
    <plugin name="gazebo_ros_control" filename="libgazebo_ros_control.so">
      <robotNamespace>/sunday</robotNamespace>
      <robotSimType>gazebo_ros_control/DefaultRobotHWSim</robotSimType>
      <legacyModeNS>true</legacyModeNS>
    </plugin>
  </gazebo>
添加传动
<!-- Transmissions for ROS Control -->
<xacro:macro name="transmission_block" params="joint_name">
  <transmission name="tran1">
    <type>transmission_interface/SimpleTransmission</type>
    <joint name="${joint_name}">
      <hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
    </joint>
    <actuator name="motor1">
      <hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
      <mechanicalReduction>1</mechanicalReduction>
    </actuator>
  </transmission>
</xacro:macro>

<xacro:transmission_block joint_name="joint_1"/>
<xacro:transmission_block joint_name="joint_2"/>
<xacro:transmission_block joint_name="joint_3"/>
<xacro:transmission_block joint_name="joint_4"/>
<xacro:transmission_block joint_name="joint_5"/>
<xacro:transmission_block joint_name="joint_6"/>

添加吸盘插件

  <!-- vacuum_gripper plugin -->
  <gazebo>
    <plugin name="gazebo_ros_vacuum_gripper" filename="libvacuum_plugin.so">
      <robotNamespace>/sunday/vacuum_gripper</robotNamespace>
      <bodyName>link_6</bodyName>
      <topicName>grasping</topicName>
      <maxDistance>0.05</maxDistance>
      <minDistance>0.03</minDistance>
    </plugin>
</gazebo>

为吸盘添加参数

为吸盘link6添加摩擦等属性

<gazebo reference="link_6">
  <mu1>50</mu1>
  <mu2>50</mu2>
  <minDepth>0.003</minDepth>
  <maxVel>0</maxVel>
  <kp>1000000.0</kp>
  <kd>1.0</kd>
  <material>Gazebo/Grey</material>
</gazebo>

完整代码可见开源代码sunday_description/urdf/sunday.xacro

小结

该小节主要完成了机械臂xacro文件的配置,下一节将用moveit_setup_assistant对该xacro文件进行配置。

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

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

相关文章

I2C连续读写实现

IIC系列文章: (1)I2C 接口控制器理论讲解 (2)I2C接口控制设计与实现 (3)I2C连续读写实现 文章目录 前言一、 i2c_bit_shift 模块分析二、 i2c_control 模块实现三、 i2c_control 模块仿真测试前言 上文的 i2c_bit_shift 模块说完了,我们发现实现一个字节的写操作还是可以实现…

为什么CAN要采取双绞线布局?

摘要&#xff1a; 在CAN总线应用中&#xff0c;一般建议使用屏蔽双绞线进行组网、布线&#xff0c;本文将详细讲解为什么CAN总线要采取双绞线的布局。 CAN&#xff08;Controller Area Network&#xff09;是一种用于实时应用的串行通讯协议总线&#xff0c;它可以使用双绞线来…

【解决】Kafka Exception thrown when sending a message with key=‘null‘ 异常

问题原因&#xff1a; 如下图&#xff0c;kafka 中配置的是监听域名的方式&#xff0c;但程序里使用的是 ip:port 的连接方式。 解决办法&#xff1a; kafka 中配置的是域名的方式&#xff0c;程序里也相应配置成 域名:port 的方式&#xff08;注意&#xff1a;本地h…

Medical Isolated Power Supply System in Angola

安科瑞 华楠 Abstract: Diagnosis and treatment in modern hospitals are inseparable from advanced medical equipment, which are inseparable from safe and reliable power supply. Many operations often last for several hours, and the consequences of a sudden pow…

js 构造函数

js 构造函数 new Pig() ---- 创建新的空对象 this 指向新对象 this.name name --------修改this&#xff0c;添加新的属性。 最后返回新的对象

C++遍历std::tuple(C++14 ~ C++20)

本文展示了遍历std::tuple的方式&#xff1a; 首先比较容易想到的是利用C14的std::make_index_sequence与std::get结合取值&#xff0c;然后配合std::initializer_list进行包展开&#xff1a; // since C14 class Func0 {template<typename T, typename F, size_t... I>…

bert,transformer架构图及面试题

Transformer详解 - mathor atten之后经过一个全连接层残差层归一化 class BertSelfOutput(nn.Module):def __init__(self, config):super().__init__()self.dense nn.Linear(config.hidden_size, config.hidden_size)self.LayerNorm nn.LayerNorm(config.hidden_size, epscon…

疫情打卡 vue+springboot疾病防控管理系统java jsp源代码

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 疫情打卡 vuespringboot 系统有1权限&#xff1a;管理…

vue3+ts-tsconfig.json报错Option ‘importsNotUsedAsValues’

vue3ts-tsconfig.json报错Option ‘importsNotUsedAsValues’ is deprecated and will stop functioning in TypeScript 5.5. Specify compilerOption ‘“ignoreDeprecations”: “5.0”’ to silence this error. Use ‘verbatimModuleSyntax’ instead 自我记录 翻译 选项…

网工软考 | 软考到底考哪个证比较好?

最近来咨询软考的同学比较多&#xff0c;对软考有哪些证书&#xff0c;怎么来选择比较困扰&#xff0c;目前刚好是学习的最佳阶段。 本期就统一来解答一下。 01 软考分为五个专业 计算机软件、计算机网络、计算机应用技术、信息系统和信息服务共五个专业&#xff0c;并在各专…

股市杠杆操作是什么意思?从三方面分析

股市杠杆操作是指投资者通过借用资金进行证券交易&#xff0c;以放大投资回报的一种金融工具。这种操作可以使投资者借用额外的资金进行交易&#xff0c;增加投资收益的潜力&#xff0c;但也伴随着更高的风险。下面从三个方面对股市杠杆操作进行分析。 1. 操作原理和优势&#…

Nginx的块、变量以及重定向

目录 绪论 1、location匹配 1.1 常见的Nginx正则表达式 1.2 正则表达式&#xff1a;匹配的是文件内容 1.3 location匹配uri 1.4 location常用的匹配规则 1.5 location优先级 1.6 匹配小结 1.7 生产环境中的匹配规则 2、nginx的内置变量 3、rewrite 3.1 rewrite作用 …

Spring中bean生命周期的PostProcessor的每个方法的作用

可结合这个博客看 https://blog.csdn.net/riemann_/article/details/118500805、https://cloud.tencent.com/developer/article/1409315、https://blog.csdn.net/qq_43631716/article/details/120239438 本篇内容借鉴于chatgtp,应该有错误&#xff0c;仅作方法应用的参考&#…

python爬虫——爬取天气预报信息

在本文中&#xff0c;我们将学习如何使用代理IP爬取天气预报信息。我们将使用 Python 编写程序&#xff0c;并使用 requests 和 BeautifulSoup 库来获取和解析 HTML。此外&#xff0c;我们还将使用代理服务器来隐藏我们的 IP 地址&#xff0c;以避免被目标网站封禁。 1. 安装必…

数据结构与算法-栈(LIFO)(经典面试题)

一&#xff1a;面试经典 1. 如何设计一个括号匹配的功能&#xff1f;比如给你一串括号让你判断是否符合我们的括号原则&#xff0c; 栈 力扣 2. 如何设计一个浏览器的前进和后退功能&#xff1f; 思想&#xff1a;两个栈&#xff0c;一个栈存放前进栈&…

【BERTopic应用 03/3】:微调参数

一、说明 一般来说&#xff0c;BERTopic 在开箱即用的模型中工作得很好。但是&#xff0c;当您有数百万个数据要处理时&#xff0c;使用基本模型处理数据可能需要一些时间。在这篇文章中&#xff0c;我将向您展示如何微调BERTopic中的一些参数并比较它们的结果。让我们潜入。 二…

简单学生信息管理系统springboot,ssm,ssh学生教师java jsp源代码

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 简单学生信息管理系统springboot,ssm,ssh 系统有1权限…

【C++】移动构造函数

2023年8月15日 概述 移动构造函数是一个特殊的构造函数&#xff0c;用于从一个对象中移动&#xff08;转移&#xff09;资源到另一个对象&#xff0c;而不是进行复制操作。它通常与右值引用一起使用&#xff0c;以实现高效的资源转移&#xff0c;提高性能。 语法 class MyCla…

操作系统-笔记-第二章

目录 二、第二章——【进程】 1、进程的概念 &#xff08;1&#xff09;PID & PCD 进程控制块 &#xff08;2&#xff09;程序段 & 数据段 &#xff08;3&#xff09;特征 &#xff08;特性&#xff09; property &#xff08;4&#xff09;总结 2、进程的状态 …

8个常用的项目管理工具和方法,干货收藏!

在现代商业环境中&#xff0c;高效的项目管理工具和方法是成功实施项目的关键。随着项目的规模和复杂性不断增加&#xff0c;需要科学的方法和先进的工具来确保项目按时交付、控制成本并保持质量。无论是项目管理新手还是经验丰富的专业人士&#xff0c;了解和掌握一些公认好用…