目录

配置PCL开发环境到Virtualbox Ubuntu18.04虚拟机

写在前面

Why Ubuntu

  • Point Cloud Library也可以在Windows中安装使用,但是在Ubuntu中安装配置比较方便,不需要像在Windows上一样手动添加到系统环境中,不容易出现错误,且网上可参考内容较多,因此我个人选择用Ubuntu。当然,Ubuntu的配置也会遇到问题。自行取舍。

  • Ubuntu是Linux的一个发行版。有完善的图形系统界面,使用较为友好。

  • Ubuntu内置了官方的包管理器,可以方便快捷地下载安装很多软件及大型项目编译好的包,节省了自己下载编译及安装管理的时间、存储空间和精力。

  • Ubuntu中设置文件位置、软件包文件储存位置等都是一致的。我们在引用库文件、调整设置时,可以比较容易在网上找到相关内容的参考,且不易产生错误。

  • 许多Point Cloud Library项目开发环境都是在Ubuntu中,使用Ubuntu可以方便我们的环境与多数项目保持一致,方便直接参照项目教程运行项目。

  • 直接使用CMakeLists.txt和cmake指令编译PCL项目,不用像在Visual Studio上一样修改大量的设置。

Why 虚拟机

经常可以看到,一些有用的项目指定了运行系统为Linux,而我们日常使用的电脑系统通常为Windows或macOS。使用虚拟机即在我们现有的系统中再创建一个虚拟的电脑,我们可以在其中装需要的系统来使用指定系统的项目,免去了另外专门购置一台电脑的烦恼。

在参考其他人的项目时,往往会看到里面注明了运行环境,如Ubuntu16.04Ubuntu18.04等,如果直接在未经测试的系统版本环境上使用这些项目,有时会出现难以预料的未知错误。创建多个虚拟机,在不同虚拟机中配置不同的系统,方便我们保持系统环境与项目要求的相一致,减少不明bug。

当然,虚拟机也会带来一些内部性能下降问题和硬件通讯不便的问题,不过在普通的工作学习中不会有太大感觉。

VirtualBox虚拟机管理器的安装

安装包下载

本次教程采用的虚拟机管理器为VirtualBox。VirtualBox是一个比较常用的开源免费的虚拟机管理器,功能基本满足常见的需求。

官网下载地址在下面,可以自行根据所使用系统下载安装包,Windows选择Windows hosts,macOS选择OS X hosts。

https://www.virtualbox.org/wiki/Downloads

演示的安装包版本为VirtualBox 6.1.18

Windows安装步骤

双击打开安装包,点下一步

image-20210602203152966

点击浏览,自行选择安装位置。功能全选或保持默认即可。完成后点下一步。

image-20210602203512793

注册文件关联建议选择,其他保持默认或根据需要自行选择。点下一步。

image-20210602203627747

点“是”,开始安装。等待安装完成。

image-20210602203824757

安装完成后,打开

image-20210602211824815
就能进入VirtualBox管理器界面。

image-20210603111026981

在虚拟机中安装Ubuntu18.04

比较多的Point Cloud Library项目都是在Ubuntu18.04上开发的,因此建议直接使用18.04保持环境一致性,不要还没入门就在处理bug上纠结。我在Ubuntu20.04中使用一些Ubuntu18.04开发的项目时就出现了错误,于是转用18.04。

其他版本的Ubuntu安装过程大同小异,也可以参考下面的步骤。

Ubuntu-desktop镜像下载

Ubuntu18.04官方下载地址 https://releases.ubuntu.com/18.04/

可以直接点击ubuntu-18.04.5-desktop-amd64.iso下载,也可以下载ubuntu-18.04.5-desktop-amd64.iso.torrent种子使用BT下载。直接下载速度可能较慢,而作为热门资源使用BT下载可能较快。

注意下载desktop版的镜像,不要用server的。

Ubuntu最新版的下载地址在 https://ubuntu.com/download/desktop 。如果想自己学习尝试也可以下载使用试试。

修改虚拟机存储位置(可选)

虚拟机需要使用较多的存储空间,我运行PCL项目使用的虚拟机占用了21.3G的空间,如果使用快照功能则所需空间更大。

因此,建议把虚拟机存储位置移动到空间较为充足的位置。

点击管理全局设定

image-20210602213235372

默认虚拟电脑位置里点其它,自行选择喜欢的存储空间充足的位置。点OK保存。

image-20210602213418022

新建虚拟电脑

点击控制新建。或工具新建

