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
cnn1/training1.py
‘~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
‘~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
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
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