- 本项目用到了以下软件包:
- WiringNP This is a GPIO access library for NanoPi. It is based on the WiringOP for Orange PI which is based on original WiringPi for Raspberry Pi.
- Mjpg-streamer 是一个命令行应用程序,可将JPEG帧从一个或多个输入插件复制到多个输出插件,从一个UVC内核摄像头读取内容,然后将它推送到本地的端口上。
- EasyLogger 是一款超轻量级(ROM<1.6K, RAM<0.3K)、高性能的 C/C++ 日志库。
- 运行环境:NanoPi NEO
$ mkdir rov
$ cd rov
$ git clone https://github.com/ROV-Master/rovmaster-embedded
在第一次运行程序之前,务必执行(build.sh
自动化安装依赖库)):
$ chmod +x build.sh
$ ./build.sh
build.sh 中安装相关依赖库
由于使用 WiringNP 库,需要 root 权限:
$ make
$ sudo ./rovmaster
若执行时提示无法打开某设备,输入 sudo npi-config
> Advanced Options
中使能相关设备:
$ sudo npi-config
若系统时间不对,为时区未进行更改:
在 npi-config
> Localisation Options
> Change Timezone
中选择修改。
当修改了lib库中文件,需要进行重新编译时,进行编译选择:
- 1.WiringNP
- 2.easylogger
- 3.mjpg-streamer
启动 compile.sh
脚本,输入对应库的编号,进行自动化编译,并自动拷贝相关库
$ ./compile.sh
# ubuntu 64安装交叉编译工具链
sudo apt-get install gcc-arm-linux-gnueabihf
# 编译
make
# ubuntu 上编译出来,通过scp传到nano-pi上
scp ./rovmaster root@192.168.31.213:/root/
#nano-pi 同步中国时间
sudo timedatectl set-timezone Asia/Shanghai
sudo timedatectl set-ntp true
视频推流命令在 video.sh
脚本中,指定相关视频参数,在其中修改摄像头视频推流参数即可。
编号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
功能 | 包头 | 包头 | 数据长度位 | 深度锁定位 | 方向锁定位 | X轴动力模拟量 | Y轴动力模拟量 | 垂直运动方向位 | 旋转运动方向位 | 油门量 | 灯亮度控制位 | 变焦摄像头动作位 | 云台控制位 | 机械臂控制位 | 树莓派开机位 | Reserve | Reserve | Reserve | 启动停止位 | 校验位 |
取值 | AA | 55 | 10 | 0/1 | 0/1 | 0~255 | 0~255 | 0~255 | 0~255 | 0~3 | 0~3 | 1/2/11/12 | x | x | x | SUM | ||||
数组编号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
- 数据皆为16进制
- 以X正方向为机器人正面。
-
驱动模块
- ADS1118 (ADC)
- 电压检测 (待实际测试)
- 电流检测 (待实际测试)
- PCA9685 (PWM)
- 深度传感器
- SPL1301
- MS5837
- 系统设备状态
- CPU使用率、温度
- 内存状态
- 硬盘状态
- 实时网速
- IO设备
- RGB
- 按键
- 蜂鸣器
- PWM设备 (待实际测试)
- 云台
- 探照灯
- 机械臂
- OLED
- 九轴
- 音频MIC
- ADS1118 (ADC)
-
功能模块
- OLED状态显示
- 视频推流
- 数据通信
- 下行-控制数据
- 上行-ROV状态数据
- 系统自检
- 日志记录
- 传感器融合
-
控制模块
- 手柄控制 (待实际测试)
- 定深控制 (待实际测试)
- 定向控制
- 变焦摄像头控制