从零开始的机械臂yolov5抓取gazebo仿真(环境搭建篇下)

sunday功能包使用介绍以及开源

sunday我给自己机械臂的命名,原型是innfos的gluon机械臂。通过sw模型文件转urdf。Sunday项目主要由六个功能包sunday_description、sunday_gazebo、sunday_moveit_config、yolov5_ros、vacuum_plugin、realsense_ros_gazebo组成,下面我将介绍这六个功能包。

个人环境

首先介绍个人使用环境,博主使用的是Ubuntu18.04+gtx1660ti显卡+ros_melodic+cuda10.2+pytorch1.8+yolov5-6.1。环境配置的教程详见上一篇博客:
https://blog.youkuaiyun.com/qq_48427527/article/details/129201676?spm=1001.2014.3001.5502

sunday_description

sunday_description是由sw插件导出的功能包,我主要对sunday_description/urdf中的urdf文件进行修改,并配置xacro文件。

sunday_description/launch/sunday_rviz.launch

文件用于观察我所配置的xacro文件的模型状态。

sunday_moveit_config

基于sunday_description/urdf/sunday.xacro对moveit进行配置修改方面还是参考古月的课程进行的修改。

修改过的文件:

sunday_moveit_config/config/controllers_gazebo.yaml

sunday_moveit_config/launch/moveit_rviz.launch

sunday_moveit_config/launch/moveit_planning_execution.launch

sunday_gazebo

该功能包主要用于配置机械臂操作的gazebo仿真环境,具体配置也是参考古月的课程,几个launch文件分别用于发布机械臂关节的状态以及与moveit做对接。

sunday_gazebo/launch/sunday_bringup_moveit.launch

该launch文件里面包含了所有节点,包括yolov5节点。如果你还未配置好yolov5环境,也可以使用以下不包含yolov5的launch文件打开gazebo环境。

sunday_gazebo/launch/sunday_bringup_moveit_origin.launch

yolov5_ros

该功能包是我在csdn上边找到的,封装了yolov5,能以launch文件启动,并发布话题,个人感觉还不错。地址:
YoloV5 的ros功能包

git clone https://github.com/qq44642754a/Yolov5_ros.git

具体使用过程就是将训练好的权重放置进功能包中对应launch文件的路径下边,在launch文件中修改话题名称以及其它参数即可。

vacuum_plugin

vacuum_plugin是一个吸盘的插件,在urdf中插入该插件即可在gazebo中实现吸盘的功能。

git clone https://github.com/tatsuya-s/gazebo_ros_vacuum_gripper_debugger

在sunday_description/urdf/sunday.xacro第490行添加插件

  <!-- 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>

realsense_ros_gazebo

realsense_ros_gazebo功能包是realsense的gazebo功能包,其仿真效果与实物相同,且其中包含多款realsense型号的模型文件,其中便包含本项目中使用的realsenseD435i摄像头,可以将原urdf中的摄像头删除,调用该功能包的模型进行替换。

git clone https://github.com/nilseuropa/realsense_ros_gazebo.git

在sunday_description/urdf/sunday.xacro第454行添加代码

<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>

gripper_model

gripper_model并不是一个功能包,这个包里有四个模型文件,对应视频中的三个多边形体以及,喂食过程中的人物张嘴闭嘴展板。模型文件的制作以及贴图的教程可以看我之前写的博客。博客地址:

https://blog.youkuaiyun.com/qq_48427527/article/details/124477608?spm=1001.2014.3001.5502

将四个模型拷贝放置到.gazebo/models路径,注意不能将整个包拷贝,仅将四个模型文件拷贝即可。

使用教程

现将几个模型文件gripper_model中的几个模型文件放到.gazebo/models路径中

将sunday.zip解压置于xx_ws/src路径下

cd xx_ws

catkin_make

source devel/setup.bash

conda activate 之前创建的虚拟环境

roslaunch sunday_gazebo sunday_bringup_moveit.launch(该launch包含yolov5节点,因此需要在conda环境中运行)

新开一个终端

roscd sunday_gazebo/scripts

python grasp&feed.py(该脚本无需进入conda环境中运行)
在终端中输入想要拾取物体的名称,从而实现物体的拾取以及喂食

