VScode结合docker的ROS开发环境配置

本文介绍了如何在Ubuntu系统下通过apt安装VSCODE,使用Docker构建ROS2foxy的开发环境,包括编写Dockerfile、构建与运行Docker镜像。同时,详细阐述了在VSCode中配置ROS插件和clangd的过程,确保代码补全和环境自动化加载。此外,还提到了在Docker容器中自动加载ROS环境变量的两种方法。
摘要由CSDN通过智能技术生成

软件安装

VSCODE

存在三种安装方式,如下:

  • vscode官网下载需要的版本直接进行安装。
  • ubuntu下软件中心搜索安装(安装最简便,推荐):
    在这里插入图片描述
  • 使用apt安装:
wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main"
sudo apt update
sudo apt install code

docker

参考Install Docker Engine,或者参考使用国内源安装docker教程安装,其他平台的左侧自行选择安装教程,不赘述了。
安装完需要将当前用户加入docker组,否则使用docker指令都需要root权限,不同平台命令有出入,这里以ubuntu18.04为例:

sudo usermod -aG docker <your_user_name>

docker image构建与运行

1、编写dockerfile,以构建ros2 foxy版本image的dockerfile.txt为例:

# 基于某个image构建,例如ubuntu的某个版本或者某个ros官方镜像
FROM ros:foxy-ros-base-focal

# 安装自己需要的环境
RUN apt-get update && apt-get install -y --no-install-recommends \
    ros-foxy-desktop \
    && rm -rf /var/lib/apt/lists/*

此外,如果需要在docker中使用nvidia显卡,则需要:

# 需要使用nvidia显卡时需要配置环境变量
ENV NVIDIA_VISIBLE_DEVICES \
    ${NVIDIA_VISIBLE_DEVICES:-all}
ENV NVIDIA_DRIVER_CAPABILITIES \
    ${NVIDIA_DRIVER_CAPABILITIES:+$NVIDIA_DRIVER_CAPABILITIES,}graphics

2、build镜像,在dockerfile.txt同目录下运行:

docker build -t <your_image_name>:<tag> .
or:
docker build -f <your_dockerfile_name> -t <your_image_name>:<tag> .

3、运行container:

docker run -it --rm \
  --user=$(id -u $USER):$(id -g $USER) \
  --workdir="/home/$USER" \
  --volume="/home/$USER:/home/$USER" \
  --volume="/etc/group:/etc/group:ro" \
  --volume="/etc/passwd:/etc/passwd:ro" \
  --volume="/etc/shadow:/etc/shadow:ro" \
  --volume="/etc/sudoers.d:/etc/sudoers.d:ro" \
  --net=host \
  --gpus all \
  -e DISPLAY \
  -e QT_X11_NO_MITSHM=1 \
  -e XAUTHORITY=/tmp/.docker.xauth \
  -v /tmp/.docker.xauth:/tmp/.docker.xauth \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  <your_image_name>:<tag>

以上前7项为挂载本机用户为container中默认用户运行,否则将以root用户进入container,不推荐使用root用户进行开发操作; --net=host为将本机网络映射到container中;接着6项为使用显卡和显示相关;更多使用方法参考官方文档。
使用VSCODE一般需要一个固定的长期开发环境,因此需要container在运行完成后不会自己删除,启动时要去掉–rm,运行完成后,就已经有了一个ros2环境的container。
4、(optional)自动加载ROS环境变量
使用ROS前需要加载ROS环境变量,使用docker时可以用如下两种方法实现自动加载:
1、将source source /opt/ros/foxy/setup.bash写入当前系统用户文件夹下.bashrc的末尾,也是ROS安装完成后的官方推荐操作,但只有使用上文命令脚本运行container才会生效,因此该脚本会加载当前系统用户作为container的默认用户,也会同时执行.bashrc中的命令。
2、构建docker image时增加entrypoint.sh,在该脚本中执行source source /opt/ros/foxy/setup.bash,教程很多,这里不赘述。

VSCODE配置

打开VSCODE,以C++开发为例,在扩展插件中安装:

  • ROS
  • C++ Extension Pack

安装完成后重启或重新加载一下VSCODE,左边侧栏已经可以看到此时已经启动的container:
在这里插入图片描述
右键点击container->attach to container,就可以轻松完成VSCODE与container的链接,此时IDE已经位于ros2 foxy开发环境中,正常打开ROS工作空间即可进行开发,python同理。

ROS插件配置

使用ROS插件需要工作空间中存在src文件夹,并且代码都在该文件夹下(非常重要,ROS2实际上已经不要求代码放在src文件夹中了),此外,一般情况下,ROS插件会自动检测ROS版本,并在打开ROS工作空间时自动在.vscode文件夹中进行配置,但使用docker时偶尔会出现问题,这时候需要手动在ROS插件设置中指定ROS版本,右键ROS插件->Extension Settings,如下:
在这里插入图片描述
重新打开工作空间或者手动运行ROS插件的部分命令即可,具体参照ROS插件自带的说明。

clangd配置

vscode自带的intellisense用于代码补全时问题颇多,尤其在docker环境下,因此建议换成clangd进行开发,使用clangd需要额外再进行一些配置,步骤如下:
1、在插件中搜索clangd并安装,安装完成右下角会自动提示安装clangd server,点yes即可。
2、在ROS环境中将整个工程编译一次,需要增加"-DCMAKE_EXPORT_COMPILE_COMMANDS=1"指令,以ros2 foxy为例:

colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=ON

需要保证编译成功完成,否则部分文件的编译命令无法生成,导致clangd找不到这个文件的索引,非ROS环境类似。
3、重启VSCODE或者clangd server。

要在 VSCode 中配置远程 Docker C 环境,您需要执行以下步骤: 1. 首先,您需要安装 DockerVSCode。确保已在本地计算机上安装 Docker 并启动了 Docker 守护程序。 2. 安装 VSCode 的 Remote Development 扩展。此扩展允许您使用 VSCode 连接到远程计算机并在其中进行开发。 3. 在远程计算机上安装 Docker。确保已在远程计算机上安装 Docker 并启动了 Docker 守护程序。 4. 在远程计算机上创建一个 Docker 容器并将其配置为运行 C 环境。 5. 在 VSCode 中打开远程 Docker 容器。要执行此操作,请单击 VSCode 底部的“Remote Explorer”图标,然后选择“Add New SSH Host”或“Add New Docker Host”,根据需要选择远程主机类型,然后按照提示操作。 6. 在 VSCode 中创建一个新的 C 项目并将其配置为在远程 Docker 容器中运行。要执行此操作,请打开 VSCode 的“Command Palette”(快捷键为“Ctrl + Shift + P”或“Cmd + Shift + P”),然后键入“C/C++: Edit Configurations(C/C++: 编辑配置)”,按 Enter 键。选择“Add Configuration”(添加配置),然后选择“Docker: Attach to Running Container”(Docker:连接到正在运行的容器)。 7. 在 VSCode 中编写和测试 C 代码。要执行此操作,请打开 VSCode 的“Command Palette”,然后键入“C/C++: Compile Current File(C/C++: 编译当前文件)”或“C/C++: Run(C/C++: 运行)”。 这些步骤应该可以帮助您在 VSCode 中配置远程 Docker C 环境。如果您需要更详细的说明,请参阅 VSCodeDocker 的官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值