越疆机器人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

Llama-Factory能否用于多模态模型微调?最新进展披露

Llama-Factory能否用于多模态模型微调?最新进展披露 在大模型落地浪潮中,如何快速、低成本地定制专属AI能力已成为开发者的核心关切。尤其当视觉与语言的边界日益模糊——从图文问答到医疗影像报告生成,多模态任务正成为下一代智能应用的关键入口。而与此同时,一个被广泛使用的开源工具 Llama-Factory 也悄然走入聚光灯下。 它以“一键微调百种大模型”著称,支持QLoRA、LoRA等高效参数微调技术,甚至能让7B级别的语言模型在消费级显卡上完成训练。但问题随之而来:这个看似全能的框架,是否也能驾驭图像与文本交织的复杂世界?我们能否用它来微调像 Qwen-VL 或 LLaVA 这样的多模态模型? 答案并不简单。 尽管其名带有“Llama”,Llama-Factory 实际早已超越 Meta 的 LLaMA 系列,成为一个通用的大语言模型微调平台。它基于 Hugging Face Transformers 构建,集成了 PEFT、Accelerate 和 bitsandbytes 等主流生态组件,实现了从数据加载、训练配置到模型导出的全流程覆盖。 用户只需通过命令行或

语音转写文本润色:Llama-Factory助力ASR结果后处理

Llama-Factory助力ASR文本后处理:让语音转写真正“可用” 在智能会议系统、庭审记录数字化、远程医疗问诊等场景中,自动语音识别(ASR)早已不再是“能不能听清”的问题,而是“转出来的文字能不能直接用”的挑战。即便现代ASR引擎的词错率已低于10%,其原始输出仍常表现为无标点、断句混乱、同音错别字频出的“口语流”,例如: “那个我们明天三点开会然后讨论项目进度请各部门负责人参加” 这样的文本显然无法直接归档或生成纪要。用户需要额外投入大量人力进行校对和润色——这不仅抵消了自动化带来的效率优势,还可能引入新的错误。 于是,一个关键环节浮出水面:ASR后处理。而近年来,大语言模型(LLM)正成为这一环节的核心驱动力。不过,通用大模型如通义千问、ChatGLM虽然语法能力强,却往往对领域术语不敏感,容易“过度发挥”。真正的解法,是基于真实转写数据微调一个专用的文本修正模型。 这时,Llama-Factory 出现了。它不是一个简单的训练脚本集合,而是一套完整的大模型定制流水线,把从数据准备到模型部署的复杂工程封装成可操作的工具链。更重要的是,它让没有深度学习背景的工程师也

AIGC:重塑文学的新力量

AIGC:重塑文学的新力量

目录 一.AIGC 为文学创作带来的新机遇 1.激发创意灵感 2.提高创作效率 3.拓展文学风格和形式 4.促进文学的普及和传播 二.AIGC 对文学创作的挑战 1.版权问题 2.文学价值的质疑 3.对人类作家的冲击 三.如何应对 AIGC 对文学的影响 1.明确版权归属 2.提高文学素养 3.加强人机合作 总结 在科技飞速发展的时代,人工智能生成内容(AIGC)正以惊人的速度闯入文学的领域,为这一古老而充满魅力的艺术形式带来了前所未有的影响。 一.AIGC 为文学创作带来的新机遇 1.激发创意灵感 AIGC 可以根据给定的主题、关键词或风格要求,快速生成大量的文本片段。这些片段可以作为创作者的灵感触发器,帮助他们打破思维定式,开拓新的创作思路。例如,

如何用ChatGPT降低毕业论文的AIGC重复率?(最新版详细攻略)

毕业季又到了,论文人的生存法则:“降重、降重、再降重!” 📚 尤其是今年,AIGC检测全面升级,以前的小技巧不太好用了,必须用更细致的方法应对。 这篇文章,一步步带你搞定AIGC率,让论文自然过检。 记得点赞➕收藏,不然到时候又得哭着翻笔记了😭。 一、为什么今年降AIGC变得这么难? 去年,用ChatGPT简单润色一下,AIGC率能从64.9%降到17.2%,谁用谁知道!👍 但,今年不一样了。 👉 2025年2月13日起,知网、维普、万方等系统,全面升级了AIGC检测。 👉 老方法直接被秒破,一测就爆表100%,而且检测报告显示:全文都疑似AI生成! 有没有很恐怖?就像你问老师考试重点,他告诉你:整本书都是!😱 所以,降AIGC不再是选修,是必修! (🔎 想提前规划论文选题?推荐参考👉 https://zhuanlan.zhihu.com/p/26493133188)