Code Monkey home page Code Monkey logo

handy3dscanner's Introduction

Handy 3D Scanner

Join the chat at https://gitter.im/state-of-the-art/Handy-3D-Scanner

General purpose 3d scaner based on Intel Realsense D400 cameras.

Application to help build a cheap 3d scanner based on Intel RealSense D415/D435 cameras and your android smartphone, tablet or laptop.

Usage

Please check out the wiki page: Wiki

Requirements

  • Host:
    • Smartphone / Tablet - anything with Android 5+ (Lollipop or better) and usb3 or usb2 host (camera need ~1000mA)
    • Linux workstation - Ubuntu LTS, Debian, CentOS...
    • Linux SBC - for small boards it also should work
  • Intel Realsense D400 - stereo camera with D4 board (right tested D415 and D435i)
  • USB-C/USB-C cable - USB3.1 Gen 1 should work properly or you can use usb2 for low speed capture
  • Handy 3D Scanner - application piece, binaries published in Android store (paid) and available for workstations (opensource).

Application

Overview

Basically have just 3 main functions:

  • Capture - allow to get shots and records of the environment
    • General mode you can take pointclouds capturing your surrounding with a proper positioning of the shots (gyroscope or arcore positioning).
    • Record mode (in dev) Useful for experimenting with AI, but consumes alot of memory
  • Preview - shows what pc you captured
    • List of the captured pc
    • Show/Hide pointclouds
    • Camera controls: rotation, zoom, focus to point
  • Load/Save - when we would like to view or store pc or mesh
    • Individual pointclouds - store in PCD format as point of clouds for the further processing
    • Export visible - save the whole 3d scene as glTF 2.0 glb file to import it in 3d edit software or share

Also there will be settings, skeletal animation and other stuff.

Applications

  • VR/AR avatars, objects - scan yourself, your cat or entire house and bring them to VR/AR.
  • General purpose portable 3d scanner for 3d printer - if you want to build a copy of object you like.
  • Modelling - sometimes it's much easier to scan and edit in 3d editor (Blender / 3DSMax).
  • Measuring - it's pretty accurate, so you can use it to measure stuff or proportions.
  • 3d Instagram - hopefully we will get to this state :)
  • Who knows - when such techs are going wild, it's hard to predict how they will be used.

Features

  • Easy pointcloud capture interface
  • Pointcloud preview and edit
  • Support for RealSense library
  • Support for ARCore library
  • Save & load in PCD format
  • Export to glTFv2 with Draco compression

Example data

You can find the examples & PCD/glb files on the wiki page: Example data

Price

  • Professional 3d scanners: ~$10'000 - $20'000.
  • Table laser scanners: ~$70 - $500.

With Intel Realsense D415 (~$140) and mobile app we can get a simple and cheap solution to provide a really cheap mid-range HD solution with advanced specifications:

  • Resolution: 1Mpix (1280x720)
  • Frame-rate: 30-60 fps
  • Angle: 63°x40°, 85°x58°
  • Range: 16cm-10m, 11cm-10m

Means that finally for ~$200 users can get simple solution to build second instagram, now in 3D - and the last piece is just a userspace software.

Plans

You can see all the feature requests/bugs on the github page:

But overall we have a huge plans to make this application better!

  • Prepare version 1.0 - it should be useful for everyday use.
  • Kickstarter campagin - customers want to see the complete product - so why not?
  • Publish source code - necessary to make sure the project will live it's long life.
  • Reach the top - the market could be bigger, any smartphone should get this feature because AR/VR is coming (check Samsung Galaxy Note 10). Handy 3D Scanner can help with building the new future where everyone will take not just photo, but capture part of the 3d world and place it in VR.

OpenSource

This is an experimental project - main goal is to test State Of The Art philosophy on practice.

We would like to see a number of independent developers working on the same project issues for the real money (attached to the ticket) or just for fun. So let's see how this will work.

License

Repository and it's content is covered by Apache v2.0 - so anyone can use it without any concerns.

