一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种微重力环境模拟作业训练系统及其控制方法与流程

2022-04-06 22:18:14 来源:中国专利 TAG:


1.本发明涉及柔索驱动并联机器人的控制技术,尤其是一种用于航天员微重力环境模拟作业训练系统及其控制方法。


背景技术:

2.在航天员微重力环境模拟作业训练领域,许多现有技术都公开了其发明的训练系统,但仍还缺乏一种高效的微重力环境模拟作业训练系统用于实际训练。现阶段调试训练系统多使用matlab和dspace。在不需要实时渲染图像的领域,此方法十分高效。但在微重力环境模拟作业训练领域,此调试方法复杂,因为航天员需要实时看到渲染出的虚拟任务场景,而且调试人员也需要从实时渲染的虚拟任务场景中看到一些实时数据信息。


技术实现要素:

3.本发明的目的是,克服现有技术的不足,提供一种结构合理,操作简便,模拟真实有效的微重力环境模拟作业训练系统;并提供科学合理,实用性极强,效果佳的控制方法。
4.实现本发明目的采用的技术方案是,一种微重力环境模拟作业训练系统,其特征在于,包括:工控机、路由器、单人训练装置及vr头戴式显示器,所述单人训练装置由主控板、固定平台、8个柔索驱动单元、8根柔索、末端执行器组成,所述柔索驱动单元主要包括伺服电机、电机驱动板、拉力传感器、压力传感器、编码器;
5.①
所述工控机具有网卡,网卡与路由器进行通信,工控机与主控板之间采用wifi通信,主控板与柔索驱动单元的电机驱动板之间采用can通信,一个主控板对应8个伺服电机驱动板和一个六轴力觉传感器,一个伺服电机驱动板对应一个编码器、压力传感器、拉力传感器、温度传感器;
6.②
所述柔索驱动单元包括:伺服电机、拉力传感器、压力传感器、编码器、伺服电机驱动板,分别固接在固定平台的8个端点以控制平台位置模拟微重力环境;
7.③
所述末端执行器包括六轴力觉传感器,代表了虚拟任务物体的可握持部分,对应虚拟任务物体的作用位置,
8.④
工控机的上位机程序能实时渲染出虚拟任务场景画面输送至vr头戴式显示器。
9.进一步,所述伺服电机驱动板包括电源模块,单片机最小系统、type-c供电电路、type-c下载电路、h桥电路、电流检测模块、温度检测模块、编码器接口、压力传感器接口、拉力传感器接口,将type-c接口接至工控机时,type-c只给5v及5v以下电源部分供电,此时可由专业上位机调试软件一键下载程序;电流检测模块能够检测流入电机的电流,当电流过高或过低时能够使pwm信号失能,并输出一个高电平至单片机某一引脚,由程序决定电流过高或过低的处理方案。
10.进一步,所述单人训练装置的主控板,包括电源模块、单片机最小系统、wifi模块、触摸屏、can通信模块、type-c下载电路、type-c供电电路,将type-c接口接至工控机时,type-c接口能为整个主控板供电,同时可由专业上位机调试软件一键下载程序;can通信有
一条can总线,单片机通过can收发芯片接入can总线,9个can接口各通过一个can收发芯片接入can总线。
11.进一步,所述单人训练装置的主控板,具有j-link/j-tag下载电路,type-c下载优先于j-link/j-tag下载,所述type-c下载电路有type-c接口、usb转ttl电路,从type-c接口还引出一根信号线用于禁用j-link/j-tag下载电路,自动屏蔽j-link/j-tag下载。
12.进一步,所述电机驱动板具有电流检测模块和pwm功放模块使能判断电路,电流检测模块包括霍尔传感器模块、电流比较电路、电压压缩电路,电压压缩电路通过两级电压跟随运放模块和两个电阻构成,pwm功放模块使能判断电路能通过两个与门来处理单片机、电流比较电路、延迟电路的信号。
13.进一步,它的控制方法包括以下步骤:
14.step1:当单人训练装置与工控机的上位机程序正常工作,通信良好时,上位机程序能够接收主控板传输的数据;
15.step2:上位机程序调用用户自定义的物理算法算出航天员对末端执行器施加的交互力;
16.step3:上位机程序调用内置物理引擎,将所述交互力添加到虚拟任务物体上,物理引擎能计算出下一时刻虚拟物体的速度、惯性力、与航天员之间的交互力;
17.step4:上位机调用用户自定义的物理算法,根据下一时刻虚拟物体的速度、惯性力、与航天员之间的交互力等信息进行柔索力分配分析,并计算出8组pwm波的占空比;
18.step5:上位机将8组占空比格式化,通过wifi发送至主控板;
19.step6:主控板将8组占空比通过can总线发送至电机驱动板;
20.step7:电机驱动板接收到占空比数据,并输出pwm,功率放大后驱动h桥电路,控制伺服电机转动来改变单人训练装置中的固定平台位置;
21.step8:末端执行器上的六轴力觉传感器能实时获取其与航天员之间的交互力并通过can通信传输至主控板,柔索驱动单元上有编码器,压力传感器,拉力传感器,所述三个传感器能实时获取电机转角、柔索拉力并传输至电机驱动板,电机驱动板上有温度传感器,能实时检测电机驱动板的温度,电机驱动板对接收数据进行格式化处理,并传输至主控板;step9:主控板有静态分配的内存以接收数据,主控板与8个柔索驱动单元连接,所以一块主控板对应八块电机驱动板,当接收到电机驱动板发来的格式化处理数据之后会进行格式检查,如果格式错误,则以0给所述内存重新赋值,如果格式正确则按:作用位置 电机驱动板1数据

