地平线X3开发板开发环境搭建
文章目录
最近弄了一个地平线X3的开发板回来,看了一下它的测试环境和demo,搭建了一个简单的测试环境,测试了一下自带的face body等例程。以下是详细过程。
开发环境搭建
安装CMAKE
安装CMake 3.15+
以上版本。安装方式如下:
wget https://github.com/Kitware/CMake/releases/download/v3.17.2/cmake-3.17.2.tar.gz \
&& tar -zxvf cmake-3.17.2.tar.gz \
&& cd cmake-3.17.2 \
&& ./bootstrap \
&& make \
&& sudo make install \
&& cd .. \
&& rm -rf cmake-3.17*
安装完成之后,可以通过下面的方式来确定是否安装成功。
xxx@xxx:~/xxx-disk/horizon_x3$ cmake -version
cmake version 3.17.2
CMake suite maintained and supported by Kitware (kitware.com/cmake).
交叉编译工具
下载并安装芯片交叉编译工具gcc-linaro-6.5.0-2018.12-x86_64_aarch64-linux-gnu
如果交叉编译工具链有更新,需同步修改工具链配置。具体文件:AIEXPRESS代码工程根目录下的CMakeLists.txt,
source/common/xstream/framework/CMakeLists.txt
source/common/xproto/framework/CMakeLists.txt。
具体修改内容:
set(CMAKE_C_COMPILER /opt/${工具链目录名}/bin/aarch64-linux-gnu-gcc)
set(CMAKE_CXX_COMPILER /opt/${工具链目录名}/bin/aarch64-linux-gnu-g++)
如果不想修改交叉编译的工具,可以直接使用如下的命令解压即可。
sudo tar -xvf gcc-linaro-6.5.0-2018.12-x86_64_aarch64-linux-gnu.tar.xz -C /opt/
下载编译AIEXPRESS
下载AIEXPRESS的源码
git clone https://github.com/HorizonRobotics-Platform/AI-EXPRESS.git
代码仓库提供了编译一键脚本build.sh,git clone代码后可直接编译。 编译时需要指定平台信息即可,具体编译如下:
本地环境可以直接编译:
cd AI-EXPRESS
bash build.sh x3
代码仓库提供了一键部署脚本deploy.sh,可将模型、可执行程序、库文件、配置文件以及测试图片整理到deploy部署目录中。ssh登录到开发板,通过scp命令,将deploy目录拷贝到x3sdb开发板上就可以运行人体结构化参考方案。
使用系统自带的工具设置IP地址,其中ip地址设置成你自己的ip地址。
hrut_ipfull s 192.168.1.100 255.255.255.0 192.168.1.1
通过网络拷贝东西到开发板中:
scp -r deploy root@192.168.1.108:/userdata
拷贝之后的结果如下图所示。
demo演示
视频盒子使用HDMI显示
运行视频盒子示例,需要使用HDMI显示。系统默认未开启HDMI显示功能,系统烧录成功后,可以参考如下方法,开启HDMI显示。
使用串口连接开发板,然后重启X3设备,重启后根据提示随意按任意键进入uboot模式。在uboot模式中敲入如下两个命令:
setenv bootargs earlycon console=ttyS0,921600 clk_ignore_unused video=hobot:x3sdb-hdmi kgdboc=ttyS0
saveenv
系统重启后,HDMI显示器上显示地平线LOGO,则说明HDMI显示设置成功。
使用摄像头演示
mipi摄像头
买了一个mipi摄像头,回来说是usb摄像头,害我搞了半天。下面这个图是mipi摄像头,并且dsi的位置也不要接错了。
其中face的演示效果如下图所示:
使用rstp数据流
rstp的demo名字叫video_box,其源码路径如下所示:
AI-EXPRESS/source/solution_zoo/video_box/src
关于配置信息说明:
video_box/configs/rtsp.json
video_box/configs/visualplugin_video_box.json
其中video_box/configs/rtsp.json实例如下:
{
"channel_num": 1,//设置有几路输入信号
"channel0": {
"rtsp_link": "rtsp://192.168.1.108:555/test.264",//输入的网址
"tcp": 1,//tcp字段表示传输协议,置1。使用rtsp数据流,使用tcp的方式去跑数据流,否则会花屏.
"frame_max_size": 200,//200K
"save_stream": 0
},
"channel1": {
"rtsp_link": "rtsp://admin:admin123@10.96.35.199:554/0",
"tcp": 0,
"frame_max_size": 200,//200K
"save_stream": 0
},
"channel2": {
"rtsp_link": "rtsp://admin:admin123@10.96.35.66:554/0",
"tcp": 1,
"frame_max_size": 200,//200K
"save_stream": 0
},
"channel3": {
"rtsp_link": "rtsp://admin:admin123@10.96.35.66:554/0",
"tcp": 0,
"frame_max_size": 200,//200K
"save_stream": 0
}
}
video_box/configs/visualplugin_video_box.json实例如下:
{
"auth_mode": 0,
"display_mode": 0,//0:rtsp模式
"user": "admin",
"password": "123456",
"data_buf_size": 3110400,
"packet_size": 102400,
"input_h264_filename": "test.264",//输入文件
"local_forward": 1//0:远程ipc 1:本地转发
}
无ipc摄像头情况
视频盒子可使用本地264文件,实现文件转发功能。使用本地转发h264文件前,修改display_mode和local_forward配置。
display_mode字段 | 模式 |
---|---|
0 | rtsp模式 |
local_forward字段 | 模式 |
---|---|
1 | 本地转发 |
0 | 远程IPC |
目前支持一路和多路的本地转发功能,使用本地转发功能时,需要先修改deploy/video_box/config/rtsp.json
中的url为:rtsp://ip:555/inputfilename。
inputfilename
为deploy下的h264文件,例如x3 ip地址为10.64.35.193,默认h264文件为test.264,则url为 rtsp://10.64.35.193:555/test.264。
channel_num
字段表示几路本地转发,如果只想使用1路本地转发,置1即可,目前最多支持4路。
tcp
字段表示传输协议,置1。
使用rtsp数据流,使用tcp的方式去跑数据流,否则会花屏。需要修改两个文件:
video_box/configs/rtsp.json
video_box/configs/visualplugin_video_box.json
rtsp.json
vi video_box/configs/rtsp.json
然后增加如下:
"rtsp_link": "rtsp://192.168.1.108:555/test.264",
rtsp.json 修改之后的结果如下所示:
{
"channel_num": 1,
"channel0": {
"rtsp_link": "rtsp://192.168.1.108:555/test.264",
"tcp": 1,
"frame_max_size": 200, // 200K
"save_stream": 0
},
"channel1": {
"rtsp_link": "rtsp://admin:admin123@10.96.35.199:554/0",
"tcp": 0,
"frame_max_size": 200, // 200K
"save_stream": 0
},
"channel2": {
"rtsp_link": "rtsp://admin:admin123@10.96.35.66:554/0",
"tcp": 1,
"frame_max_size": 200, // 200K
"save_stream": 0
},
"channel3": {
"rtsp_link": "rtsp://admin:admin123@10.96.35.66:554/0",
"tcp": 0,
"frame_max_size": 200, // 200K
"save_stream": 0
}
}
visualplugin_video_box.json
vi video_box/configs/visualplugin_video_box.json
然后修改video_box/configs/visualplugin_video_box.json
配置中的display_mode,input_h264_filename和local_forward字段。
display_mode
:0, 表示使用rtsp模式。
input_h264_filename
:”test.264”,表示本地264文件名为test.264。
local_forward
:1,表示开启视频盒子本地转发功能。
配置成功之后的效果如下:
{
"auth_mode": 0,
"display_mode": 0,
"user": "admin",
"password": "123456",
"data_buf_size": 3110400,
"packet_size": 102400,
"input_h264_filename": "test.264",
"local_forward": 1
}
效果图如下图所示: