Open3d: ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования Open3D с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ PCL ΠΈ ROS

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 26 июн. 2018  Β·  14ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: intel-isl/Open3D

ΠŸΡ€ΠΈΠ²Π΅Ρ‚,
Π― Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Open3D с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ PCL ΠΈ ROS. Π£ ΠΊΠΎΠ³ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΊ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² pcl ΠΎΠ±Π»Π°ΠΊΠ° Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΈΠ»ΠΈ сСтку pcl ΠΈΠ· структуры Π΄Π°Π½Π½Ρ‹Ρ… Open3D?
Бпасибо

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

@ ipa-mah Π΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ эти Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ссылки Π²ΠΎ врСмя ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ компиляции Open3D ΠΈΠ· источника Π²Ρ‹ устанавливаСтС Ρ„Π»Π°Π³ сборки cmake

-DGLIBCXX_USE_CXX11_ABI=ON

Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€

cmake -DBUILD_EIGEN3=ON -DBUILD_GLEW=ON -DBUILD_GLFW=ON -DBUILD_JSONCPP=ON -DBUILD_PNG=ON -DGLIBCXX_USE_CXX11_ABI=ON -DPYTHON_EXECUTABLE=/usr/bin/python ..

Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ всСму ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΡΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ области catkin с ROS.

ВсС 14 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ .pcd, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся основным Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ PCL.
Для сСтки ΠΈ PCL, ΠΈ Open3D ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ .ply, Ρ‡Ρ‚ΠΎ довольно стандартно.

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ это: http://www.open3d.org/docs/tutorial/Basic/file_io.html

Однако Ρƒ мСня Π½Π΅Ρ‚ большого ΠΎΠΏΡ‹Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ROS. Π­Ρ‚ΠΎ извСстная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: Open3D Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ интСрфСйса с ROS. ΠœΡ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅ΠΌ Π΅Π΅ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ. Π­Ρ‚ΠΎ Π² нашСй Π΄ΠΎΡ€ΠΎΠΆΠ½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚Π΅.

благодаря

МнС ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Π»Π°ΠΊΠΎ Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΏΡƒΡ‚Π΅ΠΌ записи ΠΈ чтСния ΠΈΠ· / dev / shm, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Ρ„Π°ΠΉΠ»ΠΎΠΌ, хранящимся Π² ΠžΠ—Π£. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, это Π½Π΅ Π»ΡƒΡ‡ΡˆΠΈΠΉ способ, Π½ΠΎ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

void point_cloud_callback(const sensor_msgs::PointCloud2::ConstPtr& msg)
{
    auto start = std::chrono::steady_clock::now();
    pcl::PCLPointCloud2 pcl_cloud;
    pcl_conversions::toPCL(*msg, pcl_cloud);
    pcl::PLYWriter pclWrite;
    pclWrite.writeBinary("/dev/shm/point_cloud.ply", pcl_cloud);
    open3d::geometry::PointCloud pc;
    pc = *open3d::io::CreatePointCloudFromFile("/dev/shm/point_cloud.ply","ply").get();
    auto end = std::chrono::steady_clock::now();
    std::cout << "Elapsed time in nanoseconds : "
         << std::chrono::duration_cast<std::chrono::nanoseconds>(end - start).count()
         << " ns" << std::endl;
}

Π­Ρ‚ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠΊΠΎΠ»ΠΎ 244 мс Π½Π° ΠΌΠΎΠ΅ΠΌ i7-8700 ΠΏΡ€ΠΈ 4,3 Π“Π“Ρ†.

@ airfield20 ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π»ΠΈ Π²Π°ΠΌ вмСстС ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ROS + open3d? Π‘Π΅Π· Ρ„Π»Π°Π³Π° -D_GLIBCXX_USE_CXX11_ABI=0 CXX наш ΠΊΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ Open3D, Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Π½ΠΎ с Π½ΠΈΠΌ наш ΠΊΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ ROS, Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ - Π²Ρ‹ Π½Π΅ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡŒ с этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ?

@ finger563 Π― Π½Π΅

