起因
在经历第一次数图实验课的灾难后,我便想要在自己电脑上搭建实验环境了。抛开 难看的UI、惨目忍睹的自动补全、全线飘红的报错 不谈,在自己电脑上舒适的开发难道不酷吗?我觉得这太酷了,科技并带着趣味。
Ubuntu 20.04 虚拟机安装
首先,想用 ROS 至少得先准备一个 Ubuntu 的环境,并且实验指定环境是 20.04 版本。这个简单,到开源镜像站上下载就行了。这里提供两个网址,一个校内一个校外:
下好 ISO 后就可以制作虚拟机了(由于 20.04 版本过老,现在只有 Server 版,但我们会在后续过程中安装桌面)。我这里使用的是 UTM ,其他虚拟机平台如 virtualbox, VMware 流程应该相似,操作位置不同。
根据这个教程一步步安装即可。需要注意两个点:
- 当提示
Installation Completed
选择reboot
后重启会黑屏,这时不要慌,关闭虚拟机然后推出 CD 介质即可(图正下方) - 为了方便后续
ssh
连接,请在安装过程中勾选安装OpenSSH Server
,并在安装完成后(确保能正常进入 CLI 模式)将虚拟机网络改为桥接模式(UTM 改桥接位置在图右上角)
虚拟机的简单配置
现在你的虚拟机仍然只有黑乎乎的命令行窗口,接下来我们将为其安装桌面和开发工具。但为了接下来操作方便,最好先把 ssh 配好。
在虚拟机命令行里输入命令 ip a
查看虚拟机局域网内 ip 地址。
接着在宿主机命令行里用 ssh username@ip
连接就好了。(注意要为桥接模式,否则虚拟机在虚拟 NAT 下是无法与宿主机建立连接的)
好,现在我们就可以在宿主机里操纵虚拟机了,命令/文本也能复制黏贴进去执行。
接下来该换源了,加快我们下载软件的速度:
- 用编辑器(
nano / vi
)打开/etc/apt/source.list
文件 - 将里面文本内容改成清华镜像源所提供的内容( Arm 用户换这个)
- 退出编辑器,执行
sudo apt update && sudo apt upgrade
换好源后,安装桌面便简单了:
$ sudo apt install ubuntu-desktop
重启后就能看到桌面啦!
VSCode 安装就更简单了,到官网下载对应 .deb
包然后手动安装就行。
$ sudo apt install ./xxxx-vscode.deb
ROS 环境配置
和 apt 换源一样,ROS 源也得换,可以直接照清华源提供流程走。
换完源后,按照官方教程进行安装。(注意流程中 1.2 和 1.3 我们在上一步已经做过了,现在就不需要再做了哦)
还要注意一点,catkin
工具是需要单独安装的,可以在此页面找到安装流程。
按理说现在环境已经配好了,把模板代码传上去检验一下吧(推荐使用 scp
)
unzip
解包到目标位置,用 VSCode 打开吧!
模板代码里只有一个 src
,我们需要 cd
进 dip_ws
工作目录下然后使用 catkin init
进行初始化。
build
一下看看:
这步报错的可能是忘记 source /opt/ros/noetic/setup.bash
了。
VSCode 自动补全
以上都没问题的话,就可以开始着手配置自动补全了。
先打开 VSCode 安装好 ROS、C/C++、CMake、Clangd 插件。
CMake 插件第一次启动会让你选择一个 CMakeList.txt 文件,你可以选择 exp1
中的看看编译通不通过,不通过的话可能是你少装了什么包。(最后结果是 CMakeList 不飘红不报错)
接着便可以着手安装 clang 了。
$ sudo apt install clang
接着打开 .vscode/c_cpp_properties.json
,添加/修改如下两行:
关闭 VSCode,在工作目录(dip_ws
)下执行:
$ catkin build -DCMAKE_EXPORT_COMPILE_COMMANDS=1
生成 compile_commands.json
文件。(这步有问题的话可以查看 issue )
重新启动 VSCode,这时你的自动补全应该已经生效了,恭喜!
最后的最后,推荐你使用 VSCode 远程 ssh 连接到虚拟机编写代码,这样就可以轻松进行复制粘贴了。