ΠΡΠΈΠ²Π΅Ρ,
Π― Ρ
ΠΎΡΠ΅Π» Π±Ρ Π·Π½Π°ΡΡ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Open3D Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ PCL ΠΈ ROS. Π£ ΠΊΠΎΠ³ΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ Π΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΊ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π² pcl ΠΎΠ±Π»Π°ΠΊΠ° ΡΠΎΡΠ΅ΠΊ ΠΈΠ»ΠΈ ΡΠ΅ΡΠΊΡ pcl ΠΈΠ· ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ
Open3D?
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ
Π’Π΅ΠΊΡΡΠΈΠΉ Π²Π²ΠΎΠ΄-Π²ΡΠ²ΠΎΠ΄ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΎΡΠΌΠ°Ρ .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.
Π£ ΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Π²Ρ Π΅Π΅ ΡΠ΅ΡΠΈΠ»ΠΈ?
Π£ ΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Π²Ρ Π΅Π΅ ΡΠ΅ΡΠΈΠ»ΠΈ?
ΠΠ΄Π΅ΡΡ ΡΠ° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°.
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
@ ipa-mah Π΄Π°, ΡΡΠΎΠ±Ρ ΠΎΠ±ΠΎΠΉΡΠΈ ΡΡΠΈ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Open3D ΠΈΠ· ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° Π²Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΠ΅ ΡΠ»Π°Π³ ΡΠ±ΠΎΡΠΊΠΈ cmake
Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ
ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠ²ΡΠ·ΡΠ²Π°ΡΡ Π² ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ catkin Ρ ROS.