Notas do estudo ROS (3): arquitetura de comunicação ROS

Diretório

4 arquitetura de comunicação ROS

4.1 Iniciar o mestre e o nó

4.1.1 Iniciar o mestre: roscore

4.1.2 启动 nó: rosrun, roslaunch

4.1.3 comando rosnode

4.2 método de comunicação ROS

4.2.1 Tópico

4.2.2 Serviço

4.2.3 Servidor de parâmetros

4.2.4 Ação


4 arquitetura de comunicação ROS

 

Nó: 

No mundo do ROS, a menor unidade de processo é um nó. Pode haver vários arquivos executáveis ​​em um pacote de software.Depois que o arquivo executável é executado, ele se torna um processo.Este processo é chamado de nó no ROS. De Cheng

Do ponto de vista processual, o nó é um arquivo executável (geralmente um arquivo executável gerado pela compilação C ++, um script Python)

É executado e carregado na memória; do ponto de vista funcional, geralmente um único indivíduo responsável por um robô de nó

Função Como o módulo de função do robô é muito complicado, geralmente não concentramos todas as funções em um nó e

Usará uma abordagem distribuída. Por exemplo, existe um nó para controlar o movimento das rodas do chassi, um nó para dirigir a câmera para obter imagens, um nó para dirigir o lidar e um nó para planejar o caminho com base nas informações do sensor ...

 

Mestre:

 O mestre é equivalente ao centro de gerenciamento em toda a arquitetura de comunicação da rede, gerenciando cada nó. O nó é registrado primeiro no mestre e, em seguida, o mestre incluirá o nó no programa ROS inteiro. A comunicação entre os nós também é primeiro "puxada" pelo mestre, para que a comunicação ponto a ponto possa ser realizada em pares. Quando o programa ROS é iniciado, a primeira etapa é iniciar o mestre primeiro e o gerenciador de nós processa os nós e os inicia sucessivamente.

 

4.1 Iniciar o mestre e o nó

4.1.1 Iniciar o mestre: roscore

Ao iniciar o ROS, primeiro insira o comando roscore para iniciar o master:

$ roscore

No momento, o mestre do ROS é iniciado e o servidor de parâmetros e de rosca também é iniciado, do qual o rosout é responsável por

Um nó da saída do log, sua função é informar o usuário sobre o status atual do sistema, incluindo o erro do sistema de saída, aviso etc.

Aguarde e registre o log no arquivo de log; o servidor de parâmetros é o servidor de parâmetros, não é um nó,

É um servidor que armazena configurações de parâmetros. Toda vez que executamos o nó ROS, precisamos iniciar o mestre, para que o nó possa ser iniciado e registrado.

4.1.2 启动 nó: rosrun, roslaunch

Você pode usar rosrun, roslaunch

O uso detalhado do comando rosrun é o seguinte:

$ rosrun [--prefix cmd] [--debug] pkg_name node_name [ARGS]

O rosrun procurará o programa executável chamado EXECUTABLE em PACKAGE e passará o parâmetro opcional ARGS.

 

comando roslaunch :

roslaunch pkg_name file_name.launch

O nó principal e vários nós podem ser iniciados ao mesmo tempo.O comando roslaunch detectará automaticamente se o roscore do sistema está em execução, ou seja, para confirmar se o gerenciador de nós está em execução, se o mestre não estiver iniciado, o roslaunch iniciará o mestre primeiro Depois siga as regras de lançamento.

4.1.3 comando rosnode

  • A lista rosnode lista as informações do nó atualmente em execução
  • informações do rosnode node_name mostra informações detalhadas do nó
  • rosnode kill node_name finaliza um nó
  • nó de conexão de teste de ping do rosnode
  • A máquina rosnode lista nós em execução em uma máquina ou lista específica
  • A limpeza do rosnode limpa as informações de registro de nós inacessíveis

ajuda do rosnode para ver o uso do comando rosnode.

4.2 método de comunicação ROS

O método de comunicação do ROS é o conceito principal do ROS. Existem quatro tipos de métodos de comunicação do ROS:

  • Tópico
  • Serviço
  • Serviço de Parâmetros
  • Biblioteca de ações Actionlib

4.2.1 Tópico

Entre os métodos de comunicação no ROS, o tópico é comumente usado. Para mensagens periódicas em tempo real, usar o tópico para transmitir é a melhor opção. O tópico é um tipo de método de comunicação unidirecional ponto a ponto, em que "ponto" se refere ao nó, o que significa que as informações podem ser transferidas entre os nós por meio do tópico. O tópico precisa passar pelo processo de inicialização das seguintes etapas: Primeiro, o nó do publicador e o nó do assinante devem se registrar no gerenciador do nó, depois o publicador publicará o tópico e o assinante assinará o tópico sob o comando do mestre, estabelecendo, assim, Comunicação. Observe que todo o processo é unidirecional. O assinante processará a mensagem quando a receber, geralmente esse processo é chamado de retorno de chamada. O chamado retorno de chamada é definir uma função de processamento antecipadamente (escrita no código); quando houver uma mensagem, a função de processamento será acionada, a função processará a mensagem.

