当前位置:网站首页>jetracer_pro_2GB AI Kit系统安装使用说明
jetracer_pro_2GB AI Kit系统安装使用说明
2022-08-02 03:36:00 【hello689】
目录
使用Jetson Nano开发者套件
如果使用JetsonRacer AI Kit的话,首先需要组装小车,组装小车这一步也比较简单,可以参照官网的小车组装pdf文档即可。
链接地址:
- https://www.waveshare.net/w/upload/9/96/Jetracer_pro_Assembly_CN.pdf
组装后的小车:
1. 安装镜像
准备工作
- Jetson Nano 开发者套件将 microSD 卡用作启动设备和主存储器。一般会提供一个大容量快速存储卡(64 GB内存卡)。
- 下载 Jetson Nano 开发者套件 SD 卡镜像,并留意其在计算机上的保存位置。
镜像文件地址
将镜像写入microSD卡
如果不是第一次使用SD卡,SD卡中有其他文件,请先做好备份工作,然后格式化SD卡。使用 SD 协会的 SD Memory Card Formatter 格式化 microSD 卡。
- 下载、安装并启动 Windows 版 SD Memory Card Formatter
- 选择卡驱动器
- 选择“Quick format”(快速格式化)
- 将“Volume label”(卷标)留空
- 单击“Format”(格式化)开始格式化,然后在警告对话框中单击“Yes”(是)
接下来选择是
镜像文件的写入
- 下载、安装并启动Etcher
- 单击“Select image”(选择镜像),然后选择先前下载的压缩镜像文件,将压缩文件解压
- 插入 microSD 卡(若尚未插入)
- 单击“Select drive”(选择驱动器),并选择正确设备
- 单击“Flash!”(闪存!)。如果 microSD 卡通过 USB3 连接,Etcher 写入和验证大约会需要 10 分钟
- Etcher 操作完成后,Windows 可能会提示您它不知如何读取 SD 卡。此时只需单击“Cancel”(取消),然后删除 microSD 卡即可。
2. 进入系统
将 microSD 卡(已写入系统映像)插入 Jetson Nano 模块下侧的插槽中。(SD卡槽位于Jetson Nano核心板的背面)
启动Jetson Nano并通过USB连接
设置步骤:
- 将 microSD 卡(已写入系统映像)插入 Jetson Nano 模块下侧的插槽中。
- 拨开电源开关,等待 1 分钟,以便开发者套件启动(这里最好多等一会)。
线将Jetson nano 的micro USB接到电脑(数据线不是电源线),打开浏览器并导航到 192.168.55.1:8888 ,并使用默认密码 jetbot 登录 Jupyter Lab。(这里开发板不一样默认的密码也不一样,有jetson、Jetson Nano、jetbot几种)
成功登陆Jupyter Lab
将JetRacer连接到WIFI
首次启动时,这里不能直接使 在Jupyter Lab中打开终端Terminal,在此终端中连接网络。
可以用ssh的方式来连接小车。首次启动可以使用micro USB连接小车和电脑,使用COM端口的方式连接小车。
登录名和密码都是jetbot
输入以下命令可以扫描可用的WiFi网络,并找到要连接的WIFI名称
sudo nmcli device wifi list
连接到选定的WIFI网络,其中<ssid_name>, 替换为你的WIFI账号密码。
sudo nmcli device wifi connect <ssid_name> password <password>
运行如下命令可以查询WIFI 接口wlan0 的 IP 地址。断开USB连接并重启系统也可以在OLED显示器上显示IP地址
ifconfig
断电,重启小车,micro USB线不再需要了,拔了收起来就行。之后的操作都是直接用wifi连接的。
重启小车后,显示器中会有小车的ip信息,
然后就可以在浏览器中输入http://<jetson_ip_address>:8888连接到小车,其中jetson_ip_address为OLED上显示的实际IP, 比如:192.168.43.129:8888 使用密码 jetbot 登录Jupyter Lab。(注:电脑和小车要连在同一个网络下)
这里才算正式配置好网络,使用Jupyter Lab网页连接和SSH都可以,但是这两个是不同的,第一个登陆进去是root用户,你是不能进行任何修改更新的,第二个才是普通用户jetbot,一般我们使用此用户进行之后的一切操作。
看下边的对比:
Jupyter Lab网页连接
SSH
安装更新JetCard Python包
查看电脑上有没有下边几个文件,没有的话需要重新下载安装,如果有则可跳过这一步,进入配置电源模式。
执行以下命令更新Jetcard Python包。
cd $HOME
mkdir ws
cd ws
git clone https://ghproxy.com/https://github.com/waveshare/jetcard
cp jetcard/jetcard/ads1115.py ~/jetcard/jetcard/
cp jetcard/jetcard/ina219.py ~/jetcard/jetcard/
cp jetcard/jetcard/display_server.py ~/jetcard/jetcard/
cp jetcard/jetcard/stats.py ~/jetcard/jetcard/
cd ~/jetcard
sudo pip3 uninstall jetcard -y
sudo reboot #重启
cd ~/jetcard
sudo python3 setup.py install
执行以下命令安装JetCam Python包
cd $HOME
git clone https://github.com/NVIDIA-AI-IOT/jetcam
cd jetcam
sudo python3 setup.py install
执行以下命令安装torch2trt Python包
cd $HOME
git clone https://ghproxy.com/https://github.com/NVIDIA-AI-IOT/torch2trt
cd torch2trt
sudo python3 setup.py install
在终端中执行以下命令安装JetRacer软件包
cd $HOME
git clone -b ws/pro https://github.com/waveshare/jetracer
cd jetracer
sudo python3 setup.py install
配置电源模式
为了防止Jetson Nano消耗的电量超过电池供电量,我们将其设置为5W模式 打开终端并输入以下命令设置5W模式:
sudo nvpmodel -m1
nvpmodel -q
重启小车,同时OLED上也会显示 MODE: 5W。
3. 电机驱动
Basic Motion
在浏览器地址栏输入http://<jetbot_ip_address>:8888连接到小车,左侧打开/jetracer/notebooks/。打开basic_motion.ipynb文件 带有lpynb后缀的文件为lpython Notebook文件,包括注释文本和python程序。可以通过点击Run->Run Select Cells或者点击运行快捷图标来运行单段程序。 【注意】文本中有详细的程序注释说明,认真阅读注释即可明白程序功能
运行语句car.steering = 0时,小车舵机会转向。0表示向前,1表示轮子转到最左边,-1表示轮子转到最右边。改为不同的值轮子转到不同的方向,数值范围为[-1,1]
如下设置,小车前轮向左偏转
car.steering = 0.3
运行此段程序后,会输出转向增益car.steering_gain和转向初始位移car.steering_offset。 转向增益car.steering_gain可以表示轮子可以转动的最大角度 转向初始位移car.steering_offset 可表示轮子初始偏移,当car.steering = 0时,小车没有直线行驶时可以通过调整转向拉杆长度或者修改转向初始位移的值可使小车直线行驶。
car.throttle 为油门大小,范围为[-1,1],0表示停止,1表示最大速度前进,-1表示最大速度后退,修改次值后运行程序则后轮会转动。 car.throttle_gain 为油门增益,可以表示小车可以运动的最大速度,当car.throttle_gain = 1且car.throttle =1 时则小车可以运行到最高速度。
总结:本节主要学习如何控制小车运动,小车分为两部分控制,一部分为转向steering控制小车转弯,另外部分为油门throttle控制后轮转速。 转向增益car.steering_gain控制轮子最大转动范围,转向初始位移car.steering_offset可以补偿机械组装带来的转向误差。 油门增益car.throttle_gain 控制后轮最大转速范围。
4. 遥控器控制小车
在浏览器地址栏输入http://<jetbot_ip_address>:8888连接到小车,左侧打开/jetracer/notebooks/。打开teleoperation.ipynb文件 将游戏手柄接收器插到电脑USB口,注意:接收器是要接到电脑而不是接到jetson nano上,游戏手柄需要接到打开JupyterLab网页的设备上。
手柄需要按下home键,使遥控手柄两个灯亮的状态
打开GamePad手柄测试网页,看下是否检查到遥控手柄。记下对应设备的INDEX数值为多少 按下遥控手柄按键对应的数值会变化,记下对应按键的名称。
运行这段代码后窗口会输出游戏手柄对应的按键。注意程序中的index需要修改为实际遥控手柄对应的值,在刚才打开的网页中可以看到对应的INDEX。按下按键对应的按键图标会提示按键已按下
此处设置油门最大速度为0.2,为了后面采集数据方便限制小车运动过快。设置转向偏移为0.18,这个值根据实际情况调节,直到在不转向的情况下小车可以直线行驶
修改axes值对应不同的按钮,此处为方便遥控设为axes[0], axels[5] 遥控器按键buttons[7]
运行程序之后即可通过遥控手柄控制小车。Asex[0]控制前轮转向,Asex[1]控制后轮转速左边摇杆左右方向控制小车前轮转向,右边摇杆上下方向控制小车后轮速度
注意:由于电调的原因,小车后退需要双击两下按键才会倒车。“正反转带刹车”模式采用双击式倒车方式,即油门摇杆在第一次从中点区域推至反向区域时,电机只是刹车,不会产生倒车动作;当油门摇杆快速回到中立点区域并第二次推至反向区域时,如果此时电机已停止,则产生倒车动作,如果电机 未停止,则不会倒车,仍是刹车,需要再次将油门回到中点并推向反向区,此时如果电机已经停止才会倒车,这样做的目的是防止车辆行驶过 程中因多次点刹而造成误倒车。
5. 小车自主循线设计
数据采集及模型训练
完成以上步骤,小车可以在遥控器下运行,是无法自主在车道线上行驶的。数据是模型训练的重要组成部分,这一部分将介绍如何使用小车车进行数据的采集。只有采集了车道线的数据后,才能进行下一部分。
在浏览器中登录Jupyter Lab,也就是输入http://<jetson_ip_address>:8888连接到小车,找到/jetracer/notebooks/。打开interactive-regression.ipynb文件。
如上图所示,此段代码开启摄像头,设置图像分辨率为224*224。
**注意:关于摄像头的使用,运行过一次摄像头之后,再次运行加载摄像头很可能会卡Bug,这时候直接重启小车是最简单的方法。**如果不想重启小车,需要在终端运行此语句重启摄像头,这种方法时灵时不灵。
sudo systemctl restart nvargus-daemon
直接运行interactive-regression.ipynb程序所有单元,程序中会显示如下界面:
此时可以将小车放到赛道上,同时打开teleoperation.ipynb程序运行,使遥控手柄可以控制小车运动。 控制小车沿着赛道运行,每移动一小段位置,就用鼠标移动到图片中小车理想的运行路径上点击一下保存图片,控制小车沿着赛道拍摄10圈(采集300张左右就可以了,多采集一点弯道的数据)。
采集好数据后,将epochs的值选择为15左右,然后点击train,训练15轮。 训练好数据后可以点击evaluate 评估训练模型,如果采集的数据没有问题,可以在最左边的图像中看到当前小车位置的理想方向。 注意采集的数据需将小车沿轨道移动到不同的位置,偏移和方向,尽可能沿理想路径的方向上选择最远的点保存,以保证小车不会离开轨道或碰撞物体。
循线代码运行
在这一章中,我们使用训练的模型实现自动驾驶。在浏览器地址栏输入http://<jetson_ip_address>:8888连接到小车,找到jetracer/noteboot/。打开road_following.ipynb文件。
程序运行到此段后目录中会生产使用touch2trt转换和优化的模型文件road_following_model_trt.pth。这个优化过程可能需要几分钟才能完成。
此段程序是将图像处理的输出output再经过PD控制小车运行。 car.steering_offset 参数是修正小车机械误差导致的小车初始状态偏移,这个参数需要改为小车实际的数值。 car.throttle 设置小车运行最大速度(0.18最优),次值设置过大会导致小车容易跑出轨道。 Kp,Kd 为PID参数,此处紧使用PD调节。可以根据小车实际运行效果调试此参数。
6. 相关资料整理
如果你不想使用命令行的方式访问Jetson Nano,又不想再多添加一个显示器,可以选择搭建VNC Server,网上搜到了一篇搭建步骤:
开发指南书:
参考资料:
- https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit#next-projects
- https://www.waveshare.net/wiki/JetRacer_2GB_AI_Kit
边栏推荐
猜你喜欢
随机推荐
shell脚本的基础知识
未来智安XDR及核心组件产品上榜《嘶吼2022网络安全产业图谱》
matlab作图显示中文正常,保存图片中文乱码
QT之实现斗鱼直播PC客户端
Kinematics Analysis of Robot Arm
全球主要国家地区数据(MySQL数据)
剩余参数、数组对象的方法和字符串扩展的方法
ICMP timestamp请求响应漏洞
字典基本操作方法
2022华为软件精英挑战赛(初赛)-总结
Zabbix删除一些大表历史数据脚本
工作过程中问题汇总
TCP-IP协议整理
Liunx服务环境部署
AD Actual Combat
双网络安全nvr/布控球,可双向同时接入国网B接口视频监控平台和国标28181平台
QObject: Cannot create children for a parent that is in a different thread.
Autowired注解与Resource注解的区别
8款最佳实践,保护你的 IaC 安全!
剑指Offer 64.求1+2+...+n 递归+&&