If you will have some time - it will be great to see your changes merged to the original repository - but it's your choise, no pressure.

Build

Build process is quite hard, but requires a minimum dependencies (cmake will get all the requirements automatically).

NOTICE: Qt 5.12.4, 5.12.5 and 5.13.0 have an issue with gyro (QTBUG-77423) - so please use 5.12.3 if you want to use gyroscope.

Build in docker

For desktop
  1. Clone the repository:
    host$ git clone https://github.com/state-of-the-art/Handy3DScanner.git ~/Build/Handy3DScanner
    
  2. Run the docker container:
    host$ cd ~/Build/Handy3DScanner
    host$ docker run -it --rm --name h3ds-build --volume="${PWD}:/home/user/project" rabits/qt:5.13-desktop
    
  3. Install the required dependencies:
    docker$ sudo apt update
    docker$ sudo apt install -y libusb-1.0-0-dev
    
  4. Create build directory:
    docker$ mkdir project/build
    docker$ cd project/build
    
  5. Generate the build scripts
    docker$ cmake .. -G Ninja "-DCMAKE_PREFIX_PATH:PATH=${QT_DESKTOP}"
    
  6. Build the binaries:
    docker$ cmake --build .
    
  7. You can find the compiled binaries in the build directory
For android
  1. Clone the repository:
    host$ git clone https://github.com/state-of-the-art/Handy3DScanner.git ~/Build/Handy3DScanner
    
  2. Run the docker container (use -armv7 if you need armv7 binaries):
    host$ cd ~/Build/Handy3DScanner
    host$ docker run -it --rm --name h3ds-build --volume="${PWD}:/home/user/project" rabits/qt:5.13-android-arm64
    
  3. Install the required dependencies (build-essential for boost build system):
    docker$ sudo apt update
    docker$ sudo apt install -y imagemagick build-essential
    
  4. Create build directory:
    docker$ mkdir project/build
    docker$ cd project/build
    
  5. Generate the build scripts
    docker$ cmake .. -G Ninja "-DCMAKE_PREFIX_PATH:PATH=${QT_ANDROID}" "-DCMAKE_TOOLCHAIN_FILE:PATH=${ANDROID_NDK_ROOT}/build/cmake/android.toolchain.cmake" "-DANDROID_ABI:STRING=${ANDROID_NDK_TOOLCHAIN_ABI}" -DANDROID_NATIVE_API_LEVEL:STRING=29
    
  6. Build the binaries:
    docker$ cmake --build .
    
  7. Debug APK will be created automatically with help of tools/build-apk.sh - and you will see where it's

Build on host

You can use your host:

Dependencies
  • Ubuntu 18.04 (build is tested only using ubuntu, but you can try something else)
  • CMake 3.10
  • Ninja (optional, but helpful)
  • Qt SDK 5.12 or 5.13
  • build-essential (is needed to build host binaries, even for android boost requires to compile the build system)
  • android:
    • Android SDK android-29 (actually could be built on 21-29 API levels)
    • Android NDK r20
    • Imagemagick (using convert to generate png out of svg)
  • desktop:
    • libusb-1.0-0-dev (on android we using jni interface, but on desktop the native one)
Variables

Already set in the docker images, but you need to set them to build on the host system (there is an examples, you need to choose yours):

  • QT_DESKTOP: "~/local/Qt/5.13.0/gcc_64" - path to the Qt desktop binaries
  • QT_ANDROID: "~/local/Qt/5.13.0/android_armv7" - path to the Qt android binaries
  • ANDROID_NDK_PLATFORM: "android-29" - what the platform to use while android apk build
  • ANDROID_NDK_ROOT: "~/local/android-sdk/ndk-bundle" - path to the Android NDK
  • ANDROID_NDK_TOOLCHAIN_ABI: "armeabi-v7a", "arm64-v8a" - binary type