电机驱动板8数据 六轴力觉传感器数据格式来格式化接收数据;经过step1至step9步骤后,主控板将接收数据内存中的数据通过wifi模块传输至工控机,若用户不退出程序,则循环执行step1-step9。
22.进一步,所述上位机采用的逻辑算法,包括:主线程、服务器线程、接收数据线程、发送数据线程、数据处理线程;
23.①
所述主线程启动会启动服务器线程,服务器线程启动会启动接收数据线程、发送数据线程和数据处理线程,每个线程都有接收消息缓存;
24.②
所述主线程包括物理计算、ui界面渲染、消息中心,
25.③
所述消息中心用以传递各个线程之间的消息,物理计算、画面渲染采、收发数据均使用不同的物理时间间隔,使物理计算、收发数据、与画面渲染彼此独立,在时间上互不
影响,使得上位机具备渲染虚拟任务场景的vr场景并传输至vr头显功能。
26.本发明的有益效果在于:
27.1.微重力环境模拟作业训练系统包括:工控机、路由器、单人训练装置及vr头戴式显示器,其结构合理,操作简便,模拟真实有效;
28.2.控制方法所有的物理计算,包括画面的实时渲染计算均由工控机完成,有利于降低主控板板载单片机的计算任务,以使得其能够嵌入free rtos并接入显示器;
29.3.主控板与工控机之间使用wifi通信,使得上位机与单人训练装置之间的相对位置灵活,可根据实际场地灵活调整单人训练装置的位置;
30.4.主控板和伺服电机驱动板均有type-c下载程序设计。type-c传输协议已广泛应用于手机、笔记本电脑、显示器领域,type-c传输的是差分信号,抗干扰能力较强,采用type-c下载程序设计能适应未来需要,使得配备数据线较为方便;
31.5.上位机在调试设备时就能看到实时渲染的虚拟任务场景,技术人员能在虚拟任务场景中同时看见通过对交互力计算得出的虚拟任务物体力变化和通过对传感器数据进行计算得出的虚拟任务物体位姿变化,能够在视觉上直观判断出算法的问题,同时上位机采用的逻辑算法实现的上位机程序能实时显示如拉力传感器、压力传感器、编码器、六轴力觉传感器等数据,并记录至excel表格中留存分析;
32.6.所述上位机的ui界面有实时渲染的虚拟任务场景,固所述上位机不仅在调试时能发挥较大作用,在调试好算法并用于实际训练时能当作监控程序使用,以降低发生危险的概率;
33.7.其科学合理,实用性强,效果佳。
附图说明
34.为了更清楚地说明本发明,下面描述中的附图仅仅是本发明的一些实施例,对本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
35.图1为本发明的微重力环境模拟作业训练系统总流程图;
36.图2为主控线程、服务器线程、数据收发线程流程图;
37.图3为数据处理线程流程图;
38.图4为主控板结构示意图;
39.图5为伺服电动机结构示意图;
40.图6为上位机程序与各模块之间对应关系图;
41.图7为上位机程序线程与模块之间对应关系图;
42.图8为传感器的电压压缩电路图;
43.图9为电流比较电路图;
44.图10为仿真波形图;
45.图11为pwm功放模块使能判断电路图;
46.图12为pwm信号使能判断电路等效图;
47.图13为a3信号原理图;
48.图14为a13信号仿真图。
具体实施方式
49.为使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例及附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
50.参照图1,本发明公开了一种用于重力环境模拟作业训练系统,主要包括:工控机、路由器、单人训练装置、vr头戴式显示器,所述单人训练装置主要包括固定平台、8个柔索驱动单元、8根柔索、末端执行器、主控板,所述柔索驱动单元主要包括:伺服电机、拉力传感器、压力传感器、编码器、电机驱动板,所述末端执行器主要包括6轴力觉传感器。工控机上有配套使用的上位机程序。电机驱动板可将柔索张力、速度等信息发送至主控板,主控板将上述信息发送至工控机,工控机上配有配套的上位机程序,可以根据主控板发送来的信息计算出下一时刻虚拟任务物体的物理信息,并以此计算出用于驱动电机的h桥电路的两路pwm波占空比发送至主控板,再由主控板发送至电机驱动板以驱动电机。同时,上位机程序能实时渲染出虚拟任务场景画面输送至vr头戴式显示器。
51.一个主控板对应8个电机驱动板和一个六轴力觉传感器,所以上位机和主控板之间传输数据格式应该是:
52.上位机