image-20210602214106805

选择专家模式

image-20210602214734606

名称根据喜好输入,类型选择Linux,版本选择Ubuntu (64-bit)。内存我一般设置4096MB即4GB,具体使用可根据自身情况进行调整。虚拟硬盘选择现在创建虚拟硬盘。设置完成后点击创建

image-20210602214938088

弹出创建虚拟硬盘界面。虚拟硬盘文件位置可以默认自动生成,也可以按喜好调整。文件大小可以设置大点,40GB左右,因为选择动态分配创建的虚拟硬盘文件会自动根据内容调整大小,而不是直接占据设置的大小,大小设大点可以避免虚拟机内空间不足时扩容遇到的设置麻烦。设置完成后点击创建

image-20210602215415437

我们可以看到左侧出现刚刚创建的虚拟电脑。

image-20210602220815796

设置里还可以对虚拟机性能作一些调整,可自行查看,注意有些选项要虚拟机关机时才可以调整。

安装Ubuntu18.04

选择刚刚创建的虚拟机,点击启动。弹出选择启动盘窗口。点击选择虚拟光盘文件按钮。

image-20210602225027100

点击注册按钮,选择前面下载的Ubuntu desktop的iso镜像。

image-20210602225223158

点击ubuntu-18.04.5-desktop-amd64.iso,点击选择

image-20210602225428712

回到此界面,确认选择了正确的镜像,点击启动

image-20210602230132524

开始安装,左侧找到并选择中文(简体),然后点击安装Ubuntu

屏幕上方可能有VirtualBox的一些提示,阅读后可以关掉,不影响

image-20210602232735237

一般键盘布局默认即可,点继续

image-20210602233009641

选择正常安装安装Ubuntu时下载更新可选可不选,不选可节约安装过程时间。点击继续

image-20210602233046690

安装类型默认选择清除整个磁盘并安装Ubuntu即可,其它选项不清楚就保持不变。然后点击现在安装

image-20210602233232457

继续

image-20210602233450239

输入Shanghai,选择,点继续

image-20210602233721572

您的姓名处可按喜好输入用户名,下面会自动填写,密码也可按喜好输入。填写完后点继续

这里的用户名和密码一定要记好!!!

image-20210602233850269

接下来进入漫长的等待安装完成阶段,安装过程中最好保持网络通畅

image-20210602234526780

安装完毕,重启。按Enter

image-20210603001131749

重启完成,确认开机提示,完成安装

注意不要确认升级到20.04!!!

image-20210603002228687

Ubuntu18.04设置调整

调整屏幕大小

常规设置

找到设置,进入。找到并进入设备,点击分辨率,选择喜欢的分辨率,点击窗口右上角应用。虚拟机窗口大小会相应变化。觉得合适的话点击保存更改

注意设置窗口右侧可能被遮挡,按住设置窗口上边框并拖动即可。

image-20210603003128307

自动调整分辨率

**需要VirtualBox增强功能,见虚拟机与主机交互增强功能安装部分

安装增强功能后,可以在打开虚拟机后在窗口上方的“视图”菜单中选择“自动调整显示尺寸”,调整外侧窗口大小后内部Ubuntu虚拟机分辨率自动调整

image-20210608170001946

调整字体大小

Ubuntu并没有自带内容放大到125%,可能看起来字体比较小,比较吃力,可以调大点

设置通用辅助功能大号文本

image-20210603201529932

修改软件包下载源

默认的Ubuntu软件包下载源速度有时比较慢,换成阿里云的镜像源或者清华的镜像源通常会比较快。

在应用程序菜单中进入软件和更新,在Ubuntu 软件选项卡中的下载自点击其他站点

image-20210603100955486

可以看到,有很多不同的服务器供选择。mirrors.aliyun.com就是阿里云的源,mirrors.tuna.tsinghua.edu.cn就是清华的源,其他镜像源的效果和速度也可以自行尝试。协议一般直接选择http。

image-20210603101258776

关闭自动熄屏锁定

进入设置电源。空白屏幕选从不,自动挂起全部改为关闭。

image-20210603094003560

关闭更新Ubuntu大版本更新提示

避免提示从18.04升级到20.04

在应用程序菜单中找到软件和更新,点击更新,有新版本时通知我中选择从不,认证账户密码,确定。

image-20210603100602793

虚拟机与主机交互

这些内容不是都必须的,可自行选择是否设置

安装增强功能

(仅第一次使用要执行此步骤)

首先点击设备安装增强功能,弹出类似下图界面,点运行,认证账户密码进行安装

