# 电科2023夏令营视觉组学习内容5&6-PCL&ROS

**URL:** <https://rcbbs.top/t/topic/893>\
**Category:** 电子科技大学\
**Tags:** toc, 2023, 视觉\
**Created:** [2024 年8 月 14 日 07:47 UTC](https://rcbbs.top/t/topic/893 "2024-08-14T07:47:53Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![zzzing](https://rcbbs.top/user_avatar/rcbbs.top/zzzing/32/136_2.png) [@zzzing](https://rcbbs.top/u/zzzing)\
**Post date:** [2024 年8 月 14 日 07:47 UTC](https://rcbbs.top/t/topic/893/1 "2024-08-14T07:47:54Z")

</div>

# LIMITI\_SUMMER\_CAMP\_CV

github：[GitHub - Zzzingzzz/LIMITI\_SUMMER\_CAMP\_CV: 2023电子科技大学LIMITI机器人队夏令营视觉组线上学习内容](https://github.com/Zzzingzzz/LIMITI_SUMMER_CAMP_CV.git)

2023电子科技大学LIMITI机器人队夏令营视觉组线上学习内容，基于2022年视觉组经验编写

# 夏令营培训5——PCL

PCL库(全称[Point Cloud Library](https://pointclouds.org/))，是一个重要的点云处理库，而点云又是雷达等常用的数据格式，故在此介绍此库。

安装PCL请见：安装pcl

## 1. 任务1——PCL数据类型和可视化

学习了解PCL的PointCloud和几个主要的数据类型（主要是PointXYZ和PointXYZRGB）

读取PCL源码中随便一个PCD文件（或在附近中的five\_people.pcd），使用`boost::shared_ptr<pcl::visualization::PCLVIsualizer>`将点云进行可视化

## 2. 任务2——点云聚类算法

聚类是点云中常见的算法，主要用以将离散的点云划分为不同的物体

学习kmeans和dbscan等几种聚类算法，了解其原理并能调用PCL库中有关函数进行点云聚类

## 3. 任务3——点云滤波

滤波也是点云操作中常用的算法，可以减少不必要的点云噪点或下采样减少点云数据

见[PCL——点云滤波](https://blog.csdn.net/sinat_41837954/article/details/100306836?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522172362067416800213028105%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=172362067416800213028105&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-100306836-null-null.142%5Ev100%5Epc_search_result_base4&utm_term=pcl%E7%82%B9%E4%BA%91%E6%BB%A4%E6%B3%A2&spm=1018.2226.3001.4187)

## \*3. 任务4——查阅SLAM

SLAM是视觉、雷达等场景建模、机器人定位的一类重要算法

在此仅作介绍，请自行查阅SLAM大致的功能、算法

# 夏令营培训6——ROS

**注意** ：

- ROS分为ROS1和ROS2，若无特殊说明ROS通常指代ROS1
- 在此重点介绍ROS1的使用，ROS2还太新且不兼容ROS1
- ubuntu20.04及以下的版本可以使用ROS1，且安装时注意不同的ubuntu版本对应着不同的ros版本

## ROS的安装

此处给出我常用的ros安装方法，可能依据个人电脑环境不同而有所区别：[ubuntu20.04 ros-noetic](https://blog.csdn.net/qq_44339029/article/details/120579608)

## ROS的学习

ros的学习参考B站古月居——ROS入门21讲  
【【古月居】古月·ROS入门21讲 | 一学就会的ROS机器人入门教程】 [https://www.bilibili.com/video/BV1zt411G7Vn/?share\_source=copy\_web&vd\_source=f8e9d1f5048ae3425353a6f62b3177e7](https://www.bilibili.com/video/BV1zt411G7Vn/?share_source=copy_web&vd_source=f8e9d1f5048ae3425353a6f62b3177e7)

## \*任务1——图像

利用opencv捕获图像，使用ros发布并订阅该图像消息

## \*任务2——点云

启动雷达功能包，订阅该雷达发布的点云消息

# PCL安装

pcl是常见的C++点云库，以下介绍pcl的安装方法

## 安装pcl库的一些依赖

```auto
sudo apt-get update  
sudo apt-get install git build-essential linux-libc-dev
sudo apt-get install cmake cmake-gui
sudo apt-get install libusb-1.0-0-dev libusb-dev libudev-dev
sudo apt-get install mpi-default-dev openmpi-bin openmpi-common 
sudo apt-get install libflann-dev
sudo apt-get install libeigen3-dev
sudo apt-get install libboost-all-dev
sudo apt-get install libvtk7-dev
sudo apt-get install libqhull* libgtest-dev
sudo apt-get install freeglut3-dev pkg-config
sudo apt-get install libxmu-dev libxi-dev
sudo apt-get install mono-complete

```

可能会存在一些过期或无效版本，可根据终端提示根据自己情况下载

## 从github 下载pcl

```auto
git clone https://github.com/PointCloudLibrary/pcl.git 

```

## 编译安装

推荐使用cmake-gui编译，可自己选择需要编译的项目进行编译，如cuda等

 ![image](https://rcbbs.top/uploads/default/original/1X/15c60620173a0adb7502229f95e8617910600451.png)

点击Configure配置 和 Generate生成后，即可完成配置

进入build文件夹编译安装

```auto
cd build
make -j4
sudo make install

```

## 测试安装结果

切换到pcl安装目录，找一个点云pcd文件，输入以下代码查看

```auto
pcl_viewer model.pcd

```

若正常显示点云文件，即表示安装成功