主控板:
53.pwm1_1 pwm1_2 pwm2_1 pwm2_2 pwm3_1 pwm_3_2

pwm8_1 pwm8_2
54.主控板

上位机:
55.作用位置 编码器1 拉力传感器1 压力传感器1 温度传感器1 编码器2 拉力传感器2 压力传感器2 温度传感器2 编码器3 拉力传感器3 压力传感器3

编码器8 拉力传感器8 压力传感器8 温度传感器8 六轴力x 六轴力y 六轴力z 六轴力矩x 六轴力矩y 六轴力矩z 温度数据
56.由于按上述方式解释本发明过于繁琐,为缩减篇幅,无特殊说明时,在主控板与上位机之间通信的描述中,本发明以一个主控板对应一个电机驱动板进行描述。即:
57.上位机

主控板:pwm1_1 pwm1_2
58.主控板

上位机:作用位置 编码器1 拉力传感器1 压力传感器1 温度传感器1 六轴力x 六轴力y 六轴力z 六轴力矩x 六轴力矩y 六轴力矩z 温度数据
59.所述逻辑算法可以通过更改动态链接库方式,用自己编写的物理算法更换上位机内置物理算法,用户自定义物理算法写法上只需满足如下格式
60.数据类型:
61.[0062][0063]
函数声明及定义方式:
[0064]
extern nexttimev phyxcacu(inputv_inputv);
[0065]
nexttimev phyxcacu(inputv_inputv)
[0066]
{nexttimev自定义变量名;自定义物理算法程序return自定义变量名;}
[0067]
其中inputv由上位机程序传入,
[0068]
与所述微重力环境模拟作业训练系统配合使用的上位机软件程序,包括主线程、服务器线程、接收数据线程、发送数据线程、数据处理线程、ui线程和物理引擎线程,各线程之间通过消息机制进行数据传递。参照图2:所述主线程启动会启动服务器线程,服务器线程启动会启动接收数据线程、发送数据线程、数据处理线程、ui线程和物理引擎线程。
[0069]
——主线程包括ui模块、物理信息计算模块、消息中心模块。
[0070]
a.ui的刷新无时间间隔,当前帧渲染完立即开始下一帧,ui界面上有虚拟任务场景窗口,随着ui更新而更新。ui界面上还有文本框组件,用于显示包括虚拟任务物体位置、速度、当前交互力、下一帧交互力等信息。ui模块包括了虚拟任务场景的实时渲染和发送到vr头戴式显示器。
[0071]
b.物理信息计算模块主要功能是计算虚拟任务场景和虚拟任务物体的具体物理参数,包括位置、速度、交互力、交互力矩。对所有可动物体进行碰撞检测,如果发生碰撞,要
计算出碰撞力、碰撞后的相对速度等。
[0072]
参照图2:服务器线程包括服务器初始化,监听线程启动,发送数据线程启动。
[0073]
初始化——创建socket监听某一个有效网址,并向其发送空数据包,从返回的数据中获取本地ip地址和本程序被系统自动分配的端口号(port),然后创建新的套接字用于监听上述端口。
[0074]
监听线程启动——当有客户端请求连接时,启动新的线程用于监听此客户端并接收此客户端的数据。
[0075]
发送数据线程启动——从接收消息缓存中读取待发送数据发送给上述客户端。
[0076]
参照图3:数据处理线程具体功能——从接收数据缓存中读取数据,此数据正常情况是传感器输出的以lsb为单位的刻度数数据,此线程可将其计算成相应单位的测量值并传送至用户自定义的物理算法内。
[0077]
参照图4:本发明设计了一种与所述微重力环境模拟作业训练系统配合使用的主控板,主要包括:单片机及其最小系统电路、type-c下载电路、type-c供电电路、j-link/j-tag下载电路、wifi通信电路、一条can总线及9个can接口,还包括正常的供电模块。
[0078]
参照图5:所述type-c下载电路有type-c接口、usb转ttl电路,从type-c接口还引出一根信号线用于禁用j-link/j-tag下载电路,此信号线在type-c接口通电后自动拉高。从usb转ttl电路还引出两根信号线dtr、rts接入单片机的rest引脚和boot引脚,这两条信号线由上位机程序通过usb转ttl芯片控制。
[0079]
参照图11和图12,所述电机驱动板具有电流检测模块和pwm功放模块使能判断电路,电流检测模块包括霍尔传感器模块、电流比较电路、电压压缩电路,电压压缩电路通过两级电压跟随运放模块和两个电阻构成,pwm功放模块使能判断电路能通过两个与门来处理单片机、电流比较电路、延迟电路的信号。
[0080]
电机驱动板还具有保护电路,给单片机供电的adc参考电压为2.5v,所以adc输入电压在
±
2.5v之间,流入电机的电流限制在
±
16a。
[0081]
由于电机的工作电流有严格限制范围,电流过大容易烧毁电机。所以电机驱动板要有电流检测电路,同时单片机能够实时检测电流值,当电流值过低或者过高时能及时将pwm功放模块失能,避免电机损毁。电机驱动板供电的一瞬间,电路处于不受单片机控制状态,需要有一个电路控制pwm功放模块,其功能为:当电机驱动板供电瞬间,输出一个信号将pwm模块失能,当电路稳定工作后,将pwm模块使能。
[0082]
设电流比较电路输出信号为s1,单片机输出信号为en_c,延时电路输出信号为a3,则可以确定,当所有信号都为允许信号时,pwm功放模块才能工作。所以上述信号采用逻辑或,只要有一个信号为高电平,则最终输出一个高电平,将pwm功放模块失能。如图10所示,图11为其等效原理图,要实现单片机控制pwm功放模块功能,需将电流信息传输至单片机。电机驱动板上有电流检测电路,可以检测流入电机电流的大小。其通过霍尔传感器模块实现。霍尔传感器模块由于外界电流的影响,自身会产生一个电压v
感应
。以acs710为例,此芯片的参考电压为2.5v,当有电流流过时,设电流大小为i,则此芯片的输出电压为
[0083]v感应
=2.5 0.151i
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
[0084]
其中i根据电流流向,有正负之分。由于单片机得adc输入电压范围是
±
2.5v,所以需要对电压进行压缩。图8则是对应的压缩电路。
[0085]
如图8所示,感应电压v
感应
的压缩是通过电阻r1和r2完成的,r1和r2之间的电压根据公式(2)计算
[0086]v压缩
=r2
×v感应
/(r1 r2)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)
[0087]
适当调整r1与r2的阻值可将v
感应
压缩至
±
2.5v以内。图8中的一级运放和二级运放的作用是电压跟随,其输出电压几乎等于输入电压。由于运放的高输入阻抗和极低输出阻抗,使其能起到阻抗匹配和隔离电路的作用,避免由r1、r2分压而降低霍尔传感器的输出精度。经过仿真测试和实验验证,该电路能较好的满足对电压的压缩要求。
[0088]
如图9所示,为窗口比较器电路原理图。图中r1、r2之间的电压根据公式(3)选择
[0089]
r1
×
vcc/(r1 r2)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3)
[0090]
在本专利提供的电机驱动板中,r1=1000欧姆,r2=1000,于是上侧运放同相端实际输入电压为1.65v,下侧运放输入电压为3.3v。欧姆霍尔传感器的输出电压v
感应
从vi流入此电路后,假设输入电压小于1.65v,则上侧运放输出电压接近5v,下侧运放输出电压接近0v,上侧二极管导通,下侧二极管截至,输出电压经过r3,r4分压后,输出的s1电压接近2.9v;家属输入电压在1.65v~3.3v之间,则两个运放皆输出低电平,两个二极管均截至,输出电压趋近于0v。以此实现信号s1功能。该电路的仿真波形图如图10所示,虚线为输入电压,实线为输出电压。从图中可清晰看到,输入电压范围在1.6~3.3v之外时,输出电压大于2.8v,为高电平,反之输出电压接近于0,为低电平,能较好的满足要求。
[0091]
如图13所示,为信号a13的实现原理,通电瞬间,电容两侧电压发生突变,电路中电流最大,电阻分得电压为3.3v,此后,随着电容充电,电路中电流逐渐降低,电阻分得电压下逐渐下降。在电阻分得电压下降至2.4v之前,此电路输出端a3得电压对于逻辑与模块来说是高电平,当电阻分得电压继续下降时,逻辑与模块无法正常工作,当电压下降至0.4v以下时,a3端输出电压对于逻辑与模块属于低电平。经过仿真分析,所述电机驱动板上电到稳定工作的时间约1.5ms,通过选择合适的电容,使电阻分得电压下降至2.4v的时间大于3ms即可保证单片机能够稳定控制pwm功放模块。图14为其仿真分析图。
[0092]
所述微重力环境模拟作业训练系统的控制方法包括以下步骤:
[0093]
step1:当单人训练装置与工控机的上位机程序正常工作,通信良好时,上位机程序能够接收主控板传输的数据;
[0094]
step2:上位机程序调用用户自定义的物理算法算出航天员对末端执行器施加的交互力;
[0095]
step3:上位机程序调用内置物理引擎,将所述交互力添加到虚拟任务物体上,物理引擎能计算出下一时刻虚拟物体的速度、惯性力、与航天员之间的交互力;
[0096]
step4:上位机调用用户自定义的物理算法,根据下一时刻虚拟物体的速度、惯性力、与航天员之间的交互力等信息进行柔索力分配分析,并计算出8组pwm波的占空比;
[0097]
step5:上位机将8组占空比格式化,通过wifi发送至主控板;
[0098]
step6:主控板将8组占空比通过can总线发送至电机驱动板;
[0099]
step7:电机驱动板接收到占空比数据,并输出pwm,功率放大后驱动h桥电路,控制伺服电机转动来改变单人训练装置中的固定平台位置;
[0100]
step8:末端执行器上的六轴力觉传感器能实时获取其与航天员之间的交互力并通过can通信传输至主控板,柔索驱动单元上有编码器,压力传感器,拉力传感器,所述三个
传感器能实时获取电机转角、柔索拉力并传输至电机驱动板,电机驱动板上有温度传感器,能实时检测电机驱动板的温度,电机驱动板对接收数据进行格式化处理,并传输至主控板;step9:主控板有静态分配的内存以接收数据,主控板与8个柔索驱动单元连接,所以一块主控板对应八块电机驱动板,当接收到电机驱动板发来的格式化处理数据之后会进行格式检查,如果格式错误,则以0给所述内存重新赋值,如果格式正确则按:作用位置 电机驱动板1数据