@ airfield20 ΠΌΡ‹ Ρ‚ΠΎΠΆΠ΅ это сдСлали. Однако, Ссли ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ open3d Π² качСствС зависимости ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· Π½Π°ΡˆΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ROS, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π½Π΅ΠΏΠΎΠ»Π½ΠΎΠ΅ связываниС - Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ CreateVisualizerWindow( ... ) reference, ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ символами (я ΡΡ‡ΠΈΡ‚Π°ΡŽ, ΠΈΠ·-Π·Π° отсутствия совмСстимости строк, обСспСчиваСмой Ρ„Π»Π°Π³ΠΎΠΌ I упомянутоС Π²Ρ‹ΡˆΠ΅). Π’ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ… говорится, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ${Open3D_CXX_FLAGS} ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат этот Ρ„Π»Π°Π³, Π½ΠΎ использованиС этого Ρ„Π»Π°Π³Π° ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ ros Π½Π΅ связываСтся.

НСваТно - Π½Π°ΠΌ просто Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠ΅Ρ€Π΅ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Open3D ΠΈ явно ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ этот Ρ„Π»Π°Π³ ΠΏΡ€ΠΈ создании Ρ„Π°ΠΉΠ»ΠΎΠ² сборки с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ cmake - ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ этот Ρ„Π»Π°Π³ Π±Ρ‹Π» установлСн Π½Π° 0, Π½ΠΎ open3d ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ интСгрируСтся с ROS, Ссли ΠΌΡ‹ установим этот Ρ„Π»Π°Π³ Π½Π° 1.

@ finger563 ΠΊΠ°ΠΊ Π²Ρ‹ с Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ

Π£ нас Π΅ΡΡ‚ΡŒ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅Ρ†ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π³Π»ΡƒΠ±ΠΈΠ½Ρ‹ + rgb ( sensor_msgs/Image ) Π² ΠΎΠ±Π»Π°ΠΊΠΎ Ρ‚ΠΎΡ‡Π΅ΠΊ, Π° Π·Π°Ρ‚Π΅ΠΌ создаСт сСтку воксСлСй с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ open3d. ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это ΠΎΠ΄ΠΈΠ½ ΡƒΠ·Π΅Π», ΠΈ Π½Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ ΠΈ клавиш, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ явно ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Ρ†ΠΈΠΊΠ»ΠΎΠΌ событий. Π’ΠΎ ΠΆΠ΅ самоС Π²Π΅Ρ€Π½ΠΎ ΠΈ Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ C ++, Π½Π°Π΄ Ρ‡Π΅ΠΌ ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ ΠΈ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡŒ с этим Ρ€Π°Π½Π΅Π΅.

Π― Ρ‚Π°ΠΊΠΆΠ΅ пытался ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Open3D с ROS нСсколько нСдСль Π½Π°Π·Π°Π΄, Π½ΠΎ Π±Π΅Π·ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ. Π― помню, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ зависимостСй Open3D ΠΈ ROS, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ приводят ΠΊ undefined reference Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ я Ρ€Π΅ΡˆΠΈΠ» ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Open3D ΠΈΠ· ROS, Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свои собствСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Open3D.

@ ipa-mah Π΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ эти Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ссылки Π²ΠΎ врСмя ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ компиляции Open3D ΠΈΠ· источника Π²Ρ‹ устанавливаСтС Ρ„Π»Π°Π³ сборки cmake

-DGLIBCXX_USE_CXX11_ABI=ON

Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€

cmake -DBUILD_EIGEN3=ON -DBUILD_GLEW=ON -DBUILD_GLFW=ON -DBUILD_JSONCPP=ON -DBUILD_PNG=ON -DGLIBCXX_USE_CXX11_ABI=ON -DPYTHON_EXECUTABLE=/usr/bin/python ..

Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ всСму ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΡΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ области catkin с ROS.

ΠœΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ выпустили open3d_ros Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ прСобразования ΠΎΠ±Π»Π°ΠΊΠΎΠ² Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΈΠ· ROS Π² Open3D ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚.

Π― Ρ‚Π°ΠΊΠΆΠ΅ пытался ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Open3D с ROS нСсколько нСдСль Π½Π°Π·Π°Π΄, Π½ΠΎ Π±Π΅Π·ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ. Π― помню, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ зависимостСй Open3D ΠΈ ROS, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ приводят ΠΊ undefined reference Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ я Ρ€Π΅ΡˆΠΈΠ» ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Open3D ΠΈΠ· ROS, Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свои собствСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Open3D.

Π£ мСня такая ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Π²Ρ‹ Π΅Π΅ Ρ€Π΅ΡˆΠΈΠ»ΠΈ?

Π£ мСня такая ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Π²Ρ‹ Π΅Π΅ Ρ€Π΅ΡˆΠΈΠ»ΠΈ?

Π—Π΄Π΅ΡΡŒ Ρ‚Π° ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°.

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