越疆机器人TCP通讯之12点标定脚本程序

-- Version: Lua 5.4.4
-- 此线程为主线程,可调用任何指令
--必须先示教P1点位置,运行到P5点后手动暂停将当前位置保存到P2
--P2作为角度旋转标定基准位
--本程序用于越疆Robot和海康Vision master 12点标定
     VelL(20)             -- 设置线性速度
     AccL(20)             -- 设置线性加速度
     SpeedFactor(20)      -- 设置全局速度

     MovL(P1)---初始化位置

     x=50---X赋值
     y=50---Y赋值
     r=15---角度赋值
---------字符串分割----------
     function string.split(str,delimiter)
     if str==nil or str=='' or delimiter==nil then
     return nil
     end
     local result = {}
     for match in (str..delimiter):gmatch("(.-)"..delimiter) do
     table.insert(result,match)
     end
     return result
     end

------------------通讯连接---------------------

     function Connect(isServer,ip,prot)--建立TCP通信
     ::Cab_PC::  --跳转标签
     err, socket = TCPCreate(isServer,ip,prot)-- isServer:表示客户端或服务器(false: 表示创建客户端; true: 表示创建服务)  i
     print("err=",err)
     Wait(100)
     if err ~= 0 then
     print("创建链接失败,重新创建链接...\r\n")
     Wait(100)
     goto Cab_PC  --创建服务器失败跳转到create_serverCab标签继续创建
     end
     err = TCPStart(socket,0)--socket:socket对象  0:如果为0,则一直等待连接。如果不为0,则超过设定 的时间后退出连接。
     if err ~= 0 then
     print("握手失败,重新发起...\r\n")
     TCPDestroy(socket)--关闭TCP功能
     Wait(100)
     goto Cab_PC
     end
     print("握手成功...\r\n")
     end

-----------------数据交互-----------------
     function ReceiveData()          --数据接受                      
     local
     local DataArrayS={}
     err,Recbuf=TCPRead(socket,0,"string")    
     if err==0 and Recbuf~="" then
     DataArrayS=string.split(Recbuf,",")
     else   
     Connect(false,"192.168.1.90",8604) 
     end
     return DataArrayS
end    
----------数据发送-----------
     function SendData(socket,Str)   
     if Str~="" then
     err=TCPWrite(socket, Str)
     print("err=",err)
     if err==0 then
     print("Send Data OK")
     else
     Connect(false,"192.168.1.90",8604)          --接受失败,再次调用重连机制
     print("Send Data NG")
     end
     end
     end

---------------------------main-----------------------------
---P1
     Connect(false,"192.168.1.90",8604)      --建立TCP通信
     print("hello world")
     MovL(P1,{user=0,tool=1})
     Wait(500)
     currentPose_1=GetPose(0,1)
     Wait(300)
     print("currentPose_1=",currentPose_1)
     Test1="A"..","..tonumber(currentPose_1.pose[1])..","..tonumber(currentPose_1.pose[2])..","..tonumber(currentPose_1.pose[6])
     SendData(socket,Test1)
     Wait(1000)

---P2
     RelMovLUser({0,y,0,0,0,0})
     Wait(500)
     currentPose_2=GetPose(0,1)
     Wait(300)
     print("currentPose_2=",currentPose_2)
     Test2="A"..","..tonumber(currentPose_2.pose[1])..","..tonumber(currentPose_2.pose[2])..","..tonumber(currentPose_2.pose[6])
     SendData(socket,Test2)
     Wait(1000) 

     ---P3
     RelMovLUser({0,y,0,0,0,0})
     Wait(500)
     currentPose_3=GetPose(0,1)
     Wait(300)
     print("currentPose_3=",currentPose_3)
     Test3="A"..","..tonumber(currentPose_3.pose[1])..","..tonumber(currentPose_3.pose[2])..","..tonumber(currentPose_3.pose[6])
     SendData(socket,Test3)
     Wait(1000)

