neka-nat / cupoch Goto Github PK
View Code? Open in Web Editor NEWRobotics with GPU computing
License: MIT License
Robotics with GPU computing
License: MIT License
Hello,
I tried the ScalableTSDF integration and got this error:
terminate called after throwing an instance of 'thrust::system::system_error' what(): parallel_for failed: cudaErrorMemoryAllocation: out of memory Aborted (core dumped)
I thought it was a little bit strange because it took a lot more memory than UniformTSDF, which worked with about 4GB, and my graphics card has 8GB in total.
I've tried to play with the parameters like making the voxel size larger, but I always got the same error.
Below is the code I'm trying to run.
Thanks for your great work and any help you can offer.
#include "cupoch/cupoch.h"
#include "cupoch/integration/scalable_tsdfvolume.h"
#include "cupoch/integration/uniform_tsdfvolume.h"
#include "sys/time.h"
int main(int argc, char *argv[]) {
using namespace cupoch;
using namespace std;
string datasetDir = "/home/apeiron/data/tum_clouds/";
auto intrinsic = camera::PinholeCameraIntrinsic(
640, 480, 517.306408, 516.469215, 318.643040, 255.313989);
//-- read imgs
geometry::Image depth, color;
io::ReadImage("/home/apeiron/data/tum_clouds/depth/0.png", depth);
io::ReadImage("/home/apeiron/data/tum_clouds/color/0.jpg", color);
auto rgbd = geometry::RGBDImage::CreateFromColorAndDepth(
color, depth, 5000.0, 2.0, false);
//-- tsdf
float length = 2;
float resolution = 512;
float sdf_trunc_percentage = 0.01;
// uniform works
// integration::UniformTSDFVolume volume(
// length, resolution, length * sdf_trunc_percentage,
// integration::TSDFVolumeColorType::RGB8);
integration::ScalableTSDFVolume volume(
length / resolution, length * sdf_trunc_percentage,
integration::TSDFVolumeColorType::RGB8);
Eigen::Matrix4f extrinsic = Eigen::Matrix4f::Identity();
extrinsic(0, 3) = -0.5;
extrinsic(1, 3) = -0.5;
extrinsic(2, 3) = 0.5;
volume.Integrate(*rgbd, intrinsic, extrinsic);
auto mesh = volume.ExtractTriangleMesh();
io::WriteTriangleMesh("test.ply", *mesh);
visualization::DrawGeometries({mesh});
return 0;
}
Hello @neka-nat,
This is an incredible project. Thank you so much! I have a quesiton:
I have N pairs of point clouds and I have to do ICP between each pair. I have 2 GPUs and I'm not sure if there is any good way of running simultaneous registration. I tried using python multprocessing but it actually slows it down by 3x rather than speeding it up. Any thoughts are welcome!
Hello,
I tried to use Open3d and Cupoch together side-by-side for comparison. But got something redefined error. Here is my code
auto pcd_gpu = cupoch::io::CreatePointCloudFromFile("pcd1.pcd"); auto pcd = open3d::io::CreatePointCloudFromFile("pcd1.pcd");
Here is the error messages
Anyway to solve this issue?
Thank you!
Great project !
I would like to test it on a Xavier Agx .. I was able to install cupoch but I can't use Jetcard..
then, when I try your examples, I have no error but I don't get any output...
What can I do ?
Hello
On the line 55 of the file
https://github.com/neka-nat/cupoch/blob/master/src/cupoch/registration/feature.h
you have an integer 33.
In this case if I calculate the feature, maybe I need to do the following?
`
std::tuple<std::shared_ptrcupoch::geometry::PointCloud, std::shared_ptr<cupoch::registration::Feature<33> > >
cphDownsamplingNormalFPFH(std::shared_ptrcupoch::geometry::PointCloud cloud_ptr, float voxel_size)
{
auto cloud_down = cloud_ptr->VoxelDownSample(voxel_size);
auto radius_normal = voxel_size * 2.0f;
int MAX_NN = 220;
cloud_down->EstimateNormals(
cupoch::geometry::KDTreeSearchParamRadius(radius_normal, MAX_NN));
auto radius_feature = voxel_size * 5;
int MAX_NN_freature = 2 * MAX_NN;
auto cloud_fpfh = cupoch::registration::ComputeFPFHFeature(
*cloud_down, cupoch::geometry::KDTreeSearchParamRadius(radius_feature, MAX_NN_freature));
return std::make_tuple(cloud_down, cloud_fpfh);
}
`
Am I right?
Thank you!
for the geometry.OccupancyGrid()
method, how do we manually set the free area?
Is there any documentation for this method?
Hello,
I am using cph.registration.registration_filterreg for registering various pointcloud iteratively. The memory keeps growing after each iteration and after about 280 iterations i get CUDA out of memory error.
Environment:
Is there anything that can be done apart from executing this on a linux environment?
Hi,
Thank you for great work.
I would like to convert OpenCV image types (CV_8C3, CV_16UC1, CV_32FC1, ...) to cupoch image. Do you know the best way to upload and download to OpenCV image.
Thank you
I want use cupoch library in windows,like open3d,#include <Open3D/Open3D.h>, but there is a problem when using cupoch in winndows, is it supported now?
Hello,
I tried to install using pip
pip install cupoch
But I got these error messages
ERROR: Could not find a version that satisfies the requirement cupoch
ERROR: No matching distribution found for cupoch
Anyway to solve this issue? Is it because I am using windows? @neka-nat
Thank you!
EDIT:
It works when I am not in a conda environment, however it fails when an environment is activated. Can someone help me?
I test cluster_dbscan and voxel_down_sample functions in both open3d and cupoch. I apply cluster_dbscan in the resulting point cloud from voxel_down_sample and cupoch is slower than open3d.
I've the following processing times:
For 196133 points:
geometry::PointCloud with 196133 points.
transform (CPU) [sec]: 0.0009989738464355469
transform (GPU) [sec]: 0.0009970664978027344
voxel_down_sample (CPU) [sec]: 0.011995553970336914
voxel_down_sample (GPU) [sec]: 0.01075434684753418
cluster_dbscan (CPU) [sec]: 0.05086064338684082
cluster_dbscan (GPU) [sec]: 0.16341233253479004
For 1440 points:
geometry::PointCloud with 1440 points.
transform (CPU) [sec]: 0.0
transform (GPU) [sec]: 0.0
voxel_down_sample (CPU) [sec]: 0.0
voxel_down_sample (GPU) [sec]: 0.001996755599975586
cluster_dbscan (CPU) [sec]: 0.002991914749145508
cluster_dbscan (GPU) [sec]: 0.9901258945465088
Is there anyway gpu could make the calculation faster than cpu?
Hello, when I use EstimateNormals and ComputeFPFHFeature, I found that geometry::KDTreeFlann kdtree (that is, building kdtree) takes a lot of time. I want to update it here. Do you have any suggestions for improvement?
Dear @neka-nat,
My main question is: I was wondering if it is possible to use the cupoch c++ library directly in my own projects? If so, how do I structure my Cmakelists.txt and what do i link to where?
WHAT I TRIED:
Installing:
git clone https://github.com/neka-nat/cupoch.git --recurse
cd cupoch
mkdir build
cd build
cmake ..; make install-pip-package -j
but I was hoping i could also add the command:
sudo make install
to place it in my usr/....
to make it findable for my own package.
Using:
I tried importing the cupoch package in my Cmakelists.txt as:
find_package(fmt REQUIRED)
find_package(cupoch REQUIRED)
add_executable(
my_prog
src/program.cpp
)
install(TARGETS my_prog DESTINATION lib/${PROJECT_NAME})
target_link_libraries(my_prog cupoch_geometry cupoch_utility cupoch_visualization cupoch_io fmt::fmt)
ament_target_dependencies(my_prog Ceres CUDA)
Yet this doesnt work as it cannot find cupoch.
CMake Error at CMakeLists.txt:26 (find_package):
By not providing "Findcupoch.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "cupoch", but
CMake did not find one.
Could not find a package configuration file provided by "cupoch" with any
of the following names:
cupochConfig.cmake
cupoch-config.cmake
Add the installation prefix of "cupoch" to CMAKE_PREFIX_PATH or set
"cupoch_DIR" to a directory containing one of the above files. If "cupoch"
provides a separate development package or SDK, be sure it has been
installed.
if i simply comment the find_package(cupoch REQUIRED) command, then it fails to find the fmt and flann libraries:
[ 14%] Linking CXX executable my_prog
/usr/bin/ld: /usr/local/lib/libcupoch_geometry.a(cupoch_geometry_generated_boundingvolume.cu.o): in function `void fmt::v6::internal::basic_writer<fmt::v6::buffer_range<char> >::write_fp<float, true>(float, fmt::v6::basic_format_specs<char> const&)':
/home/shipborn/Documents/dashing/main/ros2/src/external/cupoch/third_party/fmt/include/fmt/format.h:2855: undefined reference to `bool fmt::v6::internal::grisu_format<double, 0>(double, fmt::v6::internal::buffer<char>&, int, unsigned int, int&)'
/usr/bin/ld: /usr/local/lib/libcupoch_geometry.a(cupoch_geometry_generated_boundingvolume.cu.o): in function `void fmt::v6::internal::basic_writer<fmt::v6::buffer_range<char> >::write_fp<double, true>(double, fmt::v6::basic_format_specs<char> const&)':
/home/shipborn/Documents/dashing/main/ros2/src/external/cupoch/third_party/fmt/include/fmt/format.h:2855: undefined reference to `bool fmt::v6::internal::grisu_format<double, 0>(double, fmt::v6::internal::buffer<char>&, int, unsigned int, int&)'
/usr/bin/ld: /usr/local/lib/libcupoch_geometry.a(cupoch_geometry_generated_kdtree_flann.cu.o): in function `flann::KDTreeCuda3dIndex<flann::L2<float> >::~KDTreeCuda3dIndex()':
/home/shipborn/Documents/dashing/main/ros2/src/external/cupoch/third_party/flann/algorithms/kdtree_cuda_3d_index.h:111: undefined reference to `flann::KDTreeCuda3dIndex<flann::L2<float> >::clearGpuBuffers()'
/usr/bin/ld: /usr/local/lib/libcupoch_geometry.a(cupoch_geometry_generated_kdtree_flann.cu.o): in function `flann::KDTreeCuda3dIndex<flann::L2<float> >::buildIndex()':
/home/shipborn/Documents/dashing/main/ros2/src/external/cupoch/third_party/flann/algorithms/kdtree_cuda_3d_index.h:138: undefined reference to `flann::KDTreeCuda3dIndex<flann::L2<float> >::uploadTreeToGpu()'
/usr/bin/ld: /usr/local/lib/libcupoch_geometry.a(cupoch_geometry_generated_kdtree_flann.cu.o): in function `flann::KDTreeCuda3dIndex<flann::L2<float> >::knnSearch(flann::Matrix<float> const&, flann::Matrix<int>&, flann::Matrix<float>&, unsigned long, flann::SearchParams const&) const':
/home/shipborn/Documents/dashing/main/ros2/src/external/cupoch/third_party/flann/algorithms/kdtree_cuda_3d_index.h:184: undefined reference to `flann::KDTreeCuda3dIndex<flann::L2<float> >::knnSearchGpu(flann::Matrix<float> const&, flann::Matrix<int>&, flann::Matrix<float>&, unsigned long, flann::SearchParams const&) const'
/usr/bin/ld: /usr/local/lib/libcupoch_geometry.a(cupoch_geometry_generated_kdtree_flann.cu.o): in function `flann::KDTreeCuda3dIndex<flann::L2<float> >::radiusSearch(flann::Matrix<float> const&, flann::Matrix<int>&, flann::Matrix<float>&, float, flann::SearchParams const&) const':
/home/shipborn/Documents/dashing/main/ros2/src/external/cupoch/third_party/flann/algorithms/kdtree_cuda_3d_index.h:201: undefined reference to `flann::KDTreeCuda3dIndex<flann::L2<float> >::radiusSearchGpu(flann::Matrix<float> const&, flann::Matrix<int>&, flann::Matrix<float>&, float, flann::SearchParams const&) const'
collect2: error: ld returned 1 exit status
make[3]: *** [CMakeFiles/my_prog.dir/build.make:302: my_prog] Error 1
make[2]: *** [CMakeFiles/Makefile2:152: CMakeFiles/my_prog.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:159: CMakeFiles/my_prog.dir/rule] Error 2
make: *** [Makefile:221: my_prog] Error 2
Greetings and thank you for your time.
First, I wanted to say this is a great library!
During testing, I've noticed the following:
read_point_cloud (CPU) [sec]: 0.048947811126708984
PointCloud with 196133 points.
read_point_cloud (GPU) [sec]: 0.594552755355835
geometry::PointCloud with 196133 points.
transform (CPU) [sec]: 0.0018947124481201172
transform (GPU) [sec]: 0.0005991458892822266
estimate_normals (CPU) [sec]: 0.8370163440704346
estimate_normals (GPU) [sec]: 0.13143420219421387
voxel_down_sample (CPU) [sec]: 0.08861064910888672
voxel_down_sample (GPU) [sec]: 0.0065348148345947266
remove_radius_outlier (CPU) [sec]: 7.660656690597534
remove_radius_outlier (GPU) [sec]: 0.05325913429260254
remove_statistical_outlier (CPU) [sec]: 0.6584312915802002
remove_statistical_outlier (GPU) [sec]: 0.07167720794677734
registration_icp (CPU) [sec]: 10.772068977355957
registration_icp (GPU) [sec]: 0.10024285316467285
cluster_dbscan (CPU) [sec]: 1.0398595333099365
cluster_dbscan (GPU) [sec]: 0.3085062503814697
It seems the read_point_cloud functionality, is 1 order of magnitude larger for GPU, which seems to effectively bottleneck some of the value of the GPU efficiencies derived from things like FastGlobalRegistration, which is markedly faster than ICP. Does this mean that cupoch will always perform slower on FastGlobalRegistration a compared to ICP just from the overhead of I/O to VRAM?
I also tested this in a series of load and FastGlobalRegistration iterations, with the following result: 75% of the time was spend loading and unloading to VRAM, while 25% of the time was actually on FastGlobalRegistration.
This is being tested on a GTX Titan 6GB, which is listed here: https://www.geforce.com/hardware/desktop-gpus/geforce-gtx-titan/specifications
Console prints out:
:: Downsample with a voxel size 0.020.
:: Estimate normal with search radius 0.040.
:: Compute FPFH feature with search radius 0.100.
:: Downsample with a voxel size 0.020.
:: Estimate normal with search radius 0.040.
:: Compute FPFH feature with search radius 0.100.
:: Apply fast global registration with distance threshold 0.010
Process finished with exit code -1
I saw you test this project on GTX1070 and cuda10.1. My current environment is RTX3060 and CUDA11.0. Is there room for optimization in the registration module, such as parameter modification and full utilization of GPU, thank you!
Hello,
Just wonder if it is possible to build shared dll for cupoch?
Thank you!
Hello @neka-nat,
A huge thanks for Cupoch
But im facing issue while building from source
system config
Nvidia geforce 1650
cuda toolkit 10.2
ubuntu 19.10
inbuilt Eigen : eigen 3.3.7
I tried with both eigen3 3rdparty and inbuilt version using
cmake -DBUILD_EIGEN3=OFF
and
cmake -DBUILD_EIGEN3=ON
the make make install-pip-package -j
is getting killed
few error snippets are
/home/shankar/3D projects/cupoch/cupoch/src/cupoch/geometry/boundingvolume.cu(26): error: identifier "Eigen::MatrixBase< ::Eigen::Matrix<float, (int)3, (int)3, (int)0, (int)3, (int)3> > ::determinant const" is undefined in device code
36 errors detected in the compilation of "/tmp/tmpxft_00007184_00000000-6_boundingvolume.cpp1.ii". CMake Error at cupoch_geometry_generated_boundingvolume.cu.o.cmake:280 (message): Error generating file /home/shankar/3D projects/cupoch/cupoch/build/src/cupoch/geometry/CMakeFiles/cupoch_geometry.dir//./cupoch_geometry_generated_boundingvolume.cu.o
make[1]: *** [CMakeFiles/Makefile2:755: src/cupoch/geometry/CMakeFiles/cupoch_geometry.dir/all] Error 2 make: *** [Makefile:130: all] Error 2
Hi, How to specify the GPU when running a demo program
I failed to find in the documentation or anywhere in the code comments a way of directly using cupy arrays that I already have loaded on the device?
Right now I am running custom kernels using numba and cupy and it's working like a charm. However when I use cupoch I first need to copy to host and then copy it back to the device using cupoch. This currently takes 30ms on an algorithm that takes a total of 60ms.... so 50% is lost on wasted copying.
Right now I have this workflow
cloud = cupy.asarray(source_data)
*Custom calculations*
cloud_host = cupy.asnumpy(cloud)
gpu = cph.geometry.PointCloud()
gpu.points = cph.utility.Vector3fVector(cloud_host)
*cupoch calculations*
Im sure there is a faster way :)
Hello,
I tried to test Cupoch on Windows 10.
Here is the code
pcd->EstimateNormals(open3d::geometry::KDTreeSearchParamHybrid(radius_normal, MAX_NN));
pcd_gpu->EstimateNormals(cupoch::geometry::KDTreeSearchParamHybrid(radius_normal, MAX_NN));
I guess that the calculation was not run on GPU. But how to make sure it is run on GPU? I already had this line in my code
cupoch::utility::InitializeAllocator();
Hello,
It seems that cupoch v0.1.8 RMM crash with cuda 11.0 on Ubuntu? So what is your suggestion for RMM with cuda 11.0 on Ubuntu 20.04?
Thank you!
import torch
import cupoch as cph
from torch.utils.dlpack import to_dlpack
pcd = cph.geometry.PointCloud()
# this doesn't have a problem x = to_dlpack(torch.ones(10000000, 3).cuda())
# cupoch expects a cuda memory and dlpack can allow cpu memory?
x = to_dlpack(torch.ones(10000000, 3))
pcd.from_points_dlpack(x)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
RuntimeError: transform: failed to synchronize: cudaErrorIllegalAddress: an illegal memory access was encountered
torch 1.7, cuda 11.1, github cupoch (latest master)
Hi,
Instead of RGBD, just wonder it is possible to use marching cubes mesh extraction for xyz point cloud?
Thanks
Hi everyone,
I am so greatly to hear that the libray was able to process 3D point cloud data using CUDA. Furthermore, cupoch is based on the functionality of Open3D.
From this issue: https://github.com/neka-nat/cupoch/issues/3, I know that the libray didn't support either MINGW or MSVC on windows.
However, my app developed with MSVC and ran on windows. Up to now, I use Open3D to implement my requirements on CPU yet. I'm very anxious to speed up my app by running on GPU.
When will windows be supported?
Hello,
First of all I want to say thank you for the amazing work you doing and sharing.
Do you have any plans to integrate open3d implementation of ScalableTSDF or any analogue of it?
Or will it be working with cupoch if I will take scalable tsdf class from cuda branch of open3d and compile it with cupoch (fixing namespaces and names)?
Thanks.
Is there a way to convert a Vector3fVector to a numpy array without going via. a python list? This is much too slow for a large point cloud or image to be usable..
From the example on conversions:
print("---- To list of 1D np.array")
print(pcd.points.cpu())
print("---- To 2D np.array")
print(np.asarray(pcd.points.cpu()))
Currently trying to test this library out in google colab, however I am running into an issue where something seems to be looking for libm.se.6 version BLIBC_2.29.
Running ldd --version shows me the google colab server is running 2.27:
ldd (Ubuntu GLIBC 2.27-3ubuntu1) 2.27
From what i can see 2.27 is standard for ubuntu 18.04 . for this library it is stated that ubuntu 18.04 is supported
Supported platforms
Ubuntu 18.04
Why does it not work with GLIBC 2.27 ?
/usr/local/lib/python3.6/dist-packages/cupoch/__init__.py in <module>()
----> 1 from .cupoch import * # py2 py3 compatible
2 initialize_allocator()
3
4 __version__ = '0.1.3.0'
ImportError: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by /usr/local/lib/python3.6/dist-packages/cupoch/cupoch.cpython-36m-x86_64-linux-gnu.so)
Hi,
Thanks so much for your work.
Do you have any plan implementing the ray casting algorithm to get a depth map / point cloud from the TSDF volume for a given camera pose?
Best regards
Hi,
First of all, thanks for your amazing work. I have got several isues whne compile the project with visual studio. My setup is:
In cupoch_registration my compliation error is:
**- Error calling a host function("isinf ") from a device function("thrust::cuda_cub::cub::AgentReduce< ::thrust::cuda_cub::cub::AgentReducePolicy<(int)256, (int)20, (int)2, ( ::thrust::cuda_cub::cub::BlockReduceAlgorithm)2, ( ::thrust::cuda_cub::cub::CacheLoadModifier)0> , ::thrust::cuda_cub::transform_input_iterator_t<float, ::thrust::counting_iterator<int, ::thrust::use_default, ::thrust::use_default, ::thrust::use_default> , ::_NV_ANON_NAMESPACE::extact_knn_distance_functor> , float *, int, ::thrust::plus > ::ConsumeTile<(int)1, (int)0> ") is not allowed cupoch_registration C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\include\thrust\iterator\iterator_facade.h 171
Error identifier "isinf " is undefined in device code cupoch_registration C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\include\thrust\iterator\iterator_facade.h 171
Error calling a host function("isinf ") from a device function("thrust::cuda_cub::cub::AgentReduce< ::thrust::cuda_cub::cub::AgentReducePolicy<(int)256, (int)20, (int)2, ( ::thrust::cuda_cub::cub::BlockReduceAlgorithm)2, ( ::thrust::cuda_cub::cub::CacheLoadModifier)0> , ::thrust::cuda_cub::transform_input_iterator_t<float, ::thrust::counting_iterator<int, ::thrust::use_default, ::thrust::use_default, ::thrust::use_default> , ::_NV_ANON_NAMESPACE::extact_knn_distance_functor> , float *, int, ::thrust::plus > ::ConsumeTile<(int)1, (int)0> ") is not allowed cupoch_registration C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\include\thrust\iterator\iterator_facade.h 171
Error identifier "isinf " is undefined in device code cupoch_registration C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\include\thrust\iterator\iterator_facade.h 171
Error calling a host function("isinf ") from a device function("thrust::cuda_cub::cub::AgentReduce< ::thrust::cuda_cub::cub::AgentReducePolicy<(int)256, (int)20, (int)2, ( ::thrust::cuda_cub::cub::BlockReduceAlgorithm)2, ( ::thrust::cuda_cub::cub::CacheLoadModifier)0> , ::thrust::cuda_cub::transform_input_iterator_t<float, ::thrust::counting_iterator<int, ::thrust::use_default, ::thrust::use_default, ::thrust::use_default> , ::_NV_ANON_NAMESPACE::extact_knn_distance_functor> , float *, int, ::thrust::plus > ::ConsumeTile<(int)0, (int)0> ") is not allowed cupoch_registration C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\include\thrust\iterator\iterator_facade.h 171
Error identifier "isinf " is undefined in device code cupoch_registration C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\include\thrust\iterator\iterator_facade.h 171
Error calling a host function("isinf ") from a device function("thrust::cuda_cub::cub::AgentReduce< ::thrust::cuda_cub::cub::AgentReducePolicy<(int)256, (int)20, (int)2, ( ::thrust::cuda_cub::cub::BlockReduceAlgorithm)2, ( ::thrust::cuda_cub::cub::CacheLoadModifier)0> , ::thrust::cuda_cub::transform_input_iterator_t<float, ::thrust::counting_iterator<int, ::thrust::use_default, ::thrust::use_default, ::thrust::use_default> , ::_NV_ANON_NAMESPACE::extact_knn_distance_functor> , float *, int, ::thrust::plus > ::ConsumeTile<(int)0, (int)0> ") is not allowed cupoch_registration C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\include\thrust\iterator\iterator_facade.h 171
Error identifier "isinf " is undefined in device code cupoch_registration C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\include\thrust\iterator\iterator_facade.h 171
Error calling a host function("isinf ") from a device function("thrust::cuda_cub::cub::LoadDirectStriped<(int)256, float, (int)20, ::thrust::cuda_cub::transform_input_iterator_t<float, ::thrust::counting_iterator<int, ::thrust::use_default, ::thrust::use_default, ::thrust::use_default> , ::_NV_ANON_NAMESPACE::extact_knn_distance_functor> > ") is not allowed cupoch_registration C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\include\thrust\iterator\iterator_facade.h 171
Error identifier "isinf " is undefined in device code cupoch_registration C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\include\thrust\iterator\iterator_facade.h 171**
on the other hand at cupoch_utility i have other compile error:
**- Error asm operand type size(8) does not match type/size implied by constraint 'r' cupoch_utility E:\wavelet\cupoch\third_party\eigen\Eigen\src\Core\GenericPacketMath.h 429
how can i solve this errors? Thanks for all ;)
Hi, I am interesting with cupoch to use the library in Jetson Nano.
Do you have any plan to port the cupoch for ROS2 environment?
Thank you.
vis = cph.visualization.Visualizer()
vis.create_window(window_name='Test')
vis.add_geometry(mesh)
vis.run()
Hello,
When I tried cupoch, I got the following build error
D:\git\cupoch\install\include\cupoch\kinematics\kinematic_chain.h:23: error: C1083: Cannot open include file: 'urdf_parser/urdf_parser.h': No such file or directory
Hello,
Is this matcaps rendering interesting to add to cupoch?
I think the biggest advantage for matcaps rendering is it is "cheap" to achieve and it looks very attractive!
Thank you!
I compile cupoch on RTX3060 ,cuda11.0,win10,vs2019,cmake3.20.0,but compile failed.The error is as follows :
calling a host function("__roundf") from a device function("thrust::cuda_cub::__transform::unary_transform_f< ::thrust::detail::normal_iterator< ::thrust::device_ptr > , ::thrust::detail::normal_iterator< ::thrust::device_ptr > , ::thrust::cuda_cub::__transform::no_stencil_tag, ::, ::thrust::cuda_cub::__transform::always_true_predicate> ::operator () ") is not allowed cupoch_geometry C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\include\thrust\system\cuda\detail\transform.h 119
identifier "__roundf" is undefined in device code cupoch_geometry C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\include\thrust\system\cuda\detail\transform.h 119
“........\src\cupoch\geometry\trianglemesh.cu;........\src\cupoch\geometry\trianglemesh_factory.cu;........\src\cupoch\geometry\voxelgrid.cu;........\src\cupoch\geometry\voxelgrid_factory.cu”的自定义生成已退出,代码为 1。 cupoch_geometry C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets 240
I have tried for a long time and I don't know how to solve it. Thank you for your reply!
#12
Further reduce the size of TSDF voxel.
はじめまして.
realsenseでkinectfusionを実行したいのですがubuntuにて実行した場合下記のようなエラーが出てしまいます.
何か対策案はありますでしょうか?
エラー文が何も出ないのでprintを用いて文章が表示されるのかという事を各行で行った際に84行目のコードが実行されないようです.
infu = cph.kinfu.Pipeline(intrinsic, cph.kinfu.KinfuParameters())
[環境]
・ubuntu18.04
・windows visual studio
・cuda-10
ubuntuのネイティブで実装した際には下記のエラーが発生してしまいました.
Traceback (most recent call last):
File "benchmarks.py", line 4, in
import cupoch as cph
File "/home/nvidia/.pyenv/versions/3.7.0/lib/python3.7/site-packages/cupoch/init.py", line 1, in
from .cupoch import * # py2 py3 compatible
ImportError: CUDA error at: /home/runner/work/cupoch/cupoch/third_party/rmm/include/rmm/mr/device/per_device_resource.hpp:134: cudaErrorNoDevice no CUDA-capable device is detected
Hi @neka-nat ,
I'm learning your fast global registration code. I noticed that you are using brute force matching when matching FPFH features between src cloud and dst cloud to establish correspondence. Why aren't you using kdtree? Is build and searching kdtree slower than brute force matching on GPU?
Thanks in advance.
Hello.
I decided to use cupoch in our project, since we needed to couple it with vcpkg. First idea was just to compile it seperatly.
But since cupoch have it's own dependencies it's conflicted with same dependecies in the vcpkg also in some cases like flann cupoch use minimal edited version.
So we decieded to start to change the build system of cupoch and make it possible to integrate it in the vcpkg.
I will be happy to share it here and improve it, currently it's not perfectly implemented but it's work for us.
When the posegraph is relatively large, using globaloptimization will be slower, so can globaloptimization be accelerated by cuda?
I test sample_points_uniformly function in both open3d and cupoch. cupoch is slower than open3d. In which kind of situations gpu could make the calculation faster than cpu?
For 50000 points:
cupoch: 0.04s
open3d: 0.002s
For 5000000 points:
cupoch: 3.5s
open3d: 0.2s
Hello,
Your Cupoch is really a useful tools.
when I run the example clustering.py
, it gives me
Traceback (most recent call last): File "my_clustering.py", line 36, in <module> print("%s has %d points" % (pcl_name, np.asarray(pcl.points).shape[0])) IndexError: tuple index out of range
It seems that cupoch.cupoch.device_vector_vector3f can not convert to numpy array?
By the way my Os is Jectson Pack 4.2 with ubuntu18.04, and Cupoch is build from source with python2.7 binding.
Could you give me some advice?
Thank you.
Hello @neka-nat ,
Thank you for the great job you are doing with this project.
As I can observe from the code at current stage there is only full point cloud extraction possible from TSDF.
Are there any plans adding partial extraction by basic geometry figures such as frustum sphere or cube?
Thanks in advance.
Hello, I want to compile Cupoch to generate the library on the windows system, but there is a memory manager allocation problem when calling it. Have you tried it on the window?
Hi, Thanks a lot for your amazing work. Could I ask, did you test the collision checking part?
Currently I wanna test the collision detection given two point clouds or meshes and corresponding translation matrixes. If you have the test code for it, that will be helpful. Thanks again. ;)
Best regard,
lei
I am trying to run the script rgbd_integration
in examples\python\advanced.
But when the geometry is visualized, I only see a window with a black screen, and in the console I find the following errors:
[Cupoc ERROR] [CreateCoordinateFrame] size <= 0
[Cupoc ERROR] [CreateSphere] radius <= 0
[Cupoc ERROR] [CreateArrow] cylinder_radius <= 0
[Cupoc ERROR] [CreateArrow] cone_radius <= 0
[Cupoc ERROR] [CreateArrow] cylinder_height <= 0
[Cupoc ERROR] [CreateArrow] cone_height <= 0
[Cupoc ERROR] [CreateCylinder] radius <= 0
[Cupoc ERROR] [CreateCylinder] height <= 0
[Cupoc ERROR] [CreateCone] radius <= 0
[Cupoc ERROR] [CreateCone] height <= 0
[Cupoc ERROR] [CreateArrow] cylinder_radius <= 0
[Cupoc ERROR] [CreateArrow] cone_radius <= 0
[Cupoc ERROR] [CreateArrow] cylinder_height <= 0
[Cupoc ERROR] [CreateArrow] cone_height <= 0
[Cupoc ERROR] [CreateCylinder] radius <= 0
[Cupoc ERROR] [CreateCylinder] height <= 0
[Cupoc ERROR] [CreateCone] radius <= 0
[Cupoc ERROR] [CreateCone] height <= 0
[Cupoc ERROR] [CreateArrow] cylinder_radius <= 0
[Cupoc ERROR] [CreateArrow] cone_radius <= 0
[Cupoc ERROR] [CreateArrow] cylinder_height <= 0
[Cupoc ERROR] [CreateArrow] cone_height <= 0
[Cupoc ERROR] [CreateCylinder] radius <= 0
[Cupoc ERROR] [CreateCylinder] height <= 0
[Cupoc ERROR] [CreateCone] radius <= 0
[Cupoc ERROR] [CreateCone] height <= 0
Tested on two Windows 10 machines with CUDA 11.1 installed (Python 3.8).
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.