Как экспортировать данные облака точек (Project Tango)?

Просто получил план Project Tango Development Kit и проработал некоторые демо и примеры.

Некоторые старые сообщения в блогах используют файлы журналов из приложения «Tango Mapper», которое должно быть предварительно загружено на устройство.

  • Интерактивная визуализация данных проекта Tango Google с помощью ParaView
  • Ologic объявляет об интеграции между ROS и Project Tango
  • Интеграция Google Tango и ROS в Bosch
  • Советы по отображению и подсказкам

К сожалению, приложение «Tango Mapper» не было загружено на моем устройстве, и я не могу найти его в Play Маркете.

Есть ли другой способ просто экспортировать или получить данные PointCloud для последующего рендеринга?

[Номер модели: yellowstone, Tango Core Версия: 1.1: 2014.11.14-bernoulli-release]

Solutions Collecting From Web of "Как экспортировать данные облака точек (Project Tango)?"

Tango Mapper – это внутренний инструмент, и в настоящее время он не является общедоступным для разработчиков. Я думаю, что лучший способ регистрации данных облачных точек – использовать предоставленный код c или java, и, возможно, сделать небольшую модификацию для записи данных в файл.

Пример: https://github.com/googlesamples/tango-examples-c

Пример java: https://github.com/googlesamples/tango-examples-java

Не уверен, что когда-нибудь вам удастся это решить, но я смог найти APK вместе с методом экспорта с использованием обновленной версии планшета Tango. Я успешно экспортировал данные облака точек, используя метод, описанный в этом блоге.

http://www.kitware.com/blog/home/post/838

редактировать

Процедура загружает APK или использует исходный код, найденный в папке проекта GITHUB.

Как только это будет сделано, загрузите приложение, как обычно. Будет запись слайдера и авто. Если вы сделаете слайд-запись, она будет ждать, пока вы не нажмете кнопку моментального снимка, чтобы записать данные облака точек, которые вы просматриваете в данный момент.

Если вы нажмете авто, он будет непрерывно записывать данные облачных облаков и создавать файлы по мере их перемещения. Имейте в виду, что чем больше файл, тем больше он берется для сохранения в виде zip-файла.

После этого запустите запись, и она предложит вам сохранить и отправить.

Мне легче сэкономить на Google Диске, как другие другие методы, которые иногда не удается отправить.

После завершения загрузки бесплатное приложение Paraview найдено http://www.paraview.org/download/ загружает данные вашего облака точек.

Это должно быть два файла: ваши данные позы и другое облако точек. (Вы можете индивидуально загружать каждую информацию с помощью стрелки коллапса, которую вы видите перед импортом.)

Это будет то, что вы сможете увидеть свои данные и воспроизвести анимацию, записанную вами, из-за собранных данных позы.

(Только написал это, потому что вы искали более простой способ экспорта данных). Это, наверное, самый простой. Вы можете взять данные и начать реконструировать комнату на основе собранных данных.)

Все кредиты за исходный код и учебник идут в блог Kitware

Если ссылки сломаны DM me, и я отправлю файл вам.

APK найден здесь

APK DOWNLOAD

Они также указали свой исходный код в нижней части блога. Он основан на проводнике танго, найденном в магазине приложений.

Разреженное сопоставление: https://www.youtube.com/watch?v=x5C_HNnW_3Q

Больше внутреннего картографирования: https://www.youtube.com/watch?v=3BNOsxMZD14

Похоже, что более чем несколько участников проекта Tango были наняты или куплены google. В качестве примера большинство ссылок на код и / или статьи Hidof – это MIA, остается только страница facebook с несколькими подсказками. Машина обратного пути интернет-архива имеет несколько снимков своего веб-сайта для любопытных.

Go взгляните на образец Java Point Cloud на GitHub. Функция, которую вы хотите посмотреть, это onXyzIsAvailable в PointCloudActivity. Извлечение нескольких соответствующих строк ….

public void onXyzIjAvailable(final TangoXyzIjData xyzIj) { .... byte[] buffer = new byte[xyzIj.xyzCount * 3 * 4]; FileInputStream fileStream = new FileInputStream( xyzIj.xyzParcelFileDescriptor.getFileDescriptor()); try { fileStream.read(buffer, xyzIj.xyzParcelFileDescriptorOffset, buffer.length); fileStream.close(); } catch (IOException e) { e.printStackTrace(); } 

В этот момент buffer содержит данные облака точек – я бы настоятельно рекомендовал вам отправить это с устройства через двоичный вызов службы, поскольку я думаю, что заставить бедную вещь попробовать и преобразовать ее в JSON или XML сделает вещи медленнее, чем вы хотели бы

Спасибо, Марк за советы. Я начинающий программист, и я впервые работаю с java … Мне интересно экспортировать полученные данные Tango PointCloud в файл, и я хотел бы попросить ваши отзывы о моем подходе (я создал кнопку «Сохранить» и onClick что данные будут сохранены в файл на внешнем диске). Пожалуйста, найдите приведенный ниже код для части, которая должна сохранять данные xyzIj :

 @Override public void onClick(View v) { switch (v.getId()) { ... case R.id.save_button: savePointCloud(); break; default: Log.w(TAG, "Unrecognized button click."); } } private static void savePointCloud(final TangoXyzIjData xyzIj, String file) { File directoryName = getAlbumStorageDir(file); FileOutputStream out = new FileOutputStream(directoryName,"text.txt"); byte[] buffer = new byte[xyzIj.xyzCount * 3 * 4]; FileInputStream fileStream = new FileInputStream( xyzIj.xyzParcelFileDescriptor.getFileDescriptor()); int read; while ((read=fileStream.read(buffer))!=1){ try{ out.write(buffer, 0, read); out.close(); System.out.println("Printed to file"); }catch(IOException e){e.printStackTrace();} } } public File getAlbumStorageDir(String dirName) { if (!isExternalStorageWritable()) { return null; } else { // Get the directory for the user's public downloads directory. File file = new File(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_DOWNLOADS), dirName); if (!file.mkdirs() || !file.exists()) { Log.e(TAG, "Directory not created"); return null; } return file; } } public boolean isExternalStorageWritable() { String state = Environment.getExternalStorageState(); if ((Environment.MEDIA_MOUNTED.equals(state) && Environment.MEDIA_MOUNTED_READ_ONLY.equals(state))) { return true; } else { Log.e(TAG, "External storage is not mounted READ/WRITE."); return false; } }