Force keep local structure: resolve all rename/delete conflicts
This commit is contained in:
79
1
Normal file
79
1
Normal file
@ -0,0 +1,79 @@
|
||||
#pragma once
|
||||
#include <cstdint>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
/* 舵机编号枚举 */
|
||||
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];
|
||||
};
|
||||
@ -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, # 早停轮数
|
||||
)
|
||||
@ -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, # 早停轮数
|
||||
)
|
||||
@ -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, # 早停轮数
|
||||
patience=0, # 早停轮数
|
||||
)
|
||||
@ -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, # 早停轮数
|
||||
)
|
||||
Reference in New Issue
Block a user