电机驱动板8数据 六轴力觉传感器数据格式来格式化接收数据;
[0101]
经过step1至step9步骤后,主控板将接收数据内存中的数据通过wifi模块传输至工控机,若用户不退出程序,则循环执行step1-step9。
[0102]
进一步,所述上位机采用的逻辑算法,包括:主线程、服务器线程、接收数据线程、发送数据线程、数据处理线程;模块之间,线程之间的关系如图6、图7所示。
[0103]

所述主线程启动会启动服务器线程,服务器线程启动会启动接收数据线程、发送数据线程和数据处理线程,每个线程都有接收消息缓存;
[0104]

所述主线程包括物理计算、ui界面渲染、消息中心,
[0105]

所述消息中心用以传递各个线程之间的消息,物理计算、画面渲染采、收发数据均使用不同的物理时间间隔,使物理计算、收发数据、与画面渲染彼此独立,在时间上互不影响,使得上位机具备渲染虚拟任务场景的vr场景并传输至vr头显功能。
[0106]
上位机程序逻辑算法具体实现过程,windows环境下:
[0107]
常见程序开发软件都有一个基类,其具有以下回调函数:
[0108]
回调函数void awake(void),程序开始时,由程序自动调用,且整个程序寿命中只调用一次;
[0109]
回调函数void update(void),程序ui界面每更新一帧,自动调用一次此函数;
[0110]
回调函数void fixedupdata(void)每隔一段固定时间,由程序自动调用一次;
[0111]
回调函数void ondestory(void)当主线程要被销毁时,由程序自动调用一次。
[0112]
a.主线程:继承上述基类:
[0113]
在回调函数awake中实现以下功能,
[0114]
step1:物理引擎刷新时间初始化;
[0115]
step2:消息中心初始化,消息中心只作为信息的中转站,不做缓存,所以该部分不需要静态分配缓存;
[0116]
step3:启动服务器线程;
[0117]
step4:启动数据处理线程;
[0118]
step5:启动物理引擎线程;
[0119]
step5:启用ui线程;
[0120]
step6:虚拟任务场景初始化;
[0121]
在回调函数ondestory中实现:用户执行单击退出按钮或关闭程序窗口时,产生销毁消息,由系统自动调用此函数其功能为关闭所有由主线程创建的一级子线程功能;
[0122]
主函数:
[0123]
step7:执行while(1),保持主线程一直在运行;
[0124]
消息中心:
[0125]
此部分采用windows的事件监听系统,自定义事件回调函数,用于跨线程传递数
据。此中心只负责消息的中转,而不负责消息的缓存。
[0126]
b.画面渲染线程:继承上述基类:
[0127]
在awake函数中,
[0128]
step1:静态分配内存用作接收消息缓存
[0129]
step2:初始化ui组件,主要包括:
[0130]
图片组件:用于显示实时渲染的虚拟任务场景,
[0131]
退出按钮组件:用于退出程序。被单击时发出销毁消息。此消息属于windows消息,由程序自动回调函数ondestory函数,不经过主线程的消息中心。
[0132]
文本输入框质量:用于输入虚拟任务物体质量;
[0133]
文本输入框刚度:用于输入虚拟任务物体的刚度;
[0134]
文本框ip:用于显示本机的ip地址即本程序自动分配的端口号;
[0135]
文本框位置:用于显示虚拟任务物体当前所在位置;
[0136]
文本框速度:用于显示虚拟任务物体当前速度;
[0137]
文本框角速度:用于显示虚拟任务物体当前角速度;
[0138]
文本框力:用于显示当前六轴力觉传感器的测量力;
[0139]
文本框力矩:用于显示当前六轴力觉传感器的测量力矩;
[0140]
当文本输入框内的数据改变时,会产生一个消息发送至消息中心,再由消息中心发送至目标线程。比如当虚拟任务物体质量改变时,会产生一个包含质量的数据消息发送至消息中心,消息中心接到通知后立即将这个消息广播给虚拟任务物体线程,通知其改变质量。
[0141]
在update函数中:
[0142]
从接收消息缓存中读取相应信息,并以此信息更新相应ui组件。
[0143]
c.服务器线程
[0144]
获取本程序完整ip地址,如192.168.127:25500,其实现原理如下:
[0145]
step1:创建socket连接至可用互联网服务器并发送空数据包;
[0146]
step2:从上述socket包中获取本地ip地址和本程序被自动分配的端口号;
[0147]
服务器初始化,其流程如下:
[0148]
step3:创建新的socket监听上述ip地址及端口号;
[0149]
step4:创建新的线程用于相应客户端连接请求;
[0150]
step5:创建新的socket用于和客户端通信,并记录客户端完整ip地址和socket;
[0151]
step6:创建数据接收线程和数据发送线程;
[0152]
step7:当接收到客户端发消息时,将接收到的数据发送至消息中心,由消息中心发送至
[0153]
数据处理线程;
[0154]
step8:当接受到消息中心发来消息时,将数据发送至数据发送线程,在该线程中将数据发送至主控板。
[0155]
主控与电机驱动板具体工作流程:
[0156]
参照图4,主控板硬件方面:该pcb板除了电源走线外皆为信号线,所以此pcb板采用4层板设计。如表1所示:
[0157]
表1:
[0158]
层数名称作用1top01包括高速时钟线在内的重要信号线走线层2gnd02大面积铺铜,接地并作为地平面参考3power03供电走线层4bottom04低速次要信号线走线层
[0159]
所有硬件包括芯片、can接口、wifi模块等均布置在top01层。高速时钟线、高速spi信号线、高速屏触控屏信号线、can总线也布置在top01层。type-c下载电路的信号线也布置在top01层。其余信号线布置在bottom04层通过过孔连接至顶层相应芯片。
[0160]
程序下载电路:使用type-c下载时,主控板与工控机通过数据线连接,type-c接口最高可提供5v,2a供电(此参数受工控机接口规格影响),此时j-link/j-tag下载电路处于高失能状态。且type-c接口足够为主控板整体供电。当在工控机上用专业软件选择usb转串口功能下载程序时,专业软件会先输出一个高信号,此信号通过usb转ttl电路的dtr信号线连接至单片机的rest引脚,拉低此引脚电平,单片机复位。然后专业软件会再输出一个高信号,此信号通过usb转ttl电路的rts信号线连接至boost电路,进入单片机的bootloader,此时单片机进入下载程序模式,接下来专业软件通过type-c转ttl电路连接至uart0给单片机下载程序。
[0161]
接收工控机数据:wifi模块设置成透传模式,当wifi模块收到数据后会直接通过spi信号线输出至单片机。单片机接收到数据后会对8个电机驱动板同时广播收到的数据。此时单片机收到的数据应该是8组pwm波的占空比。每个电机驱动板接收到的都是8组pwm占空比。每组pwm占空比占8个字节。设置为1的电机驱动板只需裁剪出前第一组pwm占空比,及接收数据的前8个字节;设置为2的电机驱动板只需裁剪出第二组pwm占空比,及接收数据的第9-16字节,以此类推,设置为8的电机驱动板只需裁剪出第8组pwm占空比。
[0162]
接收电机驱动板数据:接收完8组电机驱动板输出数据后,按照电机驱动板被编号的顺序,将数据按格式:编码器1 拉力传感器1 压力传感器1 温度传感器1 编码器2 拉力传感器2 压力传感器2 温度传感器2