To build the APK for android you need to set the next env variables in addition:

  • ANDROID_SDK_ROOT: "/opt/android-sdk" - path to the android sdk
  • ANDROID_NDK_HOST: "linux-x86_64" - ndk host platform
  • ANDROID_SDK_BUILD_TOOLS: "29.0.1" - version of the sdk build-tools will be used
Build

Just follow the docker instructions (but without docker) - and you will be good.

Privacy policy

It's very important to save user private data and you can be sure: we working on security of our applications and improving it every day. No data could be sent somewhere without user notification and his direct approve. This application will work standalone without any internet connection and will not collect any user personal data anyway.

handy3dscanner's People

Contributors

rabits avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

handy3dscanner's Issues

Capture mode: walk-around

Scanner should be able to automatically capture objects while walking around them and taking photos.

Result - is aligned pc objects ready for fuse together.

It's includes automatic cleaning of background and auto-alignment features.

Depends #12, #13

[BUG] Crash during crop to selection

Issue description:

Found user app crash during crop operation, need to investigate:

backtrace:
  #00  pc 000000000006b7c8  /system/lib64/libc.so (tgkill+8)
  #01  pc 000000000001dfa0  /system/lib64/libc.so (abort+88)
  #02  pc 00000000006c7a9c  /data/app/io.stateoftheart.handy3dscanner-tzF_obpa4J1Zv3Vr-6B78Q==/lib/arm64/librealsense2.so
  #03  pc 00000000006c7c14  /data/app/io.stateoftheart.handy3dscanner-tzF_obpa4J1Zv3Vr-6B78Q==/lib/arm64/librealsense2.so
  #04  pc 00000000006c49e0  /data/app/io.stateoftheart.handy3dscanner-tzF_obpa4J1Zv3Vr-6B78Q==/lib/arm64/librealsense2.so
  #05  pc 00000000006c40e8  /data/app/io.stateoftheart.handy3dscanner-tzF_obpa4J1Zv3Vr-6B78Q==/lib/arm64/librealsense2.so
  #06  pc 00000000006c4068  /data/app/io.stateoftheart.handy3dscanner-tzF_obpa4J1Zv3Vr-6B78Q==/lib/arm64/librealsense2.so (__cxa_throw+120)
  #07  pc 000000000003cac8  /data/app/io.stateoftheart.handy3dscanner-tzF_obpa4J1Zv3Vr-6B78Q==/lib/arm64/libHandy3DScanner.so (_ZN10PointCloud18setVertexAttributeEv+352)
  #08  pc 0000000000034f1c  /data/app/io.stateoftheart.handy3dscanner-tzF_obpa4J1Zv3Vr-6B78Q==/lib/arm64/libHandy3DScanner.so (_ZN10PointCloud15setVertexBufferERK10QByteArray+404)
  #09  pc 000000000003e6e4  /data/app/io.stateoftheart.handy3dscanner-tzF_obpa4J1Zv3Vr-6B78Q==/lib/arm64/libHandy3DScanner.so (_ZN10PointCloud15cropToSelectionEv+1040)
  #10  pc 000000000004bf14  /data/app/io.stateoftheart.handy3dscanner-tzF_obpa4J1Zv3Vr-6B78Q==/lib/arm64/libHandy3DScanner.so
  #11  pc 000000000004c1b0  /data/app/io.stateoftheart.handy3dscanner-tzF_obpa4J1Zv3Vr-6B78Q==/lib/arm64/libHandy3DScanner.so (_ZN10PointCloud11qt_metacallEN11QMetaObject4CallEiPPv+160)
  #12  pc 00000000002f3a24  /data/app/io.stateoftheart.handy3dscanner-tzF_obpa4J1Zv3Vr-6B78Q==/lib/arm64/libQt5Qml.so

Environment:

  • Application version: 0.3.2
  • Device: LGE V20
  • OS: Android 8.0

Steps to reproduce:

No particular steps, just stacktrace

Can't change the tool in Edit tab

Environment:

  • Application version: 0.1.0
  • OS: Android 7.0 Nougat
  • Host: Samsung Galaxy S8 SM-G950U1
  • Camera: Intel Realsense D415 (module and camera)
  • Camera firmware: 5.11.1.100

