手爪功能

实现收到输入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