基于ROS和gazebo的仿真UR5机器人零件抓取放置系统使用指南

基于ROS和gazebo的仿真UR5机器人零件抓取放置系统使用指南

系统说明

本系统是我本科毕设搭建的一个基于ROS和gazebo的仿真UR5机械臂零件抓取系统,众多功能并不完善,有些地方还有一些bug,因此仅供各位参考辅助使用。因为在开发过程中遇到很多坑,无谓地浪费了很多时间,而且中文资料比较少,比如Moveit的制动功能、Moveit从相机获取障碍信息避障等等,所以开源出来,希望能帮到各位初学者。
再次提醒:由于毕设后期本人时间不再充裕,再加上能力有限,本项目有很多不合理和错误的地方,仅供初学者辅助和参考使用

系统配置

Ubuntu 16.04+ROSkinetic

git地址

https://github.com/zzy5510/UR5-grasp-and-kinect-demo-on-gazebo

依赖项

大部分依赖包都在UR_with_Robotiq_grasp_gazebo中的depends文件夹下,但不免会缺乏一些包。解决方案可在https://blog.csdn.net/a735148617/a
ticle/details/103627811中查看。

功能介绍

ur_with_robotiq_grasp_gazebo:
该包在https://github.com/JingyuYang1997/UR_with_Robotiq_grasp_gazebo是在工作的基础上完成的。原包并没有添加gazebo_grasp_plugin插件,导致gazebo中抓住时夹爪发生抖动。

该元功能包由5个包组成,ur_desc是机器人模型描述包,meshes文件夹包含了描述kinect相机、Robotiq夹爪模型的dae和stl文件。urdf文件夹下包含了项目中使用到的urdf文件。model.urdf为使用Robitiq夹爪的机器人模型,model2.urdf为使用自创二指夹爪的机器人模型。ur_with_kinect为包含kinect相机的模型,该模型文件中用到了gazebo_grasp_plugin,可以修复夹爪在 gazebo中抖动,抓取失败等问题,该包的详细信息见https://github.com/JenniferBuehler/gazebo-pkgs。

robotiq_85_gripper为robotiq85夹爪相关仿真、驱动、通信包,但因为其为转动关节,无法确定夹爪距离和关节转角之间的关系,已被本人弃用。

urwh_moveit_config为原包含robotiq的Moveit配置包,已弃用。

confgi为包含自创二指夹爪的Moveit配置包(吐槽名字的都给我拖下去)具体配置可在config文件夹下查看。controllers.yaml记录了机器人和夹爪的controller,均为follow_joint_trajectory。sensors_3d中记录了Moveit规划场景监听的点云信息。

smart_grasping_sandbox_sample是本包的重头戏。world文件夹包含了一些gazebo世界文件,smart_grasp_sandbox.world是原版包的世界文件。launch文件夹里包含一些启动文件。scripts包含一些python写的功能节点。
demo_qt.py结合qt界面使用,qt界面发送字符串消息,该节点会订阅,根据消息作出相应的动作。
demo_add_obs.py中实现了向moveit规划场景中添加障碍物的功能,之后再控制机器人抓取零件放置到指定地点。
listen_four_move.py会监听停止话题,可以在执行任务的过程中随时根据话题进行停止。
movetrans.py会监听/arm_controller/follow_joint_trajectory/result话题,即当机器人完成一次运动时,该节点会发送“continue”,使得listen_four_move可以继续运动下去。
pcltrans.py该节点在收到点云信息后将该信息保存,之后持续不断地发送该话题。
stop_demo.py会让机器人启动后突然停止,用作测试。

grasp_msg:
一种新建的rosmsg类型,用于传递抓取位姿。

qt_test:
实现了可视化界面,可以通过启动ROS节点,发送话题,来控制机器人运动。
可以使用

rosrun qt_test qt_test

来运行。

使用方法

首先,运行

roslaunch smart_grasping_sandbox_sample main.launch 

该命令会启动gazebo。需要注意的是,该launch只是封装,具体的加载urdf模型,导入world文件,加载控制器,都是在launch_simulation中干的。
运行

roslaunch confgi planning_with_pcl.launch 

该launch文件会启动planning_execution.launch,即moveit规划器的启动文件。之后会启动pcltrans.py,具体效果就是让moveit中的点云信息固定下来,不会随着机械臂的乱跑而变化。
那么,是在哪里设置了moveit订阅的点云话题呢?在confgi/config/sensors_3d.yaml中,该yaml会被sensor_manager.launch启动。而sensor_manager.launch的启动已经包含在planning_execution.launch里了。
之后,可以运行

rosrun smart_grasping_sandbox_sample demo_add_obs.py 

来看看效果啦。

写在最后

由于时间匆忙,该项目完成度不高,依旧有很多问题存在。总之,有问题多google,国内的资料相对较少,我的很多问题都是在google和rosanswer两个平台解决的。希望能帮到你!

  • 9
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
    随着ICT技术不断深化和传统场景的结合,自动化、智能化相融合已经成为ICT技术的下一代浪潮,以工业机器人、服务机器人、自动驾驶等的新一代技术浪潮目前已经方兴未艾,成为又一波热点。而作为次级操作系统ROS则提供了一系列的调试、仿真工具,能支持激光导航、视觉导航等算法,是切入机器人和自动驾驶技术的重要基础。    机器人是一个复合型的领域,涉及软件、算法、硬件、结构等诸多方向,是一个理论性和实践性并重的学科,考虑到其复杂性和讲解的循序渐进,整个系列课程将分为三个系列即入门系列、中级系列、高级系列。   在入门系列中,我们将介绍ROS的基础知识(机器人基础知识、ROS开发环境等)、ROS配置管理(系统架构、参数管理、Launch启动、编译配置以及如何基于源代码开发等)、ROS系统调试(代码调试、可视化调试、消息回放、单元测试等),获得该领域的入门券。   在中级系列中,我们将围绕机器人建模与仿真涉及的URDF机器人模型、Gazebo仿真环境、坐标变换、运动控制、环境感知等展开介绍,熟练掌握利用RVIZ、Gazebo仿真和调试工具调试机器人程序与算法。   在高级系列中,我们将着眼于人工智能框架及算法,分享机器人开发涉及的运动控制、SLAM、语音交互、计算机视觉等。逐层递进,为大家一层层剥开机器人的神秘面纱。    本系列课程的特色在于:    1、从基础知识、建模与仿真、环境感知与智能决策、人机交互等4个方面循序渐进、逐步深化,知识覆盖全面,便于深度认知;    2、从基本理论、源码解读、工程示例等领域开展ROS系统入门知识的深度介绍和分析,源于工程实践,利于快速上手;   3、基于全新的环境Ubuntu 20.04、ROS Noetic、Gazebo 11、GMapping、Cartographer、tensorFlow 2.*、OpenCV 4.*等讲解,紧跟时代前沿。   整个系列的课程将会逐步开发并上线,三个系列是一个逐步深入、环环相扣的课程内容,感兴趣的同学可以开始学习啦。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值