Issue description:

When I'm trying to choose some tool in the tools menu (box selection for example) - I can't do that and tool is not changed, but tool menu item is continuing to jump.

Steps to reproduce:

  1. Start the app
  2. Go to the Edit tab
  3. Choose any select tool (probably any tool)

[BUG] Lenovo Phab 2 Pro Tango PB2-690Y unstable slow capture

Issue description:

When camera d415/d435i is connected directly - it could be detected, but device will be disconnected and tried to connect again (looks like usb2 power issues). If external power source is used - it's starting to work, but framerate from camera is sooo low (~0.2-1fps) and unstable (>5sec no frames).

Environment:

  • Application version: 0.2.2
  • Device: Lenovo Phab 2 Pro Tango PB2-690Y
  • OS: Android 6.0
  • Camera: D415/D435i camera
  • Camera firmware: 5.11.1.100

Steps to reproduce:

First attempt

  1. Start the app
  2. Connect the camera using direct microusb -> usbc cable
  3. Wait ~5 sec
  4. See the message to connect the camera from android system
  5. Press ok
  6. App tries to start the stream and failed
  7. Device disconnected
  8. See another message from android to connect the device
  9. Press ok
  10. App fails

Second attempt

  1. Start the app
  2. Connect the camera using usb -> usbc cable with ext microusb power source adapter
  3. See the message about new device from android
  4. Press ok
  5. Camera starting the stream, but it's unstable
  6. In ~10 sec the stream failed and freezes the picture

Expected behavior

Connected camera should work well.

Additional context

Probably a hardware issue, need to figure out.

Export 3d mesh in glTF format

There should be a way to export all the existing (currently displaying) pointclouds/meshes as glTF 2.0 mesh with a number of submeshes or individually.

glTF 2.0 format was chosen because it is:

  • support multiple features such as meshes, pointclouds, point color, materials, animation
  • supports by a majority of opensource 3d software and could be easily converted
  • becoming a new standard for exchanging the 3d models (facebook already support it and there is ability to post 3d models)

Depends #6

[BUG] Out of memory

Issue description:

When a number of devices was connected - the app is running out of memory. Need profiling.

Environment:

  • Application version: 0.2.2
  • Device: Samsung Galaxy S8 SM-G950U1
  • OS: Android 7.0 Nougat
  • Camera: D415/D435i cameras in USB 2.1 & USB 3.2 mode
  • Camera firmware: 5.11.1.100

Steps to reproduce:

  1. Run the app
  2. Connect d415 camera using USB 2.0 cable
  3. See the stream
  4. Disconnect camera and connect d435i camera using USB 2.0 cable
  5. See the stream
  6. Disconnect camera and connect d415 camera using USB 3.1 cable
  7. See the errors and almost no stream

Expected behavior

Memory is enough - not enough of cleaning the memory when the devices is not available anymore.

First captured pointcloud have no color for the points

Environment:

  • Application version: 0.1.0
  • OS: Android 7.0 Nougat
  • Host: Samsung Galaxy S8 SM-G950U1
  • Camera: Intel Realsense D415 (module and camera)
  • Camera firmware: 5.11.1.100

Issue description:

First captured pointcloud have no color for the points. Second captured pointcloud have the proper colors on the points.

Steps to reproduce:

  1. Start the app
  2. Connect camera
  3. Tap capture button - the pointcloud is captured.
  4. Switch to Edit tab
  5. Choose the first shot from the list of pointclouds
  6. Points of the captured pointcloud is not colored with the actual colors.

Settings framework implementation

Users for sure want to control some camera or application parameters so we need to implement settings framework that will allow us to provide such control to the end users.

Skeletal animation tool

Imagine someone captures a human model and want to see how it will be look while moving - so we can determine simple skeleton of the model (or set it manually) and apply some animation (made it from scratch or get some existing from the examples library).

This improvement should show the VR/AR features.

PC auto-alignment tool

