see notice
0.54
使用角速度不行,要用速度才好点
hexapod.py - vrep机器人仿真控制类
by_opt.py - 贝叶斯优化程序
control.py - 主控制程序,跑真赛道的时候用
bluetooth_control.py - 蓝牙信息发送类
image_train.py 包括:
-
循迹神经网络训练程序
train = ImageTrain() train.train(data=data,label=label) # data为数据 label为标签
-
vrep仿真,使用
test_robot()
这行代码来在vrep中仿真.(不要改'turn_straight_cla_v0.2.h5'
这个)
image_label.py - 用于标记图片
None
tet.py ./deprecated/ ./map/ ./logs/
-
使用sample-data.py采集数据-数据为
.npy
格式 -
更改regresion.py中将
if __name__ == "__main__":
内的程序更改如下label = np.load('./data/label_ahead.npy') data = np.load('./data/data_ahead.npy') model=model_2() label = label.reshape(label.shape[0], 1) history = model.fit( label, data, epochs=150, batch_size=8, validation_split=0.05) model.save('./data/NN_ahead.h5') graph('ahead') label = np.load('./data/label_middle.npy') data = np.load('./data/data_middle.npy') model=model_2() label = label.reshape(label.shape[0], 1) history = model.fit( label, data, epochs=100, batch_size=8, validation_split=0.1) model.save('./data/NN_middle.h5') graph('middle') label = np.load('./data/label_back.npy') data = np.load('./data/data_back.npy') model=model_2() label = label.reshape(label.shape[0], 1) history = model.fit( label, data, epochs=150, batch_size=8, validation_split=0.05) model.save('./data/NN_back.h5') graph('back') #检查训练的模型准确率 graph('back') graph('middle') graph('ahead')
因为仿真使用的数据是
.npy
文件,所以这时候仿真所用的数据就是新生成的数据了
- 更改regresion.py中将
if __name__ == "__main__":
内的程序更改为generate_use_data_t([[范围1],[范围2],[范围3]],采样率)
,然后程序会在hexapod
文件夹内生成arduino.txt
这个
范围1
是一个列表[下限,上限]
,例如[-15,15]
这个范围就是上图中
x轴
的范围,也就是vrep
中tip
的坐标采样率是生成数组的长度,一般填
30
就可以了
- 将arduino.txt中的数据复制到
control.ino
就可以了
生成的
arduino.txt
共有六行分别对应//data begin const PROGMEM uint16_t straight_ahead_right[30][3] = const PROGMEM uint16_t straight_middle_right[30][3] = const PROGMEM uint16_t straight_back_right[30][3] = const PROGMEM uint16_t straight_ahead_left[30][3] = const PROGMEM uint16_t straight_middle_left[30][3] = const PROGMEM uint16_t straight_back_left[30][3] =这六行,将他们分别复制到这六行的后面就可以了,注意格式
arduino.txt
中每行数组末尾格式是不对的,记得改
在image-capture.py
文件中更改下面的东西
while True:
if STATE==0:
rb.one_step(0.003)
if STATE==1:
rb.turn_left([20, 30])
if STATE==2:
rb.turn_right([20,36])
- 角度 60度
- 分辨率 1920*1080
两种方法
- 直接分类四种转向状态
- 间接获取数据计算转向状态(四种状态,两种状态?)
- 轨迹线的中线
- 轨迹线的边线
cv2 图片似乎支持两种格式
np.int8
:用于图片显示np.float
:用于图片处理np.uint8
:用于数据保存,图片显示,读取
两者可以通过np.astype
转换
注意: np.int8范围是 -128 - 128 如果搞错可能会出现画面变白
- 训练集数组为
np.uint8
- 使用
from cv2 import cv2
- 更改pylint设置
pylint --extension-pkg-whitelist=cv2
- pv纸 80cm 宽:制作大弯
- 0.6 * 0.9 似乎最便宜