image-20210603133120488

img

完成安装

img

共享文件夹

(需要先安装增强功能)

点击设备共享文件夹

image-20210603132320213

点击添加共享文件夹按钮

image-20210603132450511

共享文件夹路径选择主机电脑上的文件夹

共享文件夹名称可以默认自动填写

挂载点填 /home/自己的虚拟机用户名/喜欢的文件夹名称

勾选自动挂载和固定分配

填写完成后确定

image-20210603135828271

可以发现喜欢的文件夹名称出现在了Ubuntu虚拟机文件中的主目录

image-20210603140111198

**必须!**打开虚拟机终端,输入下面的指令,获取共享文件夹权限,重启虚拟机

1
sudo usermod -aG vboxsf $(whoami)

共享文件夹设置成功,里面文件完全相同

image-20210603140427989

注意:对于虚拟机来说,在共享文件夹中进行操作可能遇到奇怪的权限问题,因此建议只将共享文件夹用于文件传输,不要在里面编译或运行可执行文件

共享粘贴板及拖放

在VirtualBox管理器中打开虚拟机设置

进入常规高级,共享粘贴板和拖放选择双向,确定,重启

image-20210603141402691

之后主机和虚拟机文字可以直接复制粘贴,可以直接从主机拖放文件进入虚拟机

网络通讯

IP通信

虚拟机完全关机(不是休眠),VirtualBox管理器里打开虚拟机设置

打开网络选项卡

网卡1设置Host-Only网络,混杂模式选全部允许

image-20210603144826905

网卡2设置NAT网络

image-20210603144920793

打开VirtualBox管理器管理主机网络管理器

image-20210603145028804

记住这里的IPv4地址

image-20210603145158385

打开虚拟机,进入虚拟机内设置→网络

image-20210603145910603

设置第一个网卡,IPv4方式改为手动,地址填写192.168.56.x,192.168.56这个前缀必须与VirtualBox Host-Only Ethernet Adapter的IPv4地址前缀一致,x可以在2~254里挑个喜欢的,但不能与已存在的重复。

子网掩码填255.255.255.0

设置完成后点应用

image-20210603150223628

设置完成后,主机可通过刚刚设置的192.168.56.x地址访问虚拟机,虚拟机可以通过192.168.56.1访问主机

端口转发

VirtualBox管理器里打开虚拟机设置→网络

在连接方式为NAT的网卡中打开高级,设置端口转发,可根据需要自行设置

image-20210603145414783

Point Cloud Library 的安装

在应用程序菜单中找到终端,打开

image-20210603111216452

输入

1
sudo apt update

然后输入用户密码,更新软件源信息

其中sudo指令表示作为管理员运行指令。

image-20210603111500037

接下来开始安装Point Cloud Library库。我们需要安装下面几个软件包

1
2
3
4
5
libpcl-dev
pcl-tools
git
cmake
cmake-gui

其他相关的依赖软件包会一起自动完成下载安装,如果想了解这些软件包的更多信息,或是想查询其他软件包,可以到Ubuntu官方软件包网站https://packages.ubuntu.com/查询

安装的命令为

1
2
3
4
5
sudo apt install git
sudo apt install cmake
sudo apt install cmake-gui
sudo apt install libpcl-dev
sudo apt install pcl-tools

输入后会询问是否继续,输入y确定即可。

也可以直接一行命令完成,这里-y参数表示直接确认继续执行,不弹出提示

1
sudo apt install -y git cmake cmake-gui libpcl-dev pcl-tools

image-20210603112511074

等待直到全部安装完成,如果报错,重新执行上面的指令

image-20210603124503301

输入下面的指令,执行。pcl_logo.pcd为点云示例文件,运行时要根据实际输入正确的路径

1
pcl_viewer ./pcl_logo.pcd

成功打开pcd文件,证明安装成功

image-20210603143310948

配置Visual Studio Code

VSCode是一个轻量级的代码编辑器,挺好用的

本地安装

安装

  • 更新于2021年6月4日19点02分

Ubuntu虚拟机中应用程序菜单打开Ubuntu 软件,搜索Visual Studio Code,安装。第一个就是

在ubuntu 软件中安装的Visual Studio Code不是完整版,会出现无法输入中文的情况,不建议采用这种方法安装

解决方法参考下面的网址,直接从Microsoft官方网站安装VSCode官方版本

https://blog.csdn.net/qq_35092399/article/details/105526908