-- Version: Lua 5.4.4
-- 此线程为主线程,可调用任何指令
--必须先示教P1点位置,运行到P5点后手动暂停将当前位置保存到P2
--P2作为角度旋转标定基准位
--本程序用于越疆Robot和海康Vision master 12点标定
     VelL(20)             -- 设置线性速度
     AccL(20)             -- 设置线性加速度
     SpeedFactor(20)      -- 设置全局速度

     MovL(P1)---初始化位置

     x=50---X赋值
     y=50---Y赋值
     r=15---角度赋值
---------字符串分割----------
     function string.split(str,delimiter)
     if str==nil or str=='' or delimiter==nil then
     return nil
     end
     local result = {}
     for match in (str..delimiter):gmatch("(.-)"..delimiter) do
     table.insert(result,match)
     end
     return result
     end

------------------通讯连接---------------------

     function Connect(isServer,ip,prot)--建立TCP通信
     ::Cab_PC::  --跳转标签
     err, socket = TCPCreate(isServer,ip,prot)-- isServer:表示客户端或服务器(false: 表示创建客户端; true: 表示创建服务)  i
     print("err=",err)
     Wait(100)
     if err ~= 0 then
     print("创建链接失败,重新创建链接...\r\n")
     Wait(100)
     goto Cab_PC  --创建服务器失败跳转到create_serverCab标签继续创建
     end
     err = TCPStart(socket,0)--socket:socket对象  0:如果为0,则一直等待连接。如果不为0,则超过设定 的时间后退出连接。
     if err ~= 0 then
     print("握手失败,重新发起...\r\n")
     TCPDestroy(socket)--关闭TCP功能
     Wait(100)
     goto Cab_PC
     end
     print("握手成功...\r\n")
     end

-----------------数据交互-----------------
     function ReceiveData()          --数据接受                      
     local
     local DataArrayS={}
     err,Recbuf=TCPRead(socket,0,"string")    
     if err==0 and Recbuf~="" then
     DataArrayS=string.split(Recbuf,",")
     else   
     Connect(false,"192.168.1.90",8604) 
     end
     return DataArrayS
end    
----------数据发送-----------
     function SendData(socket,Str)   
     if Str~="" then
     err=TCPWrite(socket, Str)
     print("err=",err)
     if err==0 then
     print("Send Data OK")
     else
     Connect(false,"192.168.1.90",8604)          --接受失败,再次调用重连机制
     print("Send Data NG")
     end
     end
     end

---------------------------main-----------------------------
---P1
     Connect(false,"192.168.1.90",8604)      --建立TCP通信
     print("hello world")
     MovL(P1,{user=0,tool=1})
     Wait(500)
     currentPose_1=GetPose(0,1)
     Wait(300)
     print("currentPose_1=",currentPose_1)
     Test1="A"..","..tonumber(currentPose_1.pose[1])..","..tonumber(currentPose_1.pose[2])..","..tonumber(currentPose_1.pose[6])
     SendData(socket,Test1)
     Wait(1000)

---P2
     RelMovLUser({0,y,0,0,0,0})
     Wait(500)
     currentPose_2=GetPose(0,1)
     Wait(300)
     print("currentPose_2=",currentPose_2)
     Test2="A"..","..tonumber(currentPose_2.pose[1])..","..tonumber(currentPose_2.pose[2])..","..tonumber(currentPose_2.pose[6])
     SendData(socket,Test2)
     Wait(1000) 

     ---P3
     RelMovLUser({0,y,0,0,0,0})
     Wait(500)
     currentPose_3=GetPose(0,1)
     Wait(300)
     print("currentPose_3=",currentPose_3)
     Test3="A"..","..tonumber(currentPose_3.pose[1])..","..tonumber(currentPose_3.pose[2])..","..tonumber(currentPose_3.pose[6])
     SendData(socket,Test3)
     Wait(1000)
 

Read more

GitHub使用

GitHub使用

