# ros2_rgbd **Repository Path**: ai_robot_cube/ros2_rgbd ## Basic Information - **Project Name**: ros2_rgbd - **Description**: ubuntu 22.04 hik 深度相机 SDK_Mv3dRgbd_Linux_V1.4.0.3_250213_1 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-11 - **Last Updated**: 2025-03-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 安装RGB-D驱动: 参考:SDK_Mv3dRgbd_Linux_V1.4.0.3_250213_1\Res\setup ## 根据ROS2发行版替换 (如humble、foxy) sudo apt install ros--camera-info-manager ## 安装 image_pipeline 全套工具 sudo apt install ros--image-pipeline # 前置条件: [CMake (3.16.1及以上版本)](https://cmake.org/download/) [OpenCV (4.2.0及以上版本)](https://opencv.org/releases/) [PCL (1.10.1及以上版本)](https://github.com/PointCloudLibrary/pcl/releases) [ROS2 (Foxy及以上版本)] # Colcon 编译: - 1. 创建工作目录 ------------------------------------------------------ mkdir -p ~/project_ws/src ------------------------------------------------------ - 2. 将示例程序复制到工作目录 cp -r ./mv3d_rgbd_ros2 ~/project_ws/src cp -r ./mv3d_rgbd_ros2_interface ~/project_ws/src ------------------------------------------------------ - 3. 进入工作目录并编译 cd ~/project_ws colcon build ------------------------------------------------------ - 4. 打开终端设置环境 source ./install/setup.bash ------------------------------------------------------ - 5. 在当前终端下启动程序 ----a. 直接启动 ros2 run mv3d_rgbd_ros2 hik_camera_image_pub ----b. 通过launch文件启动 ros2 launch mv3d_rgbd_ros2 capture_and_save ----c. 通过launch文件启动,并动态传参 ros2 launch mv3d_rgbd_ros2 connect_by_serial_number.xml cam_sn1:=00DA4347352 ----d. 动态传参 ros2 launch mv3d_rgbd_ros2 obtain_point_cloud.xml pd_type:=2 # 注意事项: 如果遇到libusb相关报错,可尝试将"/opt/MVS/lib/XXX/"路径下的libusb.so*备份后删除,再进行编译 点云客户端启动时可指定点云类型,支持: 1--普通点云; 2--带法向量的点云; 3--纹理点云; 4--带法向量的纹理点云。 点云客户端默认发送普通点云,指定点云类型的客户端启动如下: ros2 run mv3d_rgbd_ros2 hik_camera_point_cloud_client --ros-args -p pd_type:=3 Prerequisites: [CMake (version 3.16.1 or above)](https://cmake.org/download/) [OpenCV (version 4.2.0 or above)](https://opencv.org/releases/) [PCL (version 1.10.1 or above)](https://github.com/PointCloudLibrary/pcl/releases) [ROS2 (version Foxy or above)] Colcon build: 1. Create workspace ------------------------------------------------------ mkdir -p ~/project_ws/src ------------------------------------------------------ 2. Copy ros2 demo to workspace cp -r ./mv3d_rgbd_ros2 ~/project_ws/src cp -r ./mv3d_rgbd_ros2_interface ~/project_ws/src ------------------------------------------------------ 3. Switch to workspace and build program cd ~/project_ws colcon build ------------------------------------------------------ 4. Open terminal and set environment source ./install/setup.bash ------------------------------------------------------ 5. Run on current terminal ----a. Run directly ros2 run mv3d_rgbd_ros2 hik_camera_image_pub ----b. Run by launch file ros2 launch mv3d_rgbd_ros2 capture_and_save ----c. Run by launch file and set param ros2 launch mv3d_rgbd_ros2 connect_by_serial_number cam_sn1:=DA12345678 Remark: If you encounter an error related to libusb, you can try to back up and delete the library files under the specified path before conpiling 1--common point clouds; 2--point clouds with normals; 3--textured point clouds; 4--textured point clouds with normals; The default point cloud type send by the client is a common point cloud. The startup methods of the specified point cloud client are as follows: ros2 run mv3d_rgbd_ros2 hik_camera_point_cloud_client --ros-args -p pd_type:=3 ----------------------------- PCL(Point Cloud Library)是用于处理点云数据的开源库,包含各种算法和工具,广泛应用于机器人、计算机视觉等领域。以下是对代码中四种`PointCloud`含义的通俗易通的介绍: ### 1. `pcl::PointXYZ` - **含义**:表示一个包含三维坐标信息(x、y、z)的点。 - **通俗理解**:就像在三维空间中确定一个点的位置,例如用激光雷达扫描物体时,每个扫描点都有一个位置,这个位置就是`pcl::PointXYZ`。 - **代码中的作用**:在代码中,当处理不带颜色或法向量信息的点云时,使用`pcl::PointXYZ`来存储点云数据。例如,如果只需要知道点的位置而不需要其他信息,就可以用这种类型。 ### 2. `pcl::PointNormal` - **含义**:表示一个包含三维坐标信息(x、y、z)和法向量信息(nx、ny、nz)的点。 - **通俗理解**:除了知道点的位置,还知道该点所在表面的朝向。例如,在三维重建中,法向量可以帮助确定表面的光滑程度和方向。 - **代码中的作用**:在代码中,当需要处理包含法向量信息的点云时,使用`pcl::PointNormal`。例如,在进行表面法线估计或需要法向量进行进一步处理时,就会用到这种类型。 ### 3. `pcl::PointXYZRGB` - **含义**:表示一个包含三维坐标信息(x、y、z)和颜色信息(r、g、b)的点。 - **通俗理解**:就像在三维空间中确定一个点的位置,同时知道该点的颜色。例如,使用RGB-D相机获取的点云数据,既包含位置信息也包含颜色信息。 - **代码中的作用**:在代码中,当处理彩色点云数据时,使用`pcl::PointXYZRGB`。例如,如果需要根据颜色信息进行点云分割或可视化,就会用到这种类型。 ### 4. `pcl::PointXYZRGBNormal` - **含义**:表示一个包含三维坐标信息(x、y、z)、颜色信息(r、g、b)和法向量信息(nx、ny、nz)的点。 - **通俗理解**:这是最全面的一种点类型,包含了位置、颜色和法向量信息。例如,在复杂的三维场景中,既需要颜色信息进行可视化,又需要法向量信息进行表面分析。 - **代码中的作用**:在代码中,当需要处理同时包含颜色和法向量信息的点云时,使用`pcl::PointXYZRGBNormal`。例如,在进行彩色点云的表面重建或特征提取时,就会用到这种类型。 ### 总结 这四种`PointCloud`类型在PCL中用于表示不同维度和用途的点云数据: - `pcl::PointXYZ`:只包含位置信息。 - `pcl::PointNormal`:包含位置和法向量信息。 - `pcl::PointXYZRGB`:包含位置和颜色信息。 - `pcl::PointXYZRGBNormal`:包含位置、颜色和法向量信息。 在代码中,根据具体的需求选择合适的点云类型,以便更高效地处理和分析点云数据。