СПОСОБ И СИСТЕМА ДЛЯ БЕСПРОВОДНОЙ ПЕРЕДАЧИ ДАННЫХ МЕЖДУ ОКОНЕЧНЫМИ УСТРОЙСТВАМИ С УЧЕТОМ ВЗАИМНОГО РАСПОЛОЖЕНИЯ УСТРОЙСТВ

1. Способ беспроводной передачи данных между оконечными устройствами, содержащий следующие шаги:
(a1) устанавливают соединение оконечных устройств с сервером;
(a2) определяют данные геолокации оконечных устройств и передают их серверу;
(a3) определяют данные ориентации оконечных устройств;
(a4) определяют потенциальных устройств-партнеров для каждого оконечного устройства на основе данных геолокации;
(a5) направляют два оконечных устройства, между которыми необходимо осуществить передачу данных, друг на друга;
(a6) определяют первое оконечное устройство, инициирующее установление связи с потенциальным устройством-партнером, на основе данных ориентации оконечных устройств;
(a7) передают серверу данные ориентации первого оконечного устройства;
(a8) определяют второе оконечное устройство, представляющее собой устройство-партнера для первого оконечного устройства, на основе данных геолокации и данных ориентации первого оконечного устройства и потенциальных устройств-партнеров;
(a9) устанавливают соединение между первым оконечным устройством и вторым оконечным устройством;
(a10) передают данные между первым оконечным устройством и вторым оконечным устройством;
(a11) разрывают соединение между первым оконечным устройством и вторым оконечным устройством.
2. Способ по п. 1, отличающийся тем, что на шаге (a4) дополнительно сохраняют в первом оконечном устройстве краткую информацию о потенциальных устройствах-партнерах для ускорения получения с сервера расширенной информации о потенциальных устройствах-партнерах для первого оконечного устройства.
3. Способ по п. 2, отличающийся тем, что дополнительно кешируют в сервере расширенную информацию о потенциальных устройствах-партнерах для первого оконечного устройства.
4. Способ по п. 1, отличающийся тем, что на шаге (a6) дополнительно проверяют, соединено ли первое оконечное устройство со вторым оконечным устройством.
5. Способ по п. 4, отличающийся тем, что если установлено, что первое оконечное устройство не соединено со вторым оконечным устройством, проверяют, находится первое оконечное устройство в состоянии движения или в состоянии покоя.
6. Способ по п. 5, отличающийся тем, что если установлено, что первое оконечное устройство находится в состоянии движения, проверяют, является предыдущее состояние первого оконечного устройства состоянием движения или состоянием покоя.
7. Способ по п. 6, отличающийся тем, что если установлено, что предыдущее состояние первого оконечного устройства является состоянием покоя, выполняют переход к шагу (a8).
8. Способ по п. 6, отличающийся тем, что если установлено, что предыдущее состояние первого оконечного устройства является состоянием движения, выполняют переход к шагу (a2).
9. Способ по п. 5, отличающийся тем, что если установлено, что первое оконечное устройство находится в состоянии покоя, проверяют наличие запроса с сервера на соединение со вторым оконечным устройством.
10. Способ по п. 9, отличающийся тем, что если обнаружен запрос с сервера на соединение со вторым оконечным устройством, выполняют переход к шагу (a9).
11. Способ по п. 9, отличающийся тем, что если не обнаружен запрос с сервера на соединение со вторым оконечным устройством, проверяют, является предыдущее состояние первого оконечного устройства состоянием движения или состоянием покоя.
12. Способ по п. 11, отличающийся тем, что если установлено, что предыдущее состояние первого оконечного устройства является состоянием движения, выполняют переход к шагу (a7).
13. Способ по п. 11, отличающийся тем, что если установлено, что предыдущее состояние первого оконечного устройства является состоянием покоя, выполняют переход к шагу (a2).
14. Способ по п. 4, отличающийся тем, что если установлено, что первое оконечное устройство соединено со вторым оконечным устройством, проверяют наличие запроса с сервера на разъединение со вторым оконечным устройством.
15. Способ по п. 14, отличающийся тем, что если обнаружен запрос с сервера на разъединение со вторым оконечным устройством, выполняют переход к шагу (a11).
16. Способ по п. 14, отличающийся тем, что если не обнаружен запрос с сервера на разъединение со вторым оконечным устройством, выполняют переход к шагу (a10).
17. Способ по п. 5, отличающийся тем, что состояние покоя и состояние движения определяют соответственно как состояние покоя и состояние движения первого оконечного устройства относительно потенциальных устройств-партнеров.
18. Способ по п. 1, отличающийся тем, что на шаге (a4) дополнительно определяют географическую зону, которой принадлежит каждое потенциальное устройство-партнер, и определение второго оконечного устройства на шаге (a8) выполняют с учетом приоритета географической зоны.
19. Способ по п. 18, отличающийся тем, что географическую зону и приоритет географической зоны определяют на основе расстояния между оконечными устройствами.
20. Способ по п. 1, отличающийся тем, что передачу данных между первым оконечным устройством и вторым оконечным устройством на шаге (a10) осуществляют непосредственно между первым оконечным устройством и вторым оконечным устройством через соединение, установленное на шаге (a9).
21. Способ по п. 1, отличающийся тем, что передачу данных между первым оконечным устройством и вторым оконечным устройством на шаге (a10) частично осуществляют непосредственно между первым оконечным устройством и вторым оконечным устройством через соединение, установленное на шаге (a9), а частично - через соединение первого и второго оконечных устройств с сервером, установленное на шаге (a1).
22. Способ по п. 1, отличающийся тем, что передачу данных между первым оконечным устройством и вторым оконечным устройством на шаге (a10) осуществляют через соединение первого и второго оконечных устройств с сервером, установленное на шаге (a1).
23. Способ по п. 21, отличающийся тем, что начатую передачу данных между первым оконечным устройством и вторым оконечным устройством на шаге (a10) через соединение первого и второго оконечных устройств с сервером продолжают после выполнения шага (a11).
24. Способ по п. 22, отличающийся тем, что начатую передачу данных между первым оконечным устройством и вторым оконечным устройством на шаге (a10) через соединение первого и второго оконечных устройств с сервером продолжают после выполнения шага (a11).
25. Способ по п. 1, отличающийся тем, что начатую передачу данных между первым оконечным устройством и вторым оконечным устройством на шаге (a10) продолжают даже в том случае, если выполнение прочих шагов способа остановлено.
26. Способ по п. 1, отличающийся тем, что данные ориентации первого оконечного устройства и потенциальных устройств-партнеров на шаге (a8) представляют собой углы тангажа, крена и рысканья и скорость вращения каждого оконечного устройства вокруг трех осей, образующих ортогональную систему координат.
27. Способ по п. 26, отличающийся тем, что данные ориентации первого оконечного устройства и потенциальных устройств-партнеров на шаге (a8) дополнительно содержат уточненные значения, по меньшей мере, одного из углов тангажа, крена и рысканья, по меньшей мере, одного из оконечных устройств.
28. Способ по п. 27, отличающийся тем, что уточнение значения, по меньшей мере, одного из углов тангажа, крена и рысканья содержит следующие шаги:
(b1) инициализируют числовой массив и переменную;
(b2) считывают показания магнетометра, акселерометра и гироскопа;
(b3) вычисляют значения углов тангажа, крена и рысканья и скорости вращения первого оконечного устройства;
(b4) вычисляют разницу между значением, по меньшей мере, одного из углов тангажа, крена и рысканья, вычисленным на основе показаний магнетометра, и значением того же угла, вычисленным на основе показаний гироскопа;
(b5) вычисляют разницу между значением, полученным на шаге (b4), и номером наибольшего элемента в числовом массиве;
(b6) определяют, находится первое оконечное устройство в состоянии покоя или в состоянии движения, на основе значений скорости вращения первого оконечного устройства, вычисленных на шаге (b3);
(b7) если на шаге (b6) определено, что первое оконечное устройство находится в состоянии движения, значение элемента числового массива с номером, равным результату вычисления на шаге (b4), увеличивают на единицу;
(b8) если на шаге (b6) определено, что первое оконечное устройство находится в состоянии покоя, вычисляют время, прошедшее после остановки первого оконечного устройства, и время, в течение которого первое оконечное устройство находилось в состоянии движения до его остановки, и проверяют выполнение первого, второго и третьего заранее заданных условий в отношении, по меньшей мере, одной из следующих величин: времени, прошедшего после остановки первого оконечного устройства, времени, в течение которого первое оконечное устройство находилось в состоянии движения до его остановки, и результата вычисления на шаге (b5);
(b9) если выполнено первое заранее заданное условие, значение переменной принимают равным результату вычисления на шаге (b5), а значение наибольшего элемента числового массива увеличивают на единицу;
(b10) если выполнено второе заранее заданное условие, значение элемента числового массива с номером, равным результату вычисления на шаге (b4), увеличивают на единицу;
(b11) если выполнено третье заранее заданное условие, значение переменной принимают равным результату вычисления на шаге (b5), значение наибольшего элемента числового массива увеличивают на единицу, а значения времени, прошедшего после остановки первого оконечного устройства, и времени, в течение которого первое оконечное устройство находилось в состоянии движения до его остановки, обнуляют;
(b12) уточняют значения, по меньшей мере, одного из углов тангажа, крена и рысканья, на основе номера наибольшего элемента числового массива и значения переменной;
(b13) выполняют возврат к шагу (b2).
29. Способ по п. 28, отличающийся тем, что на шаге (b4) вычисляют разницу между значением, по меньшей мере, одного из углов тангажа, крена и рысканья, вычисленным на основе показаний магнетометра и акселерометра, и значением того же угла, вычисленным на основе показаний гироскопа.
30. Способ по п. 28, отличающийся тем, что на шаге (b4) вычисляют разницу между значением, по меньшей мере, одного из углов тангажа, крена и рысканья, вычисленным на основе показаний магнетометра, и значением того же угла, вычисленным на основе показаний гироскопа и акселерометра.
31. Способ по п. 27, отличающийся тем, что уточнение значения, по меньшей мере, одного из углов тангажа, крена и рысканья дополнительно содержит следующие шаги:
(c1) считывают скользящее движение пальца пользователя первого оконечного устройства в направлении второго оконечного устройства;
(c2) вычисляют направление движения пальца пользователя первого оконечного устройства;
(c3) уточняют значение, по меньшей мере, одного из углов тангажа, крена и рысканья, на основании направления движения, вычисленного на шаге (c2).
32. Способ по п. 27, отличающийся тем, что для уточнения значения, по меньшей мере, одного из углов тангажа, крена и рысканья, выполняют калибровку датчиков ориентации, содержащую следующие шаги:
(d1) располагают два оконечных устройства, между которыми необходимо осуществить передачу данных, в одной плоскости вплотную друг к другу, так, чтобы они были направлены друг на друга;
(d2) включают режим калибровки в обоих оконечных устройствах;
(d3) передают серверу значения, по меньшей мере, одного из углов тангажа, крена и рысканья обоих оконечных устройств;
(d4) вычисляют и записывают в базу данных в сервере погрешности, по меньшей мере, одного из углов тангажа, крена и рысканья, по меньшей мере, одного из этих оконечных устройств;
(d5) уточняют значения, по меньшей мере, одного из углов тангажа, крена и рысканья, по меньшей мере, одного из этих оконечных устройств, на основе погрешностей, вычисленных на шаге (d4).
33. Способ по п. 27, отличающийся тем, что для уточнения значения, по меньшей мере, одного из углов тангажа, крена и рысканья, выполняют калибровку датчиков ориентации, содержащую следующие шаги:
(e1) направляют первое оконечное устройство на объект с заранее известными точными координатами;
(e2) включают режим калибровки в первом оконечном устройстве;
(e3) передают серверу значения, по меньшей мере, одного из углов тангажа, крена и рысканья первого оконечного устройства;
(e4) вычисляют и записывают в базу данных в сервере погрешности, по меньшей мере, одного из углов тангажа, крена и рысканья первого оконечного устройства;
(e5) уточняют значения, по меньшей мере, одного из углов тангажа, крена и рысканья первого оконечного устройства на основе погрешностей, вычисленных на шаге (e4).
34. Способ по п. 1, отличающийся тем, что определение второго оконечного устройства на шаге (a8) выполняют вручную пользователем первого оконечного устройства, если способ не позволяет автоматически определить второе оконечное устройство с требуемой надежностью.
35. Способ по п. 34, отличающийся тем, что определение второго оконечного устройства выполняют на основе расширенной информации о потенциальных устройствах-партнерах, которую получают с сервера.
36. Способ по п. 34, отличающийся тем, что результат ручного определения заносят в базу данных в сервере, подвергают статистической обработке и результат статистической обработки впоследствии используют на шаге (a8) для повышения надежности определения второго оконечного устройства.
37. Способ по любому из предыдущих пунктов, отличающийся тем, что на основе данных геолокации оконечных устройств реализуют многоадресный режим передачи данных от первого оконечного устройства другим оконечным устройствам, в отношении которых выполнено заранее заданное условие.
38. Система для беспроводной передачи данных между оконечными устройствами, содержащая удаленный сервер, транспортную сеть и, по меньшей мере, два оконечных устройства, выполненная с возможностью осуществления способа, охарактеризованного в любом из предыдущих пунктов.