Este contêiner Docker contém ROS 2 Humble, Gazebo Fortress e a simulação TurtleBot 4. O contêiner Docker foi configurado para funcionar bem em hardware comum sem placa gráfica. O hardware mais razoavelmente configurado deve ser capaz de executar a simulação com um fator de tempo real de pelo menos 0,2.
Este contêiner Docker deve ser usado com este código de exemplo para um nó TB4 de brinquedo e o PyCon 2024 talk ou ROSCon 2024 Workshop associado
Este Docker também inclui uma instalação completa do ROS 2 Humble. Se quiser aprimorar suas habilidades em ROS, você pode trabalhar nos tutoriais do ROS 2. Sugerimos que você comece com os tutoriais CLI.
Este workshop permite que você escolha sua própria aventura. Você tem duas grandes decisões a tomar:
Mas espere, tem mais! Se você quiser apenas experimentar alguns dos ótimos tutoriais em docs.ros.org, também temos instruções sobre como fazer isso!
sudo apt install docker.io
sudo usermod -aG docker $(whoami)
source .//bin/activate
antes de iniciar seu contêiner.Se você deseja construir o contêiner Docker do zero:
git clone [email protected]:kscottz/turtlebot4_docker.git
docker build . -t tb4
Se você deseja usar a imagem Docker pré-construída, execute:
docker pull osrf/icra2023_ros2_gz_tutorial:roscon2024_tutorial_humble_turtlebot4
Vamos começar falando sobre como iniciar seu contêiner. Fornecemos algumas opções para realizar o workshop. Dê uma olhada abaixo, mas não inicie o contêiner ainda! Você tem mais algumas opções para decidir!
rocker --x11 --devices=/dev/dri osrf/icra2023_ros2_gz_tutorial:roscon2024_tutorial_humble_turtlebot4 bash
rocker --x11 --devices=/dev/dri tb4 bash
Observe que tudo o que mudou aqui foi o nome do contêiner, que é o penúltimo parâmetro!
Agora você deve decidir onde deseja salvar seu trabalho. Você tem duas opções: começar do zero e construir tudo sozinho ou prosseguir a partir de um projeto finalizado. Há também uma terceira opção, onde você apenas inicia o contêiner, mas usa as ferramentas internas do Docker para salvar seu trabalho. Embora isso seja certamente possível, não o recomendamos.
Se você quiser trabalhar do zero, nosso fluxo de trabalho preferido, tudo o que você precisa fazer é criar um diretório:
mkdir tb4_toy
rocker --x11 --devices=/dev/dri --volume=:/opt/ros/overlay_ws/src/tb4_toy bash
onde o diretório foi substituído pelo seu novo diretório e container é o contêiner que você deseja usar.rocker --x11 --devices=/dev/dri --volume=/home/kscottz/Code/tb4_toy/:/opt/ros/overlay_ws/src/tb4_toy tb4 bash
Se você quiser trabalhar a partir de um exemplo de código finalizado, faça o seguinte
git clone [email protected]:kscottz/tb4_toy.git
- aqui está o código se você quiser apenas dar uma olhada.rocker --x11 --devices=/dev/dri --volume=:/opt/ros/overlay_ws/src/tb4_toy bash
onde o diretório foi substituído pelo seu novo diretório e container é o contêiner que você deseja usar.rocker --x11 --devices=/dev/dri --volume=/home/kscottz/Code/tb4_toy/:/opt/ros/overlay_ws/src/tb4_toy tb4 bash
Observe que este tutorial exigirá que você trabalhe dentro do contêiner o tempo todo e deve deixar seu sistema host intacto. *Se acontecer de você alterar a configuração interna do contêiner Docker e quiser salvá-lo, você precisará usar [docker commit](https://docs.docker.com/reference/cli/docker/container/commit/)
para salvar seu trabalho.
Se o seu laptop tiver uma placa gráfica sofisticada, você pode habilitá-la omitindo a linha: --devices=/dev/dri
ao iniciar seu contêiner. Se você possui uma placa gráfica discreta, recomendamos que você a use! Se você não possui uma placa gráfica, não se preocupe! Configuramos este workshop especificamente para funcionar em laptops mais antigos.
O contêiner deste workshop contém a maioria dos editores de terminal comuns encontrados em sistemas Linux. Você é mais que bem-vindo para usá-los. Se você montou seu sistema de arquivos no Docker, também poderá usar qualquer editor em seus sistemas host para editar arquivos. Se você nunca usou um editor de terminal antes, esta pode ser a abordagem mais fácil.
Temos um guia completo para usar este contêiner sem Rocker disponível aqui. Este guia inclui vários scripts Bash que facilitam a inicialização de um contêiner Docker apropriado! Este guia também fornece algumas abordagens alternativas para realizar o desenvolvimento de ROS dentro de um contêiner.
Depois de iniciar seu contêiner, você pode iniciar o ROS e o Gazebo executando os seguintes comandos:
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 '{}'