A pequena tartaruga simula e realiza movimentos circulares
- 1. Introdução básica ao ROS
- 2. Simulação de tartaruga
- 3. Escreva um programa para permitir que a pequena tartaruga realize um movimento circular
- Quatro. Resumo
- 5. Referências
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.
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
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.
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.
Digite o seguinte código para verificar:
rosmsg show geometry_msgs/Twist
- 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.
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