编码器8 拉力传感器8 压力传感器8 温度传感器8 6轴力觉传感器格式对数据进行格式化。格式化完成后,将数据通过wifi模块输出至工控机。
[0163]
参照图5,电机驱动板硬件方面:该pcb板有多种不同电源,且有专门用于驱动电机的48v/24v高能量线,用于驱动传感器的12v高能量线,还有用于驱动单片机、芯片的5v信号线、3.3v参考信号线、2.5v信号线。所以此pcb板采用6层设计,见表2
[0164]
表2:
[0165]
层数名称作用1top01次要的信号线走线层2gnd02逻辑地3sn03重要信号走线层4gnd04参考地5sn05次要信号走线层6power06电源层
[0166]
时钟信号线、下载电路信号线、can数据线等重要的信号线均布置在sn03层;单片机产生的pwm信号布置在top01层;编码器、压力传感器、拉力传感器的输出信号布置在top01层;pwm经过功率放大电路放大后的能量线布置在sn05层。
[0167]
接收数据:
[0168]
step1:电机驱动板接收到主控板发送的8组占空比数据后,根据自身被设置的电机号,裁剪出对应数据,并输出两路pwm波。
[0169]
step2:每路pwm波经过功率放大电路功率放大后产生两路互补的pwm波,分别控制h桥电路的一边。
[0170]
step3:其中h桥电路输出端a和b用于驱动电机,且临近霍尔传感器模块,霍尔传感器模块用于检测流入电机的电流。
[0171]
step4:霍尔传感器输出信号经过运算放大后与参考电压比较。运算放大后的电压高于3.3v参考电压或低于1.6v参考电压时,比较电路输出高电平,是pwm波功率放大电路失能,保护电路和电机。
[0172]
step5:同时输出高电平至单片机的引脚。当单片机检测到此信号时,生成错误信息,通过主控板传输至工控机的上位机程序。
[0173]
发送数据:
[0174]
step1:编码器、压力传感器、拉力传感器、温度传感器的输出信号,按照:自身被设置编号 编码器 压力传感器 拉力传感器 温度传感器输出至主控板。
[0175]
若无特殊说明,上位机程序代码均为c#代码,主控板代码和电机驱动板代码为c代码。
[0176]
为节约篇幅,若无特殊说明,例子中上位机程序基于unity 3d开发。
[0177]
为节约篇幅,接下来以一块主控板对应一块电机驱动板为例具体分析。
[0178]
下面以工控机本地ip:127.0.0.1,端口号25500,
[0179]
编号1电机驱动板的编码器当前输出值为0x1f40,初始值为0x2000,精度位32.5;
[0180]
编号1电机驱动板的压力传感器当前输出值为0x2328,初始值为0x2000;
[0181]
编号1电机驱动板的拉力传感器当前输出值为0x2328,初始值为0x2000;
[0182]
编号1电机驱动板的温度传感器当前输出值为0x201c,初始值为0x2000;
[0183]
6轴力觉传感器的输出力数据为:(0x2000,0x2032,0x200),精度为32.5;
[0184]
6轴力觉传感器的输出力数据为:(0x2000,0x2032,0x200),精度为1648.5;
[0185]
经过用户自定义物理算法算出下一帧交互力为(0,900,0);
[0186]
经过用户自定义物理算法算出下一帧交互力矩为(0,900,0);
[0187]
经过用户自定义物理算法算出下一帧pwm1_1占空比为0.6;
[0188]
经过用户自定义物理算法算出下一帧pwm1_2占空比为0.5。
[0189]
从电机驱动板处开始分析:电机驱动板的单片机中,有静态分配的内存以存储传感器数据。传感器与单片机之间为单项rs232转uart通信。uart传输协议,每一帧有包括起始位,数据位,结束位,校验位。常用数据位数为8位,传感器常用输出位处为16位,所以传感器输出数据需要2帧完成。当每一帧数据传输完成后,uart会产生一次帧中断,当中断2次以后,则认为传感器输出数据接收完成一次。当四个传感器(编码器、压力传感器、拉力传感器、温度传感器)的数据均接收完成后,由单片机内程序将接收到的数据按表3格式化;
rcvbuff[34]rcvbuff[35]rcvbuff[36]rcvbuff[37]rcvbuff[38]rcvbuff[39]1.5384615000.03033060null
[0208]
数据处理模块完成上述任务后会将rcvbuff中的数据按照权利要求书中的格式进行格式化,最终和虚拟任务物体的速度信息,角速度信息以inputv结构体形式将数据传送给用户自定义的物理信息计算函数中,供用户进行物理信息计算。该函数的返回值格式为权力要求书中的nexttimev格式,包含了要对虚拟任务物体施加的作用力,作用力矩和输出至主控板的pwm占空比。此时inputv和nexttimev的值分别见表7:
[0209]
表7:
[0210]
结构体成员名值结构体成员名值input.funposition1.00nexttimev.funpsition1input.group1.encoder-5.91nexttimev.addforce.x0input.group1.pressurev24.86nexttimev.addforce.y900input.group1.tensv24.86nexttimev.addforce.z0input.group1.tempv0.86nexttimev.addtorque.x0
……
nexttimev.addtorque.y900inputv.fv.x0.00nexttimev.addtorque.z0inputv.fv.y1.54nexttimev.pwm1_10.6inputv.fv.z0.00nexttimev.pwm1_20.5inputv.tv.x0.00
……
inputv.tv.y0.03nexttimev.pwm8_1

