嘿!您似乎在 United States,您想使用我们的 English 网站吗?
Switch to English site
Skip to main content

在NVIDIA Jetson Nano上实现JetBot AI自驾车项目-01基础安装篇

 

作者

郭俊廷

难度

普通

 

一、JetBot专案介绍

JetBot是基于NVIDIA Jetson Nano的一款开源机器人,JetBot使用NVIDIA Jetson Nano做为运算核心。使用无线游戏杆控制器或网页控制JetBot小车,透过摄影机拍照收集数据,在Jetson Nano里面训练、实现避免碰撞、对象跟随、道路跟随等效果。

 

以下是JetBot官方的介绍

  • JetBot是基于NVIDIA Jetson Nano的开源机器人,特点有以下几点:
  • 经济实惠-不到150美元的Jetson Nano A02以及附加产品
  • 教学-从基本移动到基于人工智能的避免碰撞的教学
  • 好玩!-通过浏览器进行互动程序编辑
  • 建立和使用JetBot可提供创建全新AI项目所需的体验。

 

本篇文章将带大家一步一步从Github安装JetBot项目相关的套件,您也可以直接从附件下载我们安装好的系统备份文件。

 

首先来看我们JetBot小车的实体图跟范例成果影片吧

0122_fe65f7e32bdc294c83f9b140c66bf03dce0701e8.jpg

JetBot小车的实体图

 

范例成果影片

 

二、硬件介绍

我们先来看看JetBot官方建议的硬件列表跟我们使用的材料清单

https://github.com/NVIDIA-AI-IOT/jetbot/wiki/bill-of-materials

 

JetBot官方建议的硬件列表

我们所使用的材料清单

1.Jetson Nano*1

1.JETSON NANO DEVELOPMENT KIT

*1+风扇*1

2.64 GBMicro SD卡*1

2.64G Micro SD卡*1

3.电源供应器*1

3.5V4A变压器(接头外径5.5mm/内径2.1mm)*1

4.马达*2

4.TT马达*2(已焊线)

5.Feather2927马达驱动版*1

5.DFRobot DFR0592马达驱动板*1

6.全向轮*1

6.全向轮*1

7.电池*1

7.PQI 12000mAh Type C双输出行动电源*1

8.USB线*1

8.Type C TO Micro USB线*1

9.PiOLED显示器*1

9.USB线红黑剥线头*1

10.PiOLED转接头*1

10.压克力车身*1

11.车身3D模块*1

11.摄影机支架3D打印件固定座*1

12.摄影机支架3D模块*1

12.Raspberry Pi Camera V2摄影机*1

13.摄影机*1

13.轮胎*2

14.Wi-Fi模块*1

14.D-Link N150无线网卡*1

15.轮胎*2

15.金属螺丝螺帽+塑料螺丝螺帽*N

16.M2M3螺丝螺帽*N

 

17.跳线*4

 

 

0219_efe259b46cb0c6aae9d2bd97aa31ba262c074524.jpg

组装前车体材料清单图

 

硬件上我们做以下这些变动:

  • 使用了自己设计的压克力车身
  • 上海DFRobot制作的马达驱动板,把马达驱动板接上Jetson Nano上的GPIO即可使用。
  • 给Jetson Nano装载了风扇,当Jetson Nano过热时风扇即会自动启动,也可以下指令让风扇启动。
  • 使用USB的无线网卡不用另外接线插入Jetson Nano USB中即可使用。
  • 电源的部份我们使用有Type C跟Micro USB双输出的行动电源,Type C可以供电给Jetson Nano、Micro USB可以供电给马达驱动板使用。

 

各位可以依照自己的需求和设计更换符合自己的零件,如使用官网建议的马达驱动板,部分软件安装过程请不用更新,使用官方的默认程序即可。其他如行动电源及轮胎等材料可以依据您的车身大小来更换适合的零件。

 

车体结构介绍

组装完成车体后,我们将JetBot分成以下13个项目

0317_c8eff4995dec667489a5aded90c590709dfe6c81.jpg

(1)Jetson Nano开发板、(2)DFRobot马达驱动板、(3)TT马达、(4)轮胎

 

0418_801fbb91c4a099edad5a59cd0a302c49649daf48.jpg

(5)摄影机、(6)摄影机支架、(7)全向轮、(8)车壳

 

0512_4c844f0b41e8c79767ee8d3f3bc8c4f9065b40c7.jpg

(9)Jetson Nano风扇、(10)WiFi dongle、(11)Jetson Nano电源线、(12)马达驱动板电源线、(13)行动电源

 

三、软件安装介绍

这一部分我们将开始介绍如何刻录JetBot映像档,如何连上WiFi设定JetBot相关软件,下载JetBot马达驱动板相关程序。

 