目录 git git init——初始化仓库 git status——查看仓库的状态 git add——向暂存区添加文件 git commit——保存仓库的历史记录 git log——查看提交日志 git diff——查看更改前后的差别 git checkout -b——创建,切换分支 git merge——合并分支 git log --graph——以图标形式查看分支 git reset——回溯历史版本 git深入学习网址: github功能 数据存储:原始数据  哈希函数 哈希值(比较通用) 文件分合以树的形式表示 Git仓库的托管服务是GitHub项目的目标之一 Pull Request功能:开发者在本地对源代码进行更改后,向GitHub中托管的Git仓库请求合并的功能 git git

By Ne0inhk

【GitHub项目推荐--TypeTale(字字动画):免费AIGC视频创作工具】非开源

简介 TypeTale (字字动画)是一款专为内容创作者打造的完全免费的AIGC创作软件,主要用于小说推文、AI短剧、AI电影制作。它集成了多种AI能力,提供从文案处理到视频生成的全链路创作支持,承诺现有功能与基础功能永久免费。 🔗 GitHub地址 : https://github.com/TypeTale/TypeTale 🎬 核心价值 : AIGC视频生成 · 小说推文 · AI短剧 · 完全免费 · 中文优化 项目背景 : * 内容创作 :短视频内容创作需求增长 * AIGC技术 :AI生成内容技术成熟 * 成本控制 :降低视频制作成本需求 * 中文优化 :中文内容创作工具需求 * 开源生态 :开源创作工具生态 项目特色 : * 🆓 完全免费 :永久免费使用 * 🇨🇳 中文优化 :专为中文优化 * 🤖 AI集成 :多AI能力集成 * 🎬 视频生成 :全链路视频生成 * 🔧 易用性 :简单易用界面 技术亮点 : * 多模型支持 :支持多种AI模型 * ComfyUI集成 :深度ComfyUI集成 * 工作流系统

By Ne0inhk

ACP:构建下一代AI Agent通信生态的开源标准

ACP:构建下一代AI Agent通信生态的开源标准 【免费下载链接】ACPAgent Communication Protocol 项目地址: https://gitcode.com/gh_mirrors/acp4/ACP 在人工智能技术快速演进的今天,AI Agent间的有效通信已成为构建复杂智能系统的关键挑战。ACP(Agent Communication Protocol)作为开源AI Agent通信协议标准,通过统一的API规范和模块化设计,为不同技术栈的AI Agent提供了无缝通信解决方案,正在重新定义多Agent系统的开发范式。 🔍 协议架构深度解析 ACP采用分层架构设计,构建了从底层网络协议到上层应用逻辑的完整技术栈。协议栈从下至上包括: * 物理层:定义基础通信介质 * 数据链路层:处理数据帧传输 * 网络层:基于IP协议实现路由功能 * 传输层:依赖TCP确保可靠数据传输 * 应用层:通过HTTP+SSE和JSON-RPC实现AI Agent间的消息交换 这种分层设计确保了协议的灵活性和扩展性,开发者可以在不破坏上层应用逻辑的情况下

By Ne0inhk
从零开始,手把手教你用开源技术搭建一个能“读懂“文档的智能问答系统(收藏版)

从零开始,手把手教你用开源技术搭建一个能“读懂“文档的智能问答系统(收藏版)

从零开始,用开源技术搭建一个能"读懂"文档的智能问答系统 今天给大家分享一个非常实用的项目——Everything plus RAG 智能文档问答系统。 相信大家的电脑上都安装了 Everything,一个磁盘文件快速查找桌面级应用软件。 一直以来,我都有个想法,能否做一个 plus 版本,支持文档的全文检索和智能问答?!这个想法萌芽已久,且和同事、朋友做过多次讨论。 近期,终于腾出空来,把它实现了。 直接上效果视频。 这个系统解决了我们工作中一个常见的痛点——如何从海量文档中快速找到最准确答案? unsetunset一、为什么需要这样一个系统?unsetunset 先说说我遇到的问题。作为技术人,手头总有大量的文档: * 技术文档、API 手册堆积如山 * 项目笔记、会议记录散落各处 * 代码文件、配置文件数不胜数 传统的解决方案有两种: 方案一:全文搜索(如 Elasticsearch、国产化[Easysearch] 等)

By Ne0inhk