Pequena Tartaruga para Começar com o ROS

1. Introdução básica ao ROS

O ROS (Robot Operating System) fornece uma série de bibliotecas e ferramentas para ajudar os desenvolvedores de software a criar software de aplicativo de robô. Ele fornece muitas funções, como abstração de hardware, drivers de dispositivo, funções de biblioteca, visualização, passagem de mensagens e gerenciamento de pacotes.
ROS é o quatro em um de mecanismo de comunicação + ferramenta de desenvolvimento + função de aplicativo + ecossistema.
Recursos: ponto a ponto, distribuído, suporte a vários idiomas, leve, gratuito e de código aberto.

2. Simulação de tartaruga

  • O primeiro passo é abrir um terminal e digitar o seguinte comando
		roscore
  • O segundo passo é abrir outro terminal e digitar o seguinte comando para iniciar o emulador do little turtle
	rosrun turtlesim turtlesim_node
  • O terceiro passo é abrir outro terminal e digitar o seguinte comando para iniciar o controlador
	rosrun turtlesim turtle_teleop_key

Neste ponto, você pode usar as teclas para cima, baixo, esquerda e direita para mover a pequena tartaruga.
insira a descrição da imagem aqui

3. Escreva um programa para permitir que a pequena tartaruga realize um movimento circular

1. Use o visualizador de tópicos para visualizar a transmissão de mensagens entre dois nós

Visualizador de tópicos abertos

Digite os seguintes comandos na linha de comando

rosrun rqt_graph rqt_graph

insira a descrição da imagem aqui
Nesta figura, pode-se ver que os dois nós, turtle_teleop e turtlesim, se comunicam através de /strong/cmd_vel, que é o tópico, e as informações do botão serão publicadas neste tópico, e então turtlesim_node recebe informações deste tópico para controlar seu movimento, então você precisa escrever um comando de controle de envio de arquivo.
Digite o código da figura abaixo para ver a aquisição da mensagem.
insira a descrição da imagem aqui

Fundamentos do Movimento da Tartaruga Bebê

Digite o seguinte comando para visualizar

rostopic type /turtle1/cmd_vel

Você pode ver o seguinte, o tipo de dados é geometry_msgs/Twist e você precisa verificar mais.
insira a descrição da imagem aqui
Digite o seguinte código para verificar:

rosmsg show geometry_msgs/Twist

insira a descrição da imagem aqui

  • Linear significa velocidade linear;
  • Angular significa velocidade angular;
  • xyz representa as coordenadas;
    se você deseja controlar a rotação da tartaruga, deve continuar avançando a uma velocidade constante e, portanto, a velocidade angular não deve ser 0.

2. Escreva o código para realizar o círculo

1. Crie um espaço de trabalho

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace

2. Compile o espaço de trabalho

cd ~/catkin_ws
catkin_make
source devel/setup.bash

3. Crie um pacote de funções do ROS

Crie um pacote de recursos:

cd ~/catkin_ws/src
catkin_create_pkg learning_topic std_msgs rospy roscpp geometry_msgs

Compile o pacote de recursos:

cd ~/catkin_ws
catkin_make
source devel/setup.bash

4. Código C++

#include <sstream>
#include "ros/ros.h"
#include "std_msgs/String.h"
#include "geometry_msgs/Twist.h"

int main(int argc, char **argv)
{
    
    
	//初始化节点
	ros::init(argc, argv, "publisher");
	//创建节点句柄
	ros::NodeHandle n;
	//创建publisher,发布话题[/turtle1/cmd_vel],消息类型[geometry_msgs::Twist]
	ros::Publisher chatter_pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel", 1000);
	//设置循环频率
	ros::Rate loop_rate(100);
	while (ros::ok())
	{
    
    
		//定义发布的数据
		geometry_msgs::Twist msg;
		//定义linear数据
		geometry_msgs::Vector3 linear;
		linear.x=1;
		linear.y=0;
		linear.z=0;
		//定义angular数据
		geometry_msgs::Vector3 angular;
		angular.x=0;
		angular.y=0;
		angular.z=1;
		msg.linear=linear;
		msg.angular=angular;
		//发布msg数据
		chatter_pub.publish(msg);
		//循环等待回调函数
		ros::spinOnce();
		//按照循环频率延时
		loop_rate.sleep();
	}
	return 0;
}


5. Adicione opções de compilação

Abra o arquivo CmakeLists

cd ~/catkin_ws/src/learning_topic
gedit CMakeLists.txt

Adicione o seguinte código no final do arquivo:

add_executable(publisher src/publisher.cpp)
target_link_libraries(publisher ${
    
    catkin_LIBRARIES})

Salve e saia e compile.

cd ~/catkin_ws
catkin_make

6. Comece a pequena tartaruga

roscore
#打开新终端
rosrun turtlesim turtlesim_node
#打开新终端
cd ~/catkin_ws
#下面这一步是为了保证rosrun命令能够找到相应的功能包
source ~/catkin_ws/devel/setup.bash
rosrun learning_topic publisher

O resultado é mostrado na figura abaixo, a tartaruga bebê realiza um movimento circular.
insira a descrição da imagem aqui

Quatro. Resumo

Este experimento é principalmente para entender o mecanismo de envio e recebimento de mensagens e tópicos do ROS, usar a pequena demonstração da tartaruga para experimentar o ROS intuitivamente e programar para controlar a pequena tartaruga para realizar movimentos circulares.

5. Referências

Instale o ROS no Ubuntu 18.04——realize
a prática de comunicação ROS de simulação de pequena tartaruga (implementação de comunicação de pequena tartaruga) (9) C++, Python

Acho que você gosta

Origin blog.csdn.net/cjhz2333/article/details/129347227
Recomendado
Clasificación