Gluon_2L6_4L3机械臂视觉抓取操作手册

news/2024/12/4 7:21:52/

机械臂操作手册

安全须知

  • 如遇任何紧急情况,请立即按下紧急停止开关断电,以防操作人员受伤或机械臂损坏。
  • 当机械臂断电时,执行器会立即进入松闸状态,可能无法保持当前姿态。需要人为提供外力保证机械臂不会因为重力倾倒并手动将机械臂摆放至安全姿态。
  • 为防止机械臂关节过热,机械臂连续运行时间建议不超过30分钟。

硬件需求与连接

硬件需求:

在这里插入图片描述

从左到右依次为:笔记本 [ 注 ] ^{[注]} [],急停开关,gluon_2L6_4L3机械臂一台,积木块,Realsense D455相机
底座下方:350W工业电源,CCU及各类连接线

注:笔记本需预装Ubuntu 18.04和ros melodic
ros_melodic 安装教程:http://wiki.ros.org/cn/melodic/Installation/Ubuntu

连接和启动步骤
  1. 将机械臂,CCU,电源,相机,笔记本正确连接
  2. 将机械臂摆放至起始姿态,然后旋起安全按钮通电,并保持起始姿态 [ 注 1 ] ^{[注1]} [1]直到第5步controller启动后机械臂执行器进入抱闸状态。
  3. PC端新建终端,ping CCU地址。如果可以ping通,则通信成功;若失败,则检查硬件连接和本机ip设置 [ 注 2 ] ^{[注2]} [2]
$ ping 192.168.137.200
  1. ssh登录CCU(密码为ginger),并运行脚本start.sh [ 注 3 ] ^{[注3]} [3]以启动相机和机械臂controller。
$ ssh ginger@192.168.137.200
(输入密码ginger)
$ sudo ./start.sh
  1. 观察执行器上指示灯,通电以后,执行器LED状态灯为黄色闪烁。若LED变成绿色闪烁,则机械臂执行器controller启动完毕,机械臂进入抱闸状态,此时姿态被自动设为机械臂零位。

注1:机械臂默认零位起始姿态如上图所示。若controller启动时机械臂未保持在起始姿态,则大概率丢零。机械臂丢零会导致运动异常,需断电后返回上述第2步重新开始。在下方“rviz相关”部分可验证机械臂是否丢零。

注2:PC端IP地址需设为192.168.137.100

注3:首次刷机后需给脚本加读写执行权限。

PC端操作步骤

依赖配置

注:若依赖配置过后且未更改,之后可跳过此步骤。

笔记本需预装Ubuntu 18.04 和 ros melodic, 同时需安装以下packages

sudo apt-get update
sudo apt-get install libgflags2.2
sudo apt-get install libcurl4-openssl-dev
sudo apt-get install ros-melodic-moveit
sudo apt-get install ros-melodic-ros-control-boilerplate
sudo apt-get install ros-melodic-moveit-visual-tools
sudo apt-get install ros-melodic-joint-trajectory-controller
sudo apt-get install ros-melodic-robot-state-publisher
sudo apt-get install ros-melodic-ros-control
sudo apt-get install ros-melodic-ros-controllers
sudo apt-get install ros-melodic-controller-interface
PC端网络配置

注:若网络配置过后且未更改,之后可跳过此步骤。

确认PC端IP地址已设置为192.168.137.100后,新建终端执行以下命令

$ sudo touch /etc/network/if-pre-up.d/iptables
$ sudo chmod 777 /etc/network/if-pre-up.d/iptables
$ vi /etc/network/if-pre-up.d/iptables

输入以下内容并保存:

#!/bin/sh 
/sbin/iptables-restore < /etc/iptables

之后执行以下命令配置iptable规则:

$ sudo su
$ echo 1 >/proc/sys/net/ipv4/ip_forward
$ iptables -t nat -A POSTROUTING -s 192.168.137.100 -j MASQUERADE 
$ iptables -t nat -A POSTROUTING -s 192.168.137.200 -j MASQUERADE
$ iptables-save -t nat
$ iptables-save > /etc/iptables

打开/etc/sysctl.conf文件,添加 net.ipv4.ip_forward=1 避免每次重启重新配置。

$ sudo vi /etc/sysctl.conf
文件中添加: 
net.ipv4.ip_forward=1

登录CCU可验证网络是否配置成功

$ ssh ginger@192.168.137.200
$ ping www.baidu.com
PC端环境配置

注:若环境配置过后且未更改,之后可跳过此步骤。

新建终端,打开.bashrc文件

$ vi ~/.bashrc

在文件最下面添加ROS_MASTER_URI和ROS_IP后保存并退出。其中ROS_MASTER_URI为CCU的IP地址,ROS_IP为本机IP地址

$ export ROS_MASTER_URI=http://192.168.137.200:11311
$ export ROS_IP=192.168.137.100

配置环境

$ source ~/.bashrc

验证设置是否生效。

$ echo $ROS_MASTER_URI
$ echo $ROS_IP
仿真,控制与可视化
相机相关

新建终端,输入命令查看rostopic,若出现以下topic(/cv/xxx),则相机启动完毕。否则需检查硬件连接和环境变量配置或断电重启。

