pub struct JointDriverLowSpeedState {Show 17 fields
pub hardware_timestamp_us: u64,
pub system_timestamp_us: u64,
pub motor_temps: [f32; 6],
pub driver_temps: [f32; 6],
pub joint_voltage: [f32; 6],
pub joint_bus_current: [f32; 6],
pub driver_voltage_low_mask: u8,
pub driver_motor_over_temp_mask: u8,
pub driver_over_current_mask: u8,
pub driver_over_temp_mask: u8,
pub driver_collision_protection_mask: u8,
pub driver_error_mask: u8,
pub driver_enabled_mask: u8,
pub driver_stall_protection_mask: u8,
pub hardware_timestamps: [u64; 6],
pub system_timestamps: [u64; 6],
pub valid_mask: u8,
}Expand description
关节驱动器低速反馈状态
更新频率:~40Hz CAN ID:0x261-0x266(每个关节一个CAN ID) 同步机制:ArcSwap(Wait-Free,适合高频读)
优化:使用位掩码而非 [bool; 6],节省内存并提高Cache Locality
Fields§
§hardware_timestamp_us: u64硬件时间戳(微秒,来自最新一帧)
system_timestamp_us: u64系统接收时间戳(微秒)
motor_temps: [f32; 6]电机温度(°C)[J1, J2, J3, J4, J5, J6]
driver_temps: [f32; 6]驱动器温度(°C)[J1, J2, J3, J4, J5, J6]
joint_voltage: [f32; 6]各关节电压(V)[J1, J2, J3, J4, J5, J6]
joint_bus_current: [f32; 6]各关节母线电流(A)[J1, J2, J3, J4, J5, J6]
driver_voltage_low_mask: u8驱动器状态:电压过低(位掩码,Bit 0-5 对应 J1-J6)
driver_motor_over_temp_mask: u8驱动器状态:电机过温(位掩码,Bit 0-5 对应 J1-J6)
driver_over_current_mask: u8驱动器状态:过流(位掩码,Bit 0-5 对应 J1-J6)
driver_over_temp_mask: u8驱动器状态:驱动器过温(位掩码,Bit 0-5 对应 J1-J6)
driver_collision_protection_mask: u8驱动器状态:碰撞保护触发(位掩码,Bit 0-5 对应 J1-J6)
driver_error_mask: u8驱动器状态:驱动器错误(位掩码,Bit 0-5 对应 J1-J6)
driver_enabled_mask: u8驱动器状态:使能状态(位掩码,Bit 0-5 对应 J1-J6)
driver_stall_protection_mask: u8驱动器状态:堵转保护触发(位掩码,Bit 0-5 对应 J1-J6)
hardware_timestamps: [u64; 6]每个关节的硬件时间戳(微秒)[J1, J2, J3, J4, J5, J6]
system_timestamps: [u64; 6]每个关节的系统接收时间戳(微秒)[J1, J2, J3, J4, J5, J6]
valid_mask: u8有效性掩码(Bit 0-5 对应 J1-J6)
- 1 表示本周期内已更新
- 0 表示未更新(可能是丢帧)
Implementations§
Source§impl JointDriverLowSpeedState
impl JointDriverLowSpeedState
Sourcepub fn is_fully_valid(&self) -> bool
pub fn is_fully_valid(&self) -> bool
检查所有关节是否都已更新(valid_mask == 0x3F)
Sourcepub fn missing_joints(&self) -> Vec<usize>
pub fn missing_joints(&self) -> Vec<usize>
获取未更新的关节索引(用于调试)
Sourcepub fn is_voltage_low(&self, joint_index: usize) -> bool
pub fn is_voltage_low(&self, joint_index: usize) -> bool
检查指定关节是否电压过低
Sourcepub fn is_motor_over_temp(&self, joint_index: usize) -> bool
pub fn is_motor_over_temp(&self, joint_index: usize) -> bool
检查指定关节是否电机过温
Sourcepub fn is_over_current(&self, joint_index: usize) -> bool
pub fn is_over_current(&self, joint_index: usize) -> bool
检查指定关节是否过流
Sourcepub fn is_driver_over_temp(&self, joint_index: usize) -> bool
pub fn is_driver_over_temp(&self, joint_index: usize) -> bool
检查指定关节是否驱动器过温
Sourcepub fn is_collision_protection(&self, joint_index: usize) -> bool
pub fn is_collision_protection(&self, joint_index: usize) -> bool
检查指定关节是否碰撞保护触发
Sourcepub fn is_driver_error(&self, joint_index: usize) -> bool
pub fn is_driver_error(&self, joint_index: usize) -> bool
检查指定关节是否驱动器错误
Sourcepub fn is_enabled(&self, joint_index: usize) -> bool
pub fn is_enabled(&self, joint_index: usize) -> bool
检查指定关节是否使能
Sourcepub fn is_stall_protection(&self, joint_index: usize) -> bool
pub fn is_stall_protection(&self, joint_index: usize) -> bool
检查指定关节是否堵转保护触发
Trait Implementations§
Source§impl Clone for JointDriverLowSpeedState
impl Clone for JointDriverLowSpeedState
Source§fn clone(&self) -> JointDriverLowSpeedState
fn clone(&self) -> JointDriverLowSpeedState
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for JointDriverLowSpeedState
impl Debug for JointDriverLowSpeedState
Source§impl Default for JointDriverLowSpeedState
impl Default for JointDriverLowSpeedState
Source§fn default() -> JointDriverLowSpeedState
fn default() -> JointDriverLowSpeedState
Auto Trait Implementations§
impl Freeze for JointDriverLowSpeedState
impl RefUnwindSafe for JointDriverLowSpeedState
impl Send for JointDriverLowSpeedState
impl Sync for JointDriverLowSpeedState
impl Unpin for JointDriverLowSpeedState
impl UnwindSafe for JointDriverLowSpeedState
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
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>
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>
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