提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
前言
本文对于初学机械臂视觉抓取仿真实现提供了一些技术帮助,通过find_object_2d实现仿真环境下的视觉抓取。关于aubo i5机械臂ROS仿真环境的搭建请参考另一篇文章:aubo i5 ROS melodic环境配置及连接真实机械臂-CSDN博客
提示:以下是本篇文章正文内容,下面案例可供参考
一、robotiq 电动夹爪ROS功能包下载
1.下载robotiq功能包
cd ~/aubo_ws/src/
git clone
git clone https://github.com/jr-robotics/robotiq.git
2.编译工作环境
rosdep update
rosdep install --from-paths src --ignore-src -y
catkin build
3.在aubo i5末端安装力传感器
机械臂末端link为:wrist_Link
将robotiq_2f_140添加到末端(origin:旋转平移量,根据实际去填写)
4.Moveit!配置
终端运行:
roslaunch moveit_setup_assistant setup_assistant.launch
启动moveit设置助手机械臂配置
配置步骤:
1.Moveit设置助手加载机械臂urdf文件
2.生成Self-Conllisions自碰撞矩阵
3.添加虚拟关节
4.添加计划组
5.添加机器人姿态(zero和home)
6.标记末端执行器
7.添加被动关节(本机械臂没有,跳过)
8.配置ROS Control
9.Gazebo模拟
10.设置3D感知
11.作者信息
12.生成配置文件
5.修改moveit配置功能包
aubo_i5_moveit_config功能包是moveit生成的配置文件。为了方便我们和gazebo联合仿真和控制实体机械臂,那么我们在这里将修改moveit配置功能包:
(1)config文件下面需添加文件:joint_names.yaml文件
(2)launch:
添加:
aubo_i5_moveit_controller_manager.launch
moveit_planning_execution.launch
launch文件是启动文件,我们将所需要的集成在一个launch文件里面,相当于将所有的配置装配起来。
在这里我们只需在终端运行:
roslaunch aubo_i5_moveit_config moveit_planning_execution.launch robot_ip:=127.0.0.1
我们即可在rviz里面看到我们的机械臂及夹爪还有相机,我们可以在rviz里面执行plan&execute等相关插件的使用,可使用rqt插件,可以看到机械臂运行的plot。
补充:修改launch文件里面的moveit.rviz,将Loop Animation: true(修改为false)
5.Gazebo配置
在aubo_i5_gazebo_control.yaml文件中添加:
添加文件gripper_controller_robotiq.yaml
编写aubo_i5_gripper_gazebo.launch启动文件
在启动gazebo之前先启动rviz:
终端运行:
roslaunch aubo_i5_moveit_config moveit_planning_execution.launch robot_ip:=127.0.0.1
roslaunch aubo_gazebo aubo_i5_gripper_gazebo_control.launch
这里编写启动gazebo的launch文件时链接到rviz,实现联合仿真,即rviz和gazebo同时运动,这里我们使用moveit接口编程时就可以在gazebo里面看到我们的机械臂运动。
这里补充一部分内容:
遇到问题:在gazebo仿真中夹爪夹不住物体,夹取以后物体脱落
添加gazebo抓取插件:Grasp_fix
git clone https://github.com/ros-simulation/gazebo_ros_pkgs
在urdf文件里面添加以上内容,机械臂和夹爪的都可以!!!!!
解决问题原因也可能是夹取物体模型参数的原因,具体: <inertial> 惯性参数,包括质量、惯量等 </inertial> <collision name='collision’> 碰撞参数,用于碰撞检测 </collision> 修改这两个标签下面的参数值!!!(未尝试该解决方案)
二、Kinect V2 深度摄像头配置
kinect_v2下载链接:https://github.com/wangxian4423/kinect_v2_udrf
在aubo i5urdf文件添加:
三、视觉抓取仿真
利用moveit——group控制机械臂运动,这里我使用moveit_conmmander(python)接口控制路径规划
1.建立仿真环境:
在Gazebo中建立一个world:
2.控制规划策略
具体控制逻辑:
路点1:运行到预抓取位置
路点2:手抓张开
路点3:运行到抓取物体上方
路点4:运行到抓取点
路点5:手抓闭合
路点6:运行到抓取物体上方
路点7:运行到放置点
路点8:手抓张开
2. 深度相机kinect V2,rqt_image_view,可以采集RGB图像
5.find_object_2d使用:
这里我们使用find-object-2d功能包:
是ros平台下的一个识别物体功能包,由于对于纯颜色物体具有很少的特征,我决定将两个木块设置成红色和蓝色,将一个木块设置成木质色用于目标抓取。
1.首先把之前平台搭建起的Kinect V2图像的RGB和深度图像作为输入进行包的重映射。
find_object_3d_kinect2.launch文件修改:
<remap from="rgb/image_rect_color" to="/kinect_V2/rgb/image_raw"/>
<remap from="depth_registered/image_raw" to="/kinect_V2/depth/image_raw"/>
<remap from="depth_registered/camera_info" to="/kinect_V2/depth/camera_info"/>
2.使用步骤:
(1)启动moveit:
roslaunch aubo_i5_moveit_config moveit_planning_execution.launch robot_ip:=127.0.0.1
(2)启动gazebo:
roslaunch aubo_gazebo aubo_i5_gripper_gazebo.launch
(3)启动find_object_3d_kinect2.launch:
roslaunch find_object_2d find_object_3d_kinect2.launch
(4)设置识别算法及参数:
(5)添加识别区域:
(6)在rviz添加tf:
(7)目标物和世界坐标系之间的关系:
(8)修改opencv下面的scripts---tf_listener.py:
(9)运行tf:
rosrun opencv tf_listener.py
(10)运行我们的脚本程序:
rosrun aubo_moveit_interface grasping_demo_vision2.py
最终效果:
总结
本文对aubo i5实现视觉抓取的仿真环境做了一定的描述和配置。