安装机械臂驱动 ========================================== 驱动程序包含 :term:`机械臂主控(Robot Master)` 和 :term:`工控机主控(IPC Master)` 两种。 驱动文件位置 +++++++++++++++++++++++++++++ 位于 MAX 安装目录的 ``share/robot_code`` 路径下 已经适配驱动的机械臂 +++++++++++++++++++++++++++++ .. toctree:: :maxdepth: 1 abb/index ae/index aubo/index dobot/index efort/index elite/index fanuc/index inexbot/index inovance/index jaka/index kawasaki/index kuka/index motoman/index nachi/index otc/index rokae/index ur/index mitsubishi/index 机械臂主控模板 +++++++++++++++++++++++++++++++++++++ 针对工业机械臂主控应用,每种机械臂提供了四种模板函数分别是坐标移动基础模板, 坐标移动二次定位模板,轨迹移动同步模板,轨迹移动异步模板。 **每种模板流程图中节点说明文字上的 “S+数字” 表示该节点的步骤编号,例如S4(Step4), 表示第四步。步骤编号也会在每种机械臂的模板函数中使用,方便机械臂代码的理解。** 坐标移动基础模板 ------------------------------------- 坐标移动基础模板包含了眼在手上和眼在手外两种形式的基础运行逻辑。其流程图如下所示 .. image:: robot_master_flow/cart_move_basic.png :width: 350px :align: center 流程步骤说明: S1. 首先执行初始化操作,初始整个流程需要的变量,以及 IO 信号等; S2. 调用连接接口, 在工控机服务已经打开的前提下连接到工控机服务端; S3. 向工控机服务端发送切换工件指令,切换成当前工作的工件; S4. 使用机器人的运动指令运动到定义好的 Home 点,待机器人运动到 Home 点之后便开始工作循环; S5. 进入到工作循环后首先判断应用形式是否是眼在机械臂上的应用,如果是眼在机械臂上跳转到 S6 ,如果是眼在手外的机械臂应用跳转到 S8 ; S6. 使用机器人的运动指令运动到预先定义好的拍照位姿,然后跳转到 S7 ; S7. 待机器人运行到拍照位姿后发送拍照位姿给工控机服务端; S8. 请求抓取点位 S9. 获取抓取点位 S10. 得到抓取位姿后,使用机器人的运动指令使机器人运动到抓取位姿并进行抓取(可以插入一些过渡点位防止碰撞); S11. 抓取完成后,控制机械臂运动到放置位,放置工件(可以插入一些过渡点位防止碰撞),待放下工件后便可跳转到 S5 开始下一个循环。 坐标移动二次定位模板 ------------------------------------- 该模板对应的情形是:环境中有两个相机,一个固定在机械臂外,一个固定在机械臂上,工件成层摆放,每层之间有隔板分割。 固定在机械臂外的相机用于识别工作空间中是否有工件,识别到有工件后再移动机械臂靠近工件使用固定在机械臂上的相机对工件进行精定位抓取。 如果没有识别到工件则需先移除隔板。其流程图如下所示 .. image:: robot_master_flow/cart_move_repo.png :width: 350px :align: center 流程步骤说明: S1. 首先执行初始化操作,初始整个流程需要的变量,以及 IO 信号等; S2. 调用连接接口, 在工控机服务已经打开的前提下连接到工控机服务端; S3. 向工控机服务端发送切换工件指令,把机械臂外的相机切换成识别当前工作的工件; S4. 使用机器人的运动指令运动到定义好的 Home 点, 待机器人运动到 Home 点之后便开始工作循环; S5. 请求手外相机识别到的工件抓取位姿; S6. 获取手外相机识别到的工件抓取位姿,以及工件个数; S7. 判断手外相机是否识别到工件,如果识别到工件跳转到 S8 ,如果没有识别到工件跳转到 S15 ; S8. 手外相机已经识别到工件,为了更精确定位工件位姿需要使用手上相机对工件重新拍照定位,运动到手上相机的拍照位姿处,拍照位姿可以根据手外相机提供的工件位姿来确定; S9. 发送当前的拍照位姿; S10. 手上相机切换成识别当前工件; S11. 请求手上相机识别到的工件抓取位姿; S12. 获取手上相机识别到的工件抓取位姿; S13. 得到抓取位姿后,使用机器人的运动指令使机器人运动到抓取位姿并进行抓取(可以插入一些过渡点位防止碰撞); S14. 抓取完成后,控制机械臂运动到放置位,放置工件(可以插入一些过渡点位防止碰撞),待放下工件后便可跳转到 S5 开始下一个循环; S15. 如果手外相机没有识别到工件,可能是工件被隔板所遮挡,需要先移除隔板。手外相机切换成识别隔板 S16. 请求手外相机识别隔板的抓取位姿; S17. 获取手外相机识别到的隔板抓取位姿; S18. 得到隔板抓取位姿后,使用机器人的运动指令使机器人运动到隔板抓取位姿并进行抓取(可以插入一些过渡点位防止碰撞); S19. 隔板抓取完成后,控制机械臂运动到隔板的放置位,放置隔板(可以插入一些过渡点位防止碰撞); S20. 待放下隔板后,手外相机切换成识别当前工件,便可跳转到 S5 开始下一个循环; 在介绍轨迹移动模板之前,需要简单说明轨迹移动的应用场景和一些基本概念。 在轨迹移动中,一般情况下机械臂需要走的路径点均由工控机服务端根据机械臂的工作环境计算得来。 对于一般简单双筐的应用场景,工控机服务端提供的路径点位分成四个部分,分别是 pick in , pick out , place in , place out 。 其中 pick in 是指抓取抓取入筐路径,从定义好的抓取入筐位到工件的抓取位; pick out 是指抓取出筐路径,从抓取点位运动到出筐位; place in 是指放置入筐轨迹,从预先定义好的入筐位到框内的放置位; place out 是指放置出筐路径,从放置位从放置出筐位。 这四段路径可以根据项目需求来使用,并不一定全都需要获取并执行。 轨迹移动同步模板 ------------------------------------- 轨迹移动同步模板即每次请求获取轨迹后,都会立即执行获取的轨迹。其流程图如下所示 .. image:: robot_master_flow/traj_move_sync.png :width: 400px :align: center 流程步骤说明: S1. 首先执行初始化操作,初始整个流程需要的变量,以及 IO 信号等; S2. 调用连接接口, 在工控机服务已经打开的前提下连接到工控机服务端; S3. 向工控机服务端发送切换工件指令,切换成当前工作的工件; S4. 使用机器人的运动指令运动到定义好的 Home 点,待机器人运动到 Home 点之后便开始工作循环; S5. 请求工控机服务端进行工件的抓取放置规划; S6. 请求抓取的 pick in 轨迹,以及识别到的工件个数; S7. 如果识别到工件跳转到 S8 , 如果未识别到工件跳转到 S15 ; S8. 执行获取到的 pick in 轨迹; S9. 获取 pick out 轨迹; S10. 执行 pick out 轨迹; S11. 获取 place in 轨迹; S12. 执行 place in 轨迹; S13. 获取 place out 轨迹; S14. 执行 place out 轨迹,执行完 place out 轨迹后跳转到 S5 开始下一次循环。 S15. 如果当前工作空间中没有识别到工件,需要根据项目需求做处理。 轨迹移动异步模板 ------------------------------------- 轨迹移动异步模板会在抓取到工件执行完出抓取区域轨迹后开始下一次请求规划指令,然后再继续请求未执行完的放置轨迹。其流程图如下所示 .. image:: robot_master_flow/traj_move_async.png :width: 350px :align: center 流程步骤说明: S1. 首先执行初始化操作,初始整个流程需要的变量,以及 IO 信号等; S2. 调用连接接口, 在工控机服务已经打开的前提下连接到工控机服务端; S3. 向工控机服务端发送切换工件指令,切换成当前工作的工件; S4. 使用机器人的运动指令运动到定义好的 Home 点; S5. 请求工控机服务端进行工件的抓取放置规划,请求完之后便进入到工作循环; S6. 请求抓取的 pick in 轨迹,以及识别到的工件个数; S7. 如果识别到工件跳转到 S8 , 如果未识别到工件跳转到 S15 ; S8. 执行获取到的 pick in 轨迹; S9. 获取 pick out 轨迹; S10. 执行 pick out 轨迹; S11. 待执行完 pick out 轨迹,便开始请求下一次的抓取放置规划; S12. 获取 place in 轨迹; S13. 执行 place in 轨迹; S14. 获取 place out 轨迹; S15. 执行 place out 轨迹,执行完 place out 轨迹后跳转到 S5 开始下一次循环。 S16. 如果当前工作空间中没有识别到工件,需要根据项目需求做处理。 驱动连接故障排查 +++++++++++++++++++++++++++++++++++++ 1. 检查机器人是否开通了 socket 通讯功能 2. ping 机器人。如 ping 不通,排查本地 ip、机器人 ip,网线是否连接正常 3. 是否按照驱动安装说明安装,确认运行了正确的文件 4. 检查下位机代码版本,应该和上位机代码版本一致才能连接 5. 查看 windows defender 是否打开,若已打开,在左边菜单栏找到 允许应用通过 Windows Defender 防火墙进行通信,查看 robot driver node 的 专用和公用 是否都已勾选 6. 查看 windows 安全中心,域网络防火墙是否打开,需要关闭。 7. 查看 robot_config.yaml 的 timeout 时间,是否过短。需要注意的是 motion_socket 的 timeout 的第二个参数和 status_socket 的timout 的第二个参数。这里单位是毫秒。 8. windows 的任务管理器详细信息,查看 robot driver node 是否多开 9. 按照整站或非整站通讯协议,尝试用 socket 调试工具连接机器人