Skip to content

dayvsonsilva/ros2_study_ws

Repository files navigation

ros2_study(Em construção)

Introdução

Repositório com registros e códigos de tutoriais realizados seguindo a documentação do ROS2 Galactic. Durante os estudos foi utilizado o SO Ubuntu 20.04.

O objetivo deste repositório é registrar informações importantes e ou códigos em formato original ou modificados, sendo exclusivamente para uso próprio e didático, não sendo recomendado a utilização de seus códigos e informações para aplicações que possam vir a gerar prejuízos de qualquer natureza.

Requisitos

Para melhor aproveitamento dos tutoriais é importante que se tenha conhecimento em Linux, C/C++ e Python, porém não ter conhecimento prévio nestes assuntos não faz com que seja impossível aprender sobre ROS. Inclusive o estudo da Robótica traz oportunidades para que com a orientação correta você possa estudar desde a eletrônica da leitura de sensores e acionamento de atuadores até a utilização de algoritmos de aprendizado de máquinas aplicados à robótica.

Preparação do Ambiente

Instalação do ROS2 Galactic via pacotes Debian

A documentação original aborda formatos diferentes de instalação, incluindo instalação em vários sistemas operacionais. Para os estudos é sugerido utilizar a instalação via pacotes debian pela facilidade, visto que no primeiro momento o foco é o estudos dos pacotes ROS2 disponíveis para diversas aplicações, em casos onde o ROS2 será utilizado em uma versão do Linux que não tenha suporte nativo será necessário revisitar a página oficial da documentação do ROS2 Galatic Installation.

O bloco de codigo abaixo tras um resumo com os comando para instalação do ROS 2 Galactic, para entender o passo-a-passo da instalação é sugerido que seja realizado uma visita a pagina Installing ROS 2 via Debian Packages

# Set locale
locale  # check for UTF-8

sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8

locale  # verify settings

# Setup Sources

apt-cache policy | grep universe
 500 http://us.archive.ubuntu.com/ubuntu focal/universe amd64 Packages
     release v=20.04,o=Ubuntu,a=focal,n=focal,l=Ubuntu,c=universe,b=amd64

sudo apt install software-properties-common
sudo add-apt-repository universe

sudo apt update && sudo apt install curl gnupg lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

Instalando os Pacotes do ROS2

sudo apt update
sudo apt install ros-galactic-desktop

Após a instalação é recomendado realizar o teste do ROS2 através da execução dos comandos abaixo.

source /opt/ros/galactic/setup.bash
ros2 run demo_nodes_cpp talker
source /opt/ros/galactic/setup.bash
ros2 run demo_nodes_py listener

Tutoriais

A partir da instalação do ROS2 é possível iniciar a execução dos tutoriais.

OBS: Para a execução dos tutoriais criar uma pasta/pacote para cada tutorial e registrar informações importantes em arquivos Markdown.

Beginner

Beginner: CLI Tools

  • Configuring your ROS 2 environment
  • Introducing turtlesim and rqt
  • Understanding ROS 2 nodes
  • Understanding ROS 2 topics
  • Understanding ROS 2 services
  • Understanding ROS 2 parameters
  • Understanding ROS 2 actions
  • Using rqt_console
  • Introducing ROS 2 launch
  • Recording and playing back data

Beginner: Client Libraries

  • Creating a workspace
  • Creating your first ROS 2 package
    • CMake
    • Python
  • Writing a simple publisher and subscriber (C++)
  • Writing a simple publisher and subscriber (Python)
  • Writing a simple service and client (C++)
  • Writing a simple service and client (Python)
  • Creating custom ROS 2 msg and srv files
    • C++
    • Python
  • Expanding on ROS 2 interfaces
  • Using parameters in a class (C++)
  • Using parameters in a class (Python)
  • Getting started with ros2doctor
  • Creating and Using Plugins (C++)

Intermediate

Intermediate

  • Creating an action
  • Writing an action server and client (C++)
  • Writing an action server and client (Python)
  • Composing multiple nodes in a single process REFAZER
  • Using colcon to build packages
  • Monitoring for parameter changes (C++)
  • Launch Tutorials
    • Creating a ROS 2 Launch File.
    • Launching and Monitor Multiple Nodes with Launch.
    • Using Substitutions.
    • Using Event Handlers.
    • Using ROS 2 Launch For Large Projects.
  • tf2 Tutorials
    • Learning tf2
      • Introduction to tf2.
      • Writing a tf2 static broadcaster
        • (Python)
        • (C++)
      • Writing a tf2 broadcaster
        • (Python)
        • (C++)
      • Writing a tf2 listener.
        • (Python)
        • (C++)
      • Adding a frame
        • (Python)
        • (C++)
      • Learning about tf2 and time
        • (Python)
        • (C++)
      • Time travel with tf2.
        • (Python)
        • (C++)
    • Debugging tf2
      • Quaternion fundamentals.
      • Debugging tf2 problems.REFAZER
    • Using sensor messages with tf2 REFAZER
  • URDF Tutorials
    • Building a Visual Robot Model with URDF from Scratch
    • Building a Movable Robot Model with URDF
    • Adding Physical and Collision Properties to a URDF Model
    • Using Xacro to Clean Up a URDF File
    • Using URDF with robot_state_publisher

Advanced

Advanced

  • ROS 2 Topic Statistics Tutorial (C++)
  • Using Fast DDS Discovery Server as discovery protocol [community-contributed]
  • Implement a custom memory allocator
  • Unlock all the potential of Fast DDS as ROS 2 middleware [community-contributed]
  • Recording a bag from your own node (C++)
  • Recording a bag from your own node (Python)

Simulation

Simulation

  • Simulation Tutorials

Miscellaneous

Miscellaneous

  • ROS2 on IBM Cloud Kubernetes [community-contributed]
  • Eclipse Oxygen with ROS 2 and rviz2 [community-contributed]
  • Building realtime Linux for ROS 2 [community-contributed]
  • Building ROS 2 Package with eclipse 2021-06

Demos

Demos

  • Use quality-of-service settings to handle lossy networks.
  • Management of nodes with managed lifecycles.
  • Efficient intra-process communication.
  • Bridge communication between ROS 1 and ROS 2.
  • Recording and playback of topic data with rosbag using the ROS 1 bridge.
  • Turtlebot 2 demo using ROS 2.
  • TurtleBot 3 demo using ROS 2. [community-contributed]
  • Simulate the TurtleBot 3 on ROS [community-contributed].
  • Navigate TurtleBot 3 in simulation. [community-contributed]
  • SLAM with TurtleBot3 in simulation. [community-contributed]
  • MoveIt 2 arm motion planning demo.
  • Write real-time safe code that uses the ROS 2 APIs.
  • Use the robot state publisher to publish joint states and TF.
  • Use DDS-Security.
  • Logging and logger configuration.

Examples

Examples

  • Python and C++ minimal examples.

Referências

About

Estudos e anotações sobre ros2

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published