# chassisd 配置样例 # 复制到 /etc/chassisd/chassis.toml 并按实车修改。 [can] interface = "can0" # DJI DT7 + DR16 遥控接收机。没有遥控时删除整个 [remote] 段,守护进程会保持静止。 [remote] kind = "dr16" device = "/dev/ttyS2" # 合法 D-BUS 帧断流超时(毫秒);超时立即失能停车。 timeout_ms = 100 # 摇杆满量程死区(0..0.5),死区后使用平方响应曲线。 deadband = 0.05 # 从零到满量程的逐轴速度斜坡(毫秒);S1 失能、断流和超时立即归零。 ramp_ms = 500 # 实车方向相反时置 true,不需要改代码。 invert_vx = false invert_vy = false invert_omega = false [chassis] # 控制循环周期(毫秒)。C620 期望 1kHz 命令。 control_period_ms = 1 # 上层 twist 命令超时(毫秒),超时后目标速度归零。 command_timeout_ms = 200 # 电机反馈离线判定(毫秒),离线后强制 0 电流。 feedback_timeout_ms = 100 # 驱动层命令租约(毫秒):控制循环超过该时长未刷新电机命令 → 强制 0 电流 # (防控制任务死亡后旧指令持续输出)。必须 >= control_period_ms。 motor_command_timeout_ms = 50 [mecanum] # 轮轴线到底盘中心的纵向 / 横向半距(米)与轮半径(米)。 half_length = 0.18 half_width = 0.20 wheel_radius = 0.0762 # 四轮顺序:前左、前右、后左、后右(与 mecanum crate 约定一致)。 [[motor]] name = "front_left" esc_id = 1 direction = 1 gear_ratio = 19.203 # 电流限幅(协议 raw 值,C620 满量程 16384)。 current_limit = 12000 # 速度环(输入 rpm,输出 raw 电流)。按实车整定。 kp = 18.0 ki = 0.6 kd = 0.0 # 前馈(raw 电流/rpm)。 feedforward = 9.0 [[motor]] name = "front_right" esc_id = 2 direction = -1 gear_ratio = 19.203 current_limit = 12000 kp = 18.0 ki = 0.6 kd = 0.0 feedforward = 9.0 [[motor]] name = "rear_left" esc_id = 3 direction = 1 gear_ratio = 19.203 current_limit = 12000 kp = 18.0 ki = 0.6 kd = 0.0 feedforward = 9.0 [[motor]] name = "rear_right" esc_id = 4 direction = -1 gear_ratio = 19.203 current_limit = 12000 kp = 18.0 ki = 0.6 kd = 0.0 feedforward = 9.0