AWU403车载AI边缘计算机,基于NVIDIA Jetson AGX Orin计算平台设计开发,算力可配置200T、275TOPS ;内置高精度卫星定位与组合惯导模块、内置WIFI通信模组、可选配5G通信模组、可选配SSD硬盘;支持多路GMSL相机接入;支持多路工业以太网、RS232、RS485、CAN、USB等接口,支持常见传感器、外设接入。
| 序号 | 型号 | 说明 |
|---|---|---|
| 1 | AWU403-A01 | V02,AGX Orin 32GB,S32K,1000BASE-TX4,USB3.21,GNSS,WiFi6,GMSL |
| 2 | AWU403-A01-S01 | V02,AGX Orin 32GB,S32K,1000BASE-TX4,USB3.21,GNSS,WiFi6,GMSL,5G |
| 3 | AWU403-B01 | V02,AGX Orin 64GB,S32K,1000BASE-TX4,USB3.21,GNSS,WiFi6,GMSL |
| 4 | AWU403-B01-S01 | V02,AGX Orin 64GB,S32K,1000BASE-TX4,USB3.21,GNSS,WiFi6,GMSL,5G |
| 序号 | 类别 | Jetson AGX Orin | Jetson AGX Orin |
|---|---|---|---|
| 1. | AI 性能 | 200 TOPS (INT8) | 275 TOPS (INT8) |
| 2. | GPU | 搭载 56 个 Tensor Core 的 1792 核 NVIDIA Ampere c GPU | 搭载 64 个 Tensor Core 的 2048 核 NVIDIA Ampere 架构 GPU |
| 3. | GPU 最大频率 | 930 MHz | 1.3 GHz |
| 4. | CPU | 8 核 Arm® Cortex®-A78AE v8.2 64 位 CPU 2MB L2 + 4MB L3 | 12 核 Arm® Cortex®-A78AE v8.2 64 位 CPU 3MB L2 + 6MB L3 |
| 5. | CPU 最大频率 | 2.2 GHz | |
| 6. | DL加速器 | 2x NVDLA v2 | |
| 7. | DLA 最大频率 | 1.4 GHz | 1.6 GHz |
| 8. | 视觉加速器 | 1x PVA v2 | |
| 9. | 显存 | 32GB 256 位 LPDDR5 204.8GB/s |
64GB 256 位 LPDDR5 204.8GB/s |
| 10. | 存储 | 64GB eMMC 5.1 | |
| 11. | 视频编码 | 1x 4K60 (H.265) 3x 4K30 (H.265) 6x 1080p60 (H.265) 12x 1080p30 (H.265) |
2x 4K60 (H.265) 4x 4K30 (H.265) 8x 1080p60 (H.265) 16x 1080p30 (H.265) |
| 12. | 视频解码 | 1x 8K30 (H.265) 2x 4K60 (H.265) 4x 4K30 (H.265) 9x 1080p60 (H.265) 18x 1080p30 (H.265) |
1x 8K30 (H.265) 3x 4K60 (H.265) 7x 4K30 (H.265) 11x 1080p60 (H.265) 22x 1080p30 (H.265) |
| 13. | MCU | ASIL-B级的安全MCU | |
| 14. | WiFi | WIFI 6 | |
| 15. | 4G | 支持4G模组,可选装 | |
| 16. | 5G | 支持5G模组,可选装 | |
| 17. | 操作系统 | Ubuntu 22.04 | |
AWU403软件系统为JetPack 6.2.1开发环境,包括系统镜像、库、示例、开发工具以及文档,同时支持以下关键特性:
NVIDIA JetPack 6.2.1 是正式发布的生产版本系统,为Jetson AGX Orin工业模组带来一系列新功能和改进。它包括Jetson Linux36.4.4(Linux内核5.15.148-tegra),基于Ubuntu22.04的根文件、基于UEFI的引导加载程序,和OP-TEE作为可信执行环境。
JetPack 包括以下软件库:
JetPack自带一些演示示例,存放在文件系统中,并且可以被编译。
| JetPack component | 文件系统中的位置 |
|---|---|
| CUDA | 需自行下载,GitHub - NVIDIA/cuda-samples: Samples for CUDA Developers which demonstrates features in CUDA Toolkit |
| TensorRT | /usr/src/tensorrt/samples/ |
| cuDNN | /usr/src/cudnn_samples_<version>/ |
| VPI | /opt/nvidia/vpi<version>/samples/ |
| OpenCV | /usr/share/opencv4/samples/ |
| MM API | /usr/src/jetson_multimedia_api/samples/ |
JetPack包括用于应用程序开发、调试、分析和优化的开发工具。有些工具直接在Jetson系统上使用,有些则在连接到Jetson系统的Linux主机上运行。
具体工具列表说明参见:
https://docs.nvidia.com/jetson/jetpack/introduction/index.html#devtools
开机启动前,需确认以下事项:
3P连接器实物图:
上电成功后,POW 、RUN指示灯呈常亮状态(红色及绿色指示灯常亮)。
默认用户名:aiec,密码:123
电源正常时常亮、电源过压/欠压时闪烁、无电压时灭;
MCU启动时慢闪,MCU收到ARM心跳正常后常亮
在AWU403、或者能够与AWU403设备正常通信的远程主机中打开浏览器,在浏览器中输入http:AWU403的ip:3000(如: http://192.168.100.143:3000/),在页面中输入账号aiec,密码123,点击登录。设备精灵支持对设备进行设备重启和回复出厂设置等操作。
运行布谷鸟守护精灵,获取设备基本信息、状态信息、自检数据、报警信息和驱动信息等。
登录进入后,选择系统状态-主机信息查看设备信息。
根据3.1.1给系统上电,并且确认系统正常后,进行如下步骤确认软件版本是 否正确。
打开命令行终端,输入:
$ uname -a #查看系统版本
$ sudo dmesg | grep DTB #查看DTB日期
注意:操作系统版本请勿升级(upgrade),如有更新需求请先和布谷鸟科技沟通确认,以免更新升级后造成异常。
可通过第三方工具jetson-stats查看系统、硬件、库等相关信息。
运行jetson-stats:
$ sudo jtop #正常运行后,点击“7INFO”查看相关信息
或
$ jetson_release #命令行输出相关信息
从布谷鸟科技获取新驱动文件后,可通过如下命令手动更新驱动:
#备份原驱动文件
$ sudo cp /boot/Image /boot/Image-ori
$ sudo cp /boot/dtb/kernel_tegra234-p3701-0004-p3737-0000.dtb /boot/dtb/kernel_tegra234-p3701-0004-p3737-0000.dtb--ori
#进入新驱动文件所在目录后,执行:
$ sudo cp ./Image /boot/Image
$ sudo cp ./tegra234-p3701-0004-p3737-0000.dtb /boot/dtb/kernel_tegra234-p3701-0004-p3737-0000.dtb
$ sync
命令执行后,断电重启,然后查看系统软件版本日期是否更新。
设备有多种功率模式,可以通过点击“桌面右上角的NVIDIA绿色标志→Power mode→MODE ID”进行变更,更改后可能需要重启设备。
也可采用命令行调整:
#查看设备现在的模式
$ sudo nvpmodel -q
# 设定为某一模式
$ sudo nvpmodel -m <MODE ID>
| MODE ID | MODE NAME |
|---|---|
| 0 | MAXN |
| 1 | 15W |
| 2 | 30W |
| 3 | 40W |
各模式下性能表现如下图所示:
注:性能参数后续可能会更新。
通过固定CPU/GPU/EMC时钟频率为当前功率模式下的最大值(不降频),获取在当前模式下的最佳表现,可通过如下命令实现:
$ sudo jetson_clocks
注意:长时间运行在最大频率下,可能会造成温度升高,影响元器件寿命。
查看jetson_clocks当前设置详细信息:
$ sudo jetson_clocks --show
AWU403基于 NVIDIA Jetson AGX Orin平台,支持 NVIDIA 发布的相关 AI工具或软件。用户可基于平台,自行开发和部署所需的业务软件,如物体检测、图像处理、路线规划等。
注:当安装的软件或存储的文件位于内部存储,且占据较大空间时,请及时留意剩余空间(可通过“df -h”命令查看),当剩余空间不足时,可能会使系统工作不正常,如开机不能进入系统,造成数据丢失等。
注意:操作系统版本请勿升级(upgrade),如有更新需求请先和布谷鸟科技沟通确认,以免更新升级后造成异常。
以下内容,用于示例说明如何配置开机自启动(配置rc.local开机启动脚本)。
Linux中的rc-local服务是一个开机自动启动的,调用开发人员或系统管理员编写的可执行脚本或命令的,它的启动顺序是在系统所有服务加载完成之后执行。
ubuntu22.04系统已经默认安装了rc-local.service服务,用户可自行创建开机脚本文件rc.local,即可使用。
1)创建/etc/rc.local
开机自启动脚本一般放在这个文件中,但是系统默认没有这个文件,需要用户创建。
$ sudo vi /etc/rc.local //创建并编辑rc.local文件
$ sudo chmod +x /etc/rc.local //增加权限
rc.local文件内容:
#!/bin/sh
echo “rc.local is working” > /home/cookoo/rclocaltest.log
其中,第一行必须添加。echo行内容为脚本验证用。用户可自行添加其它内容。
重启,验证是否有包含“rc.local is working”内容的/home/cookoo/rclocaltest.log的文件。
2)查看rc-local服务状态:
$ systemctl status rc-local.service #查看rc-local服务状态
可从/var/log和/var/crash目录下,获取完整log文件。
打开浏览器,输入http:AWU403的ip:3000,登录 “产品守护精灵”,选择“日志导出-日志导出”菜单,下载日志。
打开浏览器,输入http:AWU403的ip:3000,登录 “产品守护精灵”,选择“系统设置-同步设置”菜单,选择合适的授时模式。
打开浏览器,输入http:AWU403的ip:3000,登录 “产品守护精灵”,选择“设备升级-软件升级”菜单。
打开浏览器,输入http:AWU403的ip:3000,登录 “产品守护精灵”,选择“在线调试-远程SSH登陆”菜单,开启远程ssh。
打开浏览器,输入http:AWU403的ip:3000,登录 “产品守护精灵”,选择“语言切换-语言切换”菜单,选择系统语言。
因AWU403为上电自启动,所以需要关机时,在保存数据、退出程序后,关机。
1.软关机
命令行方式
$ sudo poweroff
2.软重启
$ sudo restart
1)硬件连接方法:
2)设备节点映射关系
网口对应名称如下表所示:
| 物理接口名称 | 网口配置名称 | 出厂配置 | 备注 |
|---|---|---|---|
| ETH1 | eth1 | 192.168.100.143 固定 IP,用户可自行修改 | 独立千兆 |
| ETH2 | eth2 | DHCP 自动获取 | 独立千兆 |
| ETH3 | eth3 | DHCP 自动获取 | 独立千兆 |
| ETH4 | eth4 | DHCP 自动获取 | 独立千兆 |
打开浏览器,输入http:AWU403的ip:3000,登录 “产品守护精灵”,选择“系统配置-以太网配置”菜单,按需要选择配置。
如需配置IP,可从桌面右上方进入网络配置,进行手动配置,如下图所示。
在Wired对话框中,点击IPv4页,选择“Manual”,在下方“Addresses”、“DNS”、“Routes”栏中按需输入相关内容,同时按需关闭“Automatic”按钮。
使用nmcli命令进行配置,依次执行:
$ sudo vi /etc/NetworkManager/NetworkManager.conf
将其中的“managed=false”改为“managed=true”,保存退出。
$ sudo systemctl restart NetworkManager.service
语法:
sudo nmcli connection add con-name <连接名> ifname <网卡名> type <连接类型> ipv4.method manual ipv4.addresses <ipv4地址> ipv4.gateway <ipv4网关地址> ipv4.dns <ipv4 dns服务器>
其中:<连接名>-自定义;<网卡名>-eth0/eth1/enp2s0等,需与实际名称一致;
<连接类型>-ethernet。
$ sudo nmcli connection add con-name test ifname eth0 type ethernet ipv4.method manual ipv4.addresses 192.168.0.148/24 ipv4.gateway 192.168.0.1 ipv4.dns 192.168.0.1
上例中,为eth0建立了一个名为test的manual连接,其中IP地址为192.168.0.148。
更多参数配置,请参考nmcli --help命令。
语法:
sudo nmcli connection up <连接名> ifname <网卡名>
$ sudo nmcli connection up test ifname eth0
至此,为eth0手动添加了一个静态IP连接。需注意,eth0之前的连接仍然存在,可使用nmcli c命令查询,nmcli c delete命令删除多余连接。
1. 测试是否可以自动获取IP
配置为DHCP时,插入网线,使用ifconfig命令查询对应网口是否可以看到IP,或在桌面右上方网络配置处查看。
2. 测试是否可以ping通
方法一:可ping通网关,即可按ctrl +c退出。
注:测试例程的网关地址为192.168.0.1,这个需查看测试环境的网关地址。
方法二:可ping通www.baidu.com(联网状态),即可按ctrl +c退出。
以太网POE功能开机默认自动开启。
使用前需安装好Wi-Fi 6天线(2根)。
在桌面右上角会出现网络连接图标,找到要连接的Wi-Fi名称并点击,然后在弹出的密码框输入密码并点击连接即可。
连接后测试是否可以ping通。
如需将设备配置为Wi-Fi热点,进入并点击Setting WiFi(右上方)Turn On Wi-Fi Hotspot...,在弹出的对话框中输入名称和密码,点击Turn On,即可看到设置的Wi-Fi热点。
注:因Ubuntu系统bug,若Turn On Wi-Fi Hotspot...选项为灰色不可点击,可点击左侧Settings下的Network选项,再重新点击Wi-Fi,即可点击Turn On Wi-Fi Hotspot...。
如需保存热点配置重启后依旧生效,可采用如下方法:
在命令行,切换到root权限,输入nm-connection-editor,在弹出的对话框中,点击+,选择Wi-Fi,点击Creat...,在弹出的对话框中进行相关配置后,点击Save即可,可参考下图。
注:Device内容,建议手动删除MAC地址,只保留wlan0,避免因MAC地址变化导致重启后配置失效。
5G模组为选配。使用前需在断电情况下,接好5G天线、取下后面板插入5G Micro-SIM卡(SIM卡金属面朝向板上基座、缺口朝外,不支持热插拔)。
5G功能出厂默认已配置完成,可直接使用连接网络。
开机自动拨号成功后,可用ifconfig命令看到usb0节点获取到了IP,如下图:
AT指令操作方法:
$ sudo busybox microcom -s 115200 /dev/ttyUSB2
常见AT指令如下,更多AT配置信息,请查询5G模块AT命令手册。
ATE 1 //开启回显
ATI //查询型号ID及固件版本信息
AT+CPIN? //设备PIN管理
AT+QSIMSTAT? //SIM卡插拔状态上报
AT+QNWINFO //查询网络信息
AT+CGPADDR //查看PDP地址
打开浏览器,输入http:AWU403的ip:3000,登录 “产品守护精灵”,选择“系统状态-5G状态”菜单进行查看。
GMSL相机组合是经过长时间验证的相机组合方案,需按照组合及相应的CAM位置,连接相机,可使用出图稳定的相机功能。
打开浏览器,输入http:AWU403的ip:3000,登录 “产品守护精灵”,选择“系统配置-GMSL设置”菜单,按需要选择对应的相机配置。
GMSL相机配置说明:
| 组合 ID | 配置 | 触发方式 | 对应端子 |
|---|---|---|---|
| 组合 1 | 8*200 万 (森云 SG2IMX390C) | 自触发 | 0~8:200W |
| 组合 2 | 8*130 万 (CMD107-P130A-V0102) | 自触发 | 0~8:130W |
| 组合 3 | 4*200 万 (森云 SG2IMX390C)+1*800W (森云 SG808BAF) | 自触发 | 0:800W,4~7:200W |
| 组合 4 | 8*100 万 (森云 SG1-OX01F10) | 自触发 | 0~8:100W |
| 组合 5 | 8*300 万 (森云SG3-ISX031) | 自触发 | 0~8:300W |
| 组合 6 | 8*100 万(CMD107-P130A-V0301) | 自触发 | 0~8:100W |
| 组合 7 | 8*100 万(CMD107-P130A-V0301) | 外触发 | 0~8:100W |
| 组合 8 | 8*200 万(CMD108-P200A-V0301) | 自触发 | 0~8:200W |
| 组合 9 | 8*200 万(CMD108-P200A-V0301) | 外触发 | 0~8:200W |
| 组合 10 | 8*300 万(CMD108-P300A-V0301) | 自触发 | 0~8:300W |
| 组合 11 | 8*300 万(CMD108-P300A-V0301) | 外触发 | 0~8:300W |
| 组合 12 | 4*200 万(CMD108-P200A-V0301)+1*800 万(CMD107-P800A-V0301) | 自触发 | 0:800W,4~7:200W |
| 组合 13 | 4*200 万(CMD108-P200A-V0301)+1*800 万(CMD107-P800A-V0301) | 外触发 | 0:800W,4~7:200W |
注:配置列表在不断更新,以出厂配置为准。
1)通过运行vlc,快速打开相机来确认效果。
安装vlc程序:
$ sudo apt-get install vlc
安装成功后,运行:
$ vlc
在弹出的视频播放器中,点击右键,单击“Open Media”à“Open Capture Device…”à“Capture Device”,Video device name选择与实际连接所对应的相机,如/dev/video0,再点击“Play”,稍等几秒即可出现此所选相机的视频。
2)通过gstreamer,快读打开相机来确认效果
安装工具
$ sudo apt install v4l-utils gstreamer1.0-tools -y
安装成功后,运行:
# 下面示例以相机分辨率1920*1080为例,在终端顺序执行以下命令
#参数请自行更改:
#相机 device=/dev/video0
#格式 format=YUY2
#分辨率 width=1280,height=960
#帧率 framerate=30/1
gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,format=YUY2,width=1280,height=960,framerate=30/1 ! xvimagesink &
gst-launch-1.0 v4l2src device=/dev/video1 ! video/x-raw,format=YUY2,width=1280,height=960,framerate=30/1 ! xvimagesink &
gst-launch-1.0 v4l2src device=/dev/video2 ! video/x-raw,format=YUY2,width=1280,height=960,framerate=30/1 ! xvimagesink &
gst-launch-1.0 v4l2src device=/dev/video3 ! video/x-raw,format=YUY2,width=1280,height=960,framerate=30/1 ! xvimagesink &
gst-launch-1.0 v4l2src device=/dev/video4 ! video/x-raw,format=YUY2,width=1280,height=960,framerate=30/1 ! xvimagesink &
gst-launch-1.0 v4l2src device=/dev/video5 ! video/x-raw,format=YUY2,width=1280,height=960,framerate=30/1 ! xvimagesink &
gst-launch-1.0 v4l2src device=/dev/video6 ! video/x-raw,format=YUY2,width=1280,height=960,framerate=30/1 ! xvimagesink &
gst-launch-1.0 v4l2src device=/dev/video7 ! video/x-raw,format=YUY2,width=1280,height=960,framerate=30/1 ! xvimagesink &
组合定位模组为选配,如已选配,出厂缺省会配置好。使用前需接好GPS天线。
组合定位工作模式介绍:
| 工作模式 | 说明 |
|---|---|
| 普通 GPS | 默认模式,普通 GPS 定位 |
| 高精定位 | 高精 GPS 定位,需网络连接到 RTK 服务器 |
| UDR | IMU 与 GPS 融合,需标定 IMU |
| ADR | UDR 基础上,增加车速脉冲和汽车方向信号 |
普通GPS模式,也可通过如下命令获取GPS数据(不能与example程序同时运行):
$ sudo busybox microcom -s 38400 /dev/ttyTHS0 //38400为默认波特率,输出GPS定位数据
$ sudo busybox microcom -s 38400 /dev/ttyTHS1 //38400为默认波特率,输出IMU数据
$ sudo cat /dev/ttyACM0 //输出GPS定位数据
运行结果为:
若GNRMC行,有类似“****,A,****,N,****,E,*****”消息,则表示搜到卫星,其中:
****,A - A前信息为时间,有效时为A,无效时为V;
****,N,****,E - 表示经纬度坐标
打开浏览器,输入http:AWU403的ip:3000,登录 “产品守护精灵”,选择“系统配置-GNSS模块配置”菜单,按需选择对应配置。
通过1路1PPS_5V_IN和GPS_RS232_RX,获取外部同步时间和GPS信息。配合串口接收的GPRMC信息,来达到通过外部GPS,对系统进行授时。
注:内部F9K和外部同步信号输入,只能使用一种,需出厂前完成配置。
可通过如下命令获取外部GPS数据:
$ sudo busybox microcom -s 9600 /dev/ttyTHS1
//注意波特率需与外部设备匹配
//输出示例:
$GNRMC,080659.000,A,2233.22070,N,11354.23268,E,0.00,0.00,151020,,,A*7D
$GNVTG,0.00,T,,M,0.00,N,0.00,K,A*23
$GNZDA,080659.000,15,10,2020,00,00*4F
$GPTXT,01,01,01,ANTENNA OK*35
$GNGGA,080700.000,2233.22070,N,11354.23267,E,1,22,0.6,23.4,M,0.0,M,,*49
......
#按Ctrl +x退出
GNRMC数据报文基本格式
$GNRMC,时间,A/V,纬度,经度,速度,航向,日期,磁偏角,模式,校验值*hh
时间:UTC时间,格式为hhmmss.sss。
状态:A表示定位,V表示未定位。
纬度:纬度值,格式为ddmm.mmmm,北纬为正,南纬为负。
经度:经度值,格式为dddmm.mmmm,东经为正,西经为负。
速度:以节为单位的速度。
航向:以度为单位的方向。
日期:日期格式为DDMMYY。
磁偏角:磁偏角值,范围从000到180度。
模式:定位模式,A表示自动,D表示差分,E表示估算,N表示数据无效。
校验值:数据校验和。
设备输出4路1PPS信号(1PPS_5V_OUT),并通过串口(GPS_RS232_TX)发送脉冲上升沿产生时间的NMEA GPRMC消息,消息示例:
$GNRMC,124354.90,A,3910.01737,N,11721.55637,E,0.023,,171224,7.29,W,A,V*50
其中“124354.90”为每秒产生脉冲时的时间戳(UTC时间),支持PPS同步模式的传感器会通过接受到的PPS以及GPRMC消息对自身时钟系统进行校时,使之与设备之间的系统时钟保持一致。
AWU403共包含5路CAN,其中ARM 2路, MCU 3路。CAN速率默认500K,ARM CAN支持CAN FD定制开发。
| 线束标识 | 对应模块 | Socket CAN | cookoo SDK |
|---|---|---|---|
| AGX_CAN1+- | ARM | can0 | can0 |
| AGX_CAN2+- | ARM | can1 | can1 |
| S32k_CAN0+- | MCU | 不支持 | can2 |
| S32k_CAN1+- | MCU | 不支持 | can3 |
| S32k_CAN2+- | MCU | 不支持 | can4 |
可以使用socket CAN独立配置ARM的2路CAN(CAN0和CAN1),方法如下:
测试前连接CAN收发器。
配置时,请使用root账户。
1) 管脚配置
# busybox devmem 0x0c303000 32 0x0000C400
# busybox devmem 0x0c303008 32 0x0000C458
# busybox devmem 0x0c303010 32 0x0000C400
# busybox devmem 0x0c303018 32 0x0000C458
2)使用以下modprobe命令安装CAN控制器并加载驱动程序
# modprobe can
# modprobe can_raw
# modprobe mttcan
3) 根据CAN总线和收发器的规格配置CAN控制器
# ip link set can0 type can bitrate 500000 dbitrate 1000000 berr-reporting on fd on
# ip link set can1 type can bitrate 500000 dbitrate 1000000 berr-reporting on fd on
4) 更改tx队列长度为1000(长度可自定义,默认为10)
# ip link set can0 txqueuelen 1000
# ip link set can1 txqueuelen 1000
5) 启动CAN接口:
# ip link set up can0
# ip link set up can1
6) 查看配置信息
$ ifconfig
7) 发送和接收验证
a)AWU403发送测试
发送:
cansend can0 200#abcdabcd // CAN0连接
接收:CAN控制器查看接收数据
b)AWU403接收测试
CAN0连接CAN控制器
发送:使用CAN控制器给CAN0发送数据。
接收:
candump can0
8)常见问题
$ ip -d -s link show can0
#检查波特率是否和之前设置的值相同。
#检查error信息是否为0
#如果以上都没有问题,请检查硬件连接
#如果有问题,并且找不到问题点,请联系技术支持人员排查。
MCU的3路CAN为CAN2~CAN4,出厂的产品SDK软件中,提供CAN示例程序,方便客户使用MCU-CAN。同时SDK也提供CAN0~CAN1的示例。
布谷鸟CAN example位置:
/usr/local/cookoo/examples/example-cookoo_can(对应源码为该目录下cookoo_can.cpp),运行程序请使用root权限。
相关头文件、库位置:
/usr/local/cookoo/inc/、/usr/local/cookoo/lib
AWU403包含2路RS232(ARM 1路RS2332-1、MCU 1路RS2332-2)和1路RS485(ARM),其中ARM的RS232-1和RS485可以通过busybox microcom工具收发,同时所有ARM和MCU的RS232和RS485也都可以通过布谷鸟提供的example程序进行收发控制。
1) 2路RS232:
RS232-1(对应PCI接口#21和#22)节点在/dev/ttyAMA0。
RS232-1验证命令:
$ sudo -s #需root权限
# busybox microcom -s 115200 /dev/ttyAMA0 #打开ttyAMA0,等待接收
//同时直接输入想发送的数据,在接收端查看
RS232-2(对应PCI接口#23和#24)通过布谷鸟提供的example程序,由ARM与MCU通讯,对RS232-2进行控制。
布谷鸟RS232 example位置:
/usr/local/cookoo/examples/
源码为cookoo_uart.cpp,编译后程序为example-cookoo_uart,运行程序请使用root权限。
相关头文件、库位置:
/usr/local/cookoo/inc/、/usr/local/cookoo/lib
2)RS485(ARM):
RS485(对应PCI接口#25和#26)节点在/dev/ttyTHS3。默认为接收状态。
RS485接收验证命令:
$ sudo -s #需root权限
# busybox microcom -s 115200 /dev/ttyTHS3 # RS485等待接收
RS485发送验证命令:
$ sudo -s #需root权限
# echo 452 > /sys/class/gpio/export //export,注意452和>之间有空格
//echo out > /sys/class/gpio/PQ.04/direction //不用执行,默认就是out
# echo 1 > /sys/class/gpio/PQ.04/value //因485是差分线,只能同时发送一种信号,所以发送时需要拉高收发器的“AGX_RS485_RE_5V”脚
# busybox microcom -s 115200 /dev/ttyTHS3 //打开ttyTHS3
//直接输入想发送的数据,在接收端查看
# echo 0 > /sys/class/gpio/PQ.04/value //发完记得恢复默认的接收状态
# echo 452 > /sys/class/gpio/unexport //unexport
AWU403共4路IN/OUT,均与MCU直接连接,对应PCI接口#17~#20。
可参照布谷鸟提供的example程序,由ARM与MCU通讯,对IO进行控制。
布谷鸟IO example位置:
/usr/local/cookoo/examples/
源码为cookoo_pin.cpp,编译后程序为example-cookoo_pin,运行程序请使用root权限。
相关头文件、库位置:
/usr/local/cookoo/inc/、/usr/local/cookoo/lib
AWU403包含2路ADC,与MCU直接连接,对应PCI接口#13、#15。
可参照布谷鸟提供的example程序,由ARM与MCU通讯,对ADC进行控制。
布谷鸟ADC example位置:
/usr/local/cookoo/examples/
源码为cookoo_pin.cpp,编译后程序为example-cookoo_pin,运行程序请使用root权限。
相关头文件、库位置:
/usr/local/cookoo/inc/、/usr/local/cookoo/lib
用户若选配带SSD的产品,则SSD初始配置在出厂前已经完成,用户可以直接使用。
用户若自行购买SSD(M.2接口),请先联系布谷鸟科技进行确认,在参照3.2安装后,再参照下列方式进行配置。
步骤一:
获取SSD名称,下例中为“nvme0n1”:
$ lsblk | grep nvme
nvme0n1 259:11 0 477G 0 disk /data
步骤二:
格式化硬盘:
$ sudo mkfs.ext4 /dev/nvme0n1
步骤三:
修改fstab文件:
$ sudo vi /etc/fstab
在打开的fstab文件的末尾增加一行:
/dev/nvme0n1 /data ext4 errors=remount-ro 0 0
保存退出,重启系统:
$ sudo reboot
步骤四:
设置SSD权限:
$ sudo chown -R cookoo:cookoo /data
步骤五:
验证:
$ df -h
若nvme0n1显示挂载在/data下,则证明配置成功。
最长待机设计时间:416天
电源备份类型:自充电
1.RTC电源备份功能
实时时钟(Real-time clock,RTC)是指可以像时钟一样输出实际时间的功能。
RTC电源备份功能,是指在主电源掉电时,RTC仍然可以工作。使得系统掉电,重新启动的时候,系统时间不会发生剧烈变化。
2. Ublox-F9K电源备份功能
当系统掉电时,提供备份电源给Ublox-F9K,用于维持RAM供电。保证在系统重新启动时,ublox-F9K能执行热启动,快速恢复定位和标定状态,并维持模块RTC时钟。
1.RTC时间
确认系统时间设置
$ timedatectl
Local time: 一 2024-12-23 16:57:48 CST
Universal time: 一 2024-12-23 08:57:48 UTC
RTC time: 一 2024-12-23 08:57:49
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: no
NTP service: inactive
RTC in local TZ: no
时间
Local time: 按照Timezone,和UTC时间换算得到的时间
Universal time:也就是UTC时间,是Linux认为的当前格林威治标准时间。
RTC time: RTC时钟的UTC时间
2.Ublox-F9K电源备份功能
具体配置参考SDK中F9K相应配置及功能,SDK说明见5.3.2,在标定完成后,需要配置的数据保存在RAM中,设备重启以后,保持下电前的标定状态,可迅速恢复定位。
1. RTC电源备份
# 查看当前系统时间
timedatectl
#设备关机,放置一段时间(5分钟以上),关闭网络连接,断开GPS天线
#启动设备
#查看当前系统时间
timedatectl
#如果时间一致,则说明RTC电源备份正常工作
2. Ublox-F9K电源备份功能
#查看当前系统时间
timedatectl
#设备关机,放置一段时间(5分钟以上),关闭网络连接,断开GPS天线
#启动设备
#查看GPS报文
$GNRMC,102710.47,V,,,,,,,231224,7.30,W,N,V*56
# GNRMC 报文中UTC时间能正常获取,并保持与系统一致
提供AWU403上 Ubuntu系统上的CAN、GPS等接口的使用。接口提供头文件+链接库,以供上层应用的开发使用。
头文件:/usr/local/cookoo/inc/cookoo_sdk.h
链接库:
静态库:/usr/local/cookoo/lib/libcookoosdk.a
动态库:/usr/local/cookoo/lib/libcookoosdk.so
编译器:orin自带gcc 版本为gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0
SDK 接口的使用示例,可参考 /usr/local/cookoo/examples/ 内示例代码
V4L是linux内核的一部分,为视频设备提供统一接口。包括驱动程序、设备节点、V4L2库和应用程序,使客户能方便地与视频设备交互。V4L2库提供常用函数,支持视频捕获、处理和显示。
使用v4l-utils工具,验证对应的video口是否正常出图以及帧率是否正常
安装v4l-utils工具
$ sudo apt install v4l-utils
根据相机的分辨率及插入位置,使用工具获取出图及帧率情况
#以video0 1280x720分辨率相机为例
$ v4l2-ctl -d /dev/video0 --stream-mmap=3 --stream-count=300
保存图像,示例
$ v4l2-ctl -d /dev/video0 --stream-mmap=3 --stream-count=1 --stream-to=video0.yuyv
1)提供相机开关取图示例
相机SDK提供相机使用示例路径:/usr/local/cookoo/examples/cookoo_cam.cpp
$ sudo ./example-cookoo_cam 1 1
该示例提供相机开关、图像读取等示例代码,运行后,在该目录下存储相应图像(10张)。
2)SDK—相机外触发配置
相机SDK提供相机使用示例路径:/usr/local/cookoo/examples/cookoocam_trigger.cpp
示例程序使用方法
Usage: ./example-cookoo_cam_trigger [options]
Eg.: ./example-cookoo_cam_trigger SET_PWM 1
设置PWM开关,占空比默认为30
$ sudo ./example-cookoo_cam_trigger SET_PWM 1
注:使用相机外触发功能,请确认相机配置后使用。
GPS模组使用ublox F9K。提供应用接口读取/配置F9K的输入/输出。
接口使用C++类封装,提供接口如下:
| 序号 | 程序接口 | 接口说明 |
|---|---|---|
| 1 | GetInstance() | 对象使用单例模式,不可拷贝、移动、赋值;此接口获取实例。 |
| 2 | DelInstance() | 销毁实例,可不显式调用。 |
| 3 | void Set_Calibrate(float x1, float y1, float z1, float x2, float y2, float z2, float e); | F9K 配置标定参数。x1, y1, z1 惯导到后轮中心,参数单位为 m。x2, y2, z2 惯导到定位天线,参数单位为 m。e 量取杆臂值的配置误差,一般取 0.05。 |
| 4 | void Set_Ntrip(std::string const& ip, int port, std::string const& user, std::string const& passwd, std::string const& mountpoint); | 配置 nrtip 服务器。不使用 RTK 可不调用此接口。 |
| 5 | void Set_IMU_DATA_OUT(uint8_t freq); | 设置 IMU 数据输出。freq 0-100, 0: 不输出,1-100: 输出频率。 |
| 6 | std::string Read_GPS(); | 定位数据读取。支持 NMEA 格式字符串:GGA,RMC 的输出。默认以 30HZ 输出。 |
| 7 | uint8_t Get_IMU_STATE(); | 获取 IMU 的状态。 |
| 8 | void Read_IMU_DATA(float& acc_x, float& acc_y, float& acc_z, float& gyr_x, float& gyr_y, float& gyr_z); | 读取 IMU 的加速度值。单位 m/s2。Set_IMU_DATA_OUT () 设置非 0 时数据才有效。 |
| 9 | void Set_SPD_IN_MOD(uint8_t mod); | 车速输入模式 0 - 不输入,1 - 软件接口输入2 - 硬件接口输入 (暂不支持) |
| 10 | void Send_SPD(int spd); | 输入车速spd - 车速 精度 * 1000 单位 m/s。使用 Set_SPD_IN_MOD (1) 设置软件接口输入,再使用此接口传入车速,输入频率 >=10HZ |
可参照布谷鸟提供的example程序,使用GNSS模块数据。
布谷鸟GPS example位置:
/usr/local/cookoo/examples/
使用说明:
源码为cookoo_gps.cpp,编译后程序为example-cookoo_gps,运行程序请使用root权限。
相关头文件、库位置:
/usr/local/cookoo/inc/、/usr/local/cookoo/lib
运行结果:
SDK及示例的更多信息。可联系技术支持,获取SDK相关使用手册和F9K开发手册。
用户可以通过下列入门样例了解产品的应用开发过程,同时验证环境配置的正确性。
打开https://github.com/NVIDIA/cuda-samples/tags,选择12.5版本下载到本地,默认保存在Downloads目录下。
CUDA sample下载后可以装在 /usr/local/cuda-12.6,在终端中输入:
$ cd /usr/local/cuda-12.6/samples/5_Domain_Specific/marchingCubes
$ sudo apt-get install libglu-dev freeglut3-dev #安装相关库
$ sudo make #编译
$ ./ marchingCubes # 结果如下图
魔方模拟demo
在终端里输入:
$ cd /usr/local/cuda-12.6/samples/1_Utilities/deviceQuery
$ sudo make
$ ./deviceQuery # 结果如下图
在终端里输入:
$ cd /usr/local/cuda-12.6/samples/5_Domain_Specific/nbody
$ sudo apt-get install libglu-dev freeglut3-dev #安装相关库
$ sudo make #编译
$ ./nbody --help# 显示参数选择
$ ./nbody# 用 GPU 执行,如下图左(黄框内显示性能)
$ ./nbody -cpu# 用 CPU 执行,如下图右(黄框内显示性能)
在multimedia API的sample中运行backend demo,在终端中输入:
$ cd /usr/src/jetson_multimedia_api/samples/backend
$ sudo make #编译
#配置命令,可通过./backend –h查询
$ ./backend 1 /usr/src/jetson_multimedia_api/data/Video/sample_outdoor_car_1080p_10fps.h264 H264 --trt-deployfile /usr/src/jetson_multimedia_api/data/Model/GoogleNet_one_class/GoogleNet_modified_oneClass_halfHD.prototxt --trt-modelfile /usr/src/jetson_multimedia_api/data/Model/GoogleNet_one_class/GoogleNet_modified_oneClass_halfHD.caffemodel --trt-mode 1 --trt-proc-interval 1 -fps 10
等待片刻,显示车辆加框视频:
系统随机跑出的手写符号以及TensorRT预测结果。
$ cd /usr/src/tensorrt/samples
$ sudo make #编译所有的 samples,执行档存在 ../bin 目录
$ cd ../bin #可任意执行本目录下执行档
$ ./sample_mnist #下图为系统随机跑出的手写符号以及TensorRT预测结果
1)设备无法开机/无法进入系统
确认电源线是否正确连接,电压是否正确,电源功率预留是否足够。
保证存储空间有足够的余量。
确认指示灯状态,可尝试ssh连接。
2) 开机后,设备无网络
首先明确使用何种网络连接:以太网、5G或Wi-Fi 6。
确认网线是否连接牢固;
检查网络配置。
确认Micro-SIM卡已激活、可用;
确认Micro-SIM卡安装正确;
确认5G天线已连接;
通过命令查看是否获取IP和信号强度。
确认Wi-Fi 6天线已安装;
确认已接入Wi-Fi网络,且网络可用。
3)GMSL相机无视频
请勿带电插拔相机!
确认相机型号是否支持,是否插在支持的GMSL接口;
确认驱动日期是否正确;
尝试插在其他支持的GMSL接口,尝试更换线束、相机,交叉验证。
4)无GPS数据
确认天线已正确安装,天线终端推荐置于户外无遮挡处,且天气晴朗时使用;
确认定位工作模式,配置是否正确。
5)相机功能,使用opencv进行h264编码、存储出现内存和CPU异常
系统自带的ffmpeg库未链接libnvmpi库,导致无法调用jetson的硬编码,从而导致资源异常消耗、编码和存储性能下降。
解决方法:
请按照如下步骤配置域控
1. 删除域控中的ffmpeg库文件(如果存在,在/usr/lib/aarch64-linux-gnu/文件夹下)
2. 将ffmpeg.tar.gz拷贝到/home/nvidia文件夹下,并解压缩(联系技术支持获取)
3. 将ffmpeg.conf文件拷贝到/etc//ld.so.conf.d文件夹下,并运行sudo ldconfig命令
4. 运行程序,查看是否如下输出,如果没有,重新编译程序