/

视频第一部分pick&place

conda activate 之前创建的虚拟环境
roslaunch sunday_gazebo sunday_bringup_moveit.launch
将gazebo中的展板挪远一点

新开终端
roscd sunday_gazebo/scripts
python grasp.py
在终端中输入想要拾取物体的名称,从而实现物体的拾取

由于用于训练的多边形样本照片过少,如果出现展板挡住多边形模型出现阴影从而无法准确识别的情况,可以拖动或者旋转多边形模型通过调整位姿实现物体识别。

开源地址

github:https://github.com/Lord-Z/sunday

另外三个开源的功能包:
链接: https://pan.baidu.com/s/1N2T7TLAK9QIbBxWjepwJ6w 密码: uvkv
在放进百度云盘之前,博主将yolov5_ros/weights路径下的best.pt重命名为了polygon.pt用于方便区分权重,给各位造成一定的困扰,请各位在使用时将launch文件中的路径名自行修改。

资料

1.YoloV5 的ros功能包
2.realsense_ros_gazebo
3.vacuum_plugin

<think>嗯,用户想了解机械设计的详细计划,我需要一步步帮他们理清楚思路。首先,我得确定用户的需求是什么。他们可能是在做项目或者研究,需要从零开始设计机械,但经验不足。所以需要详细的步骤指导。 首先,机械设计通常分为几个阶段:需求分析、概念设计、详细设计、仿真验证、原型制造、测试优化和文档总结。我需要确保每个阶段都覆盖到,同时给出具体的子步骤。 需求分析是关键的第一步,得明确机械的应用场景,是工业装配、医疗手术还是教育用途?不同的场景对负载、精度、工作空间的要求不同。比如工业用需要高负载和高精度,而医疗用可能更注重灵活性和安全性。用户可能没有明确说明,所以得提醒他们考虑这些因素。 然后是自由度,常见的6自由度可以满足大部分需求,但特殊场景可能需要更多或更少。工作空间范围也很重要,需要根据应用环境确定。技术指标如负载能力、重复定位精度、运动速度这些参数必须明确,否则后续设计会有偏差。 接下来是概念设计,包括结构选型。机械结构有直角坐标型、圆柱坐标型、球坐标型、关节型等。关节型仿人灵活,适用于复杂任务,但设计难度高。可能需要比较不同结构的优缺点,帮助用户选择适合的。 驱动方式方面,电机、液压、气动各有优劣。电机控制精度高,液压力大但维护复杂,气动适合轻负载。传动方式如谐波减速器、行星齿轮、皮带传动等,需要根据需求选择。材料部分,铝合金和碳纤维轻便,钢结构的强度高,但重量大,得权衡。 详细设计阶段,需要机械设计、控制系统和软件算法并行。机械设计要完成三维建模,运动学分析包括正逆运动学,动力学分析计算力矩和惯性。结构强度分析避免变形或断裂,这些都需要专业知识,用户可能需要学习相关软件如SolidWorks、Adams。 控制系统硬件选型,电机、编码器、驱动器的选型要考虑兼容性和性能。控制器可以用PLC、单片机或工控机,通信协议如CAN、EtherCAT也要确定。软件部分,运动控制算法、路径规划、人机交互界面设计,这部分可能需要编程和算法知识,比如PID控制、逆向运动学算法。 仿真验证阶段,使用MATLAB或ROS进行运动学动力学仿真,有限元分析结构强度,控制算法仿真验证稳定性。用户可能没有仿真经验,需要推荐合适的工具和学习资源。 原型制造和测试优化,加工装配要注意工艺,如3D打印、CNC加工。测试包括功能测试、性能测试和寿命测试,根据结果调整设计参数,可能迭代多次。比如测试中发现振动问题,可能需要优化结构或控制参数。 最后文档总结,整理技术文档和用户手册,确保项目可追溯和后续维护。整个过程中,用户可能需要团队协作,涉及机械、电子、软件等多个领域,跨学科合作很重要。 用户可能的难点在于如何整合各个子系统,比如机械结构与控制系统的匹配,软件算法的实现。需要提醒他们分阶段验证,逐步集成,避免最后出现难以调试的问题。同时,成本和时间管理也是挑战,合理规划资源,优先核心功能开发。 可能还需要考虑安全性和可靠性,特别是在与人协作的场景中,紧急停止机制、力反馈等安全措施必不可少。此外,电源管理和散热设计也是容易被忽视的部分,长时间运行可能导致过热,影响性能。 总之,机械设计是一个复杂的系统工程,需要系统性的规划和多方面的知识。用户可能需要参考现有设计,学习相关案例,同时进行多次迭代优化。提供清晰的步骤和注意事项,帮助他们分阶段完成任务,避免在复杂项目中迷失方向。</think>好的,我将按照系统化设计流程为您梳理机械设计的详细计划,分为七个阶段逐步说明: --- ### **一、需求分析(核心基础)** 1. **应用场景明确** - 工业装配/医疗手术/教育实验/服务机器人等 - 特殊要求:防爆/无菌环境/协作安全等级(ISO 10218标准) 2. **技术指标定义** - 自由度(DOF):6自由度(基础型)或冗余自由度(复杂任务) - 负载能力:0.5kg~50kg(根据抓取对象选择) - 工作空间:球体半径0.5m~3m(需建模验证) - 重复定位精度:±0.02mm(工业级)或±1mm(教育级) - 运动速度:关节角速度10°/s~180°/s --- ### **二、概念设计(方案论证)** 1. **机械结构选型** $$ R = \begin{bmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{bmatrix} \quad \text{(旋转关节数学模型)}$$ - 串联式(主流)vs 并联式(高刚度) - 关节型(SCARA/Delta/拟人)对比分析 2. **驱动与传动方案** | 驱动类型 | 精度 | 响应速度 | 维护成本 | |---|---|---|---| |伺服电机|高|快|中| |液压驱动|中|慢|高| |气动驱动|低|极快|低| --- ### **三、详细设计(技术实现)** 1. **机械子系统设计** - 运动学建模:建立D-H参数表,推导正逆解 $$ T_n^0 = A_1A_2...A_n \quad \text{(正运动学链式变换)} $$ - 动力学仿真:ADAMS/MATLAB计算关节力矩 - 有限元分析:ANSYS验证关键部件强度 2. **控制系统设计** - 硬件架构: ```mermaid graph LR A[工控机] --> B[运动控制器] B --> C[伺服驱动器] C --> D[电机] D --> E[编码器反馈] ``` - 软件算法:PID控制、轨迹插补算法实现 --- ### **四、仿真验证(虚拟调试)** 1. **运动学仿真** - ROS/Gazebo搭建数字孪生模型 - 验证奇异点规避策略 2. **控制算法验证** - Simulink实现抗干扰鲁棒性测试 - 阶跃响应超调量<5%,稳态误差<0.1% --- ### **五、原型制造(实体实现)** 1. **加工工艺选择** - 高精度部件:五轴CNC加工(误差<0.01mm) - 轻量化结构:3D打印(拓扑优化设计) 2. **装配调试要点** - 谐波减速器预紧力校准 - 零位标定与手眼标定 --- ### **六、测试优化(迭代提升)** 1. **性能测试项** - 重复定位精度(激光跟踪仪测量) - 最大负载下的末端抖动量 - 连续工作72小时温升测试 2. **优化方向** - 动态参数整定:调整惯量补偿系数 - 结构强化:增加加强筋或改用7075铝合金 --- ### **七、文档交付(成果固化)** 1. **技术文档清单** - 机械图纸(GB/T 14689标准) - 电气原理图(IEC 60617符号规范) - 控制软件API手册 2. **用户培训材料** - 安全操作视频教程 - 故障代码速查表 --- ### **关键注意事项** 1. 建议采用模块化设计,便于后期功能扩展 2. 预留20%力矩裕度应对动态负载冲击 3. 电磁兼容设计需符合GB/T 17799.1标准 此计划可根据具体项目周期(建议6-18个月)调整实施节奏。实际案例表明,通过该流程设计的6轴工业机械可达±0.05mm定位精度,MTBF(平均无故障时间)超过10,000小时。
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值