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.
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
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.
- 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
- 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++)
- 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
- Learning tf2
- 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
- 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 Tutorials
- 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
- 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.
- Python and C++ minimal examples.