环境配置和依赖工具 - Ligcox/BTP_DM GitHub Wiki
概述
python的安装可以参考文档:Python Setup and Usage
BTPDM 基于Python3.x环境开发,只需要在目标平台上安装Python解释器和对应的第三方库即可运行。
快速开始
第三方库配置
在Jetson平台上使用numpy1.19以上版本实际测试会出现异常,请在安装完opencv-python及tensorflow后手动对NumPy降级
对于无GPU的设备请安装tensorflow 2.5.0版本
BTPDM主要依赖的第三方库及版本有:
- numpy==1.18.5
- opencv-python==4.5.1.48
- pyserial==3.5
- tensorflow-gpu==2.5.0
clone项目
通过clone BTP&DM可以快速使用BCP搭建机器人上位机系统。
>>> git clone https://github.com/Ligcox/BTP_DM.git
>>> cd birdiebot2021
>>> pip3 install -r requirements.txt
>>> python3 main.py
BCP使用UART/USART进行上下位机交互,通过设置UART/USART信息,能够快速的实现消息的收发。这些硬件设置在不同平台上可能有所不同,可以根据具体设备型号和下位机类型,进行收发和控制。
硬件设置位于BTP&DM/config/devConfig中,包括了输入源设置、COM设置、波特率设置、超时设置。
输入源设置
BTP&DM在设计中,考虑到真实比赛环境及调试需求,可以选择不同的图像输入源进行操作,目前BTP&DM支持一下的图像输入源:
视频文件:使用视频或文件作为输入源。将source设置为文件路径即可,例如:
source=test.mp4
普通USB相机:使用USB相机作为输入源。将source设置为openCV中设备编号即可,例如:source=0
工业摄像机:使用工业摄像机作为输入源,目前,BTP&DM仅实现了对大恒工业相机的支持。将source
设置为相机编号即可,例如:source="DAHENG0"
COM设置
Window设备配置
在NUC/普通X86设备的Windows系统下,UART/USART应使用USB to TTL模块进行转发(为保障数据的正确传输,推荐使用FT232芯片的转接模块,最好不要使用CH340芯片的模块)。安装驱动后,在命令行中使用mode命令,查看模块占用端口。
>>>mode
设备状态 COM23:
-----------
波特率: 19200
奇偶校验: None
数据位: 8
停止位: 1
超时: OFF
XON/XOFF: OFF
CTS 握手: OFF
DSR 握手: OFF
DSR 敏感度: OFF
DTR 电路: ON
RTS 电路: ON
设备状态 CON:
---------
行: 9001
列: 120
键盘速度: 31
键盘延迟: 1
代码页: 936
例如,在该设备中,可配置PORTX = "COM23"
Jetson Ubuntu设备配置
在Manifold、Jetson AGX等开发套件中,能够通过开发套件中自带的引脚,完成相关COM设置,在Manifold2-G Ubuntu16.04条件下,UART0在系统内核中对应的设备是ttyS0
,UART1对应的设备是ttyTHS2
。Manifold 2-G的UART接口最大支持3M波特率。其中,921600波特率为标称值,实际为910000,在使用921600波特率进行传输时,这可能导致此UART接口无法与其他波特率亦有误差的设备(如一些OSDK设备)进行通讯。此时建议切换至其他波特率使用。
例如,在Maniflod2-G使用UART1口,可配置PORTX = "/dev/ttyTHS2"
。
波特率配置
BCT波特率指的是有效数据讯号调制载波的速率,即单位时间内载波调制状态变化的次数。在使用BCT时,只需将波特率调整为与下位机匹配即可,默认为500000,但推荐不应小于115200。
超时设置
BCT在接收下位机时的等待操作时间,默认为0,可根据实际场景自行设置,None代表永远等待操作,0为立即返回请求结果,其他值为等待超时时间(单位为秒)。
运行环境说明
系统环境
BTPDM在加列环境中进行了运行测试,未发生异常,由于解释性语言的特性,理论能够在任何安装了Python解释器和第三方库的平台运行。
运行环境
机型 | 架构 | 系统版本 |
---|---|---|
普通个人计算机 | X86/X64 | Windows 10.0.19043 |
Jetson | arrch64 | AGX Xavier:Ubuntu18.04 |
Jetson | arrch64 | Manifold2-G:Ubuntu18.04 |
视频输入源
- 普通usb摄像头及视频流Getting Started with Videos
更多视频流配置请参阅: OpenCV支持的
VideoCapture()
能够读取的对象。编码类型主要实现了V4L2_PIX_FMT_YUYV
、V4L2_PIX_FMT_H264
和V4L2_PIX_FMT_MJPEG
。
- 大恒工业数字相机
这里主要介绍的是实际上场机器人使用了摄像头,具体请根据实际情况选型
型号 | MER-039-860U3C |
---|---|
接口 | USB3.0 |
分辨率 | 640(H) × 480(V) |
帧率 | 860 fps |
传感器 | 1/4" ,Global Shutter Onseni PYTHON 300 CMOS |
像素尺寸 | 4.8 μm × 4.8 μm |
光谱 | 20μs~1s |
- 大恒工业数字镜头
型号 | HN-P-0628-6M-C1/1.8 |
---|---|
靶面尺寸 | 1/1.8" |
像元尺寸 | 2.4μm |
焦距(mm) | 6±5% |
光学总长(mm) | 49.5±0.2 |
法兰距(mm) | 17.526±0.2 |
光圈范围(F数) | F2.8-F16 |
视场角(H X V) | 61.15° × 47.88°(74.96°) |
工作距离(mm) | 0.1m-∞ |
前螺纹(mm) | M37.5×P0.5-7H |
接口 | C-mount |
畸变率(%) | ±0.2 |
尺寸(DXL)(mm) | Φ39 × 32.3 |