Spaces:
Running
Running
| <html lang="zh-CN"> | |
| <head> | |
| <meta charset="utf-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1"> | |
| <meta name="description" content="RabbitRobot VLN Lab: real-robot VLN/VLR for AMR, with deviation detection, verifiable recovery, ROS 2, Nav2, mapping and public robot assets."> | |
| <title>RabbitRobot VLN Lab</title> | |
| <style> | |
| :root { | |
| --ink: #172033; | |
| --muted: #667085; | |
| --line: #d8dee8; | |
| --bg: #f4f7fb; | |
| --blue: #1d4ed8; | |
| --cyan: #0e7490; | |
| --green: #168a55; | |
| --orange: #e87022; | |
| --paper: #ffffff; | |
| --dark: #101827; | |
| } | |
| * { box-sizing: border-box; } | |
| body { | |
| margin: 0; | |
| font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; | |
| color: var(--ink); | |
| background: var(--bg); | |
| letter-spacing: 0; | |
| } | |
| a { color: inherit; } | |
| .hero { | |
| min-height: 72vh; | |
| display: grid; | |
| align-items: end; | |
| position: relative; | |
| isolation: isolate; | |
| color: #fff; | |
| background-image: | |
| linear-gradient(90deg, rgba(9, 18, 32, .88) 0%, rgba(9, 18, 32, .65) 44%, rgba(9, 18, 32, .18) 100%), | |
| url("assets/rabbitrobot-amr-front.jpg"); | |
| background-size: cover; | |
| background-position: center; | |
| padding: clamp(28px, 6vw, 72px); | |
| } | |
| .hero-inner { | |
| width: min(1060px, 100%); | |
| display: grid; | |
| grid-template-columns: minmax(0, 760px); | |
| gap: 22px; | |
| } | |
| .kicker { | |
| margin: 0; | |
| text-transform: uppercase; | |
| font-size: 13px; | |
| font-weight: 800; | |
| color: #ffcf99; | |
| } | |
| h1 { | |
| margin: 0; | |
| font-size: clamp(38px, 7vw, 78px); | |
| line-height: .98; | |
| letter-spacing: 0; | |
| } | |
| .hero p { | |
| margin: 0; | |
| max-width: 760px; | |
| font-size: clamp(16px, 2vw, 22px); | |
| line-height: 1.65; | |
| color: #eef5ff; | |
| } | |
| .hero-actions { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 10px; | |
| } | |
| .button { | |
| display: inline-flex; | |
| align-items: center; | |
| justify-content: center; | |
| min-height: 42px; | |
| padding: 10px 16px; | |
| border-radius: 7px; | |
| border: 1px solid rgba(255,255,255,.34); | |
| background: rgba(255,255,255,.12); | |
| color: #fff; | |
| text-decoration: none; | |
| font-weight: 750; | |
| } | |
| .button.primary { | |
| background: #fff; | |
| color: #142033; | |
| border-color: #fff; | |
| } | |
| .band { | |
| padding: clamp(34px, 5vw, 64px) clamp(18px, 5vw, 72px); | |
| } | |
| .wrap { | |
| width: min(1180px, 100%); | |
| margin: 0 auto; | |
| } | |
| .section-head { | |
| display: grid; | |
| gap: 8px; | |
| max-width: 860px; | |
| margin-bottom: 22px; | |
| } | |
| h2 { | |
| margin: 0; | |
| font-size: clamp(24px, 3.2vw, 38px); | |
| line-height: 1.15; | |
| letter-spacing: 0; | |
| } | |
| .lead { | |
| margin: 0; | |
| color: var(--muted); | |
| line-height: 1.75; | |
| font-size: 16px; | |
| } | |
| .pipeline { | |
| display: grid; | |
| grid-template-columns: repeat(5, minmax(0, 1fr)); | |
| gap: 10px; | |
| } | |
| .step { | |
| min-height: 172px; | |
| padding: 16px; | |
| border: 1px solid var(--line); | |
| background: var(--paper); | |
| border-radius: 8px; | |
| display: grid; | |
| align-content: start; | |
| gap: 10px; | |
| } | |
| .step b { | |
| color: var(--dark); | |
| line-height: 1.25; | |
| } | |
| .step span { | |
| color: var(--muted); | |
| font-size: 14px; | |
| line-height: 1.55; | |
| } | |
| .media-grid { | |
| display: grid; | |
| grid-template-columns: 1.15fr .85fr; | |
| gap: 18px; | |
| align-items: stretch; | |
| } | |
| .media { | |
| margin: 0; | |
| border: 1px solid var(--line); | |
| border-radius: 8px; | |
| overflow: hidden; | |
| background: #fff; | |
| } | |
| .media img { | |
| width: 100%; | |
| height: 100%; | |
| min-height: 320px; | |
| object-fit: cover; | |
| display: block; | |
| } | |
| .media figcaption { | |
| padding: 12px 14px; | |
| color: var(--muted); | |
| font-size: 14px; | |
| line-height: 1.55; | |
| background: #fff; | |
| } | |
| .asset-grid { | |
| display: grid; | |
| grid-template-columns: repeat(3, minmax(0, 1fr)); | |
| gap: 14px; | |
| } | |
| .asset { | |
| min-height: 230px; | |
| display: grid; | |
| gap: 12px; | |
| align-content: start; | |
| padding: 18px; | |
| border: 1px solid var(--line); | |
| border-radius: 8px; | |
| background: var(--paper); | |
| text-decoration: none; | |
| } | |
| .asset strong { | |
| display: block; | |
| color: var(--dark); | |
| font-size: 18px; | |
| line-height: 1.3; | |
| } | |
| .asset p { | |
| margin: 0; | |
| color: var(--muted); | |
| line-height: 1.65; | |
| font-size: 14px; | |
| } | |
| .tag-row { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 7px; | |
| margin-top: auto; | |
| } | |
| .tag { | |
| display: inline-flex; | |
| border-radius: 999px; | |
| padding: 5px 8px; | |
| background: #eff6ff; | |
| color: #1d4ed8; | |
| font-size: 12px; | |
| font-weight: 750; | |
| } | |
| .dark-band { | |
| background: #101827; | |
| color: #f8fbff; | |
| } | |
| .dark-band .lead { color: #c6d3e5; } | |
| .roadmap { | |
| display: grid; | |
| grid-template-columns: repeat(6, minmax(0, 1fr)); | |
| gap: 1px; | |
| overflow: hidden; | |
| border-radius: 8px; | |
| border: 1px solid rgba(255,255,255,.14); | |
| background: rgba(255,255,255,.14); | |
| } | |
| .roadmap div { | |
| min-height: 112px; | |
| padding: 14px; | |
| background: #172238; | |
| color: #dce8f7; | |
| font-size: 14px; | |
| line-height: 1.5; | |
| } | |
| .roadmap b { | |
| display: block; | |
| color: #fff; | |
| margin-bottom: 6px; | |
| } | |
| .closing { | |
| display: grid; | |
| grid-template-columns: 1fr auto; | |
| gap: 20px; | |
| align-items: center; | |
| border-top: 1px solid var(--line); | |
| } | |
| .closing p { | |
| margin: 0; | |
| color: var(--muted); | |
| line-height: 1.7; | |
| } | |
| .closing .button { | |
| color: #fff; | |
| background: var(--dark); | |
| border-color: var(--dark); | |
| } | |
| @media (max-width: 980px) { | |
| .pipeline, | |
| .asset-grid, | |
| .roadmap { | |
| grid-template-columns: repeat(2, minmax(0, 1fr)); | |
| } | |
| .media-grid, | |
| .closing { | |
| grid-template-columns: 1fr; | |
| } | |
| } | |
| @media (max-width: 620px) { | |
| .hero { | |
| min-height: 68vh; | |
| padding: 26px 18px; | |
| background-position: 62% center; | |
| } | |
| .pipeline, | |
| .asset-grid, | |
| .roadmap { | |
| grid-template-columns: 1fr; | |
| } | |
| .button { | |
| width: 100%; | |
| } | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| <header class="hero"> | |
| <div class="hero-inner"> | |
| <p class="kicker">RabbitRobot VLN / VLR Lab</p> | |
| <h1>真实 AMR 上的长程导航与可验证恢复</h1> | |
| <p>RabbitRobot 是我的真实机器人研究平台:把 ROS 2、Nav2、地图、传感器、Web 工具和公开数据资产连接起来,服务 Vision-Language Navigation / Vision-Language Recovery。</p> | |
| <div class="hero-actions"> | |
| <a class="button primary" href="https://huggingface.co/datasets/lijinghai/RabbitRobot-VLN-Recovery-Mini">Open VLN Dataset</a> | |
| <a class="button" href="https://huggingface.co/collections/lijinghai/rabbitrobot-vln-and-open-robot-assets-6a71a24e6d087ac0ff031ef5">Open Collection</a> | |
| </div> | |
| </div> | |
| </header> | |
| <main> | |
| <section class="band"> | |
| <div class="wrap"> | |
| <div class="section-head"> | |
| <p class="kicker">Research Spine</p> | |
| <h2>VLN 不只是听懂指令,而是把语言目标落到真实机器人执行闭环里。</h2> | |
| <p class="lead">当前主线关注长程 VLN 中的偏航检测、目标歧义处理、语义子目标规划、任务记忆保持和可验证恢复。公开资产会先从小而干净的数据结构开始,逐步扩展到 rosbag replay、视觉 grounding 和真实 AMR 评估。</p> | |
| </div> | |
| <div class="pipeline"> | |
| <div class="step"><b>Language Goal</b><span>自然语言目标、空间关系、语义子目标和任务阶段记忆。</span></div> | |
| <div class="step"><b>Grounding</b><span>把语言目标落到地图、视觉帧、waypoint 候选和可到达区域。</span></div> | |
| <div class="step"><b>Nav2 Execution</b><span>路径通过 ROS 2 / Nav2 / costmap / controller,而不是只画规划线。</span></div> | |
| <div class="step"><b>Deviation Detection</b><span>用里程计、costmap、局部规划状态和视觉信号发现偏航。</span></div> | |
| <div class="step"><b>Verifiable Recovery</b><span>恢复到安全、可解释、可继续执行的状态,并记录评估证据。</span></div> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="band"> | |
| <div class="wrap media-grid"> | |
| <figure class="media"> | |
| <img src="assets/amr2-web-navigation.jpg" alt="RabbitRobot AMR web navigation interface"> | |
| <figcaption>RabbitRobot 的导航与 Web 工具链:真实机器人状态、地图和任务入口需要能被观察、复盘和继续开发。</figcaption> | |
| </figure> | |
| <figure class="media"> | |
| <img src="assets/coverage-generated-path.png" alt="RabbitRobot coverage path planning overlay"> | |
| <figcaption>覆盖路径规划是 VLN 执行侧的工程支撑:区域选择、known-free 裁剪、车体安全膨胀和 waypoint 生成。</figcaption> | |
| </figure> | |
| </div> | |
| </section> | |
| <section class="band"> | |
| <div class="wrap"> | |
| <div class="section-head"> | |
| <p class="kicker">Open Assets</p> | |
| <h2>当前公开资产按 VLN 主线组织。</h2> | |
| <p class="lead">先发布可公开、可解释、可继续扩展的小资产;真实大数据会在脱敏、切片和文档完善后逐步进入。</p> | |
| </div> | |
| <div class="asset-grid"> | |
| <a class="asset" href="https://huggingface.co/datasets/lijinghai/RabbitRobot-VLN-Recovery-Mini"> | |
| <strong>RabbitRobot VLN Recovery Mini</strong> | |
| <p>长程 VLN/VLR task cards:自然语言指令、偏航事件、可观测信号、恢复策略和成功标准。</p> | |
| <div class="tag-row"><span class="tag">VLN</span><span class="tag">Recovery</span><span class="tag">Dataset</span></div> | |
| </a> | |
| <a class="asset" href="https://huggingface.co/spaces/lijinghai/RabbitRobot-CoveragePath-Demo"> | |
| <strong>RabbitRobot Coverage Path Planning</strong> | |
| <p>静态交互演示:地图约束、footprint clearance、known-free clipping 与覆盖 waypoint 生成。</p> | |
| <div class="tag-row"><span class="tag">Nav2</span><span class="tag">Planning</span><span class="tag">Space</span></div> | |
| </a> | |
| <a class="asset" href="https://huggingface.co/datasets/lijinghai/R550-ROS2-Graph-Dictionary"> | |
| <strong>R550 ROS2 Graph Dictionary</strong> | |
| <p>真实机器人 ROS 2 图谱字典:节点、Topic、Service、命令和功能域关系,服务系统理解与调试。</p> | |
| <div class="tag-row"><span class="tag">ROS 2</span><span class="tag">Graph</span><span class="tag">Dataset</span></div> | |
| </a> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="band dark-band"> | |
| <div class="wrap"> | |
| <div class="section-head"> | |
| <p class="kicker">Roadmap</p> | |
| <h2>从真实机器人底座走向可复现 VLN 评估。</h2> | |
| <p class="lead">这条线的价值不是单次演示,而是让机器人系统、实验数据和评估协议逐步变成别人可以检查、复现和继续研究的开放资产。</p> | |
| </div> | |
| <div class="roadmap"> | |
| <div><b>1. AMR Baseline</b>ROS 2 / Nav2 / mapping / sensor integration.</div> | |
| <div><b>2. System Graph</b>ROS 2 nodes, topics, services and launch flows.</div> | |
| <div><b>3. Planning Demo</b>Coverage path and safe execution-chain thinking.</div> | |
| <div><b>4. VLN Cards</b>Instruction grounding, deviation events and recovery labels.</div> | |
| <div><b>5. Replay</b>Filtered rosbag slices, visual grounding and failure traces.</div> | |
| <div><b>6. Evaluation</b>Success, deviation, recovery and explainability metrics.</div> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="band closing"> | |
| <div> | |
| <h2>面向猎头、导师和合作者</h2> | |
| <p>如果你想快速判断我的方向:我是把真实机器人系统、ROS 2 工程和 VLN/VLR 研究问题放在同一条线上做的人。更完整的项目经历在个人主页和 GitHub。</p> | |
| </div> | |
| <a class="button" href="https://lijinghai.github.io/">Open Personal Site</a> | |
| </section> | |
| </main> | |
| </body> | |
| </html> | |