$ rostopic list
/cv/camera
/cv/visualize
/cv/json

校准相机。每次相机位置移动,或识别位置不准均需先执行校准命令。

$ rosservice call /cv/tag_calibrate

打开可视化开关

$ rosservice call /cv/visualize_switch

此时应显示信息

success: True
message: "Switch vis_flag to True"

打开可视化软件,在下拉菜单中选择 /cv/visualize 显示图像

$ rqt_image_view

注:若相机相关命令无效果,可尝试重新插拔相机或断电重启。

机械臂相关

新建终端,进入工作空间并启动rviz和控制程序

$ cd ~/gluon_catkin_ws
$ source install/setup.bash
$ roslaunch gluon_demo gluon_demo.launch
rviz 相关

rviz是ROS自带的图形化工具,可以很方便的让用户通过图形界面开发调试ROS。同时根据真实机械臂运动状态反馈提供相应的仿真模拟和控制界面。

rviz_example_未显示图片请连网

  • 在Goal State下拉菜单中选择home_pose,点击Plan & Execute可控制机械臂回到零位。
  • 此时机械臂应处于默认零位。若机械臂真实姿态与rviz中显示不符,则机械臂丢零。请断电后返回之前“连接步骤”重新开始。
  • 若机械臂零位正确,在rviz中点击next可分步调试,点击continue可连续进行抓取,点击stop可停止连续抓取改回为分步调试。
校准,调试与debug
机械臂校准

通过修改配置文件参数校准机械臂,打开gluon.yaml配置文件

$ vi ~/gluon_catkin_ws/install/share/gluon_demo/configs/gluon.yaml

配置文件说明:
设置机械臂offset步骤:

  • 抓取木块参数校准 (zone_or_not 设置为 true):

    1. 将机械臂抓取范围等分为4块区域,分别为左上,左下,右上,右下。
    2. 将木块放在左上区域的中心处,在rviz里点击next控制机械臂运动到木块上方。
    3. 观察夹爪抓取的位置在已有offset的基础上增大或者减小offset的值。
    4. 重复步骤 1~3 直到4块区域均可以抓准。
      在这里插入图片描述
  • 放置木块参数校准:

    1. 如果放置木块时未达到理想位置,可调整target_offset。
    2. 此步骤可分别用木块”机“和”院“测试,看看第一个字和最后一个字都是否能放在槽里。
  • 夹爪力度参数校准:

    1. 抓取木块时的夹爪力度可以调整 close_gripper_angle 的值 。
    2. 完全张开为 -4,完全闭合为 0。

注:以上调整均以机械臂base_link坐标系(详见 rviz相关 图中红色为x轴,绿色为y轴,z轴为蓝色垂直向上)为参考坐标系,单位均为米。例如设置target_x_offset=0.01(默认值为0),则机械臂放置木块位置会沿base_link x轴正方向偏移1厘米。

注2:每次断电重启后都需要进行一次参数校准以保证抓取效果。

gluon_demo:zone_or_not: true #布尔变量,true为分区域设置机械臂的offset,false为不分区域设置机械臂的offset#不分区域offset,单位:米object_x_offset: 0.013 #机械臂x轴方向的offsetobject_y_offset: 0.485 #机械臂y轴方向的offsetobject_z_offet: 0.004 #机械臂z轴方向的offset#抓取木块参数,单位:米object_x_offset_left_upper : -0.012 #左上区域机械臂x轴方向的offsetobject_y_offset_left_upper : 0.51 #左上区域机械臂y轴方向的offsetobject_x_offset_right_upper : -0.009 #右上区域机械臂x轴方向的offsetobject_y_offset_right_upper : 0.51 #右上区域机械臂y轴方向的offsetobject_x_offset_left_lower : -0.012 #右上区域机械臂x轴方向的offsetobject_y_offset_left_lower : 0.51 #右上区域机械臂y轴方向的offsetobject_x_offset_right_lower : 0.003 #右下区域机械臂x轴方向的offsetobject_y_offset_right_lower : 0.51 #右下区域机械臂y轴方向的offset#放置木块参数,单位:米target_x_offset: 0.005 #放置木块时机械臂x轴方向的offsettarget_y_offset: 0 #放置木块时机械臂y轴方向的offsettarget_z_offset: 0 #放置木块时机械臂z轴方向的offset#夹爪力度参数close_gripper_angle: -0.5 #抓取木块时的夹爪力度。完全张开为 -4,完全闭合为 0

log信息详解与debug

在机械臂抓取过程中,终端会打印log以提示用户下一步操作或当问题出现时供用户定位并解决问题。如需调整木块位置重新规划路径时,请遮住木块,防止调整过程中误识别木块位置。

ERROR: Unable to communicate with master!
引起此Error的原因较多,当输入ros相关命令无反应或显示以上错误时,需首先检查硬件连接和环境变量配置是否正确,然后可尝试重新插拔相机,重启程序等。

[ INFO] [1590636099.040013320]: Didnt received robot state (joint angles) with recent timestamp within 1 seconds.
Check clock synchronization if your are running ROS across multiple machines!

