ThundeRatz / travesim

Gazebo simulation environment for IEEE Very Small Size Soccer robots
MIT License
29 stars 0 forks source link

Retirar suporte ao diff_driver_controller #2

Closed FelipeGdM closed 4 years ago

FelipeGdM commented 4 years ago

O tutorial oficial do ROS pra criar modelos de simulação no Gazebo utiliza um pacote de controle dos motores chamado http://wiki.ros.org/diff_drive_controller.

A primeira versão da simulação do VSS usava o diff_drive_controller, pois foi desenvolvida seguindo o tutorial oficial do ROS. Esse controlador recebe uma msg do tipo Twist e realiza o acionamento dos motores do robô. Para o histórico do uso desse controlador, veja o histórico do arquivo de configuração diffdrive.yaml

A principal vantagem em controlar o robô dessa forma é a facilidade na documentação (uso no tutorial oficial do ROS) e a existência da ferramenta gráfica rqt_robot_steering que permite o controle da simulação pela interface do computador.

No entanto, esse controlador abstrai coisas demais, o nosso projeto retorna a velocidade das rodas, não a velocidade do robô em si, e o controlador se mostrou instável durante as simulações.

Versões futuras do projeto deverão utilizar duas instâncias do velocity_controllers, uma para cada motor do robô. Esse controlador recebe uma mensagem do tipo std_msgs/Float64 que representa a velocidade angular desejada para o motor.

No momento em que escrevo, a migração está parcialmente concluída, as dependências lógicas do diff_driver_controller ainda não foram totalmente removidas na simulação de um robô. Um script python ainda deve ser desenvolvido para transformar msgs do tipo Twist em duas msgs Float64 (cada uma representado a velocidade angular de um motor), de modo a ainda ser possível utilizar a ferramenta gráfica rqt_robot_steering.

A priori, serei eu, @FelipeGdM quem vai fazer isso. Se alguém demonstrar interesse, essa tarefa será prontamente terceirizada. Estou abrindo essa issue para fins de documentação.