inputv.tv.z0.00nexttimev.pwm8_2

[0211]
上述任务完成后,数据处理模块将nexttimev结构体的成员addforce、addtorque变为unityengine中的vector类,将pwm1_1、pwm1_2至pwm8_1、pwm8_2合成为一个unsigned int16 pwmgroup数组,数组元素个数为17,pwmgroup与pwm1_1至pwm8_2的对应关系见表8所示
[0212]
表8:
[0213]
[0214][0215]
完成上述步骤后,数据处理模块将addforce、addtorque、pwmgroup传输至消息中心,消息中心立即将addforce、addtorque传输至物理引擎模块,pwmgroup传输至数据发送模块。后续的虚拟任务场景、虚拟任务物体等由unity自动完成。
[0216]
pwmgrop传输至数据发送模块后,数据发送模块将其发送至主控板的ip地址及端口号。主控板接受到pwmgroup后立即将其通过can总线广播给所有can总线上的设备。
[0217]
上述步骤完成后,所有的电机驱动板应为同时接收到数据和接收完毕数据,此时每一个电机驱动板接收到的数据皆为完整的pwmgroup数组,存放着8组pwm占空比信息。设某一电机驱动板被设定的编号为n,则此驱动板能从从pwmgroup数组中裁剪出pwmgroup[2n-1]和pwmgroup[2n]两个数据,这两个数据便是此驱动板应输出的pwm波占空比。
[0218]
至此,一次完整数据收发完毕,接下来程序自动循环上述步骤,能实现本发明的主要目的。
[0219]
本发明的具体实施方式并非穷举,并不构成对权利要求保护范围的限定,本领域技术人员根据本发明实施例获得的启示,不经过创造性劳动就能够想到其它实质上等同的替代,均在本发明保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献