数据采集配置
CollectionConfig
"""
Sensor Data Collection Configuration
Define all collectible sensor data streams and configuration options
"""
from dataclasses import dataclass, field
from typing import List, Optional
@dataclass
class CollectionConfig:
"""Sensor collection configuration"""
# Joint states (slave arm joint states)
slave_joint_names: Optional[List[str]] = None
"""Slave arm joint state name list, e.g.: ['left_arm_joint_states', 'right_arm_joint_states']
If None or empty list, slave arm joint states are not collected
Supported joint state names:
- left_arm_joint_states: Left arm joint states
- right_arm_joint_states: Right arm joint states
- lift_joint_states: Lift joint states (quanta_x1)
- waist_joint_states: Waist joint states (quanta_x2)
- left_gripper_joint_states: Left gripper joint states
- right_gripper_joint_states: Right gripper joint states
- head_joint_states: Head joint states"""
slave_action_names: Optional[List[str]] = None
"""Slave arm action name list, e.g.: ['left_arm_actions', 'right_arm_actions']
If None, will be automatically generated from slave_joint_names (replace '_joint_states' with '_actions')
If [], no action data will be collected"""
# Image sensors (4 fixed types)
enable_head_rgb_stream: bool = False
"""Enable head RGB video stream"""
enable_head_depth_stream: bool = False
"""Enable head depth video stream"""
enable_left_arm_rgb_stream: bool = False
"""Enable left arm RGB video stream"""
enable_right_arm_rgb_stream: bool = False
"""Enable right arm RGB video stream"""
# End pose
enable_left_arm_end_pose: bool = False
"""Enable left arm end pose"""
enable_right_arm_end_pose: bool = False
"""Enable right arm end pose"""
enable_wrench_ext_world: bool = False
"""Enable wrist external force"""
enable_wrench_ext_local: bool = False
"""Enable wrist local force"""
enable_waist_end_pose: bool = False
"""Enable waist end pose"""
enable_odometry: bool = False
"""Enable chassis odometry (odom)"""
enable_pose: bool = False
"""Enable robot pose data (tracked_pose)"""
enable_chassis_imu: bool = False
"""Enable chassis IMU data"""
# Depth sensors
enable_depth_points: bool = False
"""Enable chassis depth points"""
enable_head_depth_video: bool = False
"""Enable head depth video stream"""
*# Laser scanner*
enable_laser_scan: bool = False
"""Enable laser scanner"""
enable_left_gripper_position: bool = False
"""Enable left gripper position"""
enable_right_gripper_position: bool = False
"""Enable right gripper position"""
# Tactile sensors
enable_left_gripper_tactile: bool = False
"""Enable left gripper tactile sensor"""
enable_right_gripper_tactile: bool = False
"""Enable right gripper tactile sensor"""
enable_left_hand_tactile: bool = False
"""Enable left hand tactile sensor"""
enable_right_hand_tactile: bool = False
"""Enable right hand tactile sensor"""
enable_tof_sensors: bool = False
"""Enable ToF sensors (2)"""
enable_ultrasonic_sensors: bool = False
"""Enable ultrasonic sensors (4)"""
enable_master_arm_data: bool = False
"""Enable master arm data, joint states, end poses and gripper joint states"""
def get_enabled_sensors(self) -> List[str]:
"""Get all enabled sensors list"""
enabled = []
for field_name, field_value in self.__dict__.items():
if field_name.startswith('enable_') and field_value:
sensor_name = field_name.replace('enable_', '')
enabled.append(sensor_name)
return enabled
def get_camera_names(self) -> List[str]:
"""Get enabled camera names list"""
cameras = []
if self.enable_head_rgb_stream:
cameras.append('head_rgb_stream')
if self.enable_head_depth_stream:
cameras.append('head_depth_stream')
if self.enable_left_arm_rgb_stream:
cameras.append('left_arm_rgb_stream')
if self.enable_right_arm_rgb_stream:
cameras.append('right_arm_rgb_stream')
return cameras