Files
ParkingRobot/.superpowers/brainstorm/1212-1786007808/content/speed-profile-strategies.html
T

57 lines
3.7 KiB
HTML

<style>
.profile-grid { display:grid; grid-template-columns:repeat(3,minmax(260px,1fr)); gap:16px; margin-top:18px; }
.profile-card { border:1px solid #d7dee8; border-radius:12px; padding:16px; background:#fff; cursor:pointer; }
.profile-card:hover { border-color:#3678c8; box-shadow:0 8px 24px rgba(40,80,130,.10); }
.profile-card.selected { outline:3px solid rgba(43,111,191,.24); border-color:#2b6fbf; }
.recommended { display:inline-block; color:#0f5da8; background:#eaf3fc; border-radius:999px; padding:3px 8px; font-size:12px; }
.mini { width:100%; height:170px; margin:10px 0 4px; }
.axis { stroke:#7d8794; stroke-width:1; }
.gridline { stroke:#e5eaf0; stroke-width:1; }
.speed { fill:none; stroke:#1769aa; stroke-width:4; }
.stopline { stroke:#cf5b39; stroke-width:2; stroke-dasharray:5 4; }
.phase { font:12px sans-serif; fill:#4f5965; }
.caption { font-size:13px; color:#56616d; min-height:58px; }
.formula { margin-top:18px; padding:14px 16px; background:#f6f8fb; border-left:4px solid #1769aa; font-family:ui-monospace,Consolas,monospace; }
@media(max-width:900px){.profile-grid{grid-template-columns:1fr}}
</style>
<h2>每个方向段应如何规划“起步—巡航—停车”?</h2>
<p class="subtitle">三种实现方式都保持 OBSERVE_ONLY。点击选择;推荐 C,它既表达完整方向段,又保留实时修正能力。</p>
<div class="profile-grid">
<div class="profile-card" data-choice="a-fixed" onclick="toggleSelect(this)">
<h3>A · 固定距离开始减速</h3>
<svg class="mini" viewBox="0 0 320 170">
<path class="gridline" d="M35 30H305M35 75H305M35 120H305"/><path class="axis" d="M35 20V140H310"/>
<path class="speed" d="M35 135 C55 90 75 55 110 48 L230 48 Q250 48 265 135 L305 135"/>
<path class="stopline" d="M250 20V140"/><text class="phase" x="45" y="158">起步</text><text class="phase" x="145" y="158">巡航</text><text class="phase" x="250" y="158">固定点制动</text>
</svg>
<p class="caption">实现简单,但速度、载荷或当前加速度变化后,固定制动点可能过早或来不及停车。</p>
</div>
<div class="profile-card" data-choice="b-one-shot" onclick="toggleSelect(this)">
<h3>B · 整段一次性联合优化</h3>
<svg class="mini" viewBox="0 0 320 170">
<path class="gridline" d="M35 30H305M35 75H305M35 120H305"/><path class="axis" d="M35 20V140H310"/>
<path class="speed" d="M35 135 C60 120 70 58 120 48 C180 36 220 50 245 78 C270 108 280 135 305 135"/>
<text class="phase" x="45" y="158">整段时间与速度共同求解</text>
</svg>
<p class="caption">完整性最好,但长方向段会产生很大的优化问题;现场参数变化时,整段重新求解可能很慢。</p>
</div>
<div class="profile-card" data-choice="c-hybrid" onclick="toggleSelect(this)">
<span class="recommended">推荐</span>
<h3>C · 全局速度包络 + 滚动精化</h3>
<svg class="mini" viewBox="0 0 320 170">
<path class="gridline" d="M35 30H305M35 75H305M35 120H305"/><path class="axis" d="M35 20V140H310"/>
<path class="speed" d="M35 135 C55 90 82 48 125 48 L205 48 C232 48 245 63 258 88 C272 114 282 135 305 135"/>
<path class="stopline" d="M225 20V140"/><text class="phase" x="43" y="158">jerk 起步</text><text class="phase" x="135" y="158">受限巡航</text><text class="phase" x="225" y="158">动态停车包络</text>
</svg>
<p class="caption">先为完整方向段计算速度上限与停车包络,再按短周期重算当前轨迹;能主动起步,也能随实时状态调整制动点。</p>
</div>
</div>
<div class="formula">
开始减速条件:剩余距离 ≤ jerk 受限停车距离(当前 v, 当前 a, 最大减速度, 最大 jerk) + 重规划安全余量
</div>