基于nvidia/cuda在wtyyy/base-cuda镜像上添加ros得到,
因此容器支持zsh,vim,tmux,nvidia-cuda, 如果无需gpu创建容器时不加--gpus all
容器支持gpu, 需安装nvidia-container-toolkit
docker pull wtyyy/ros:ros1-noetic-cuda11.8.0-ubuntu20.04docker pull wtyyy/ros:ros2-humble-cuda11.8.0-ubuntu22.04docker pull wtyyy/ros2-humble-cuda11.8.0-ubuntu22.04-conda-onnxrqt, Python加入pip, tyro, 压缩包大小 1.34Gbteleop-twist-[keyboard, joy], moveit, navigation, gmappingxcron, gazebo仿真, 压缩包大小1.2G -> 1.35 GBcolcon, joint_state_publisher_gui, 压缩包大小 1.35 GB (清空cache, log)rosdep, 更新ros2 GPG keyconda的ros2环境,包含onnxruntime-gui及基础包PyQt5, numpy, opencv-python, larkCATKIN_WORKSPACE=/path/to/catkin # 本地数据保存路径(**修改成你的哈**)会挂载到镜像中/catkin下
ROS2_WORKSPACE=/path/to/ros2_ws # 本地数据保存路径(**修改成你的哈**)会挂载到镜像中/ros2_ws下
xhost +local:root # 修改X11渲染主机权限为root,用于可视化ROS图像(一定要在宿主机上执行哦)
使用GPU
docker run -it \
--name ${USER}_ros \
-v "${CATKIN_WORKSPACE}:/catkin_ws" \
--gpus all \
-e NVIDIA_DRIVER_CAPABILITIES=all \
-e "__NV_PRIME_RENDER_OFFLOAD=1" \
-e "__GLX_VENDOR_LIBRARY_NAME=nvidia" \
--net=host \
--privileged \
-v "/dev:/dev" \
-v "/tmp/.X11-unix:/tmp/.X11-unix:rw" \
-v "$HOME/.Xauthority:/tmp/.docker.xauth:rw" \
-e "DISPLAY" \
-e "QT_X11_NO_MITSHM=1" \
-e "XAUTHORITY=/tmp/.docker.xauth" \
wtyyy/ros:ros1-noetic-cuda11.8.0-ubuntu20.04 zsh
docker run -it \
--name ${USER}_ros \
-v "$ROS2_WORKSPACE:/ros2_ws" \
--gpus all \
-e NVIDIA_DRIVER_CAPABILITIES=all \
-e "__NV_PRIME_RENDER_OFFLOAD=1" \
-e "__GLX_VENDOR_LIBRARY_NAME=nvidia" \
--net=host \
--privileged \
-v "/dev:/dev" \
-v "/tmp/.X11-unix:/tmp/.X11-unix:rw" \
-v "$HOME/.Xauthority:/tmp/.docker.xauth:rw" \
-e "DISPLAY" \
-e "QT_X11_NO_MITSHM=1" \
-e "XAUTHORITY=/tmp/.docker.xauth" \
wtyyy/ros:ros2-humble-cuda11.8.0-ubuntu22.04 zsh
无GPU
docker run -it \
--name ${USER}_ros \
-v "$ROS2_WORKSPACE:/ros2_ws" \
--net=host \
--privileged \
-v "/dev:/dev" \
-v "/tmp/.X11-unix:/tmp/.X11-unix:rw" \
-v "$HOME/.Xauthority:/tmp/.docker.xauth:rw" \
-e "DISPLAY" \
-e "QT_X11_NO_MITSHM=1" \
-e "XAUTHORITY=/tmp/.docker.xauth" \
wtyyy/ros:ros2-jazzy-ubuntu24.04 zsh
参考, 这里给出用tmux启动方法, 下文ROS2给出容器启动多个终端的方法, 用docker run ...创建并进入容器
tmux # 进入tmux可以打开多个终端
roscore # 打开ros内核
ctrl+a+_ # 右侧创建一个终端
ctrl+a+l # 进入右侧终端
rosrun turtlesim turtlesim_node # 打开小乌龟可视化窗口
ctrl+a+- # 下方创建一个终端
ctrl+a+j # 进入下方终端
rosrun turtlesim turtle_teleop_key # 打开键盘控制节点, 就可以用上下左右控制小乌龟啦
不使用tmux开启多个终端的方法, 启动并进入第一个容器docker run ...(参考上文启动流程)
ros2 run turtlesim turtlesim_node # 打开可视化界面
创建该容器的第二个终端(宿主机打开一个新的终端)
docker exec -it ${USER} zsh # 这里 ${USER} 就是刚才创建的容器名
ros2 run turtlesim turtle_teleop_key # 打开控制节点, 可以用上下左右控制小乌龟啦
安装动态库
安装mesa-utils
__GLX_VENDOR_LIBRARY_NAME=nvidia指定opengl使用Nvidia显卡渲染, 否则会无法找到驱动glxinfo | grep -i opengl查看当前opengl使用的渲染方法, 一定不能是llvmpipe(这就是没找到驱动)CATKIN_WORKSPACE=/home/yy/Coding/catkin_ws # catkin本地工作路径(**修改成你的哈**)会挂载到镜像中/catkin_ws下
docker run -it \
--name ${USER}_leju \
--gpus all \
--net=host \
--privileged \
-e NVIDIA_DRIVER_CAPABILITIES=all \
-e "DISPLAY" -e "QT_X11_NO_MITSHM=1" \
-e "__NV_PRIME_RENDER_OFFLOAD=1" -e "__GLX_VENDOR_LIBRARY_NAME=nvidia" \
-v "/dev:/dev" \
-v "/tmp/.X11-unix:/tmp/.X11-unix" \
-v "$CATKIN_WORKSPACE:/catkin_ws" \
wtyyy/ros:ros1-noetic-leju-v1 zsh
在v1基础上加入python环境,包含onnx和pytorch推理,执行脚本:
基于乐聚官方镜像修改,适配RL模型推理,加入:
Content type
Image
Digest
sha256:ca8be9056…
Size
1.4 GB
Last updated
about 1 year ago
docker pull wtyyy/ros:ros2-humble-cuda11.8.0-ubuntu22.04