There is a way to auto-align the point cloud using similar parts.
This tool will be a great help with both capture modes - panorama and walk-around.

I think the best way to auto-align is place both pc relatively close to similar sides and give this to similarity search algorithm to search in this direction (and not try to compare other sides of the pc objects).

Result of this comparison should be new position of the pc or fuse of 2 pc objects into one mesh.

Generate 3d mesh from the pointcloud and display it

Sometime it's easy to manipulate mesh instead of pointcloud, so PointCloud should have a way to be converted to a mesh that could be displayed on the screen.
Seems there should be 2 modes of displaying the PointCloud object - as pc or as a mesh.

[BUG] Flickering during start on some systems

Issue description:

When the app is started it starts to flicker on Desktop (wayland) and android 5.

Environment:

  • Application version: 0.2.2
  • Device: Ubuntu with Wayland, ASUS ZenFone 2 Laser

Steps to reproduce:

  1. Run the app
  2. See flickering

Additional context

It's stopped when you switching to Edit tab.

Intel Realsense D435i support

Right now app is tested only with D415 (camera & module version). It will be good to increase number of supported devices with D435 camera (wide range).

Compatibility: USB 2.0 support

Intel Realsense camera needs USB 3.1 Gen 1 to work on full framerate. Sometimes it's not needed and probably it will be enough to get 3-6 FPS on full resolution that will require just USB 2.0 host.

Need to test with USB 2.0 and prepare the required changes.

Read/save compressed pcd files

I saw some logic in PCL to read/write compressed pcd format. So probably it will be a good idea to provide the same functionality to the scanner pcd reader/writer.

Compatibility: Support OpenGL ES 2.0

Right now to simplify code base and to head on processing using compute shaders the app requires OpenGL ES 3.1 and can be started on 3.0. But multiple platforms can also use OpenGL ES 2.0 with limited functional (just show pointclouds at least).

So this is a way to increase a number of supported android devices from 4130 to ~5543.

[FEATURE] Desktop application support

Is your feature request related to a problem? Please describe.

Right now Handy 3D Scanner supports only Android (and limited Linux) OS. It will be good to run the same on the other operating systems, like Windows & MacOS.

Describe the solution you'd like

Qt 5 framework and libraries we using (librealsense, draco) - are quite portable and since we already have linux user interfaces (mouse support) - that shouldn't be a big deal to support the other platforms.

Additional context

The only limitation we have right now - is file management. Need to prepare an unified interface to access the filesystem (to open/save/export pointclouds / scene).

[BUG] Edit tab: selection are stopped animation when there is no activity

Issue description:

Seems like the issue is introduced by #41 - it's not rendering when scene is not changed.

Environment:

  • Application version: 0.3.0

Steps to reproduce:

Steps to reproduce the behavior:

  1. Open the app
  2. Go to Edit tab
  3. Open some pointcloud
  4. Select some points
  5. When you not touching the screen - the selected points are not animated
  6. Try to rotate the model - and points are animated again

Expected behavior

When the Edit tab is active - rendering should be active

Improve panorama capture mode

Right now panorama capture mode using only phone gyro sensor that is not precise enough.

Auto-alignment should solve this issue and make possible to fuse different shots into one good 3d model. Also maybe it's possible to use other sensors (AR based?) to track the camera position and provide more precise position.

Depends: #13, #16

[BUG] Delete point tool click on pc without selection crashing the app

Issue description:

If nothing is selected in the pointcloud - delete tool are going to remove everything, but pointcloud is not ready for that.

Environment:

  • Application version: 0.3.0
  • Device: Samsung Galaxy S8 SM-G950U1
  • OS: Android 7.0 Nougat

Steps to reproduce:

  1. Open the app
  2. Capture (or open) a pointcloud
  3. Switch to Edit tab
  4. Select the Delete tool
  5. Click on pointcloud
  6. Wait for processing
  7. Application crashed

Expected behavior

The tool should not be available until some points is selected

[FEATURE] Option to set displayed point size in pointcloud

Is your feature request related to a problem? Please describe.

Sometimes it's useful to change the pointcloud point size to see the picture better with different points concentration (close points are more concentrated than far points). Otherwise when you getting closer to far points - you loosing the picture and if you far from near points - have lack of details.

Describe the solution you'd like

Just an option in settings will be just enough for now.

Fusing tool

We need a way to combine different pc shots into a complete pc. This fusing tool will break the x/y matrix and will produce fused pc.

Many objects could not represent in just a plain pc format - means based on 2d matrix image where points have z attribute in addition to x, y (cell in matrix) and rgb color...
So this pc objects will not have a matrix structure, but will be able to represent object from any point of view. It also will be possible to save such pc in pcd format, but some of the tools will not be able to process pc as an image.

Result: combined 2 point clouds into the one fused point cloud.

[FEATURE] Implement notification system about the warnings and errors

Is your feature request related to a problem? Please describe.

Users right now hardly can find what the issues are existing. It will be good to see the application log from the application and get some notifications about warnings or errors that happening during the application run.

Describe the solution you'd like

There could be a pop-up notifications and standard log access.

[FEATURE] Implement senging email bug report from the application

Is your feature request related to a problem? Please describe.

Sometimes it's hard to determine what's happening with the application, so it will be good if the application can collect the system data and logs and provide this info to user to send email about the issue user found.

Describe the solution you'd like

Catching exceptions or app failures and provide an interface to create email about the issue.

[FEATURE] Rethink pointcloud edit interface

Is your feature request related to a problem? Please describe.

Right now it's quite hard to select/edit points or areas of pointcloud

Describe the solution you'd like

I think some sort of 2d editor could help - because our pointclouds is basically a 2d pictures where color is a depth - so it will be useful for cutting the required parts of pc or healing editing

Describe alternatives you've considered

Selecting in 3d space requires additional algorithms and I think it's possible, but most value we can get right now from 2d editor.

Prepare a first promo video

Promo video required to make sure users are know what the application is doing, what the main features and how to use it.

[BUG] Some icons are showing as Chinese symbols

Issue description:

It seems some of the originally Chinese/Korean phones (that supports Chinese characters) has a priority over the custom symbols used to show icons in menus.

Environment:

  • Application version: 0.2.1
  • Device: ASUS ZenFone 2 Laser ZE500KL, ASUS ZenFone AR V570KL
  • OS: Android 5, 7
  • Camera: none
  • Camera firmware: none

Steps to reproduce:

Open app and see (check the screenshot)

Expected behavior

The icons should be displayed properly

Screenshots

  • ZE500KL:
    Screenshot_2019-04-27-14-05-04
  • V570KL:
    Screenshot_20190427-162652

Additional context

Probably could be fixed by set the priority font to symbols collection.

Positioning tool for pc

