이 Docker 컨테이너에는 ROS 2 Humble, Gazebo Fortress 및 TurtleBot 4 시뮬레이션이 포함되어 있습니다. Docker 컨테이너는 그래픽 카드 없이도 상용 하드웨어에서 잘 작동하도록 구성되었습니다. 가장 합리적으로 구성된 하드웨어는 최소 0.2의 실시간 요소로 시뮬레이션을 실행할 수 있어야 합니다.
이 Docker 컨테이너는 장난감 TB4 노드 및 관련 PyCon 2024 토크 또는 ROSCon 2024 워크샵에 대한 예제 코드와 함께 사용됩니다.
이 Docker에는 전체 ROS 2 Humble 설치도 포함되어 있습니다. ROS 기술을 익히고 싶다면 ROS 2 튜토리얼을 통해 작업할 수 있습니다. CLI 자습서부터 시작하는 것이 좋습니다.
이 워크숍을 통해 여러분은 자신만의 모험을 선택할 수 있습니다. 당신은 두 가지 중요한 결정을 내려야 합니다:
하지만 더 많은 것이 있습니다! docs.ros.org의 훌륭한 튜토리얼 중 일부를 시험해보고 싶으십니까? 그 방법에 대한 지침도 있습니다!
sudo apt install docker.io
사용하여 Docker를 설치합니다.sudo usermod -aG docker $(whoami)
명령을 사용하여 Docker 그룹에 자신을 추가해야 할 수도 있습니다.source .//bin/activate
를 호출해야 합니다.Docker 컨테이너를 처음부터 빌드하려면 다음을 수행하세요.
git clone [email protected]:kscottz/turtlebot4_docker.git
docker build . -t tb4
사전 빌드된 Docker 이미지를 사용하려면 다음을 실행하세요.
docker pull osrf/icra2023_ros2_gz_tutorial:roscon2024_tutorial_humble_turtlebot4
컨테이너를 시작하는 방법에 대해 이야기하는 것부터 시작하겠습니다. 우리는 워크숍을 진행하기 위한 몇 가지 옵션을 제공했습니다. 아래를 살펴보되 아직 컨테이너를 시작하지 마세요! 결정할 수 있는 옵션이 몇 가지 더 있습니다!
rocker --x11 --devices=/dev/dri osrf/icra2023_ros2_gz_tutorial:roscon2024_tutorial_humble_turtlebot4 bash
rocker --x11 --devices=/dev/dri tb4 bash
여기에서 변경된 것은 컨테이너 이름뿐이며, 이는 마지막 매개변수에서 두 번째입니다!
이제 작업 내용을 저장할 위치를 결정해야 합니다. 두 가지 옵션이 있습니다. 처음부터 시작하여 모든 것을 직접 구축하거나 완성된 프로젝트를 따라가는 것입니다. 컨테이너를 시작하고 Docker의 내부 도구를 사용하여 작업을 저장하는 세 번째 옵션도 있습니다. 이는 확실히 가능하지만 권장하지는 않습니다.
우리가 선호하는 워크플로인 처음부터 작업하려면 디렉토리를 생성하기만 하면 됩니다.
mkdir tb4_toy
rocker --x11 --devices=/dev/dri --volume=:/opt/ros/overlay_ws/src/tb4_toy bash
실행합니다. 새 디렉터리이고 컨테이너는 사용하려는 컨테이너입니다.rocker --x11 --devices=/dev/dri --volume=/home/kscottz/Code/tb4_toy/:/opt/ros/overlay_ws/src/tb4_toy tb4 bash
완성된 코드 예제에서 작업하려면 다음을 수행하십시오.
git clone [email protected]:kscottz/tb4_toy.git
-- 그냥 엿보고 싶다면 여기에 코드가 있습니다.rocker --x11 --devices=/dev/dri --volume=:/opt/ros/overlay_ws/src/tb4_toy bash
실행합니다. 새 디렉터리이고 컨테이너는 사용하려는 컨테이너입니다.rocker --x11 --devices=/dev/dri --volume=/home/kscottz/Code/tb4_toy/:/opt/ros/overlay_ws/src/tb4_toy tb4 bash
이 튜토리얼에서는 항상 컨테이너 내부에서 작업해야 하며 호스트 시스템은 그대로 두어야 합니다. *Docker 컨테이너의 내부 구성을 변경하여 저장하고 싶다면 [docker commit](https://docs.docker.com/reference/cli/docker/container/commit/)
사용하여 저장해야 합니다. 당신의 일.
노트북에 멋진 그래픽 카드가 있는 경우 컨테이너를 시작할 때 --devices=/dev/dri
행을 생략하여 이를 활성화할 수 있습니다. 별도의 그래픽 카드가 있는 경우 해당 카드를 사용하는 것이 좋습니다! 그래픽 카드가 없어도 걱정하지 마세요! 우리는 이 워크숍을 구형 노트북에서 작동하도록 특별히 구성했습니다.
이 워크숍의 컨테이너에는 Linux 시스템에서 발견되는 대부분의 일반적인 터미널 편집기가 포함되어 있습니다. 당신은 그것들을 사용하는 것을 환영합니다. 파일 시스템을 Docker에 마운트한 경우 호스트 시스템의 편집기를 사용하여 파일을 편집할 수도 있습니다. 이전에 터미널 편집기를 사용해 본 적이 없다면 이것이 더 쉬운 접근 방식일 수 있습니다.
Rocker 없이 이 컨테이너를 사용하는 방법에 대한 포괄적인 가이드는 여기에서 확인할 수 있습니다. 이 가이드에는 적절한 Docker 컨테이너를 쉽게 시작할 수 있게 해주는 여러 Bash 스크립트가 포함되어 있습니다! 이 가이드에서는 컨테이너 내부에서 ROS 개발을 수행하는 몇 가지 대체 접근 방식도 제공합니다.
컨테이너를 시작한 후에는 다음 명령을 실행하여 ROS 및 Gazebo를 시작할 수 있습니다.
ros2 launch turtlebot4_ignition_bringup turtlebot4_ignition.launch.py world:=maze
source ./install/setup.bash
colcon build
ros2 launch turtlebot4_ignition_bringup turtlebot4_ignition.launch.py world:=maze
ros2 topic pub /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 30.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}}"
ros2 run teleop_twist_keyboard teleop_twist_keyboard
ros2 run tb4_toy toy_node
ros2 service call /do_loopy std_srvs/Trigger '{}'