diff --git a/1 b/1 new file mode 100644 index 0000000..095d45d --- /dev/null +++ b/1 @@ -0,0 +1,79 @@ +#pragma once +#include +#include +#include + +/* 舵机编号枚举 */ +enum class EServo : uint8_t { + SERVO_0 = 0, + SERVO_1, + SERVO_2, +}; + +/* 电机运行模式 */ +enum class EMotorOperatingMode : uint8_t { + Position, // 位置模式 + Velocity, // 速度模式 + Current, // 电流 / 力矩模式 +}; + +/* 电机报警类型(可以根据 Dynamixel 详细 bitmask 扩展) */ +enum class EMotorAlarm : uint16_t { + InputVoltageError = 0x01, + OverTemperature = 0x02, + MotorEncoderError = 0x04, + Overload = 0x08, + DriverFault = 0x10, + // 更多可按需要添加 +}; + +/* 电机运动命令结构体 */ +struct ServoCommand { + EServo servo; // 哪个电机 + EMotorOperatingMode mode; // 运行模式 + int32_t target; // 目标值 + uint32_t velocity_limit = 0; // 最大速度(0 = 不修改) + uint32_t acceleration = 0; // 加速度(0 = 不修改) + uint16_t current_limit = 0; // 电流限制(0 = 不修改) +}; + +/* 电机控制接口 */ +class ServoControl +{ +public: + ServoControl(); + ~ServoControl(); + + void servoInit(EServo servo); + bool servoExecute(const ServoCommand& cmd); + + int32_t getMotorPosition(EServo servo); + int32_t getMotorVelocity(EServo servo); + int32_t getMotorCurrent(EServo servo); + + /* ====================== + 新增报警查询接口 + 返回 bitmask,0 = 无报警 + ====================== */ + uint16_t getMotorAlarmStatus(EServo servo); + bool hasMotorAlarm(EServo servo, EMotorAlarm alarm); + +private: + bool enableTorque(EServo servo); + bool disableTorque(EServo servo); + bool setOperatingMode(EServo servo, EMotorOperatingMode mode); + bool setVelocityLimit(EServo servo, uint32_t vel); + bool setAcceleration(EServo servo, uint32_t acc); + bool setCurrentLimit(EServo servo, uint16_t cur); + + struct ServoState { + EMotorOperatingMode mode; + int32_t position; + int32_t velocity; + int32_t current; + bool torque_on; + uint16_t alarm_status; // 新增:报警状态 + }; + + ServoState servo_states_[3]; +}; diff --git a/ultralytics_yolo11-main/train_seg_r_main_60.py b/ultralytics_yolo11-main/train_seg_r_main_60.py deleted file mode 100644 index 0cfee56..0000000 --- a/ultralytics_yolo11-main/train_seg_r_main_60.py +++ /dev/null @@ -1,21 +0,0 @@ -from ultralytics import YOLO - -if __name__ == '__main__': - # ✅ 推荐:使用官方预训练分割模型 - #model = YOLO(r'/home/hx/yolo/ultralytics_yolo11-main/runs/train/61seg/exp2/weights/best.pt') - model = YOLO(r'/home/hx/yolo/ultralytics_yolo11-main/ultralytics/cfg/models/11/yolo11-seg.yaml') - # 开始训练 - results = model.train( - data='data_seg60.yaml', # 数据配置文件 - epochs=300, # 训练轮数 - imgsz=1280, - batch=4, # 每批图像数量 - workers=10, # 数据加载线程数 - device='0', # 使用 GPU 0 - project='runs/train/60seg', # 保存项目目录 - name='exp', # 实验名称 - exist_ok=False, # 不覆盖已有实验 - optimizer='AdamW', # 可选优化器 - lr0=0.0003, # 初始学习率 - patience=0, # 早停轮数 - ) \ No newline at end of file diff --git a/ultralytics_yolo11-main/train_seg_r_main_61.py b/ultralytics_yolo11-main/train_seg_r_main_61.py deleted file mode 100644 index fa0ee41..0000000 --- a/ultralytics_yolo11-main/train_seg_r_main_61.py +++ /dev/null @@ -1,21 +0,0 @@ -from ultralytics import YOLO - -if __name__ == '__main__': - # ✅ 推荐:使用官方预训练分割模型 - #model = YOLO(r'/home/hx/yolo/ultralytics_yolo11-main/runs/train/61seg/exp2/weights/best.pt') - model = YOLO(r'/home/hx/yolo/ultralytics_yolo11-main/ultralytics/cfg/models/11/yolo11-seg.yaml') - # 开始训练 - results = model.train( - data='data_seg61.yaml', # 数据配置文件 - epochs=500, # 训练轮数 - imgsz=1280, - batch=4, # 每批图像数量 - workers=10, # 数据加载线程数 - device='0', # 使用 GPU 0 - project='runs/train/61seg', # 保存项目目录 - name='exp', # 实验名称 - exist_ok=False, # 不覆盖已有实验 - optimizer='AdamW', # 可选优化器 - lr0=0.0005, # 初始学习率 - patience=0, # 早停轮数 - ) \ No newline at end of file diff --git a/yolo11-mobilenetv4/train_seg_main.py b/yolo11-mobilenetv4/train_seg_main.py index 61d6d48..fa0ee41 100644 --- a/yolo11-mobilenetv4/train_seg_main.py +++ b/yolo11-mobilenetv4/train_seg_main.py @@ -2,20 +2,20 @@ from ultralytics import YOLO if __name__ == '__main__': # ✅ 推荐:使用官方预训练分割模型 - #model = YOLO(r'/home/hx/yolo/ultralytics_yolo11-main/runs/train/seg_j/exp2/weights/best.pt') + #model = YOLO(r'/home/hx/yolo/ultralytics_yolo11-main/runs/train/61seg/exp2/weights/best.pt') model = YOLO(r'/home/hx/yolo/ultralytics_yolo11-main/ultralytics/cfg/models/11/yolo11-seg.yaml') # 开始训练 results = model.train( - data='data.yaml', # 数据配置文件 - epochs=200, # 训练轮数 + data='data_seg61.yaml', # 数据配置文件 + epochs=500, # 训练轮数 imgsz=1280, batch=4, # 每批图像数量 workers=10, # 数据加载线程数 device='0', # 使用 GPU 0 - project='runs/train/seg_02', # 保存项目目录 + project='runs/train/61seg', # 保存项目目录 name='exp', # 实验名称 exist_ok=False, # 不覆盖已有实验 optimizer='AdamW', # 可选优化器 - lr0=0.0005, # 初始学习率 - patience=20, # 早停轮数 + lr0=0.0005, # 初始学习率 + patience=0, # 早停轮数 ) \ No newline at end of file diff --git a/yolo11-mobilenetv4/train_seg_resize_main.py b/yolo11-mobilenetv4/train_seg_resize_main.py index 05c46a6..0cfee56 100644 --- a/yolo11-mobilenetv4/train_seg_resize_main.py +++ b/yolo11-mobilenetv4/train_seg_resize_main.py @@ -2,20 +2,20 @@ from ultralytics import YOLO if __name__ == '__main__': # ✅ 推荐:使用官方预训练分割模型 - #model = YOLO(r'/home/hx/yolo/ultralytics_yolo11-main/runs/train/seg_j/exp2/weights/best.pt') + #model = YOLO(r'/home/hx/yolo/ultralytics_yolo11-main/runs/train/61seg/exp2/weights/best.pt') model = YOLO(r'/home/hx/yolo/ultralytics_yolo11-main/ultralytics/cfg/models/11/yolo11-seg.yaml') # 开始训练 results = model.train( - data='/home/hx/yolo/ultralytics_yolo11-main/resize_seg_data.yaml', # 数据配置文件 - epochs=100, # 训练轮数 + data='data_seg60.yaml', # 数据配置文件 + epochs=300, # 训练轮数 imgsz=1280, batch=4, # 每批图像数量 workers=10, # 数据加载线程数 device='0', # 使用 GPU 0 - project='runs/train/seg_r', # 保存项目目录 + project='runs/train/60seg', # 保存项目目录 name='exp', # 实验名称 exist_ok=False, # 不覆盖已有实验 optimizer='AdamW', # 可选优化器 - lr0=0.0005, # 初始学习率 + lr0=0.0003, # 初始学习率 patience=0, # 早停轮数 ) \ No newline at end of file