Some of the captured pc could be placed not properly - so there should be an ability to move/rotate the pc manually.
Also this tool could be useful to set ~ place of pc to use auto alignment tool (#13) after that.

Background auto-cleaning tool

User probably don't want the entire shot but just some object on it - so we need to determine the background and remove it.

Basically we can determine the object of interest in 2 ways:

  • Closest object to the camera
  • Chosen by user object

So scanner need to know how to find closest points to cut the object.

Depends #11

[BUG] Unable to save config for UI.Edit.pointcloud.point_size

Issue description:

Value of UI.Edit.pointcloud.point_size is not saved

Environment:

  • Application version: 0.3.2

Steps to reproduce:

  1. Go to settings
  2. Navigate point_size
  3. Change it value
  4. Close the app
  5. Open the app
  6. Value of point_size is default

Expected behavior

Setting value should be saved when the app is closed and restored from user config when the app is opened.

Switching capture displaying streams mode

Right now capture tab is only showing colorized depth stream, but it also could be useful to switch to color camera stream, infra-red left/right cameras or even show all of them in the same time.

So need some sort of modes list and ability to choose one.

[BUG] Really slow capture

Issue description:

If there is not enough CPU/RAM the capture view is really slow.

Environment:

  • Application version: 0.2.2
  • Device: ASUS ZenFone 2 Laser ZE500KL
  • OS: Android 5
  • Camera: D415 camera
  • Camera firmware: 5.11.1.100

Steps to reproduce:

  1. Open app
  2. Connect camera
  3. See the slowness ~1-2 fps (should be 6)

Additional context

Could be related to post-processing of the depth image or the stream display. UI is not affected.

Free selection tool

Create tool to draw selection border and select all the points in this selection (like GIMP's Free Select tool).

[FEATURE] Showing shot animation

Is your feature request related to a problem? Please describe.

When shot button is pressed there is no sign that the pointcloud is captured. It will be good to somehow notice user about this action.

Describe the solution you'd like

White screen flash will be ok

[BUG] > 1 time connections causing app crash

Issue description:

When the app run camera could be connected only once. When it's disconnected and connected again - the app will crash.

Environment:

  • Application version: 0.2.1
  • Device: Samsung Galaxy S8 SM-G950U1
  • OS: Android 7.0 Nougat
  • Camera: Intel Realsense D415 camera
  • Camera firmware: 5.11.1.100

Steps to reproduce:

  1. Start the app
  2. Connect the camera
  3. Push ok in new device connected window
  4. See that stream is started
  5. Disconnect the camera
  6. Put it back again
  7. Push ok in new device connected window
  8. App crashed

Expected behavior

There should be a way to connect/disconnect the camera multiple times without any issues.

Additional context

Related to the pipeline start/stop. During error it's not stopped and the next start will cause exceptions.

Saving raw data directly to ROS bag format

Useful for robot makers and for everyone who want to play with raw captured data.

It supports multiple formats to store (basically any robot-sensor information). Natively supported by librealsense, so shouldn't be a big deal to implement this.

Increase number of testing android devices

Right now we testing only on Samsung Galaxy S8 (Android 7.0 Nougat SM-G950U1 4.4.16-12116658 ARM64) - clearly not enough to cover the customer devices somehow.

Need to test different versions of devices.

[FEATURE] Display FPS on the capture tab

Is your feature request related to a problem? Please describe.

Sometimes CPU or USB can't handle the frames and we need to have some information about how much frames are coming per second, how much are processed and how much are displayed.

Describe the solution you'd like

Small notification at the right top corner of the Capture screen could help here.

[FEATURE] Show camera connection status

Is your feature request related to a problem? Please describe.

It's not clear for user that camera is connected or not - he can't figure out if there is an issue with camera, cable or application itself.

Describe the solution you'd like

Showing the USB version & status of the camera streaming will be nice to see.

[BUG] d435i not working using USB 2.0

Issue description:

D435i camera is not working on USB 2.0 - it's detected, but app crash when tries to start the capture stream. D415 is working fine with the same stream configs. Lowering stream settings to 640x480 does not help. Disabling the color stream helps.

Environment:

  • Application version: 0.2.1
  • Device: ASUS ZenFone AR V570KL
  • OS: Android 7
  • Camera: D435i camera
  • Camera firmware: 5.11.1.100

Steps to reproduce:

  1. Run the app
  2. Connect the camera
  3. Allow camera connection
  4. App crash

Additional context

Looks like camera requires additional bandwidth for the hid devices (IMU), so it has not enough for the base streams (depth+color).

Support placing pc/model in AR

For the end users will be good to actually place capture model in the real world or just somehow compare real world object to the captured one. So easiest way I think is to place the object onto a video from camera like AR.

User will be able to walk around with the phone and see how the object is looking like in the real world.

Objects select tool

Create tool to recursively select points that near to the picked point (like Fuzzy Select tool in gimp).

Depends #11

Algorithm to determine objects on the pc

PointCloud should be able to be split into parts: more or less separated objects (for example main object and background).

It's hard for a single CPU thread, but probably ok for OpenGL ES compute shaders or advanced techniques of selecting/image processing.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.