当前位置: 首页 > news >正文

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哪家靠谱?

随着全球互联网的发展,电商平台的发展和跨境贸易的便利化,跨境电商在过去几年中也一直呈现增长趋势,吸引了越来越多的企业和个体创业者入行。 然而,行业竞争也在不断加剧,跨境电商面临更多的越来越多的挑战&#xff0…...

微服务的常用组件

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)是深度学习的核心数据结构,它可以看作是可以进行自动微分的多维数组。张量不仅可以代表标…...

传统广电媒体为何选择上云?有何优势?

随着现在互联网和科技的发展,现在更多的行业都搭上了科技这辆快车快速的完成了转型,那么在传统的广电媒资行业他们目前有哪些痛点呢?传统广电媒体转型发展现状是什么?企业如何数字化转型?企业上云的优势有哪些&#xf…...

系列十、堆参数调优

一、堆内存调优参数 -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功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...