Automec-ad user commands v02

Os comandos básicos para o real e simulação são idênticos pois baseiam-se em ficheiros launch com os mesmos nomes, sendo assim, o que muda é o nome do pacote em variações com estes nomes de launch files (o numero e as letras finais identificam a cnn a usar) :

  • traxxas_free_drive.launch
  • traxxas_drive_write.launch
  • traxxas_training1.launch
  • traxxas_drive1.launch
  • traxxas_drive_signal1.launch

A estes nomes acrescem em alguns casos um ou dois parametros:

  • folder:=setX
  • model:=modelX.h5

Abaixo seguem exemplos para cada um dos casos (real e simulação).

Mais abaixo ainda existe um resumo dos nodes e dos respectivos parâmetros, e algumas notas.

Físico (real)

condução livre com o carro para testar
roslaunch physical_bringup traxxas_free_drive.launch

sessão para guardar dados de condução para treinar
roslaunch physical_bringup traxxas_drive_write.launch folder:=setX

treinar com os dados de uma sessão guardada
roslaunch physical_bringup traxxas_training1.launch folder:=setX model:=modelX.h5

condução autónoma com um modelo previamente treinado
roslaunch physical_bringup traxxas_drive1.launch model:=modelX.h5

condução autónoma com um modelo previamente treinado e reação aos sinais TODO
roslaunch physical_bringup traxxas_drive_signal1.launch model:=modelX.h5

 

Simulação

condução livre com o carro para testar
roslaunch simulation_bringup traxxas_free_drive.launch

sessão para guardar dados de condução para treinar
roslaunch simulation_bringup traxxas_drive_write.launch folder:=setX

treinar com os dados de uma sessão guardada
roslaunch simulation_bringup traxxas_training1.launch folder:=setX model:=modelX.h5

roslaunch simulation_bringup traxxas_training2a.launch folder:=setX model:=modelX.h5

roslaunch simulation_bringup traxxas_training2av.launch folder:=setX model:=modelX.h5

condução autónoma com um modelo previamente treinado
roslaunch simulation_bringup traxxas_drive1.launch model:=modelX.h5

roslaunch simulation_bringup traxxas_drive2a.launch model:=modelX.h5

roslaunch simulation_bringup traxxas_drive2av.launch model:=modelX.h5

condução autónoma com um modelo previamente treinado e reação aos sinais TODO
roslaunch simulation_bringup traxxas_drive_signal1.launch model:=modelX.h5

roslaunch simulation_bringup traxxas_drive_signal2a.launch model:=modelX.h5

roslaunch simulation_bringup traxxas_drive_signal2av.launch model:=modelX.h5

Notas sobre os ficheiros launch/modules que estão nos pacotes bringup
Tem launch files que incluem os launch files dos nodes nos respectivos pacotes. Estes launch files são incluídos pelos launch files finais.
O propósito é facilitar as alterações quando um node ou um pacote muda de nome. Neste caso basta alterar os nomes dos pacotes nestes launch files.
Além disso também contem os parâmetros básicos pré-definidos para o contexto, evitando que todos os launch files finais tenham essas definições.

 

cnn

Data, contem as pastas das diversas sessões de condução para recolha de dados para treino, uma pasta por cada conjunto de imagens, e respectivo ficheiro csv

Models, contem os modelos resultantes dos treinos efectuados com os dados recolhidos

Launch, contem os ficheiros de lançamento para cada um dos nodes (devem ser incluidos nos ficheiros de pacotes bringup

  • write.launch
    • driving1.launch
    • training1.launch

Scripts

Contem os scripts de uso global  e uma pasta por cada conjunto de scripts associados a um modelo de machine learning especifico

  • write.py
  • cnn1/
  • cnn2

write.py

‘~image_raw_topic‘, ‘/ackermann_vehicle/camera/rgb/image_raw’
‘~twist_cmd_topic‘, ‘/cmd_vel’
‘~folder‘, ‘set1’
‘~rate‘, 30
‘~width‘, 320
‘~height‘, 160

cnn1/training1.py

‘~base_folder‘, ‘set1’)- nos argumentos dos launchs está abreviado para folder
‘~modelname‘, ‘model1.h5’) – nos argumentos dos launchs está abreviado para model
‘~epochs‘, 20)
‘~steps_per_epoch‘, 100)
‘~batch_xtrain‘, 20)
‘~batch_ytrain‘, 1)
‘~batch_xval‘, 25)
‘~batch_yval‘, 0)
‘~validation_steps‘, 50)

cnn1/driving1.py

‘~image_raw_topic‘, ‘/ackermann_vehicle/camera/rgb/image_raw’
‘~twist_cmd_topic‘, ‘/cmd_vel’
‘~vel_cmd_topic‘, ” – se não for vazio publica  o booleano no tópico
‘~twist_linear_x‘, 1
‘~float_cmd_topic‘, ” – se não for vazio subscreve o tópico para obter a velocidade a aplicar (modo real), se não aplica a velocidade explicita em twist_linear_x (modo simulação)
‘~modelname‘, ‘model1.h5’ – nos argumentos dos launchs está abreviado para model

physical_bringup

Launch files para o carro real. Acho que me falta lançar o rosserial.
Ver acima os comandos.

robot_driving

  • physical_camera.launch – Lança o node camera2topic.py
  • physical_robot_control.launch – Lança o node androidConversor.py
  • physical_robot_driving.launch – Lança por inclusão o conversor e a camera

camera2topic.py

‘~camera_topic‘,’/real_camera’
‘~int_camera_id‘, 2

androidConversor.py

‘~twist_dir_topic‘, ‘/android_input_dir’
‘~bool_vel_topic‘, ‘/android_input_vel’
‘~int_dir_topic‘, ‘/pub_dir’
‘~int_vel_topic‘, ‘/pub_vel’
‘~int_vel_max‘, 108

signal_recognition

TODO: fazer apenas um launch, e colocar as diferenças para os pacotes bringup

  • physical_signal_recognition.launch
  • signal_panel_recognition.launch

signal_panel_recognition.py

‘~image_raw_topic‘, ‘/ackermann_vehicle/camera2/rgb/image_raw’
‘~float_cmd_topic‘, ‘/flt_cmd’
‘~twist_linear_x‘, 0.5

simulation_bringup

Launch files para a simulação.
Ver acima os comandos.

simulation_environment

Contem a definição dos mundos (pistas)

  • arena.launch (world:=nome)
  • signal_panel.launch

gazebo_signalling_panel_controller

  • “topic_monitor1”, topic_monitor1, “/monitor1/image1”
  • “topic_monitor2”, topic_monitor2, “/monitor2/image2”
  • “source_package”, source_package, “simspace”
  • “source_folder”, source_folder, “semaphores_pics”
  • “name_pic0”, name_pic0, “left”
  • “name_pic1”, name_pic1, “right”
  • “name_pic2”, name_pic2, “up”
  • “name_pic3”, name_pic3, “stop”
  • “name_pic4”, name_pic4, “parking”
  • “name_pic5”, name_pic5, “chess”
  • “default_pic”, default_pic, 3

traxxas_description

Contem os modelos do carro, configurações e controller para o gazebo.
Tem mais dois nodes para implementação da conversão das mensagens twist para ackermann ou para o modelo usado pelo carro real. (eventualmente passar estes nodes para o pacote robot_driving)