pub struct MasterSlaveJointControlState {
pub hardware_timestamp_us: u64,
pub system_timestamp_us: u64,
pub joint_target_deg: [i32; 6],
pub frame_valid_mask: u8,
}Expand description
主从模式关节控制指令状态(帧组同步)
更新频率:~500Hz(取决于主臂发送频率) CAN ID:0x155-0x157(帧组:J1-J2, J3-J4, J5-J6) 同步机制:ArcSwap(温数据,帧组同步)
注意:这是一个帧组,类似于 JointPositionState,需要集齐 3 帧后一起提交
Fields§
§hardware_timestamp_us: u64硬件时间戳(微秒,来自完整帧组的最后一帧)
system_timestamp_us: u64系统接收时间戳(微秒,系统接收到完整帧组的时间)
joint_target_deg: [i32; 6]关节目标角度(度,0.001°单位)[J1, J2, J3, J4, J5, J6]
frame_valid_mask: u8帧组有效性掩码(Bit 0-2 对应 0x155, 0x156, 0x157)
- 1 表示该CAN帧已收到
- 0 表示该CAN帧未收到(可能丢包)
Implementations§
Source§impl MasterSlaveJointControlState
impl MasterSlaveJointControlState
Sourcepub fn is_fully_valid(&self) -> bool
pub fn is_fully_valid(&self) -> bool
检查是否接收到了完整的帧组 (0x155, 0x156, 0x157)
返回值:
true:所有3个CAN帧都已收到,数据完整false:部分CAN帧丢失,数据不完整
Sourcepub fn missing_frames(&self) -> Vec<usize>
pub fn missing_frames(&self) -> Vec<usize>
获取丢失的CAN帧索引(用于调试)
返回值:丢失的CAN帧索引列表(0=0x155, 1=0x156, 2=0x157)
Sourcepub fn joint_target_deg(&self, joint_index: usize) -> Option<f64>
pub fn joint_target_deg(&self, joint_index: usize) -> Option<f64>
获取关节目标角度(度)
Sourcepub fn joint_target_rad(&self, joint_index: usize) -> Option<f64>
pub fn joint_target_rad(&self, joint_index: usize) -> Option<f64>
获取关节目标角度(弧度)
Trait Implementations§
Source§impl Clone for MasterSlaveJointControlState
impl Clone for MasterSlaveJointControlState
Source§fn clone(&self) -> MasterSlaveJointControlState
fn clone(&self) -> MasterSlaveJointControlState
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for MasterSlaveJointControlState
impl Debug for MasterSlaveJointControlState
Source§impl Default for MasterSlaveJointControlState
impl Default for MasterSlaveJointControlState
Source§fn default() -> MasterSlaveJointControlState
fn default() -> MasterSlaveJointControlState
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for MasterSlaveJointControlState
impl RefUnwindSafe for MasterSlaveJointControlState
impl Send for MasterSlaveJointControlState
impl Sync for MasterSlaveJointControlState
impl Unpin for MasterSlaveJointControlState
impl UnwindSafe for MasterSlaveJointControlState
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more