1
sudo apt install curl
1
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
1
2
3
sudo install -o root -g root -m 644 packages.microsoft.gpg /usr/share/keyrings/

sudo sh -c 'echo "deb [arch=amd64 signed-by=/usr/share/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list'
1
2
sudo apt install apt-transport-https
sudo apt update
1
sudo apt install code ## or code-insiders

由于Microsoft服务器在国内访问服务质量较差,需要等待较长时间或者自行设置代理

安装完成,打开

image-20210603152638829

安装扩展程序

点击扩展,安装Chinese (Simplified)语言,安装C/C++扩展,安装CMake,安装CMake Tools

image-20210603152728756

image-20210603161354741

配置Visual Studio Code

打开存放项目的文件夹

image-20210603162246803

在项目文件夹根目录创建一个叫.vscode的文件夹,该文件夹内的文件用于设定此项目中VSCode及其扩展软件的功能及行为

image-20210603162707937

.vscode里面创建c_cpp_properties.json该文件用于提供智能补全功能

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
                "/usr/include/pcl-1.8",
                "/usr/include",
                "/usr/include/eigen3",
                "/usr/local/include",
                "/usr/include/vtk-6.3"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "gnu11",
            "cppStandard": "gnu++14",
            "intelliSenseMode": "gcc-x64"
        }
    ],
    "version": 4
}

setting.json

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
{
    "files.defaultLanguage": "c", // ctrl+N新建文件后默认的语言
    "editor.formatOnType": true,  // 输入分号(C/C++的语句结束标识)后自动格式化当前这一行的代码
    "files.watcherExclude": {         // VSCode排除不重要文件的变动监视,减少压力
        "**/CMakeFiles/**": true,     // CMake自动生成的过程文件
        "**/pcdXYZ_files/**": true,   // 个人固定的pcd原始数据存放文件夹
        "**/pcdXYZI_files/**": true,  // 个人固定的pcd原始数据存放文件夹
        "**/.git/objects/**": true,
        "**/.git/subtree-cache/**": true,
        "**/node_modules/*/**": true
    }
}

这样就配置好了基本的编辑环境,更多的设置可自行搜索

远程开发(进阶)

除了在Ubuntu中安装VSCode直接本地开发以外,还可以通过ssh连接到Ubuntu,进行远程开发

VSCode中内置了Remote - SSH扩展程序,安装后即可ssh连接到Ubuntu虚拟机,打开项目工作区进行开发。开发体验基本相同,且输入体验和显示效果更加舒服,符合日常习惯。不过终端执行命令不支持直接远程弹出图形显示窗口,如果想要看到图形效果建议直接在虚拟机内执行命令。

Ubuntu安装ssh-server

一般输入下面的命令安装完即可,无需额外设置

1
sudo apt install openssh-server

Windows生成密钥

**默认Windows里已经装了Git

可参考git的教程

https://git-scm.com/book/zh/v2/%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84-Git-%E7%94%9F%E6%88%90-SSH-%E5%85%AC%E9%92%A5

打开Git Bash,输入下面的命令生成公钥和私钥

1
ssh-keygen -t rsa -f /path/to/key_name -C "youremailaddress@example.com"

-t参数指定了加密方法,可自行搜索其它加密方法,如果不指定则默认rsa

-f参数用于自行指定密钥存放路径,可以填相对路径,如果不设置-f参数,会出现提示输入密钥存放路径,这里要写绝对路径,如果不输入则密钥默认生成于 /c/Users/你的用户名/.ssh/id_rsa

出现提示设置密码,如果不需要密码,留空

完成密钥创建

在上面自行设定的/path/to/里面可以看到下面两个文件

1
2
key_name
key_name.pub

key_name是私钥,不要给别人

key_name.pub是公钥,要传输到服务器上

发送公钥到ssh服务端上

1
ssh-copy-id -i /path/to/xx.pub UserName@AddressOfServer

这里UserName是服务器上的用户名,AddressOfServer是服务器地址,可以是IP或域名

修改SSH config files

SSH config files位于C:/Users/你的用户名/.ssh/config,在里面加入如下内容

1
2
3
4
Host 服务端的别名
    HostName 服务端地址
    User 服务端上的用户名
    IdentityFile 对应本地私钥的路径

VSCode进行远程开发

VSCode安装好Remote - SSH扩展

image-20210604212949269

打开VSCode远程资源管理器,看到在SSH config files里设置好的服务端,鼠标放上面点击按钮,打开一个新的远程开发窗口,完成

image-20210604213234042