[ERROR] [1627437371.125197330]: Failed to fetch current robot state
PC端与CCU端系统时间不同步,导致ros无法通信。请登录到CCU确认CCU可以连接网络并保证两端系统时间同步。若发现CCU无法连网,请返回网络配置步骤。

Waiting to continue: Press ‘next’ to continue…
在rviz中点击next或continue进行下一步动作。点击next可分步调试,点击continue可连续进行抓取,点击stop可停止连续抓取改回为分步调试。

[WARN] [1627437379.265572696]: No available block, please re-arrange
无可抓取的木块,请重新调整木块位置,重新规划路径。

[WARN] [1627437379.265572696]: Identify error or block is out of range, please re-arrange
出现识别错误或木块超出可抓取范围,请重新调整木块位置,重新规划路径。

[WARN] [1627437379.265572696]: Planning failed, please re-arrange the [gong] block
当前"gong"字木块路径规划失败,请重新调整该木块位置,重新规划路径。(“源”是yuan,“院”是yuan2,其余木块均为对应拼音)

[ERROR] [1627437371.125197330]: Failed to call service openGrasp
控制夹爪服务调用失败,请ctrl+c退出进程后输入以下命令重启程序。
$ roslaunch gluon_demo gluon_demo.launch

[WARN] [1627437379.265572696]: Parse Error, Json Null
出现解析错误,相机未识别到物体或相机传的数据为空。调整木块位置或输入以下命令查看相机数据是否上传成功。
$ rostopic echo /cv/json
若上述解析错误[WARN]不断循环打印,且调整木块位置无效,需ctrl+c或ctrl+z退出进程,输入以下命令杀掉僵尸进程后重启程序。
$ sudo killall -9 grasp_vision_7
$ roslaunch gluon_demo gluon_demo.launch


http://www.ppmy.cn/news/638310.html

相关文章

ptpd和ptp4l 软件核心算法

原文章&#xff1a; A. Masters and Slaves In PTP, master clocks provide the reference time for one or more slave clocks through the exchange of messages over a network. The protocol determines a unique master among a group of clocks using the Best Maste…

jetson tx2 解决软件qv4l2软件segmentation fault

插入摄像头&#xff0c;安装完成qv4l2后&#xff0c;终端执行qv4l2,报&#xff1a; nvidianvidia:/mmc/prj/$ qv4l2Opening in O_NONBLOCKING MODEsegmentation fault1.安装qv4l2: sudo apt install qv4l2sudo apt install v4l-utilssudo apt-get install libv4l-dev2.报错是由…

树莓派 安装uv4l 无法定位软件包

问题描述&#xff1a; 我的是 树莓派4 Raspbian版本是Buster 安装uv4l 根据网上现有的一些教程和视频&#xff0c;安装CSI摄像头插件uv4l时老是装不上&#xff0c;网上的教程都是旧版本的树莓派Raspbian系统 debug过程中然后就出现过下面这几种问题 错误:6 https://www.linux-…

nvidia nx平台nvv4l2camerasrc适配GRAY8格式调试记录

1. 前言 nvidia相机插件“nvv4l2camerasrc”目前只支持UYVY格式 然而使用的相机是GRAY8格式, 需要扩展nvv4l2camerasrc格式 2. 参考12_camera_v4l2_cuda 尝试运行样例来捕获帧,并将其移植到nvv4l2camerasrc插件 sample如下: /usr/src/jetson_multimedia_api/samples/12_c…

通过gpsd-3.20、chronyd-3.5、phc2sys-3.1.1、ptp4l-3.1.1配置ptp主时钟(Master)

本文使用的开发板为野火鲁班猫1S 文章目录 零、总体流程一、gpsd配置二、chronyd配置三、phc2sys配置四、ptp4l配置 零、总体流程 通过gpsd接收(NEMApps)获得精准的绝对时间通过chronyd将上步的时间源同步系统时钟 在没有gps、gps解算失效、有网的时候&#xff0c;就是正常地…

补充:以 ptp4l、E2E 为例的 Linuxptp 代码分析

最近仍然在看linuxptp的问题&#xff0c;对其代码做了更深的了解&#xff0c;下面补充一些知识点。详细文章需要参考上一篇&#xff1a;以 ptp4l、E2E 为例的 Linuxptp 代码分析 1 Event message and General message 我是由于研究第二点才发现的第一点&#xff0c;有个先后顺…

问题解决ros:Checking for module libv4l2

问题&#xff1a; ros&#xff1a;Checking for module libv4l2 问题描述 ubuntu18.04 melodic 编译usb_cam caktkin_make时出错 -- processing catkin package: usb_cam -- > add_subdirectory(usb_cam) -- Searching required modules -- Checking for module libv4l…

以 ptp4l、E2E 为例的 Linuxptp 代码分析

最近在学习这部分内容&#xff0c;发现网上没有多少相关的代码分析的文章&#xff0c;结合自己的学习&#xff0c;和大家分享一下&#xff0c;希望大家批评指正&#xff01; linuxptp code git clone git://git.code.sf.net/p/linuxptp/code linuxptpptp4l.c::main() 首先是处…