Skip to content

Commit a4a7108

Browse files
committed
util
1 parent 596a083 commit a4a7108

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

src/lib.rs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -608,6 +608,38 @@ mod lebai_sdk {
608608
pub async fn get_gravity(&self) -> Result<Position> {
609609
self.0.get_gravity().await
610610
}
611+
612+
// utils
613+
#[classmethod]
614+
#[cmod::tags(args(robot_state))]
615+
pub async fn can_move(&self, robot_state: RobotState) -> Result<bool> {
616+
Ok(matches!(robot_state, RobotState::Idle | RobotState::Paused | RobotState::Moving))
617+
}
618+
#[classmethod]
619+
#[cmod::tags(args(p))]
620+
pub async fn in_pose(&self, p: Pose) -> Result<bool> {
621+
let ret = match p {
622+
Pose::Joint(j) => {
623+
let diff = 0.0017; //0.1°
624+
let pose = self.get_kin_data().await?.target_joint_pose;
625+
pose.0.into_iter().zip(j.0).all(|(cur, tar)| (cur - tar).abs() < diff)
626+
}
627+
Pose::Cart(c) => {
628+
let mut ret = true;
629+
let diff_tran = 0.005; //5mm
630+
let diff_rot = 0.017; //1°
631+
let pose = self.get_kin_data().await?.target_tcp_pose;
632+
if (pose.x - c.x).abs() > diff_tran || (pose.y - c.y).abs() > diff_tran || (pose.z - c.z).abs() > diff_tran {
633+
ret = false;
634+
}
635+
if (pose.rx - c.rx).abs() > diff_rot || (pose.ry - c.ry).abs() > diff_rot || (pose.rz - c.rz).abs() > diff_rot {
636+
ret = false;
637+
}
638+
ret
639+
}
640+
};
641+
Ok(ret)
642+
}
611643
}
612644
#[cmod::class]
613645
#[derive(Clone)]

0 commit comments

Comments
 (0)