20230304-0309记录

Test代码记录

应该能够完成:设置不同的场景、速度下的train和test。

注意点:

train记录:
进行训练,在train_setting文件中可以进行batch_size等参数修改

cd agile_autonomy_ws
source catkin_aa/devel/setup.bash
conda activate tf_24
cd /home/freq/agile_autonomy_ws/catkin_aa/src/agile_autonomy/planner_learning
python train.py --settings_file=config/train_settings.yaml

python test_trajectories.py --settings_file=config/test_settings.yaml

开始batch_size为8,out of memory无法运行,
修改为4后可以运行,但还是会有failed to allocate信息:
在这里插入图片描述
设为2:
在这里插入图片描述
第一次训练结束时会有checkpoint的错误:
checkpoint第二次训练没有checkpoint的错误:
在这里插入图片描述

训练时间
batch size=4,max_training_epochs=150,
前8个是每epoch存为一个ckpt,后面是每5次epoch存为一个ckpt
在这里插入图片描述

TrainTestTime / min
10235
20255
---

在forest(密度为6)环境下,速度为7m/s,其余为默认设置:

ckptTest Time效果
1-2060不好,出现一直打圈,向一个方向偏
2260不错,能到达终点,并且路径较贴合glb
2360也还可以,但是不如22
2460一直往左偏,成功率不足1/3
(没写完,后面还有很多没尝试)

test的部分显示:

Setting Tree Spacing to 5
Setting Object Spacing to 5
==========================
     RESET SIMULATION     
==========================

Unpausing Physics...

Placing quadrotor...
success: True
status_message: "SetModelState: set model state done"
Received call to Clear Buffer and Restart Experiment

