ProEasy机器人:运动+通讯相关说明
----------------机械手运动-------
--常用指令:MovP弧线运动、MovL直线运动
MovP(1) --弧线轨迹运动到一号点
MovP(2) --弧线轨迹运动到二号点
MovL(1) --直线轨迹运动到一号点
MovL(2) --直线轨迹运动到二号点
-----拱形运动
MovP(1 .. P.Z(-3000)) --弧线轨迹移动到1号点安全高度上方
MovP(1) --弧线轨迹移动到1号点
MovP(1 .. P.Z(-3000))
MovP(2 .. P.Z(-3000)) --弧线轨迹移动到2号点安全高度上方
MovP(2) --弧线轨迹移动到2号点
MovP(2 .. P.Z(-3000))
MovL(1 .. P.Z(-3000)) --直线轨迹移动到1号点安全高度上方
MovL(1) --直线轨迹移动到1号点
MovL(1 .. P.Z(-3000))
MovL(2 .. P.Z(-3000)) --直线轨迹移动到2号点安全高度上方
MovL(2) --直线轨迹移动到2号点
MovL(2 .. P.Z(-3000))
--拱形指令函数封装
--MovP拱形
function Arch_P(Point,Height) --Point:要移动的点位,Height:拱形最高安全高度
_,Here = motion.GetFeedbackPosition(1) --获取当前位置
MovP(Here .. P.Z(Height)) --当前位置抬高到安全高度
MovP(Point .. P.Z(Height)) --移动到目标点安全位置
MovP(Point) --移动到目标点
end
Arch_P(1,-3000) --拱形弧线移动到1号点,安全高度为-3000
Arch_P(2,-3000)
--MovL拱形
function Arch_L(Point,Height) --Point:要移动的点位,Height:拱形最高安全高度
_,Here = motion.GetFeedbackPosition(1) --获取当前位置
MovL(Here .. P.Z(Height)) --当前位置抬高到安全高度
MovL(Point .. P.Z(Height)) --移动到目标点安全位置
MovL(Point) --移动到目标点
end
Arch_L(1,-3000) --拱形直线移动到1号点,安全高度为-3000
Arch_L(2,-3000)
--动作轨迹优化,在运动指令中可以加PASS指令来平滑过渡运动轨迹,对于机械手运动效果和CT时间都有明显的提升,例如:
MovP(1 .. P.Z(-3000),"PASS") --弧线轨迹移动到1号点安全高度上方
MovP(1) --弧线轨迹移动到1号点
MovP(1 .. P.Z(-3000),"PASS")
MovP(2 .. P.Z(-3000),"PASS") --弧线轨迹移动到2号点安全高度上方
MovP(2) --弧线轨迹移动到2号点
MovP(2 .. P.Z(-3000),"PASS")
--注意: MovP与MovL之间是不同运动指令,不能加PASS,机械手左右手的时候,只能用MovP,不能用MovL
MovP(1 .. P.Z(-3000),"PASS") --弧线轨迹移动到1号点安全高度上方
MovP(1) --弧线轨迹移动到1号点
MovP(1 .. P.Z(-3000)) --MovP与MovL之间不能加PASS
MovL(2 .. P.Z(-3000),"PASS") --直线轨迹移动到2号点安全高度上方
MovL(2) --直线轨迹移动到2号点
MovL(2 .. P.Z(-3000),"PASS")
----------------机械手通讯-------
--常用通讯:IO通讯、TCP——MODBUS通讯、TCP——Socket(无协议)通讯、232/485通讯
--IO通讯,相关指令:User_DI()、User_DO
repeat until User_DI(1) == 1 --等待取料信号
MovP(1 .. P.Z(-3000))
MovP(1)
User_DO(1,1) --关闭夹爪
DELAY(0.2)
MovP(1 .. P.Z(-3000))
User_DO(2,1) --发送取料完成
repeat until User_DI(2) == 1 --等待放料信号
MovP(2 .. P.Z(-3000))
MovP(2)
User_DO(1,0) --打开夹爪
DELAY(0.2)
MovP(2 .. P.Z(-3000))
User_DO(3,1) --发送放料完成
--TCP——MODBUS通讯,相关指令:ModbusRead16()、ModbusWrite16()
repeat until ModbusRead16(0x2000) == 1 --等待取料信号
MovP(1 .. P.Z(-3000))
MovP(1)
User_DO(1,1) --关闭夹爪
DELAY(0.2)
MovP(1 .. P.Z(-3000))
ModbusWrite16(0x2001,1) --发送取料完成
repeat until ModbusRead16(0x2003) == 1 --等待放料信号
MovP(2 .. P.Z(-3000))
MovP(2)
User_DO(1,0) --打开夹爪
DELAY(0.2)
MovP(2 .. P.Z(-3000))
ModbusWrite16(0x2004,1) --发送放料完成
--TCP——Socket(无协议)通讯,相关指令:FreePort.ECM_OpenAsClient()、FreePort.ECM_Tx()、FreePort.ECM_Rx()、FreePort.ECM_CloseAll()、FreePort.ECM_ChkConnect()、FreePort.ECM_Clear()
function open_client_Vision() --连接视觉服务器 打开以太网作为客户端
repeat
FreePort.ECM_CloseAll() --关闭所有链接
FreePort.ECM_Clear(1) --清楚端口数据
DELAY(0.2)
open_result = FreePort.ECM_OpenAsClient(1,"192.168.1.11",6000,nil,nil) --识别号:1,链接ip:192.168.1.11,端口号:6000,开始符与结束符:nil
DELAY(0.2)
open_result = FreePort.ECM_ChkConnect(1) --检查链接状态
until open_result == 0
print("Link OK" .. "\n")
end
function Send_Out_Vision(value) --发送内容给视觉
repeat
send_result = FreePort.ECM_Tx(1,value) --发送value到识别号1的服务器
until send_result == 0
print("SendPC:" .. value .. '\n')
end
function Receive_Vision() --接收视觉发过来的内容
repeat
c_status_pc,return_text_pc,text_l_pc = FreePort.ECM_Rx(1) ---接收PC发送过来的分BIN结果
until return_text_pc ~= "" --CMD_L>0
print("ReceivePC:" .. return_text_pc .."\n") ---------------打印接收到的消息
return return_text_pc
end
open_client_Vision() --连接视觉服务器 打开以太网作为客户端
MovP(1 .. P.Z(-3000))
MovP(1)
User_DO(1,1) --关闭夹爪
DELAY(0.2)
MovP(1 .. P.Z(-3000))
::AA:: --NG跳转标签
Send_Out_Vision("A1") --发送拍照信号给视觉
Data1 = Receive_Vision() --接收视觉发过来的内容(带有分隔符字符串类型)
Data = string.split(Data1,",") --以指定的分隔符","来分割字符串,返回的是数组
if Data[1] == "NG" then
goto AA
end
X_Vision = Data[2]*1000 --X坐标
Y_Vision = Data[3]*1000 --Y坐标
C_Vision = Data[4]*1000 --C坐标
Point = P.new(X_Vision,Y_Vision,-10000,0,0,C_Vision,0,0,0,0,0,0,0) --创建新点位
MovP(Point .. P.Z(-3000))
MovP(Point)
User_DO(1,0) --打开夹爪
DELAY(0.2)
MovP(Point .. P.Z(-3000))
相关文章:
ProEasy机器人:运动+通讯相关说明
----------------机械手运动------- --常用指令:MovP弧线运动、MovL直线运动 MovP(1) --弧线轨迹运动到一号点 MovP(2) --弧线轨迹运动到二号点 MovL(1) --直线轨迹运动到一号点 MovL(2) --直线轨迹运…...
Visual Studio Code 配置 C/C++ 开发环境的最佳实践(VSCode + Clangd + CMake)
Visual Studio Code 配置 C/C 开发环境的最佳实践(VSCode Clangd CMake) 知乎原文参考地址1 与 VSCode 官方文档配置 相比拥有的优势 Clangd 具有更优秀的性能,微软官方 Cpptools 的代码提示功能有明显延迟Clangd 提供更精准的「转到定义」、「重命名符号」、「…...
年产200万件的超级工厂投产!巨头「闭环」汽车电子全产业链
随着汽车电动化程度的提升,汽车电子部件占整车成本比重逐步升高,已经从2012年的25%上升到2021年的55%。 且汽车电子电气架构向整车集中演进,智能汽车已经进入了软件及数据定义时代,底层硬件打破了过去几十年围绕特定应用不断增加…...
智能穿戴AR眼镜主板方案定制_MTK平台AR智能眼镜PCB板开发
AR智能眼镜,是采用了多种技术实现增强现实效果,是将虚拟信息和现实场景相结合的智能设备。 AR智能眼镜硬件上,包括多个传感器、显示装置和处理器等。其中,传感器用于捕捉用户的动作和环境信息,如摄像头、陀螺仪、加速…...
【入门Flink】- 11Flink实现动态TopN
基本处理函数(ProcessFunction) stream.process(new MyProcessFunction())方法需要传入一个 ProcessFunction 作为参数,ProcessFunction 不是接口 , 而是一个抽象类 ,继承了AbstractRichFunction,所有的处…...
现在做跨境电商还需要全球代理IP吗?全球代理IP哪家靠谱?
随着全球互联网的发展,电商平台的发展和跨境贸易的便利化,跨境电商在过去几年中也一直呈现增长趋势,吸引了越来越多的企业和个体创业者入行。 然而,行业竞争也在不断加剧,跨境电商面临更多的越来越多的挑战࿰…...
微服务的常用组件
1、注册中心组件 Eureka、Nacos、Zookeeper、Consul 2、负载均衡组件 Ribbon 3、远程调用组件 OpenFeign 4、网关组件 Zuul、Gateway 5、服务保护组件 Hystrix、Sentinel 6、服务配置管理组件 SpringCloudConfig、Nacos、Apollo(阿波罗)配置中…...
Android问题笔记四十五:解决SeekBar操作thumb周围产生的圆形阴影/灰色阴影/白色圆圈的解决办法
点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列点击跳转>ChatGPT和AIGC 👉关于作者 专…...
AI从入门到精通,什么是LLMs大型语言模型?
大型语言模型是指由大量文本数据训练而成的自然语言处理模型,它可以生成高质量的文本内容,并能够理解和回答人类提出的问题。 这种模型通常基于深度学习技术,如循环神经网络(RNN)或变换器(Transformer&…...
优测云测试平台 | 有效的单元测试(下)
接着上一篇内容,我们继续~ 四、测试的目标之三:快速反馈 测试的快速反馈有两个方面的含义: 1.测试运行要快速出结果。 2.当测试失败时,要能快速定位失败原因。 测试运行效率决定了开发的工作周期运转的快慢。在理想的 TDD 模型中&#x…...
CUDA安装
在cmd中输入nvidia-smi。显示CUDA Version:12.3,所以只能下载小于等于12.3的版本。如下图: 进这个网址:https://developer.nvidia.com/cuda-toolkit-archive 选择一个版本下载。 选择完后之后这样选择: 最后点击下载即…...
【XTDrone Ubuntu18.04】XTDrone + Ubuntu18.04 + PX4 安装过程
重新配置所有的软件 卸载之前安装的ROS GAZEBO 记得把/home下的.ros和.gazebo也删除,删就删干净 参考链接:ROS的卸载与安装 血泪总结!亲测有效 卸载ROS方法 正式安装 安装依赖 sudo apt install ninja-build exiftool ninja-build protobuf…...
网站使用什么协议比较好
网站协议大多数使用HTTP和HTTPS HTTP协议,超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议。 HTTP是应用层协议,同其他应用层协议一样,是为了实现某一类具体应用的协议&…...
18. 机器学习——集成学习
机器学习面试题汇总与解析——集成学习 本章讲解知识点 什么是集成学习AdaBoost梯度提升树(Gradient Boosting Decision Tree, GBDT)随机森林(Random Forest,简称RF)XGBoostLightGBM本专栏适合于Python已经入门的学生或人士,有一定的编程基础。 本专栏适合于算法工程师、机器…...
SimaPro生命周期评估建模与碳足迹分析流程
SimaPro以系统和透明的方式轻松建模和分析复杂的生命周期,通过确定供应链中每个环节的热点,从原材料的提取到制造,分销,使用和处置,衡量所有生命周期阶段的产品和服务对环境的影响。SimaPro是过去25年评估生命周期的最…...
我的项目分享(不喜勿喷)
我要分享的项目是大喇叭C2C电商平台系统,一个面向移动端的电子商务平台,为个体消费者和商家提供直接交易和沟通的便利,丰富了人们的生活。 主要功能模块: 该项目的主要功能包括: 1. 用户注册功能:使用正则…...
PyTorch:张量与矩阵
PyTorch 是一个基于 Python 的科学计算包,专门针对深度学习研究,提供了丰富的工具和库。在 PyTorch 中,张量(tensor)是深度学习的核心数据结构,它可以看作是可以进行自动微分的多维数组。张量不仅可以代表标…...
传统广电媒体为何选择上云?有何优势?
随着现在互联网和科技的发展,现在更多的行业都搭上了科技这辆快车快速的完成了转型,那么在传统的广电媒资行业他们目前有哪些痛点呢?传统广电媒体转型发展现状是什么?企业如何数字化转型?企业上云的优势有哪些…...
系列十、堆参数调优
一、堆内存调优参数 -Xms堆空间的最小值,默认为物理内存的1/64-Xmx堆空间的最大值,默认为物理内存的1/4-XX:PrintGCDetails输出详细的GC处理日志 二、获取堆内存的默认物理内存 /*** Author : 一叶浮萍归大海* Date: 2023/11/16 14:50* Description: 获…...
sqlite3简单使用
为什么要使用sqlite3? sqlite3轻量简介,无需单独的数据库服务,只需访问磁盘上的.db的文件。在某些情况下很有用。 下面是一些简单的使用代码: import sqlite3 from uuid import uuid1# 连接数据库文件,如果不存在会创建 with…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
