模版目录格式
模版作用:导入即可用,如默认的动作、io等信号

.urdf 模版-机器人描述文件
.rhai 模版-脚本描述文件
*.png 显示图
structure.png 结构图
circuit.png 电路图 io
手爪脚本示例
实现手爪开合,并能抓取工件
定义一个模拟传感器,检测工件进行抓取
IN2 控制手爪开合
OUT1 手爪开到位
OUT2 手爪关到位
控制模型的角度,实现开合效果
add_io(entity.index,8); // 添加io
add_paw(entity.index); // 标记手爪组件
// 调试使用
// add_io_power(entity.index); // 添加电源
// add_ray(entity.index,"body1","R",0.225,"",0.0,0.0,0.03,true); // 传感器
// 状态记录
let state = #{
get: 0, // 抓取标记
open: 0, // 开关标记
open_ray: 0 // 传感器开关标记
};
fn update() {
read_io(entity.index,0,2).then(|ok| {
// 返回开到位、关到位的信号
write_io(entity.index,1,0,ok);
write_io(entity.index,1,1,!ok);
if ok {
// IN2等TRUE操作
// 增加物料检测传感器
add_ray(entity.index,"body1","R",1.225,"",0.1,0.03,0.03,true);
state.open = 1; // 开关标记
state.open_ray = 1; // 传感器开关标记
// 手指旋转
v_rz(entity.index,"body4",0.015,0.005);
v_rz(entity.index,"body3",-0.015,-0.005);
// 判断已抓取和手爪打开时、则放置工件到此位置
if state.get==1 && state.open==1 {
remove_ray(entity.index,"body1");
// 放置
put_work(entity.index,"body1").then(|ok1|{
});
}
}else{
// IN2等False操作
// 移除物料检测传感器
remove_ray(entity.index,"body1");
// 手指旋转归位
v_rz(entity.index,"body4",0.0,-0.005);
v_rz(entity.index,"body3",0.0,0.005);
state.open_ray=0;
if state.get==0 && state.open==1 {
// 抓取
get_work(entity.index,"body1").then(|ok1|{
state.open = 0;
if ok1 {
state.get = 1; // 抓取标记
}else{
}
});
}else if state.get==1 && state.open==1 {
// 放置
put_work(entity.index,"body1").then(|ok1|{
state.open = 0;
state.get = 0; // 放置标记
});
}
}
});
}打开传感器调试,正确感应到工件会显示一条射线


作者:力博特 创建时间:2025-11-11 19:11
最后编辑:力博特 更新时间:2025-11-18 09:07
最后编辑:力博特 更新时间:2025-11-18 09:07