A comunicação de tópicos é um método de comunicação assíncrona unidirecional.

O diagrama esquemático de sua estrutura é mostrado abaixo;

4.2.1.1 comando rostópico:

  • lista rostópica lista todos os tópicos atuais
  • informações rostópicas topic_name exibe as informações de atributo de um tópico
  • eco rostopic topic_name exibe o conteúdo de um tópico
  • pub rostopic topic_name ... Publicar conteúdo em um tópico
  • rostopic bw topic_name Exibir a largura de banda de um tópico
  • rostopic hz topic_name Ver a frequência de um tópico
  • rostopic find topic_type encontre um tipo de tópico
  • tipo rostópico topic_name Exibir o tipo de um tópico (msg)

4.2.1.2 arquivo msg

Mensagem é o tipo de dado do conteúdo do tópico, também conhecido como padrão de formato do tópico. Definido no arquivo com o sufixo .msg.

Os tipos de dados básicos da mensagem incluem bool, int8, int16, int32, int64 (e uint), float, float64, string, tempo, duração, cabeçalho, array de comprimento variável [] e array de comprimento fixo [C].

Usamos uma mensagem específica para entender, como msg sensor_msg / image, o local é armazenado em sensor_msgs / msg / image.msg, sua estrutura é a seguinte:

std_msg / Cabeçalho do cabeçalho

uint32 seq

carimbo de data / hora

string frame_id

altura uint32

largura uint32

codificação de string

uint8 is_bigendian

etapa uint32

uint8 [] data

4.2.1.3 comando rosmsg:

  • A lista rosmsg lista todas as mensagens no sistema
  • rosmsg show msg_name exibe o conteúdo de uma mensagem

4.2.2 Serviço

A comunicação de serviço é bidirecional, não apenas pode enviar mensagens, mas também possui feedback. Portanto, o serviço inclui duas partes, uma é o solicitante (Clinet) e a outra é o atendedor / provedor de serviços (servidor). Nesse momento, o solicitante (Cliente) enviará uma solicitação, aguardará o processamento do servidor e retornará uma resposta, para que toda a comunicação do serviço seja concluída por meio de um mecanismo semelhante a "solicitação-resposta".

O diagrama esquemático desse método de comunicação é o seguinte: O nó B é um servidor (respondedor), que fornece uma interface de serviço chamada / Service.Nós geralmente usamos o tipo de string para especificar o nome do serviço, semelhante ao tópico. O nó A iniciou uma solicitação ao nó B e recebeu feedback após o processamento.

O serviço é um método de comunicação síncrona. A chamada sincronização significa que o Nó A aguardará a resposta no local após emitir a solicitação até

Depois que o Nó B processa a solicitação e conclui a resposta, o Nó A continuará sendo executado. O nó A está em processo de espera

Comunicação bloqueada. Esse modelo de comunicação não possui mensagens freqüentes, conflitos e alta ocupação de recursos do sistema, e apenas executa serviços ao aceitar solicitações, o que é simples e eficiente.

4.2.2.1 tópico serviço VS

 

 

4.2.2.2 Comando rosservice

  • lista de serviços Ross exibir lista de serviços
  • informações sobre o serviço de impressão
  • tipo de serviço
  • serviço de impressão uri rosservice uri ROSRPC
  • rosservice find Encontre serviço por tipo de serviço
  • A chamada rosservice usa os argumentos fornecidos para chamar o serviço
  • parâmetros do serviço de impressão rosservice args

4.2.2.3 arquivo srv

