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…...

实测文心一言4.0,真的比GPT-4毫不逊色吗?
10月17日,李彦宏在百度世界2023上表示。当天,李彦宏以《手把手教你做AI原生应用》为主题发表演讲,发布文心大模型4.0版本。 今天,咱们就开门见山啊。这一回要测一测,昨天才发布的文心一言大模型 4.0。 之所以要测它&…...

损失函数——KL散度(Kullback-Leibler Divergence,KL Divergence)
KL散度(Kullback-Leibler Divergence,简称KL散度)是一种度量两个概率分布之间差异的指标,也被称为相对熵(Relative Entropy)。KL散度被广泛应用于信息论、统计学、机器学习和数据科学等领域。 KL散度衡量的…...

基于springboot的医护人员排班系统 全套代码 全套文档
基于springboot的医护人员排班系统,springboot vue mysql (毕业论文10411字以上,共27页,程序代码,MySQL数据库) 代码下载链接:https://pan.baidu.com/s/177HdCGtTvqiHP4O7qWAgxA?pwd0jlf 提取码:0jlf 【运行环境】 IDEA, JDK1.8, Mysql, Node, Vue …...

【YOLOX简述】
YOLOX的简述 一、 原因1. 背景2. 概念 二、 算法介绍2.1 YOLOX算法结构图:2.2 算法独特点2.3 Focus网络结构2.4 FPN,PAN2.5 BaseConv2.6 SPP2.7 CSPDarknet2.8 YOlO Head 三、预测曲线3.1 曲线 一、 原因 1. 背景 工业的缺陷检测是计算机视觉中不可缺少…...

一文带你深入浅出Web的自动化测试工具Selenium【建议收藏】
文章目录 前言第01节 Selenium概述第02节 安装浏览器驱动(以Google为例)第03节 定位页面元素1. 打开指定页面2. id 定位3. name 定位4. class 定位5. tag 定位6. xpath 定位7. css 选择器8. link 定位9. 示例 有道翻译 第04节 浏览器控制1. 修改浏览器窗…...

Django模版层
解析: forloop内置对象:运行结果解析 counter0: 从0开始计数 counter : 从1开始计数 first: True,判断循环的开始 last : Tues,判断循环的结束模版变量的书写 我们可以在html中编写python代码。 演示: {{ 填写变量 }}{% 填写类的 %}{{ d.0 }} {{ d.1 }…...

同一个IP地址可有不同的写法?
每个人在上网的时候,都会被分配一个IP地址,这是互联网世界中的“身份证号码”。IP地址是以数字形式呈现的,例如192.168.1.1。然而,你是否知道,尽管一个IP地址的数字串唯一标识一个设备,但它可以有不同的写法…...

《Effective C++》条款13
以对象管理资源 有这样一段代码: class A { public:A* create(){...}}; class B :public A { public:A* ptr create();...delete ptr; }; 我们定义了ptr去接收create()函数的返回值,并且在最后进行了回收资源。看似是没问题的。但是实际上有很多隐患&am…...

【入门Flink】- 09Flink水位线Watermark
在窗口的处理过程中,基于数据的时间戳,自定义一个“逻辑时钟”。这个时钟的时间不会自动流逝;它的时间进展,就是靠着新到数据的时间戳来推动的。 什么是水位线 用来衡量事件时间进展的标记,就被称作“水位线”&#x…...

华为交换机的基本配置,看完秒懂
一、 交换机的基本配置 交换机连接方式 本地:计算机COM口/USB口 --> Console线 --> 交换机Console口 远程:Putty、SecureCRT、Xshell远程管理工具 华为VRP网络操作系统 1)华为的视图模式 <Huawei> //用户视图&#x…...