JJJJJllll commited on
Commit
3c20bbd
·
1 Parent(s): bb00036

first push

Browse files
Files changed (4) hide show
  1. .gitattributes +7 -0
  2. app.py +69 -0
  3. assets/overview.png +3 -0
  4. 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

  • SHA256: 8d84b75e1432738a48651789481fdde945565390761bc8e4c08dea900d5b7b1f
  • Pointer size: 131 Bytes
  • Size of remote file: 550 kB
requirements.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ gradio>=4.0