File tree Expand file tree Collapse file tree 1 file changed +32
-0
lines changed Expand file tree Collapse file tree 1 file changed +32
-0
lines changed Original file line number Diff line number Diff 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 ) ]
You can’t perform that action at this time.
0 commit comments