慢慢行走

反思与改变:2013年的自我探索与成长

      (这是我最近读的几本书的一点感想) 

      终于看完了柴静的《看见》,我不知道这是一种什么情感,这是好久以来我没有的一次把心沉下来看的一本书,无关乎理想,无关乎感动,只是思考,听着沙宝亮的《飘》和黄绮珊的《等待》,我开始思考我是一种什么样的状态,或许我现在就是在飘吧,但这是一种不安的飘,我希望自己结束这种不定的漂浮。但正如柴静书中所说,思想的本质是不安,一个人一旦左右摇摆,新的思想萌芽就出现了,自会剥离泥土露出来。我不知道这新的思想有没有成形,但我想它已经开始萌动。

       就像叶子从痛苦的蜷缩中要用力舒展一样,人也要从不假思索的蒙昧里挣脱,这才是活着。这是陈虻告诉柴静的,从刚开始看这本书的时候,我就在想这句话,什么是不假思索的蒙昧,或许就是我的那种想要改变人的冲动,或许就是我容易站队的无知。

       早在进入这一年之前,我就在说这一年我要做的是change,改什么,我想我要改变的就是这种飘吧,去剔除这种浮躁。我是希望自己的人生方向更加明确一点,去做些不同的,可以长期坚持的事情,可以一生为之的事情,我知道人生本身就是变化无常的,但我希望自己可以有一些不变,正如白岩松说的,只有有一些不变,自己的,社会的,才能支撑我们去面对这每天发生的变。

 

       最近在看马克思的《资本论》和《自然辩证法》,我们接受太多的快餐文化,咨询,微博,新闻以及各种心灵鸡汤式的书籍,甚至有人看电影都喜欢不断的快进,人总是希望自己在单位时间里接受更多的资讯,这是为什么?如果一本书,一部电影,一首音乐不能触动你的心灵,只是教你做什么,不做什么,只是消磨了你的一段时间,只是堵上了你的耳朵,这一切又有什么意义?我一直在思考我浮躁的本源,我想这些应该是最大的本源,所以我整整希望我2013年改变的是放下这些浮躁的本源,去做一些接地气的事情,去沉下心来做一些事情,读一些书,做一些可以开阔视野的事情,读一些可以改变思想的书。让自己慢下来,脚步慢下来,心慢下来。

       我很庆幸的是当我说在读《资本论》时,万阳很潮的来了句“米兔~”,虽然我笨到要问她是什么意思。我的这个天津小妹总让我感到一种久违的活力,可以拨动我因久未动弹的心的活力。我也很庆幸好友左辉让我把书带给他读,这让我知道,我周围还有一些不着急着寻找答案的人,还在沉淀。

 

      “如果理想只是一瞬的绽放,之后,只在凭吊中使用,那么理想有什么意义?

       如果激情只是青春是的一种荷尔蒙,只在多年后痛哭时才知道自己有过,那没激情又有什么意义?”

       在看《幸福了吗?》,我连续两天在思考白岩松的这两句话,不是不理解,只是我忘了我有理想是什么时候,我已找不到小时候哥给我订的那个写我有我理想的作文本了,我也找不到上学时那个写着我每个阶段的目标的笔记本了。我真的只能在凭吊中使用理想。我能记得的只有我自豪向爸妈朗读我的作文,为自己的科学家的理想自豪,我时常回忆的只有那个夜晚,我和好友点着蜡烛加班学习,拿出那个红笔记本,讨论着我们的人生理想。理想就这样逝去了吗?就只能在凭吊里了吗?

我不知道激情是否只是一种青春的荷尔蒙,但伴随着理想的逝去,激情早已消失殆尽了,这是一个比较可悲和让人心痛的事情,却是不争的事实。

 

       我该做什么?朱光潜老先生的那句话应该是适合我的“此时,此地,此身。”此时我能做的时,绝不推诿到下一时刻去做;此地我能做的事,绝不想着换一种境地再做,此身我能做的事,绝不妄想于他人去替代。

       慢慢行走,等等自己的思想,我们真的不该因为偶的太远而忘记了自己为什么出发!

2013-1-30