Step1 如何安装JetBot项目软件并且烧入映像文件

首先我们要重新刻录映像档,JetBot项目所使用的映像档跟之前Jetson Nano官方的映像档不同,请使用Nvidia Github JetBot项目提供的档案,映像档连结:jetbot_image_v0p3p0.zip

下载映像档后,并解压缩文件。

(下载后解压缩的映像档大小为59.6GB,记忆卡请准备64G之记忆卡),登陆的账号密码为jetbot。(如使用balenaEtcher软件刻录可不用解压缩,可直接刻录ZIP檔)。

 

使用balenaEtcher软件工具刻录映像文件

balenaEtcher在Windows、MAC的操作系统都可以安装,您也可以使用另一套常用的Win32Diskimager(教学文章可参考[第一次用Jetson Nano 就上手]硬件介绍、开机步骤、远程联机(繁体))。本篇文章使用的是Windows x64系统环境安装,请按照您计算机使用的操作系统安装匹配版本的软件。

0611_eb98572547c021094bfadafa5ade3d842f6e495a.jpg

开启软件后,先点击”Select image“,选择刚刚下载的JetBot项目提供的档案。

079_7c1b388fed3eaa1a5bc09c8ecb2f3acf60aa42b6.jpg

 

将SD卡插入卡片阅读机,在软件中点击”Select drive“,选择SD卡的磁盘驱动器编号,点击”Continue“后,再点击”Flash“就开始在SD卡安装操作系统。

089_f35ba76b53e261d58250ef51ed85bbe558b7872e.jpg

 

刻录完成进度条会显示100%,并且检查错误,检查完成后即刻录完成。

099_0c22c21360d93482fb8915b69b2c78db427f7cb6.jpg

 

Step2 Jetson Nano开机检查映像档有无刻录成功

 

有两种方法检查映像档有无刻录成功:

第一种是连接屏幕、键盘、鼠标来开机查看系统可否正常开机启动。

第二种是使用MicroUSB线与JetsonNano进行远程联机,确认系统是否正常执行。

 

首先使用DC接头供应JetsonNano电源:

请将跨接器(jumper)接在下图标示的J48脚位上(不接跨接器(jumper),JetsonNano则改由MicroUSB接头供应电源)。

使用DC接头变压器,将JetsonNano接上电源。

使用USB传输线,一边接上计算机,另一边接上JetsonNano的MicroUSB接头。(如下图)

1034_575772a51243ea1102f890947411119316f2459b.jpg

跨接器(jumper)接在J48脚位

 

JetsonNano开机成功时,计算机里即会新增一个L4T-README的扇区。

计算机可透过Jetson Nano新增的虚拟局域网与IP位置联机沟通,

Jetson Nano的IP是固定的,192.168.55.1。计算机开启浏览器后,输入

192.168.55.1:8888连上Jetbot。

1144_7c96260a148444efdab8dfbc30914510c9e0fe53.jpg

开机成功时,计算机新增一个L4T-README的扇区

 

1236_1b0d43ccaf880d633c1af8fb8d044116a2b1d7ad.jpg

透过192.168.55.1:8888来连上Jetbot

 

1334_6afc342b38d7e79817509c29dab76cf8fccab496.jpg

计算机端的浏览器画面:第一次登入会要求输入密码,密码是jetbot

 

Step3 将Jetobot连上Wi-Fi

 

将JetBot连上Wi-Fi是为了我们能顺利让JetBot小车实际在地上移动,训练等等用途。这里介绍如何将JetBot连上Wi-Fi。

一样有两种方法,一种一样是之前介绍过的连接屏幕、键盘、鼠标来连上Wi-Fi。

另一种就是透过JupyterLab的Terminal来操作联机至Wi-Fi。

 

以下是透过JupyterLab的Terminal来操作联机至Wi-Fi之步骤。

首先透过192.168.55.1:8888来连上JupyterLab

接着使用JupyterLab内建的Terminal来设定要联机的Wi-Fi(位置如下图红框处)

1430_b5b28be16e4339ee189cdc433937d2bc1e7b2a1d.jpg

JupyterLab内建的Terminal位置

 

输入执行以下指令(如需要输入密码时请输入jetbot)

在JupyterLab内建的Terminal使用复制贴上指令的方法是按CTRL+SHIFT+V

sudo nmtui

1529_b0fe12dca8761d465ab3b55af7d5632cb2fc2b43.jpg

 

会看到一个网络管理员的控制接口,这里我们选择第二个启用联机

1628_a3589c81da7d30fac74b2c629d75b91c8ee5ca16.jpg

 

进入之后选择想要联机的Wi-Fi,联机后输入密码即可联机

