Jetson TX1 ボード (Tegra R24.1 用の 32 ビット Linux) に ZED SDK バージョン 1.0.0b をインストールしました。pcl::IntegralImageNormalEstimation で使用すると、奇妙な理由でほとんどの場合クラッシュすることがわかりました。
次の簡単なプログラムに絞り込むことができました。CMakeLists.txt
cmake_minimum_required(VERSION 2.8.7)
project(zed_test)
IF(NOT CMAKE_BUILD_TYPE)
SET(CMAKE_BUILD_TYPE Release)
ENDIF(NOT CMAKE_BUILD_TYPE)
SET(CUDA_VERSION "7.0")
find_package(CUDA ${CUDA_VERSION} REQUIRED)
find_package(ZED 1.0 REQUIRED)
find_package(PCL REQUIRED)
include_directories(
${CUDA_INCLUDE_DIRS}
${ZED_INCLUDE_DIRS}
${PCL_INCLUDE_DIRS}
)
link_directories(${ZED_LIBRARY_DIR})
link_directories(${CUDA_LIBRARY_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(-std=c++11)# -m64) #-Wall)
add_executable(zed_test zed_test.cpp)
target_link_libraries(
zed_test
${ZED_LIBRARIES}
${CUDA_LIBRARIES} ${CUDA_nppi_LIBRARY} ${CUDA_npps_LIBRARY}
${PCL_LIBRARIES}
)
zed_test.cpp:
#include <cstdio>
#include <thread>
#include <pcl/point_cloud.h>
#include <pcl/point_types.h>
#include <pcl/features/integral_image_normal.h>
#include <zed/Camera.hpp>
int main(int argc, char **argv) {
std::cout << "Started\n";
//(1)
typedef pcl::IntegralImageNormalEstimation<pcl::PointXYZRGB, pcl::Normal> NormalEstimator;
NormalEstimator::Ptr ne_(new NormalEstimator);
//(2)
sl::zed::InitParams zed_params;
zed_params.unit = sl::zed::UNIT::METER;
zed_params.coordinate = sl::zed::COORDINATE_SYSTEM::RIGHT_HANDED;
zed_params.mode = sl::zed::MODE::PERFORMANCE;
zed_params.verbose = true;
std::unique_ptr<sl::zed::Camera> zed(new sl::zed::Camera(sl::zed::HD720, 30));
sl::zed::ERRCODE err = sl::zed::ERRCODE::ZED_NOT_AVAILABLE;
while (err != sl::zed::SUCCESS) {
err = zed->init(zed_params);
std::cout << sl::zed::errcode2str(err);
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
}
//(3)
std::cout << "\nPassed.\n";
return 0;
}
リリースに組み込まれて起動すると、頻繁にクラッシュし (3 回の連続実行で約 1 回)、次の出力が表示されます。
Started
ZED SDK >> (Init) Best GPU Found : GM20B , ID : 0
ZED SDK >> (Init) Disparity mode has been set to PERFORMANCE
ZED SDK >> (Init) Creating ZED GPU mem...
ZED SDK >> (Init) Starting Self-Calibration in background...
ZED SDK >> (Init) Done...
zed_test: /usr/local/include/eigen3/Eigen/src/SVD/JacobiSVD.h:632: const MatrixVType& Eigen::JacobiSVD<MatrixType, QRPreconditioner>::matrixV() const [with _MatrixType = Eigen::Matrix<double, 3, 3>; int QRPreconditioner = 2; Eigen::JacobiSVD<MatrixType, QRPreconditioner>::MatrixVType = Eigen::Matrix<double, 3, 3>; typename _MatrixType::Scalar = double]: Assertion `computeV() && "This JacobiSVD decomposition didn't compute V. Did you ask for it?"' failed.
SUCCESSThe program has unexpectedly finished.
(行 (3) に到達する前に停止したことに注意してください) pcl::IntegralImageNormalEstimation の作成 ((1) の下の行) または zed カメラ ((2) の下の行) のいずれかをコメント オフすると、クラッシュは発生しません。それらを交換しても、クラッシュはまだあります。
誰かが問題を抱えていますか?stereolabs.com の誰かが試してみる回避策のヒントを教えてくれますか?