环境: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