9. [aio.py] 修改了版本 10. [current.py] max/avg功能结束之前会将结果数据追加写入源文件,avg算法更改为average+3×std 11. [wavelogger.py] 算法更改为 average+3×std
		
			
				
	
	
		
			89 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import json
 | 
						||
from sys import argv
 | 
						||
 | 
						||
 | 
						||
def validate_resp(_id, response, w2t):
 | 
						||
    match _id:
 | 
						||
        case 'DATA ERR':
 | 
						||
            w2t(f"数据处理错误,需要确认", 0, 4, 'red')
 | 
						||
        case 'DATA READ ERR':
 | 
						||
            w2t(f"无法读取数据,需要确认", 0, 3, 'red')
 | 
						||
        case 'NOT SUPPORT':
 | 
						||
            w2t(f"不支持的功能,需要确认", 0, 2, 'red')
 | 
						||
    if not response:
 | 
						||
        w2t(f"无法获取{id}请求的响应信息", 0, 1, 'red')
 | 
						||
 | 
						||
 | 
						||
def execution(cmd, hr, w2t, **kwargs):
 | 
						||
    _id = hr.excution(cmd, **kwargs)
 | 
						||
    _msg = hr.get_from_id(_id)
 | 
						||
    if not _msg:
 | 
						||
        w2t(f"无法获取{_id}请求的响应信息", 0, 6, 'red')
 | 
						||
    else:
 | 
						||
        _response = json.loads(_msg)
 | 
						||
        validate_resp(_id, _response, w2t)
 | 
						||
        return _response
 | 
						||
 | 
						||
 | 
						||
def get_state(hr, w2t):
 | 
						||
    # 获取机器状态
 | 
						||
    _response = execution('state.get_state', hr, w2t)
 | 
						||
    stat_desc = {'engine': '上电状态', 'operate': '操作模式', 'rc_state': '控制器状态', 'robot_action': '机器人动作', 'safety_mode': '安全模式', 'servo_mode': '伺服工作模式', 'task_space': '工作任务空间'}
 | 
						||
    for component, state in _response['data'].items():
 | 
						||
        w2t(f"{stat_desc[component]}: {state}")
 | 
						||
 | 
						||
    # 获取设备伺服信息
 | 
						||
    _response = execution('device.get_params', hr, w2t)
 | 
						||
    dev_desc = {0: '伺服版本', 1: '伺服参数', 2: '安全板固件', 3: '控制器', 4: '通讯总线', 5: '解释器', 6: '运动控制', 8: '力控版本', 9: '末端固件', 10: '机型文件', 11: '环境包'}
 | 
						||
    dev_vers = {}
 | 
						||
    for device in _response['data']['devices']:
 | 
						||
        dev_vers[device['type']] = device['version']
 | 
						||
    for i in sorted(dev_desc.keys()):
 | 
						||
        w2t(f"{dev_desc[i]}: {dev_vers[i]}")
 | 
						||
 | 
						||
    # 设置示教器模式
 | 
						||
    _response = execution('state.set_tp_mode', hr, w2t, tp_mode='without')
 | 
						||
 | 
						||
 | 
						||
def warning_info(hr, w2t):
 | 
						||
    for msg in hr.c_msg:
 | 
						||
        if 'alarm' in msg.lower():
 | 
						||
            w2t(msg)
 | 
						||
    for msg in hr.c_msg_xs:
 | 
						||
        if 'alarm' in msg.lower():
 | 
						||
            w2t(msg)
 | 
						||
 | 
						||
 | 
						||
def main(hr, func, w2t):
 | 
						||
    if hr is None:
 | 
						||
        w2t("无法连接机器人,检查是否已经使用Robot Assist软件连接机器,重试中...", 0, 49, 'red')
 | 
						||
    # func: get_state/
 | 
						||
    match func:
 | 
						||
        case 'get_state':
 | 
						||
            get_state(hr, w2t)
 | 
						||
        case 'warning_info':
 | 
						||
            warning_info(hr, w2t)
 | 
						||
 | 
						||
 | 
						||
if __name__ == '__main__':
 | 
						||
    main(*argv[1:])
 | 
						||
 | 
						||
 | 
						||
# 一、设置/检测机器人状态:
 | 
						||
#   1. 上电
 | 
						||
#   2. 软限位打开
 | 
						||
#   3. 示教器断开
 | 
						||
#   4. 操作模式/机器人类型
 | 
						||
#   5. 控制器状态/工作任务控件/机器人动态
 | 
						||
 | 
						||
# 二、加载RL程序开始运行
 | 
						||
#   1. 怎么触发急停
 | 
						||
#   2. 怎么恢复急停
 | 
						||
#   3. 怎么采集曲线
 | 
						||
#   4.
 | 
						||
 | 
						||
# 三、运行过程中,收集数据,并处理出结果
 | 
						||
 | 
						||
# 四
 | 
						||
 |