Compartilhamento de tecnologia

ROS aprendizado básico - gerenciamento de operação ROS

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Gerenciamento de operação ROS

1. Breve descrição do gerenciamento de operações ROS

ROS é uma estrutura distribuída de múltiplos processos (nó), uma implementação completa do sistema ROS:

Pode incluir vários hosts;
Existem vários espaços de trabalho em cada host;
Cada área de trabalho contém vários pacotes de funções;
Cada pacote de funções contém vários nós (Nó), e diferentes nós têm seus próprios nomes de nós;
Cada nó também pode ser definido com um ou mais tópicos...

Insira a descrição da imagem aqui
Num sistema ROS multinível, podem surgir alguns problemas na sua implementação e manutenção, tais como,
1. Como associar diferentes pacotes de funções ---- (pacote meta-função)
2. Como iniciar vários nós ROS ---- (arquivo de inicialização)
3. Como lidar com nomes duplicados de pacotes de funções, nós, tópicos e parâmetros ---- (Resolvendo o problema de nomes duplicados)
4. Como os nós em diferentes hosts se comunicam ---- (comunicação distribuída)

O conteúdo principal deste capítulo apresenta as soluções para os problemas acima em ROS (veja o índice deste capítulo). Os objetivos de aprendizagem esperados também correspondem aos problemas acima:

  • Dominar a sintaxe para usar pacotes de metafunções;
  • Domine a sintaxe de uso de arquivos de inicialização;
  • Entenda o que é a cobertura do espaço de trabalho ROS e quais riscos de segurança existem;
  • Entenda como lidar com nomes de nós duplicados;
  • Entenda como lidar com tópicos com nomes duplicados;
  • Entenda como lidar com nomes de parâmetros com nomes duplicados;
  • Capaz de alcançar comunicação distribuída ROS.

2. Pacote de metafunção ROS

Cenário: A conclusão de uma função sistemática no ROS pode envolver vários pacotes funcionais, como a implementação de um módulo de navegação de robô, que possui diferentes pacotes funcionais de subnível, como mapa, posicionamento, planejamento de caminho, etc. Então, quando o chamador instala o módulo, ele precisa instalar cada pacote de funções um por um?

Obviamente, instalar pacotes de funções um por um é ineficiente. No ROS, é fornecida uma maneira de empacotar diferentes pacotes de funções em um pacote de funções. Ao instalar um determinado módulo de função, basta chamar o pacote de funções empacotado diretamente. .

2.1 Conceito

MetaPackage é um conceito de sistema de gerenciamento de arquivos em Linux. É um pacote virtual em ROS. Não possui conteúdo substantivo, mas depende de outros pacotes de software. Desta forma, podemos pensar nele como um índice de diretório de um livro. -packages estão na coleção de pacotes e onde baixá-los.

Por exemplo:

  • O comando sudo apt install ros-noetic-desktop-full usa o pacote de metafunção ao instalar o ros. Este pacote de metafunção depende de alguns outros pacotes de funções no ROS. Ao instalar este pacote, as dependências serão instaladas juntas.
    Existem também alguns MetaPackages comuns: navigation moveit!

2.2 Função

Para facilitar a instalação do usuário, precisamos apenas deste pacote para organizar e instalar outros pacotes de software relacionados juntos.

2.3 Implementação

passo 1: Primeiro: crie um novo pacote de funções
passo 2: Então: modifique package.xml, o conteúdo é o seguinte:

<exec_depend>Pacotes de recursos integrados</exec_depend>

<export>
<metapackage />
</export>
Insira a descrição da imagem aqui

passo 3: Finalmente: modifique CMakeLists.txt, o conteúdo é o seguinte:

cmake_minimum_required (VERSÃO 3.0.2)
projeto(demonstração)
find_package(catkin OBRIGATÓRIO)
catkin_metapacote()

Apenas mantenha as quatro linhas acima e exclua o resto.

Consulte também:
http://wiki.ros.org/catkin/package.xml#Metapacotes

3. Arquivo de inicialização do ROS

Não estamos mais familiarizados com o uso de arquivos de inicialização. No primeiro capítulo, apresentamos:

Um programa pode precisar iniciar vários nós, como o pequeno caso de tartaruga integrado do ROS. Se quiser controlar o movimento da tartaruga, você precisa iniciar várias janelas, iniciando o roscore, o nó de interface da tartaruga e o nó de controle do teclado. respectivamente. Se rosrun for chamado sempre para iniciar um por um, é obviamente ineficiente.

A estratégia de otimização adotada é usar o comando roslaunch para coletar o arquivo de inicialização para iniciar o nó de gerenciamento e, nos tutoriais subsequentes, o arquivo de inicialização também é usado diversas vezes.

3.1.Arquivo de inicialização de gerenciamento de nó ROS

3.1.1 Conceito

O arquivo de inicialização é um arquivo em formato XML que pode iniciar vários nós locais e remotos e definir parâmetros no servidor de parâmetros.

3.1.2 Função

Simplifique a configuração e inicialização de nós e melhore a eficiência de inicialização de programas ROS.

3.1.3 Uso

Tome o Turtlesim como exemplo para demonstrar

etapa 1. Crie um novo arquivo de inicialização.
Adicione o diretório de inicialização ao pacote de funções, crie um novo arquivo xxxx.launch no diretório e edite o arquivo de inicialização

<launch>
<node pkg=“turtlesim” type=“turtlesim_node” name=“myTurtle” output=“screen” />
<node pkg=“turtlesim” type=“turtle_teleop_key” name=“myTurtleContro” output=“screen” />
</launch>

passo 2. Arquivo de inicialização

nome do pacote roslaunch xxx.launch

Nota: Quando o comando roslaunch executa o arquivo de inicialização, ele primeiro determina se o roscore foi iniciado. Se for iniciado, não será iniciado novamente, o roscore será chamado automaticamente.

Pode referir-se a:
http://wiki.ros.org/roslaunch/XML

3.2 iniciar tag de arquivo

https://www.bilibili.com/video/BV1Ci4y1L7ZZ?p=150&spm_id_from=pageDriver&vd_source=15dd2e64f0499027ca66125b65dd2de9