Skip to content

Commit 13d592c

Browse files
committed
Added back a main README.
1 parent 717e7ce commit 13d592c

File tree

1 file changed

+136
-0
lines changed

1 file changed

+136
-0
lines changed

README.md

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
RecSyncNG is a video recording app with sub-millisecond synchronization accuracy for multiple Android smartphones,
2+
useful for creating affordable and easy-to-setup multi-view camera systems for robotics, SLAM, 3D-reconstruction, panorama stitching.
3+
4+
RecSynchNG is a fork of the original [RecSynch-android](https://github.com/MobileRoboticsSkoltech/RecSync-android) project. Here is the [original README](README-orig.md).
5+
6+
The original project has been improved with a remote GUI allowing for remote control of the android devices, centralized video download capability,
7+
and a revised post-processing stage for the deployment of perfectly synchronized videos.
8+
9+
10+
## Installation and setup
11+
12+
(Use img from the slides)
13+
14+
15+
### Requirements
16+
17+
* A set of Android devices, _all of the same hardware type_, with Android version 10+. (We were able to compile and run on Android 8, but not tested since a while)
18+
* Elect a _Leader_ android device:
19+
* must have an adaptor for Ethernet connection;
20+
* must be able to configure the ethernet with static IP address;
21+
* must be able to configure Hotspot (share Ethernet via WiFi):
22+
* not all devices can by default enable Hotspot without a SIM card. To circumvent some limited GUIs, we are using the `VPNHotspot` app.
23+
* A laptop/PC with Python 3.9 and an ethernet adaptor
24+
25+
### Android devices installation and setup
26+
27+
* Install the RecSynchNG apk on all devices
28+
* Select one device as _Leader_:
29+
* configure its Ethernet adaptor with:
30+
* Static IP: 192.168.5.2
31+
* Mask: 255.255.255.0
32+
* Gateway 192.168.5.1
33+
* Start a Wi-Fi hotspot, sharing the Ethernet connection.
34+
* Connect all other android devices to the Hotspot WiFi network.
35+
36+
37+
The master app should display now the connected clients and buttons for recording control
38+
39+
### Remote controlling PC installation and setup
40+
41+
Configure the ethernet adaptor of your PC as:
42+
* Static IP: 192.168.5.1
43+
* Mask: 255.255.255.0
44+
* Gateway 192.168.5.1
45+
46+
Cable connect the PC and the Master device.
47+
48+
Verify the Ethernet connection with Ping. E.g., from the PC, in a terminal
49+
50+
```
51+
ping 192.168.5.2
52+
53+
64 bytes from 192.168.5.2: icmp_seq=347 ttl=125 time=2.425 ms
54+
64 bytes from 192.168.5.2: icmp_seq=348 ttl=125 time=2.233 ms
55+
64 bytes from 192.168.5.2: icmp_seq=349 ttl=125 time=7.560 ms
56+
64 bytes from 192.168.5.2: icmp_seq=350 ttl=125 time=2.288 ms
57+
```
58+
59+
60+
Setup a python environment using Python 3.9+.
61+
62+
```
63+
cd PythonTools
64+
python3 -m venv p3env-RecSynchNG
65+
source p3env-RecSynchNG/bin/activate
66+
pip install -r requirements.txt
67+
```
68+
69+
For the post-processing of the videos, you need to install ffmpeg executable. E.g.:
70+
* On Linux: `apt install ffmpeg`
71+
* On Mac: `brew install ffmpeg`
72+
73+
74+
## Usage
75+
76+
### Run the software
77+
78+
(Android) First, start the app on all Android devices:
79+
* Wait a few seconds for synchronization;
80+
* on client devices you should see the client ID and info about the connection status;
81+
* on the leader device you should see the list of connected clients.
82+
83+
Second, start the software on the controlling PC.
84+
85+
On one terminal **start the http file server**. It starts a small http server ready to receive the recorded files from the android devices:
86+
87+
```
88+
cd PythonTools
89+
source p3env-RecSynchNG/bin/activate
90+
python FileServer.py
91+
```
92+
93+
TODO -- pic of the server console
94+
95+
On another terminal, **start the remote controlling GUI** :
96+
97+
```
98+
cd PythonTools
99+
source p3env-RecSynchNG/bin/activate
100+
python RemoteController.py
101+
```
102+
103+
TODO -- pic of the GUI
104+
105+
106+
### Recording video
107+
108+
1. [Optional step] Press the ```calculate period``` button. The app will analyze frame stream and use the calculated frame period in further synchronization steps.
109+
2. Adjust exposure and ISO to your needs.
110+
3. Press the ```phase align``` button.
111+
4. Press the ```record video``` button to start synchronized video recording.
112+
5. Get videos from RecSync folder in smartphone root directory.
113+
114+
### Extraction and matching of the frames
115+
116+
117+
118+
## Citations / Credits
119+
120+
If you use this application, please cite [Sub-millisecond Video Synchronization of Multiple Android Smartphones](https://arxiv.org/abs/2107.00987):
121+
```
122+
@misc{akhmetyanov2021submillisecond,
123+
title={Sub-millisecond Video Synchronization of Multiple Android Smartphones},
124+
author={Azat Akhmetyanov and Anastasiia Kornilova and Marsel Faizullin and David Pozo and Gonzalo Ferrer},
125+
year={2021},
126+
eprint={2107.00987},
127+
archivePrefix={arXiv},
128+
primaryClass={cs.CV}
129+
}
130+
```
131+
132+
This work is based on "Wireless Software Synchronization of Multiple Distributed Cameras"
133+
134+
Reference code for the paper
135+
[Wireless Software Synchronization of Multiple Distributed Cameras](https://arxiv.org/abs/1812.09366).
136+
_Sameer Ansari, Neal Wadhwa, Rahul Garg, Jiawen Chen_, ICCP 2019.

0 commit comments

Comments
 (0)