手爪功能
实现收到输入2号IO,手爪开合
add_io(entity.index,8); // 添加io 数量8个
add_paw(entity.index); // 标记手爪
add_ray(entity.index,"body2","R",0.11,"",0.120,0.008,0.082,true); // 添加传感器
// 实时更新,读取输入2号IO,进行手爪开合
fn update() {
read_io(entity.index,0,2).then(|ok| {
if ok {
v_rz(entity.index,"body1",0.015,0.003); // 手指旋转动作
v_rz(entity.index,"body3",-0.015,-0.003); // 手指旋转动作
}else{
v_rz(entity.index,"body1",0.0,-0.003); // 手指旋转动作
v_rz(entity.index,"body3",0.0,0.003); // 手指旋转动作
}
});
}机器人功能
实现收到输出0号IO,取放手爪
add_io(entity.index,32); // 添加io
add_io_power(entity.index); // 添加电源
// 状态记录
let state = #{
get_paw: 0, // 手爪抓取
paw_open: 0 // 开关标记
};
// 实时更新,读取输出2号IO,开一次进行手爪摘取,在开一次放置手爪
fn update() {
read_io(entity.index,1,0).then(|ok| {
if ok {
add_ray(entity.index,"A6","R",0.51,"",0.0,0.0,0.0,true); //添加传感器
state.paw_open = 1; // 开关标记
}else{
remove_ray(entity.index,"A6"); // 删除传感器
if state.get_paw==0 && state.paw_open==1 {
// 抓取
get_paw(entity.index,"A6").then(|ok1|{
state.paw_open = 0;
if ok1 {
state.get_paw = 1; // 抓取
}else{
}
});
}else if state.get_paw==1 && state.paw_open==1 {
// 放置
put_paw(entity.index,"A6").then(|ok1|{
state.paw_open = 0;
if ok1 {
state.get_paw = 0; // 放置
}else{
}
});
}
}
});
}IO映射
手爪抓取后,在机器人程序或手动控制手爪开合
glb_map_io("base_link_1",1,"lbt_djsz_11",2)作者:力博特 创建时间:2025-09-13 13:47
最后编辑:力博特 更新时间:2025-11-11 18:53
最后编辑:力博特 更新时间:2025-11-11 18:53