明白了!你现在的目标是: > **“不要速度多快,只要小车能稳定、缓慢、可靠地沿着黑线行走,不冲出赛道,不振荡,不饱和。”** 这是一个非常合理且务实的调试策略 —— **先求稳,再求快**。 我们完全可以把系统调成一个“慢悠悠但绝不脱线”的循迹模式。以下是为你量身定制的 **最小改动 + 最大稳定性方案**。 --- ### ✅ 核心思路:降低动态需求,让 PID “轻松工作” 我们要做的是: 1. 降低基础速度 2. 减小转向强度 3. 使用温和 PID 参数 4. 加强滤波与限幅 5. 禁止突变 这样即使传感器有跳变,系统也能从容应对。 --- ## ✅ 具体修改建议(逐项说明) ### 1. 降低基础速度 ```c // 修改 mycontrol.c 中的宏定义 #define BASE_SPEED_TICKS_PER_10MS 3.0f // 原来可能是 5 或更高 ``` 📌 效果:每 10ms 只走 3 个编码器脉冲 → 车速明显变慢,响应时间变长,更容易控制。 --- ### 2. 减弱转向增益 `K_TURN` ```c // 修改 mycontrol.c #define K_TURN 0.8f // 原来可能是 1.5~2.0 ``` 📌 解释: - `delta_v = omega * K_TURN` - 如果 `omega = 3.5`,原来 `delta_v = 7.0` → 差速太大 - 现在 `delta_v = 2.8` → 差速柔和,转弯更平缓 --- ### 3. 使用极温和的 PID 参数 ```c // 在 main() 初始化时设置 IncPID_Init(&left_speed_pid, 6.0f, 0.10f, 0.3f); IncPID_Init(&right_speed_pid, 6.0f, 0.10f, 0.3f); ``` | 参数 | 值 | 作用 | |------|-----|------| | `Kp=6.0` | 很小 | 不会猛加速 | | `Ki=0.1` | 极低 | 缓慢积分,防止累积 | | `Kd=0.3` | 小值 | 提供一点阻尼 | ✅ 这组参数适合“慢速精细控制”,不会导致输出打满。 --- ### 4. 给目标速度加变化率限制(关键!) 即使你想慢慢走,如果目标值突然从 3 → 6,PID 还是会试图猛拉输出。 所以我们加一个“软启动”机制: ```c // 在 Motor_Control() 中加入变化率限制 static float last_target_left = 0.0f; static float last_target_right = 0.0f; void Motor_Control(void) { float omega = calculate_weighted_error(); float delta_v = omega * K_TURN; float half_delta = delta_v * 0.5f; float left_target = BASE_SPEED_TICKS_PER_10MS - half_delta; float right_target = BASE_SPEED_TICKS_PER_10MS + half_delta; const float MAX_DELTA = 0.5f; // 每次最多改变 0.5 ticks/10ms if (left_target > last_target_left + MAX_DELTA) { left_target = last_target_left + MAX_DELTA; } else if (left_target < last_target_left - MAX_DELTA) { left_target = last_target_left - MAX_DELTA; } if (right_target > last_target_right + MAX_DELTA) { right_target = last_target_right + MAX_DELTA; } else if (right_target < last_target_right - MAX_DELTA) { right_target = last_target_right - MAX_DELTA; } target_left_ticks_10ms = left_target; target_right_ticks_10ms = right_target; last_target_left = left_target; last_target_right = right_target; } ``` 📌 效果:目标速度像“滑动变阻器”一样缓缓变化,PID 输出自然平稳。 --- ### 5. 加强 anti-windup(防积分饱和) 确保你的 `IncPID_Calc` 函数中有如下逻辑: ```c float IncPID_Calc(Incremental_PID *pid, float feedback) { pid->error[0] = pid->target - feedback; float delta_u = pid->Kp * (pid->error[0] - pid->error[1]) + pid->Ki * pid->error[0] + pid->Kd * (pid->error[0] - 2*pid->error[1] + pid->error[2]); float new_output = pid->output + delta_u; if (new_output >= PID_MAX_OUTPUT) { pid->output = PID_MAX_OUTPUT; // 不更新 error 历史(防 wind-up) } else if (new_output <= PID_MIN_OUTPUT) { pid->output = PID_MIN_OUTPUT; // 不更新 error 历史 } else { pid->output = new_output; pid->error[2] = pid->error[1]; pid->error[1] = pid->error[0]; // 只有非饱和时才更新 } return pid->output; } ``` > ⚠️ 特别注意:只有在输出未达限幅时才更新 `error[1], error[2]`! --- ### 6. OLED 调试建议(可选) 加一行显示当前 output,观察是否还在打满: ```c OLED_ShowNum(4, 1, (int)(left_speed_pid.output), 3); // 显示左轮输出 OLED_ShowNum(4, 6, (int)(right_speed_pid.output), 3); // 显示右轮输出 ``` ✅ 正常范围:`20 ~ 80`(太低可能带不动电机,太高说明仍过激) --- ## ✅ 最终效果预期 | 表现 | 预期状态 | |------|----------| | 起步 | 缓慢加速,无抖动 | | 直线 | 两轮 PWM 接近相等,轻微波动 | | 转弯 | 一轮略降、另一轮略升,差速小但持续 | | 脱线恢复 | 缓慢回转,不会横冲直撞 | | 输出值 | 不会长期卡在 170,基本在 30~90 之间 | 👉 就像一只“慢吞吞但绝不迷路的乌龟”——完美达成你的需求! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值