< >
Home » ROS2与Docker入门教程 » ROS2与docker入门教程-搭建ros2-humble版本的turtlebot3 docker环境

ROS2与docker入门教程-搭建ros2-humble版本的turtlebot3 docker环境

说明

  • 介绍如何搭建基于ros2-humble版本的turtlebot3 docker环境
  • 此docker代码构建一个基于turtlebot3和行为树的应用例子

步骤:

1. 通过docker build构建

  • 下载代码
# 安装 rcm
curl -k https://www.ncnynl.com/rcm.sh | bash - 

# 安装 turtlebot3_behavior_demos
rcm ros2_tb3_gazebo install_tb3_behavior_demos

#进入目录
~/tools/turtlebot3_behavior_demos
  • 因为相关源码都是github下载,gitee版本把代码都下载deps_github目录下
  • 以osrf/ros:humble-desktop为基础,整合turtlebot3代码,再整合行为树相关代码
  • docker代码架构图

请输入图片描述

#运行简单命令,默认humble版本
./build_base.sh

#或运行完整命令,可以指定ROS_DISTRO为对应版本
docker build -f docker/Dockerfile \
--build-arg="ROS_DISTRO=humble" \
--target base -t turtlebot3_behavior:base .
  • 构建overlay层
#运行简单命令
./build_overlay.sh

#或运行完整命令
docker build \
-f docker/Dockerfile --target overlay \
-t turtlebot3_behavior:overlay .
  • 运行demo
#运行简单命令
./run_overlay_tb3_demo_world.sh

#运行完整命令
docker run -it --net=host --ipc=host --privileged \
--env="DISPLAY" \
--env="QT_X11_NO_MITSHM=1" \
--volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \
--volume="${XAUTHORITY}:/root/.Xauthority" \
turtlebot3_behavior:overlay \
bash -c "ros2 launch tb3_worlds tb3_demo_world.launch.py"
  • 运行后显示rviz和gazebo,同时可以通过指定目标点导航
  • 如图:

请输入图片描述

2. 通过docker compose构建和运行

  • 使用docker compose的架构图如下:

请输入图片描述

docker compose build
  • 或指定配置文件
docker compose --file docker-compose.yaml --env-file .env build
  • 指定运行程序
# Bring up the simulation
docker compose up demo-world

# After the simulation has started,
# launch one of these in a separate Terminal
docker compose up demo-behavior-py
docker compose up demo-behavior-cpp
  • 运行效果如下:

请输入图片描述

3. 构建dev开发层

  • 开发层架构图

请输入图片描述

  • 通过架构开发层,能代码目录放宿主主机上,便于代码开发
  • 构建
docker compose build
  • 使用
# Start the dev container
docker compose up dev

# Attach an interactive shell in a separate Terminal
# NOTE: You can do this multiple times!
docker compose exec -it dev bash
  • 修改代码后,即可进入容器内进行编译

参考:

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: ros2与docker入门教程