JetBot AI Kit 教程五、自主避障

Collision-avoidance

要实现自主避障首先需要收集数据,通过摄像头拍摄各种图片,然后通过云端训练神经网络,最后通过训练的模型实现避障

第一步:在JetBot上收集数据

  • 在浏览器地址栏输入http://<jetbot_ip_address>:8888连接到小车,左侧打开Notebooks/collision_avoidance/。打开data_collection.ipynb文件。
  • 运行程序后出现如图所示界面,将小车放到不同的位置,如果前方没有障碍则点击add free. 如果小车前方有障碍就点击add blocked。拍摄到的图片会保存在dataset文件夹中,尽可能多的拍摄各种情况的图片。可以尝试不同的方向,不同的亮度,不同的对象/碰撞类型(墙、壁架等),可以尝试不纹理的地板/物体(有图案的、光滑的、玻璃等)

  • 小车搜集到场景数据越多,避障的效果也就越好。所以尽可能多的获取不同的数据对避障效果非常重要。一般需要每种情况至少拍摄100张图片
  • 最后运行程序打包图片,打包之后,在当前的目录下会出现一个dataset.zip压缩文件

第二步:训练神经网络

  • 在浏览器地址栏输入http://<jetbot_ip_address>:8888连接到小车,左侧打开Notebooks/collision_avoidance/,打开train_model.ipynb文件
  • 此处如果已经有了刚刚压缩的dataset.zip文件,则不需要再运行此语句进行解压,否则会提示是否覆盖已存在的文件

  • 程序运行到此处会下载alexnet模型,下载时间有点长。下载程序后/home/hetbot/.torch/models目录下会出现一个alexnet-owt-4df8aa71.pth文件。

  • 最后运行程序训练神经网络,运行时间比较长。训练完成后,当前目录下会出现一个best_mode.pth文件。

第三步:自助避障

  • 在浏览器地址栏输入http://<jetbot_ip_address>:8888连接到小车,左侧打开Notebooks/collision_avoidance/。打开live_demo.ipynb文件
  • 运行程序后会显示摄像头实时图像和一条滑条。互调表示遇到障碍物的概率,0.00表示前方没有障碍物,1.00表示前方哟障碍物需要转向避让。

  • 此处适当调小一点速度,避免速度太快直接撞上障碍物。如果部分地方不能实现避障建议采集更多的数据。

【注意】部分语句运行时间可能比较长,JupyterLab右上角有程序运行提示标志。当小圆点为黑色时表示程序正在运行,白色表示空闲状态。