/home/freq/anaconda3/envs/tf_24/lib/python3.8/site-packages/tensorflow/python/keras/backend.py:434: UserWarning: `tf.keras.backend.set_learning_phase` is deprecated and will be removed after 2020-10-11. To update it, simply pass a True/False value to the `training` argument of the `__call__` method of your layer or model.
  warnings.warn('`tf.keras.backend.set_learning_phase` is deprecated and '
Resetting experiment

Done Reset
Doing experiment 0
Reading pointcloud from ../data_generation/data/rollout_23-03-07_16-18-42/pointcloud-unity.ply
min max pointcloud
[29.90007973 29.90003014  6.70941496]
[-29.90000534  10.09998322  -1.49058318]
Reading Trajectory from ../data_generation/data/rollout_23-03-07_16-18-42/reference_trajectory.csv
Loaded traj ../data_generation/data/rollout_23-03-07_16-18-42/reference_trajectory.csv with 324 elems
/home/freq/anaconda3/envs/tf_24/lib/python3.8/site-packages/numpy/core/_asarray.py:171: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray.
  return array(a, dtype, copy=False, order=order, subok=True)
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Crashing into something!
Crashing into something!
Crashing into something!
Crashing into something!
Crashing into something!
Stopping experiment because quadrotor outside allowed range!
[3.749223200723757, 13.75762263211665, 6.717002034131803]
Giving a stop from python
experiment done
------- 1 Rollout ------------
expert_usage is 23.684
number_crashes is 5.000
travelled_dist is 9.259
closest_distance is 0.166
-------------------------------
Rollout dir is ../data_generation/data/rollout_23-03-07_16-18-42
==========================
     RESET SIMULATION     
==========================
Stopping experiment because quadrotor outside allowed range!
[7.120322108285449, 14.975754943747933, 6.807366426187068]
Giving a stop from python

Unpausing Physics...

Placing quadrotor...
success: True
status_message: "SetModelState: set model state done"
Received call to Clear Buffer and Restart Experiment

/home/freq/anaconda3/envs/tf_24/lib/python3.8/site-packages/tensorflow/python/keras/backend.py:434: UserWarning: `tf.keras.backend.set_learning_phase` is deprecated and will be removed after 2020-10-11. To update it, simply pass a True/False value to the `training` argument of the `__call__` method of your layer or model.
  warnings.warn('`tf.keras.backend.set_learning_phase` is deprecated and '
Resetting experiment

Done Reset
Doing experiment 1
Reading pointcloud from ../data_generation/data/rollout_23-03-07_16-19-52/pointcloud-unity.ply
min max pointcloud
[29.90007973 29.90003967  6.71217346]
[-29.90000534  10.0999918   -1.48782468]
Reading Trajectory from ../data_generation/data/rollout_23-03-07_16-19-52/reference_trajectory.csv
Loaded traj ../data_generation/data/rollout_23-03-07_16-19-52/reference_trajectory.csv with 324 elems
/home/freq/anaconda3/envs/tf_24/lib/python3.8/site-packages/numpy/core/_asarray.py:171: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray.
  return array(a, dtype, copy=False, order=order, subok=True)
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Stopping experiment because quadrotor outside allowed range!
[-9.132061617774474, 10.067377358365672, 5.0206328220405405]
Giving a stop from python
experiment done
------- 2 Rollout ------------
expert_usage is 41.999
number_crashes is 0.000
travelled_dist is 11.380
closest_distance is 0.799
-------------------------------
Rollout dir is ../data_generation/data/rollout_23-03-07_16-19-52
==========================
     RESET SIMULATION     
==========================
Stopping experiment because quadrotor outside allowed range!
[-6.9012844496315395, 9.30230092949374, 5.508615005073673]
Giving a stop from python

Unpausing Physics...

Placing quadrotor...
success: True
status_message: "SetModelState: set model state done"
Received call to Clear Buffer and Restart Experiment

/home/freq/anaconda3/envs/tf_24/lib/python3.8/site-packages/tensorflow/python/keras/backend.py:434: UserWarning: `tf.keras.backend.set_learning_phase` is deprecated and will be removed after 2020-10-11. To update it, simply pass a True/False value to the `training` argument of the `__call__` method of your layer or model.
  warnings.warn('`tf.keras.backend.set_learning_phase` is deprecated and '
Resetting experiment

Done Reset
Doing experiment 2
Reading pointcloud from ../data_generation/data/rollout_23-03-07_16-20-58/pointcloud-unity.ply
min max pointcloud
[29.90007973 29.90004349  6.71478558]
[-29.90000534  10.09999657  -2.28521252]
Reading Trajectory from ../data_generation/data/rollout_23-03-07_16-20-58/reference_trajectory.csv
Loaded traj ../data_generation/data/rollout_23-03-07_16-20-58/reference_trajectory.csv with 324 elems
/home/freq/anaconda3/envs/tf_24/lib/python3.8/site-packages/numpy/core/_asarray.py:171: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray.
  return array(a, dtype, copy=False, order=order, subok=True)
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Starting up!
Crashing into something!
experiment done
------- 3 Rollout ------------
expert_usage is 21.348
number_crashes is 1.000
travelled_dist is 27.267
closest_distance is 0.039
-------------------------------
Rollout dir is ../data_generation/data/rollout_23-03-07_16-20-58
==========================
     RESET SIMULATION     
==========================
It worked well. (Arrived at 265 / 324)
Giving a stop from python

Unpausing Physics...

Placing quadrotor...
success: True
status_message: "SetModelState: set model state done"
Received call to Clear Buffer and Restart Experiment

/home/freq/anaconda3/envs/tf_24/lib/python3.8/site-packages/tensorflow/python/keras/backend.py:434: UserWarning: `tf.keras.backend.set_learning_phase` is deprecated and will be removed after 2020-10-11. To update it, simply pass a True/False value to the `training` argument of the `__call__` method of your layer or model.
  warnings.warn('`tf.keras.backend.set_learning_phase` is deprecated and '
Resetting experiment

Done Reset

每次训练后会得到一组ckpt,可以在test_setting.yaml中修改ckpt-xx来对每个模型进行测试:
在这里插入图片描述
default.yaml中可以设置测试时的速度,默认为7m/s:
在这里插入图片描述
flightmare.yaml中可以设置环境的参数:
在这里插入图片描述

ckpt-22的效果,感觉效果还可以捏,不会打圈,也不会总是超出边界:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(没写完)啊啊啊啊啊啊啊啊之前写的怎么不见了啊啊啊

0
在这里插入图片描述在这里插入图片描述

在这里插入图片描述

4
在这里插入图片描述1

在这里插入图片描述

运行分析:
在这里插入图片描述
在这里插入图片描述
有时候会有两个stopping的内容,搞清楚这两个意思,并且为什么会不同。(还是不懂啊!)
在这里插入图片描述
有几个参数(在update_metrics中):
expert_usage
number_crashes
travelled_dist
closest_distance

expert_usage:
在这里插入图片描述
在这里插入图片描述

利用end_ref_percentage表示目前进程占轨迹总长的比例,在0.8内即视为worked well

在这里插入图片描述在这里插入图片描述
利用位置信息判断是否crashed或者超出边界在这里插入图片描述

在这里插入图片描述

    def check_task_progress(self, _timer):
        # go here if there are problems with the generation of traj
        # No need to check anymore
        if self.maneuver_complete:
            return
        if not self.planner_succed:
            print("Stopping experiment because planner failed!")
            self.publish_stop_recording_msg()
            self.exp_failed = True
            return

        # check if pointcloud is ready
        if self.pcd is None or (self.pc_min is None):
            return
        # check if reference is ready
        if not self.reference_initialized:
            return

        if (self.reference_progress / (self.reference_len)) > self.end_ref_percentage:
            print("It worked well. (Arrived at %d / %d)" % (self.reference_progress, self.reference_len))
            self.publish_stop_recording_msg()

        # check if crashed into something
        quad_position = [self.odometry.pose.pose.position.x,
                         self.odometry.pose.pose.position.y,
                         self.odometry.pose.pose.position.z]

        # Check if crashed into ground or outside a box (check in z, x, y)
        if (quad_position[0] < self.pc_min[0]) or (quad_position[0] > self.pc_max[0]) or \
           (quad_position[1] < self.pc_min[1]) or (quad_position[1] > self.pc_max[1]) or \
           (quad_position[2] < self.pc_min[2]) or (quad_position[2] > self.pc_max[2]):
            print("Stopping experiment because quadrotor outside allowed range!")
            print(quad_position)
            self.publish_stop_recording_msg()
            return
        if self.reference_progress > 50: # first second used to warm up
            self.update_metrics(quad_position)
    def update_metrics(self, quad_position):
        # Meters until crash
        if self.metrics['number_crashes'] == 0:
            current_velocity = np.array([self.odometry.twist.twist.linear.x,
                                         self.odometry.twist.twist.linear.y,
                                         self.odometry.twist.twist.linear.z]).reshape((3, 1))
            travelled_dist = current_velocity * 1. / 20.  # frequency of update
            travelled_dist = np.linalg.norm(travelled_dist)  # integrate
            self.metrics['travelled_dist'] += travelled_dist

        if self.metrics['travelled_dist'] < 5.0:
            # no recording in the first 5 m due to transient
            return
        # Number of crashes per maneuver
        [_, __, dist_squared] = self.pcd_tree.search_knn_vector_3d(quad_position, 1)
        closest_distance = np.sqrt(dist_squared)[0]

        if self.metrics['closest_distance'] > closest_distance and self.metrics['number_crashes'] == 0:
            self.metrics['closest_distance'] = closest_distance

        if closest_distance < self.config.crashed_thr and (not self.crashed):
            # it crashed into something, stop recording. Will not consider a condition to break the experiment now
            print("Crashing into something!")
            self.metrics['number_crashes'] += 1
            self.crashed = True
            # uncomment if you want to stop after crash
            # self.publish_stop_recording_msg()
        # make sure to not count double crashes
        if self.crashed and closest_distance > 1.5 * self.config.crashed_thr:
            self.crashed = False

在三种情况下停止飞行
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer.iter
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer.beta_1
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer.beta_2
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer.decay
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'm' for (root).net.resize_op.0.kernel
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'm' for (root).net.resize_op.0.bias
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'm' for (root).net.img_mergenet.0.kernel
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'm' for (root).net.img_mergenet.0.bias
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'm' for (root).net.img_mergenet.2.kernel
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'm' for (root).net.img_mergenet.2.bias
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'm' for (root).net.img_mergenet.4.kernel
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'm' for (root).net.img_mergenet.4.bias
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'm' for (root).net.img_mergenet.6.kernel
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'm' for (root).net.img_mergenet.6.bias
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'm' for (root).net.resize_op_2.0.kernel
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'm' for (root).net.resize_op_2.0.bias
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'm' for (root).net.states_conv.0.kernel
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'm' for (root).net.states_conv.0.bias
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'm' for (root).net.states_conv.2.kernel
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'm' for (root).net.states_conv.2.bias
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'm' for (root).net.states_conv.4.kernel
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'm' for (root).net.states_conv.4.bias
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'm' for (root).net.states_conv.6.kernel
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'm' for (root).net.states_conv.6.bias
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'm' for (root).net.resize_op_3.0.kernel
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'm' for (root).net.resize_op_3.0.bias
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'm' for (root).net.plan_module.0.kernel
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'm' for (root).net.plan_module.0.bias
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'm' for (root).net.plan_module.2.kernel
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'm' for (root).net.plan_module.2.bias
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'm' for (root).net.plan_module.4.kernel
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'm' for (root).net.plan_module.4.bias
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'm' for (root).net.plan_module.6.kernel
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'm' for (root).net.plan_module.6.bias
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'v' for (root).net.resize_op.0.kernel
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'v' for (root).net.resize_op.0.bias
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'v' for (root).net.img_mergenet.0.kernel
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'v' for (root).net.img_mergenet.0.bias
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'v' for (root).net.img_mergenet.2.kernel
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'v' for (root).net.img_mergenet.2.bias
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'v' for (root).net.img_mergenet.4.kernel
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'v' for (root).net.img_mergenet.4.bias
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'v' for (root).net.img_mergenet.6.kernel
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'v' for (root).net.img_mergenet.6.bias
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'v' for (root).net.resize_op_2.0.kernel
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'v' for (root).net.resize_op_2.0.bias
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'v' for (root).net.states_conv.0.kernel
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'v' for (root).net.states_conv.0.bias
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'v' for (root).net.states_conv.2.kernel
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'v' for (root).net.states_conv.2.bias
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'v' for (root).net.states_conv.4.kernel
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'v' for (root).net.states_conv.4.bias
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'v' for (root).net.states_conv.6.kernel
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'v' for (root).net.states_conv.6.bias
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'v' for (root).net.resize_op_3.0.kernel
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'v' for (root).net.resize_op_3.0.bias
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'v' for (root).net.plan_module.0.kernel
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'v' for (root).net.plan_module.0.bias
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'v' for (root).net.plan_module.2.kernel
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'v' for (root).net.plan_module.2.bias
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'v' for (root).net.plan_module.4.kernel
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'v' for (root).net.plan_module.4.bias
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'v' for (root).net.plan_module.6.kernel
WARNING:tensorflow:Unresolved object in checkpoint: (root).optimizer's state 'v' for (root).net.plan_module.6.bias
WARNING:tensorflow:A checkpoint was restored (e.g. tf.train.Checkpoint.restore or tf.keras.Model.load_weights) but not all checkpointed values were used. See above for specific issues. Use expect_partial() on the load status object, e.g. tf.train.Checkpoint.restore(...).expect_partial(), to silence these warnings, or use assert_consumed() to make the check explicit. See https://www.tensorflow.org/guide/checkpoint#loading_mechanics for details.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Free...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值