一、利用收集的数据进行训练测试
在学习笔记(二)中,利用dagger收集了五个轨迹数据,在这里进行之前的训练测试:
在train文件夹内就是之前采集到的数据,而在val文件夹内,是在之前下载的数据集中的test文件内的数据。
cd agile_autonomy_ws
source catkin_aa/devel/setup.bash
conda activate tf_24
cd /home/pipiw/agile_autonomy_ws/catkin_aa/src/agile_autonomy/planner_learning
python train.py --settings_file=config/train_settings.yaml
这里需要把train_settings.yaml文件内容train和val指向上述的文件夹内,修改后的对应内容如下:
log_dir: 'train_straight_7ms'
train_dir: "data/train"
val_dir: "data/val"
train_straight_7ms文件夹在/home/pipiw/agile_autonomy_ws/catkin_aa/src/agile_autonomy/planner_learning路径下。
找到train_straight_7ms,该文件内容如下:
train文件夹的内容应该是模型信息。
在之前的测试程序中,将模型信息改为该文件夹内的ckpt-38,并运行程序,程序运行失败。
随后将数据集中的部分训练数据(6条)进行训练,按照同样的步骤,进行测试,发现程序可以运行。
test_settings.yaml修改内容:
resume_file: "/home/pipiw/agile_autonomy_ws/catkin_aa/src/agile_autonomy/planner_learning/train_straight_7ms/20220218-112716/train/ckpt-38"
目前猜想可能是收集到的训练数据有问题。
修改措施:
在GitHub上,找到作者的评论,val文件内采用train收集的数据其中任意一个即可。
训练完成后,加载模型,测试效果如下:
二、dagger进行收集数据以及测试
在学习笔记(二)中已经进行了dagger的测试。能够成功利用dagger命令进行数据集的收集,并且在收集过程以及阅读代码的过程中,发现dagger其中还包括训练过程,需要实现建立val文件夹,并且将某一个数据放入其中,重新进行测试。
运行如下语句:
cd agile_autonomy_ws
source catkin_aa/devel/setup.bash
roslaunch agile_autonomy simulation.launch
cd agile_autonomy_ws
source catkin_aa/devel/setup.bash
conda activate tf_24
cd /home/pipiw/agile_autonomy_ws/catkin_aa/src/agile_autonomy/planner_learning
python dagger_training.py --settings_file=config/dagger_settings.yaml
运行过程如下:
当运行到第十次采集时,程序设定在此时进行训练:
但是此时没有设置val文件内容,所以会报错,根据github上作者的评论,val文件内容可以选择train内的任意一个文件进行训练。
在dagger过程中遇到的几个错误,但是这几个错误不是一直触发的:
(1)out_rot_input错误
该错误根据代码来看是在该参数还没有初始化的时候,便已经进行调用了。因为该参数的定义不在__init__内,而在别的一个函数里面,所以这里可能会出问题。
(2)expert_pub错误
这里在源码内寻找了好久,都没有找到这个参数的定义,所以在此将这个参数暂时替换了一下:
替换成了data_pub。等对代码再熟悉一下,查看一下该处的含义。但是该错误是出于一个else里面,并不会经常触发。
结语
至此,所有的基本测试都已经完成。下一步的工作准备在pycharm内进行代码结构以及程序运行方面的学习。