JJJJJllll
commited on
Commit
·
3c20bbd
1
Parent(s):
bb00036
first push
Browse files- .gitattributes +7 -0
- app.py +69 -0
- assets/overview.png +3 -0
- requirements.txt +1 -0
.gitattributes
CHANGED
|
@@ -33,3 +33,10 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
*.mov filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
*.webm filter=lfs diff=lfs merge=lfs -text
|
| 38 |
+
*.png filter=lfs diff=lfs merge=lfs -text
|
| 39 |
+
*.jpg filter=lfs diff=lfs merge=lfs -text
|
| 40 |
+
*.jpeg filter=lfs diff=lfs merge=lfs -text
|
| 41 |
+
*.gif filter=lfs diff=lfs merge=lfs -text
|
| 42 |
+
*.mp4 filter=lfs diff=lfs merge=lfs -text
|
app.py
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import gradio as gr
|
| 2 |
+
from pathlib import Path
|
| 3 |
+
|
| 4 |
+
TITLE = "JuggleRL: Mastering Ball Juggling with a Quadrotor via Deep Reinforcement Learning"
|
| 5 |
+
PAPER_URL = "https://arxiv.org/abs/2509.24892"
|
| 6 |
+
GITHUBS = [
|
| 7 |
+
("Training", "https://github.com/thu-uav/JuggleRL_train"),
|
| 8 |
+
("ROS Pack", "https://github.com/thu-uav/JuggleRL_rospack"),
|
| 9 |
+
("NatNet SDK", "https://github.com/thu-uav/JuggleRL_NatNetSDK"),
|
| 10 |
+
]
|
| 11 |
+
|
| 12 |
+
ASSETS = Path("assets") # 把视频/图片放在 assets/ 里
|
| 13 |
+
videos = [p for p in (ASSETS).glob("*.mp4")] + [p for p in (ASSETS).glob("*.mov")]
|
| 14 |
+
images = [p for p in (ASSETS).glob("*.png")] + [p for p in (ASSETS).glob("*.jpg")]
|
| 15 |
+
|
| 16 |
+
def homepage():
|
| 17 |
+
md = f"""
|
| 18 |
+
# {TITLE}
|
| 19 |
+
|
| 20 |
+
**Paper**: [{PAPER_URL}]({PAPER_URL})
|
| 21 |
+
**Code**: {", ".join([f"[{name}]({url})" for name, url in GITHUBS])}
|
| 22 |
+
|
| 23 |
+
**Highlights**
|
| 24 |
+
- Zero-shot sim-to-real deployment
|
| 25 |
+
- Calibrated dynamics + domain randomization
|
| 26 |
+
- Lightweight Communication Protocol (LCP)
|
| 27 |
+
- Real-world juggling up to 462 hits
|
| 28 |
+
|
| 29 |
+
---
|
| 30 |
+
"""
|
| 31 |
+
return md
|
| 32 |
+
|
| 33 |
+
with gr.Blocks(title="JuggleRL") as demo:
|
| 34 |
+
gr.Markdown(homepage())
|
| 35 |
+
|
| 36 |
+
with gr.Tab("System Diagram"):
|
| 37 |
+
if images:
|
| 38 |
+
gr.Gallery(images, label="Figures", columns=3, height=400, preview=True)
|
| 39 |
+
else:
|
| 40 |
+
gr.Markdown("> Upload system figures to `assets/` as PNG/JPG.")
|
| 41 |
+
|
| 42 |
+
# with gr.Tab("Real-world Videos"):
|
| 43 |
+
# if videos:
|
| 44 |
+
# for v in videos:
|
| 45 |
+
# gr.Video(str(v))
|
| 46 |
+
# else:
|
| 47 |
+
# gr.Markdown("> Put demo videos (mp4/mov) into `assets/` to show here.")
|
| 48 |
+
|
| 49 |
+
with gr.Tab("Real-world Videos"):
|
| 50 |
+
gr.Markdown("### Full Demo on Bilibili")
|
| 51 |
+
gr.HTML('''
|
| 52 |
+
<div style="position:relative;padding-top:56.25%;">
|
| 53 |
+
<iframe src="https://player.bilibili.com/player.html?bvid=BV1hKxDzrEw5&autoplay=0"
|
| 54 |
+
scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"
|
| 55 |
+
style="position:absolute;top:0;left:0;width:100%;height:100%;">
|
| 56 |
+
</iframe>
|
| 57 |
+
</div>
|
| 58 |
+
''')
|
| 59 |
+
|
| 60 |
+
|
| 61 |
+
with gr.Tab("Links"):
|
| 62 |
+
gr.Markdown(
|
| 63 |
+
"\n".join([
|
| 64 |
+
f"- **Paper**: [{PAPER_URL}]({PAPER_URL})",
|
| 65 |
+
*[f"- **{name}**: {url}" for name, url in GITHUBS],
|
| 66 |
+
])
|
| 67 |
+
)
|
| 68 |
+
|
| 69 |
+
demo.launch()
|
assets/overview.png
ADDED
|
Git LFS Details
|
requirements.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
gradio>=4.0
|