Scrap Mechanic新手必看:避障自动车制作教程
在《Scrap Mechanic》里打造一辆能自动躲避障碍的载具,听起来很酷,但实操起来核心逻辑其实很直观——利用红外传感器作为感知前端,结合计时器与逻辑门搭建响应式转向系统,再通过伺服电机驱动前轮、配合油门协同控制,即可实现真正的自主绕障。
这套避障系统的核心操作逻辑是:车辆完全不依赖驾驶座输入,也不走预设固定路线,完全依靠自身识别前方障碍并实时调整方向。一旦启动,便进入直线巡航→检测到障碍物后向左或向右绕行→恢复直线行驶的闭环流程。听起来很适合做基地巡逻车或资源区无人巡检设备?
安装感知模块与基础定位
先聊感知模块的安装。按B键打开背包,搜索“infrared sensor”,拖出一个红外传感器。这里有个关键点:传感器默认只检测玩家,必须右键打开它的属性面板,勾选【Detect All Objects】。否则你辛苦造出的避障车,会对自家机器人、矿车甚至投石机完全无感。
传感器朝向必须校准,确保它的探测锥角能完整覆盖车体宽度。安装位置偏高或偏低,都会漏检低矮障碍物。若倾斜超过5度,左右两侧障碍物的响应延迟差会超过0.3秒,导致转向系统失衡。
传感器装好后,用连线器把它的Output端口连到一个Timer模块的Trigger输入口。Timer设为On Delay模式,Delay Time填0.08秒。这个值是实测出来的最佳平衡点:低于0.06秒,路边草叶微微晃动就会误触发;高于0.12秒,等传感器反应过来,车头已经撞上障碍物了。
构建双模避障逻辑电路
接下来是逻辑电路部分,这里提供两个方案,你可以根据手头材料和设计偏好自由选择。
方法一(基础版:单传感器+方向轮询)
将Timer的输出接入Logic Block A,设为Greater Than模式,阈值填2.5米。再接入Logic Block B,设为Less Than模式,阈值填0.9米。Logic Block A和B的输出再连到一个AND Gate,得到“中距预警信号”。
这个信号同时接入左右两个伺服电机的Enable端:左侧伺服Rotation设为-25度,右侧设为+25度。两个电机的Control端统一接同一个Pulse Generator(周期1.8秒,脉宽0.1秒)。这样每次收到预警信号,车轮就会交替小角度转向,形成蛇形绕障——实用,但走位略显笨拙。
方法二(进阶版:双传感器+方向锁定)
在车头左前侧和右前侧各加一个红外传感器,间距至少1.2米。左传感器→上升沿触发器→接OR Gate输入1;右传感器→上升沿触发器→经Inverter→接OR Gate输入2。
当左传感器先触发,OR Gate输出高电平,激活左侧伺服电机(Rotation = -35度),同时禁用右侧;反之则激活右侧(Rotation = +35度)。
【注意】两个上升沿触发器的Delay Time必须完全相同(建议0.05秒),否则微小相位差会导致转向判定颠倒,车子会像喝醉了一样乱转。
执行转向与动力协同
转向系统本身,前轮必须是Motor Joint类型,旋转轴设为Y轴(左右转向),Limit Rotation设为±40度。如果用Wheel Joint替代,伺服信号根本传不过去,转向指令完全失效。
把逻辑层的最终输出信号(AND Gate或OR Gate的输出)接到前轮Motor Joint的Rotate输入端。信号高电平时电机转动,信号断开后,Motor Joint自带的阻尼会自然回中——无需额外加弹簧或制动器,设计上省心不少。
后轮保持固定驱动轮(Powered Wheel),动力线还是连原燃气引擎。但引擎和后轮之间必须插入一个Throttle模块,它的Input接同一逻辑输出信号的反向端(经Inverter)。当避障信号为真时,油门降至40%,防止转向时后轮推力过大导致甩尾侧滑;信号为假时恢复100%,保证正常巡航速度。
实车校准与边界测试
装好车,该拉出去试跑了。找一堵垂直砖墙,挂D档空载慢速驶向它。从实战经验看,有几个关键节点:距离缩至2.8米时,应该能听到伺服电机轻微的“咔哒”声(开始预加载);距2.2米时前轮首次微转;距1.1米时完成首次有效绕行。
如果绕行半径过大,车体擦墙,就把Logic Block A的阈值降到2.3。如果根本没触发转向直接撞上去,先检查红外传感器是否被车灯模型遮挡——【注意】车灯必须后置或改用无实体的LED Light,否则发光会严重干扰红外回波。
斜坡测试也不能跳过。在坡度超过8度的坡道上测试时,如果上坡避障失效,把Throttle模块的减速比例从40%调到25%,避免动力不足导致转向迟滞。
最后还有一个关键步骤:把车停稳,靠近前轮Motor Joint,按E键打开属性面板,点击【Calibrate Rotation】按钮。不校准的话,伺服电机会默认“0度”位置,那你所有转角设定就全白费了。
