Omnicore App-- 示教常量点位

[复制链接]
查看47510 | 回复0 | 昨天 17:34 | 显示全部楼层 |阅读模式
点击阅读原文,获取完整工作站和app源代码


video: https://mp.weixin.qq.com/mp/readtemplate?t=pages/video_player_tmpl&action=mpvideo&auto=0&vid=wxv_3684634225010966530
1. Omnicore系统的示教器插件开发不需要选项,且在发布了AppMaker之后,大大简化了一般用户的开发难度,具体见:OmnicoreAPP开发助手发布

2. Omnicore App SDK 本质是基于webService2.0接口编写了相关的js函数,具体见:https://developercenter.robotstudio.com/omnicore-sdk

和 https://developercenter.robotstudio.com/api/RWS

3. Omnicore App SDK中对于写入数据,提供了setValue和setRawValue函数。但以上函数只能修改数据的当前值(即pers的值和var的当前值)。如果用户希望对常量型const 的点位通过自定义插件 示教修改坐标,可以基于webService,在AppMaker生成的code.js中编写以下代码:
// 修改数据的初值,包括const,per,var的初值asyncfunctionmodifyConst(task, module, name, value) {await RWS.Mastership.request();const url = '/rw/rapid/symbol/RAPID/' + task + '/' + module + '/' + name + '/data';// initval = true, 设置初值,包括const类型    // 在URL参数中加入 initval = trueconst queryParams = {initval: 'true',    };const bodyParams = {value: value    };
// 构建URL,包括查询参数  const queryString = new URLSearchParams(queryParams).toString();const fullUrl = `${url}?${queryString}`;
// 构建请求的body,包括表单数据  const formData = new URLSearchParams(bodyParams);
try {const response = await fetch(fullUrl, {method: 'POST',headers: {'Accept': 'application/hal+json;v=2.0','Content-Type': 'application/x-www-form-urlencoded;v=2.0'            },body: formData.toString()        });
// 检查响应是否成功  if (!response.ok) {thrownewError(`HTTP error! status: ${response.status}`);        }    } catch (error) {// 处理请求过程中的错误  console.error('写入错误:', error);throw error; // 重新抛出错误以便在调用者中处理      }await RWS.Mastership.release();}
// getPosition 函数,获取当前机器人位姿asyncfunctiongetPosition() {const url = '/rw/motionsystem/mechunits/ROB_1/robtarget';const username = 'Default User';const password = 'robotics';const auth = `Basic ${btoa(username + ':' + password)}`; // Basic 认证头  
try {const response = await fetch(url, {method: 'GET',headers: {'Authorization': auth,'Accept': 'application/hal+json;v=2.0'            }        });
// 检查响应是否成功  if (!response.ok) {thrownewError(`HTTP error! status: ${response.status}`);        }
// 解析 JSON 数据  const dat1 = await response.json();var d = dat1.state[0];var robTarget = "[[" + d.x + "," + d.y + "," + d.z + "],["            + d.q1 + "," + d.q2 + "," + d.q3 + "," + d.q4 + "],["            + d.cf1 + "," + d.cf4 + "," + d.cf6 + "," + d.cfx + "],["            + d.eax_a + "," + d.eax_b + "," + d.eax_c + "," + d.eax_d + "," + d.eax_e + "," + d.eax_f + "]]";
return robTarget; // 返回解析后的数据      } catch (error) {// 处理请求过程中的错误  console.error('Error in getPosition:', error);throw error; // 重新抛出错误以便在调用者中处理      }}

点击阅读原文,获取完整工作站和app源代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则