O arquivo srv é usado para descrever o serviço (tipo de dados do serviço, o formato dos dados da comunicação do serviço é definido em * .srv. Ele declara um serviço, incluindo a solicitação (solicitação) e resposta (resposta) em duas partes.

A declaração de formato é a seguinte: Exemplos:

msgs_demo / srv / DetectHuman.srv

bool start_detect

---

my_pkg / HumanPose [] pose_data

 

msgs_demo / msg / HumanPose.msg

std_msgs / cabeçalho do cabeçalho

uuid string

int32 number_of_joints

my_pkg / JointPose [] joint_data

 

msgs_demo / msg / JointPose.msg

string joint_name

geometry_msgs / Pose pose

confiança floar32

 

O formato do arquivo srv é muito fixo, a primeira linha é o formato solicitado, separado por --- no meio e a terceira linha é o formato da resposta. Neste exemplo, a solicitação é se deve iniciar a detecção, a resposta é uma matriz e cada elemento da matriz é o gesto de uma pessoa (HumanPose). Quanto ao gesto humano, na verdade é uma msg, portanto, srv pode ser aninhado em msg, mas não pode ser aninhado em srv.

4.2.2.4 Comando rossrv

  • rossrv show show descrição do serviço
  • lista rossrv Listar todos os serviços
  • serviço de exibição rossrv md5 md5sum
  • O pacote rossrv lista os serviços no pacote
  • pacotes rossrv lista pacotes contendo serviços

4.2.3 Servidor de parâmetros

Um servidor de parâmetros também pode ser considerado um "método de comunicação" especial. O ponto especial é que o servidor de parâmetros é onde os nós armazenam parâmetros, usados ​​para configurar parâmetros e compartilhar parâmetros globalmente. O servidor de parâmetros usa a transmissão da Internet e é executado no gerenciador de nós para realizar todo o processo de comunicação.

O servidor de parâmetros, como outro método de transmissão de dados no ROS, é diferente do tópico e do serviço, é mais estático. O servidor de parâmetros mantém um dicionário de dados, que armazena vários parâmetros e configurações.

Existem três maneiras de manter o servidor de parâmetros:

  • Manutenção de linha de comando
  • Leia e escreva no arquivo de inicialização
  • Código fonte do nó

4.2.3.1 Manutenção da linha de comandos: rosparam

  • rosparam set param_key param_value Definir parâmetros
  • rosparam obtém parâmetros de exibição param_key
  • rosparam load file_name carrega parâmetros do arquivo
  • rosparam dump file_name salva parâmetros no arquivo
  • rosparam delete delete delete
  • lista rosparam lista nomes de parâmetros

 load && dump 文件

Os arquivos de carregamento e despejo precisam estar em conformidade com o formato YAML. Exemplos específicos do formato YAML são os seguintes:

nome: «Zhangsan»

idade: 20

sexo: 'M'

pontuação {chinês: 80, matemática: 90}

score_history: [85,82,88,90]

4.2.3.2 Ler e gravar no arquivo de inicialização

Existem muitas tags no arquivo de inicialização e existem apenas duas tags relacionadas ao servidor de parâmetros, uma é <param> e a outra

É <rosparam>.

4.2.3.3 código fonte do nó

O código-fonte do ROS, ou seja, use a API para operar o servidor de parâmetros. Introduziremos o conteúdo específico depois de estudar os capítulos seguintes.

4.2.4 Ação

O Actionlib é uma biblioteca muito importante no ROS. Semelhante ao mecanismo de comunicação de serviço, o actionlib também é um mecanismo de resposta a solicitações.

Método de comunicação, actionlib, compensa principalmente uma falta de comunicação de serviço, ou seja, quando o robô executa uma tarefa de longo prazo

No momento, se o método de comunicação de serviço for usado, o editor não receberá a resposta por um longo tempo, fazendo com que a comunicação receba

Dificultar. Quando a comunicação de serviço não pode concluir bem a tarefa, o actionlib pode ser mais adequado para comunicação de longo prazo.

Processo, o processo de comunicação actionlib pode ser visualizado a qualquer momento, o andamento do processo também pode ser encerrado, um recurso que o torna

Possui alta eficiência em alguns mecanismos especiais.

 

4.2.4.1 O princípio de funcionamento da ação

O princípio de funcionamento da Ação é o modo cliente-servidor, que também é um modo de comunicação bidirecional. Comunicando as partes em ROS

Sob o Protocolo de Ação, o intercâmbio e a comunicação de dados são realizados por meio de mensagens. cliente e servidor fornecem aos usuários uma simples

API para solicitar o destino (no lado do cliente) ou executar o destino por meio de chamadas de função e retornos de chamada (no lado do servidor).

O diagrama esquemático do modo de trabalho é o seguinte:

 

O cliente enviará a instrução de destino e a instrução de ação de cancelamento para o servidor, e poderá enviar informações de status em tempo real, informações de resultados, informações de feedback etc. para o cliente, concluindo assim a parte que o serviço não pode executar.

4.2.4.2 arquivo de ação

Use a biblioteca de ações para solicitar resposta.O formato de conteúdo da ação deve incluir três partes: objetivo, feedback e resultado.

  • Target

Quando o robô executa uma ação, ele deve ter informações claras sobre o alvo em movimento, incluindo a configuração de alguns parâmetros, direção, ângulo, velocidade, etc. Para que o robô possa concluir a tarefa de movimento.

  • Comentários

No decorrer da ação, deve haver feedback das informações de status em tempo real para o implementador do servidor, informando ao implementador o status de conclusão da ação, para que o implementador possa fazer um julgamento preciso para modificar o comando.

  • O resultado

 Quando a movimentação é concluída, o servidor de ação envia os dados do resultado do exercício para o cliente, para que o cliente possa obter todas as informações da ação, por exemplo, pode incluir a duração do movimento do robô, a postura final e assim por diante.

O nome do sufixo do arquivo de especificação de Ação é .action e seu formato de conteúdo é o seguinte:

# Defina a meta

uint32 dishwasher_id # Especifique qual máquina de lavar louça queremos usar

---

# Defina o resultado

uint32 total_dishes_cleaned

---

# Definir uma mensagem de feedback

float32 percent_complete

Publicado 31 artigos originais · Gosto 3 · Visitas 2028

Acho que você gosta

Origin blog.csdn.net/lclfans1983/article/details/105398893
Recomendado
Clasificación