ubuntu使用docker开发ros2

环境:ubuntu20.04

ros2:humble

编辑器:vscode

使用docker拉取ros镜像,版本可以根据自己需要选择

docker pull osrf/ros:humble-desktop-full

 使用-v指令将本地目录挂载到容器中,然后容器目录中就可以看到本地文件并修改 

-v /your_path/your_dir:/your_container/your_dir

选择在本地目录开发,这样就可以不用在容器中创建文件

docker run -it -v /home/your_usr_name/ros2_ws:/home/ros2_ws osrf/ros:humble-desktop-full 

 用vscode进入容器ros目录,source一下ros的环境变量就可以colcon build了

source /opt/ros/humble/setup.sh

将ros环境变量添加到bashrc中

echo "source /opt/ros/humble/setup.sh" >> ~/.bashrc

之后为了运行方便再将工作空间环境变量也添加进bashrc

echo "source /home/your_ros_ws/install/setup.sh" >> ~/.bashrc

如果需要可视化请参考《视觉SLAM十四讲》Docker环境配置及代码复现

在创建可视化容器时执行以下命令可能会无法可视化

sudo docker run -it -v /home/xxx/Projects/slam:/home/xxx/Projects/slam --device=/dev/dri --volume=/tmp/.X11-unix:/tmp/.X11-unix --env="DISPLAY=$DISPLAY" --name=slam-display 626a /bin/bash

 先在自己的本地桌面运行:

echo $DISPLAY

如果为0,可进行如下修改

--env="DISPLAY=$DISPLAY"  -> --env DISPLAY=:0

或者授权 X11 给容器访问,就不用更改X11 显示变量

xhost +local:docker

自动执行xhost,使用 ~/.xprofile 或 ~/.xinitrc 文件 ,如果这些文件不存在,你可以创建它们。然后在文件中添加上面的xhost +local:docker

docker镜像ros不带gazebo,需要自己安装

sudo apt update
sudo apt install ros-humble-gazebo-ros-pkgs

docker中安装wxPython

pip3 uninstall -y wxPython

添加依赖 

sudo apt-get update
sudo apt-get install -y \
    python3-wxgtk4.0 \
    python3-dev \
    build-essential \
    libgtk-3-dev \
    libwebkitgtk-3.0-dev \
    libgstreamer-gl1.0-0 \
    freeglut3 \
    freeglut3-dev \
    python3-gst-1.0
sudo apt-get update && sudo apt-get install -y \
    python3-wxgtk4.0 \
    python3-pip \
    python3-dev \
    build-essential \
    libgtk-3-dev \
    libwebkit2gtk-4.0-dev \
    libjpeg-dev \
    libtiff-dev \
    libsdl2-dev \
    libgstreamer-plugins-base1.0-dev \
    libnotify-dev \
    freeglut3-dev

安装

pip install -U wxPython

### 如何在 Ubuntu使用 Docker 运行 ROS 为了能够在 Ubuntu 上通过 Docker 使用 ROS (Robot Operating System),需要完成一系列设置来确保环境正确配置。 #### 安装并配置 Dockerdocker 用户组 确保 Docker 已经被正确安装,并且当前用户已经被加入到 `docker` 组以便无需管理员权限即可执行 Docker 命令。这可以通过下面两条指令实现: ```bash sudo groupadd docker sudo usermod -aG docker $USER ``` 上述命令会创建一个新的名为 `docker` 的用户组并将当前登录的用户添加进去[^1]。需要注意的是,在应用这些更改之后可能需要重新启动计算机使新的群组成员身份生效。 #### 获取 ROS Noetic 镜像 对于希望基于 Ubuntu 20.04 LTS 来部署 ROS 应用程序的情况,可以利用官方提供的预构建镜像简化开发流程。获取最新版本的 ROS Noetic Desktop Full 版本只需要一条简单的命令: ```bash docker pull osrf/ros:noetic-desktop-full ``` 这条语句将会从 Docker Hub 下载由 OSRF 提供维护和支持的一个包含了完整桌面版 ROS Noetic 发行包在内的容器映像文件[^2]。 #### 启动带有图形界面支持的 ROS 容器实例 为了让 ROS 能够正常工作并且能够访问主机系统的 X Window Server 显示服务,当启动新容器的时候应该附加额外参数允许共享 GPU 加速资源以及挂载本地 socket 文件用于显示转发: ```bash xhost +local:root docker run -it --rm \ --env="DISPLAY=$DISPLAY" \ --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \ osrf/ros:noetic-desktop-full ``` 这段脚本首先设置了 X server 授权策略使得来自 root 用户发起的应用连接请求得以接受;接着定义了一个交互式的终端会话模式 (`-it`) 并指定了自动清理选项 (`--rm`) ,从而保证退出后不会留下未使用的容器占用空间;最后则是设定了必要的环境变量和卷装载路径让 GUI 类型的应用可以在窗口管理器内展示出来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值