1728_ab34afa82198f0abc8c6e2f8f5070cd0d9060452.jpg

 

联机成功之后选<Back>后回选单

1729_ab34afa82198f0abc8c6e2f8f5070cd0d9060452.jpg

 

接着回选单后按离开即可离开此接口

1926_e297818ab51860253ab3b488c4dca7469a1b73e3.jpg

 

接着输入

iwconfig

查看是否有正确连上我们想连的Wi-Fi,成功联机即会显示下图画面

2010_0d661fcdc3ac6a2fd23dae00a87501cae096e38c.jpg

 

使用指令

ifconfig

查看自己的Wi-Fi(wlan0)的IP是多少,即可确认成功联机至Wi-Fi并使用此IP透过JupyterLab联机至JetBot。

进入JupyterLab的网址是http://<jetbot_ip_address>:8888

2124_30f44d3bdc5c2c6d027476f9a0bf6ed3cac7e042.jpg

 

Step4 将JetBot配置电源模式

为确保Jetson Nano消耗的电流不会超过行动电源可以提供的电流,请使用以下命令将Jetson Nano配置于5W模式。

可以使用USB联机或是http://<jetbot_ip_address>:8888进入JupyterLab。作者测试时联机的IP热点为192.168.137.155。

一样使用JupyterLab内建的Terminal来设定电源模式

2223_b5b28be16e4339ee189cdc433937d2bc1e7b2a1d.jpg

 

使用以下指令改变电源模式至5W

sudo nvpmodel -m1

2320_40b4fe8829bcf354eb05113e136fe2bbb03e745c.jpg

 

使用以下指令查看电源模式是否调整至5W

sudo nvpmodel -q

2423_5ae2123dbc6d367b84c162791a77e131551a5924.jpg

 

Step5 安装DFrobot马达驱动板修改程序

 

本篇使用的DFRobot马达驱动板需要更动马达驱动板的函式库,请输入以下指令来下载我们修改过后的JetBot程序。

git clone --branch cave https://github.com/YuanYuYuan/jetbot.git

2521_536de39d0d41ff4370bf9fcf3db2e7aba272414a.jpg

 

下载完之后,移动到jetbot文件夹并请输入以下指令安装必要的套件。

cd jetbot
sudo python3 setup.py install

2621_4f74f72e397fc9edcdd0e5ee5c10fca94f35be65.jpg

安装完套件就可以开始操作JetBot了

 

四、基础操作介绍

我们操作JetBot范例的接口都是在JupyterLab上执行,JupyterLab是甚么呢?首先我们先介绍一下JupyterLab。

    JupyterLab是Jupyter团队为Jupyter项目开发的下一代基于 Web的接口。相对于Jupyter Notebook,它的整合性更强,更灵活并且更易扩充套件。它支持100种多种语言,支持多种文件相互整合,实现了交互式计算的新工作流程。如果说 Jupyter Notebook 像是一个交互式的笔记本,那么 Jupyter Lab 更像是一个交互式的 VSCode。另外,JupyterLab 非常强大的一点是,你可以将它部署在云服务器,不管是计算机、平板还是手机,都只需一个浏览器,即可远程访问使用。使用JupyterLab,你可以进行资料分析相关的工作,可以进行交互式程序设计,可以学习社群中丰富的Notebook数据。

下图是JupyterLab的操作接口,依序介绍我们常用的功能。

1.选单栏:主要的功能选单都在这上面

文件、编辑、窗口、运行、内核、分页、设置、帮助

2.左侧边栏:左侧边栏包含许多常用的功能,由上而下是文件浏览器、正在运行的内核和终端的列表、命令面板以及正在工作区中的分页列表

3.主要的工作区域

4.Terminal:我们的终端机在这里开启,可以在这操作各种Linux指令

2719_46052a80b1eb88abfd059bfa456c65af16ac1466.jpg

JupyterLab操作接口

以上是我们在Jetson Nano上执行JetBot项目Part1基础安装篇之介绍,大家有没有成功登入JupyterLab呢?未来我们将会推出更多丰富的内容。下一篇我们将介绍让车子移动并且介绍如何在网页上控制车子的前后左右移动,当然也有JetBot项目更进阶的功能介绍,有兴趣欢迎关注我们。

在NVIDIA Jetson Nano上实现JetBot AI自驾车项目-02控制移动篇

 

CAVEDU Education is devoted into robotics education and maker movement since 2008, and is intensively active in teaching fundamental knowledge and skills. We had published many books for readers in all ages, topics including Deep Learning, edge computing, App Inventor, IoT and robotics. Please check CAVEDU's website for more information: http://www.cavedu.com, http://www.appinventor.tw