跳到主要内容

第12章_特色软件包

第12章 特色软件包

12.1 Docker软件包

12.1.1 Docker安装与配置

TB-RK3588X预置debian11固件内可直接支持Docker功能。

# 安装软件包
sudo apt -y install toybrick-server

执行如下脚本安装docker:

# 安装docker
toybrick-install.sh docker

docker配置需要先打开kernel内的docker相关的配置。

具体配置方法 请参考 编译源代码 --> 编译配置 --> 设置配置信息 ,根据 配置信息说明 打开docker配置。

12.1.2 Docker使用

执行以下命令从Docker镜像站中查找镜像

# 查找镜像
docker search $IMAGE

执行以下命令从Docker镜像站中下载镜像

# 下载镜像
docker pull $IMAGE

执行以下命令导入已有容器/镜像

# 导入已有容器或镜像
docker load < $IMAGE.tar

执行以下命令新建一个容器,并以命令行模式进入该容器:

doocker run -it $IMAGE bash

执行以下命令新建一个容器并映射本地端口/路径到容器内部:

docker run -d -v $LOCAL_PATH:$DOCKER_PATH -p $LOCAL_PORT:$DOCKER_PORT $IMAGE

执行以下命令启动已有容器:

docker start $IMAGE

执行以下命令以命令行模式进入已有容器:

docker exec -it $IMAGE bash

执行以下命令查看容器/镜像

docker ps -a  #查看全部容器
docker images #查看全部镜像

执行以下命令停止正在运行的容器

docker stop $IMAGE

其它用法详见:官方文档

说明:

$IMAGE:镜像名称

$LOCAL_PATH:本地路径

$DOCKER_PATH:docker容器内部路径

$LOCAL_PORT:本地端口

$DOCKER_PORT:docker内部端口

12.2 ROS1/ROS2软件包

TB-RK3588X预置debian11固件内可直接支持ROS1/ROS2功能。

12.2.1 安装软件包

ROS1安装命令

#安装ros1
toybrick-install.sh ros1
#查看帮助命令
toybrick-install.sh --help

ROS2安装命令

#安装ros2-foxy
sudo apt -y install ros2-foxy
#安装辅助软件包
ros2.sh prebuild

12.2.2 ROS2通信测试

  • 依次打开两个新的终端运行如下命令:

    #终端1 listener
    ros2 run demo_nodes_cpp listener
    #终端2 talker
    ros2 run demo_nodes_py talker
  • 若两个终端能正常通信,显示如下日志,则说明编译成功:

    #终端1 listener
    [INFO] [1642061058.658442093] [listener]: I heard: [Hello World: 1]
    [INFO] [1642061059.638045379] [listener]: I heard: [Hello World: 2]
    [INFO] [1642061060.638299705] [listener]: I heard: [Hello World: 3]
    [INFO] [1642061061.638672438] [listener]: I heard: [Hello World: 4]
    [INFO] [1642061062.639527715] [listener]: I heard: [Hello World: 5]
    [INFO] [1642061063.639907756] [listener]: I heard: [Hello World: 6]
    [INFO] [1642061064.640647545] [listener]: I heard: [Hello World: 7]
    [INFO] [1642061065.640954641] [listener]: I heard: [Hello World: 8]
    [INFO] [1642061066.641028633] [listener]: I heard: [Hello World: 9]
    #终端2 talker
    [INFO] [1642061058.636212156] [talker]: Publishing: 'Hello World: 1'
    [INFO] [1642061059.635725887] [talker]: Publishing: 'Hello World: 2'
    [INFO] [1642061060.635657118] [talker]: Publishing: 'Hello World: 3'
    [INFO] [1642061061.635704049] [talker]: Publishing: 'Hello World: 4'
    [INFO] [1642061062.635686631] [talker]: Publishing: 'Hello World: 5'
    [INFO] [1642061063.635791621] [talker]: Publishing: 'Hello World: 6'
    [INFO] [1642061064.635742135] [talker]: Publishing: 'Hello World: 7'
    [INFO] [1642061065.635865475] [talker]: Publishing: 'Hello World: 8'
    [INFO] [1642061066.635945009] [talker]: Publishing: 'Hello World: 9'

说明:编译生成的软件包安装在/opt/ros2_foxy目录下

12.2.3 音量控制C++ Demo

  • 下载sample:

    sudo apt -y install ros2-foxy-sample
  • 将sample拷贝到home目录下:

    sudo cp /opt/ros2-foxy/sample ~/sample
    chown -R toybrick:toybrick ~/sample/
  • 编译service,源码实现在sample/src/volume_control目录下:

    cd ~/sample
    colcon build --packages-select volume_control
  • 测试service,若能在屏幕上看到正确控制音量图标,则说明运行正常:

    #终端1:server
    source /opt/ros2-foxy/envsetup
    source ~/sample/install/setup.sh
    #运行server
    ros2 run volume_control server
    #终端2:client
    source /opt/ros2-foxy/envsetup
    source ~/sample/install/setup.sh
    #控制音量+
    ros2 run volume_control client 1
    #控制音量-
    ros2 run volume_control client 0

12.2.4 音量控制python Demo

  • 下载sample:

    sudo apt -y install ros2-foxy-sample
  • 将sample拷贝到home目录下:

    sudo cp /opt/ros2-foxy/sample ~/sample
    chown -R toybrick:toybrick ~/sample/
  • 编译service,源码实现在sample/src/py_volume_control目录下:

    cd ~/sample
    colcon build --packages-select py_volume_control
  • 分别打开两个终端运行节点,可以在桌面上看到已经成功控制音量加减图标:

    #终端1:server
    source /opt/ros2-foxy/envsetup
    source ~/sample/install/setup.sh
    #运行server
    ros2 run py_volume_control server
    #终端2:client
    source /opt/ros2-foxy/envsetup
    source ~/sample/install/setup.sh
    #控制音量+
    ros2 run py_volume_control client 1
    #控制音量-
    ros2 run py_volume_control client 0

12.3 Python 软件包

Toybrick Python SDK是一款专门为边缘计算打造的Python快速开发接口,接口设计上沿用了Python精简的理念和熟悉的CV命名方式,完全融合了Rockchip硬件加速模块,在接口内均以物理Buffer和零拷贝的方式运作。兼容Numpy、Opencv等常用的运算模块,方便用户快速开发和评估。

12.3.1 使用方法

  • 安装(固件已经默认预装)
sudo apt install python3-toybrick
  • 在python中引入包
import toybrick as toy

12.3.2 支持平台

  • RK3588
  • Toybrick 其他芯片平台将在后续推出

12.3.3 加速单元

  • GPU:Mali 图形处理单元
  • RGA:RK 2D图形辅助计算单元
  • VPU:RK 视频硬件编解码单元

12.3.4 模块一览

  • 全局工具函数 Utils
函数名描述
toy.version查看当前版本
frame = toy.copy_from(nparray)将numpy数组拷贝建立本地物理buffer
  • 输入流 Capture
函数名描述
stream = toy.RtspCapture(url, usr, pwd, isTCP)建立Rtsp输入流
stream = toy.HdmiCapture(path)建立Hdmi-In输入流
stream = toy.PipeCapture()建立进程管道输入流
ret, frame = stream.read(width, height, format)读取一帧图像
  • 输出流 Writer
函数名描述
stream = toy.RtspWriter(path, encoder, port)建立Rtsp本地服务输出流
stream.write(frame, width ,height)输出一帧图像
  • 显示 Display
函数名描述
disp = toy.Display(name, width, height, displayport)新建显示设备
w = disp.width()获取显示Buffer宽度
h = disp.height()获取显示Buffer高度
view = disp.addview(x, y, w, h)新增显示区域
disp.mvview(view, x, y, w, h)移动显示区域
disp.rmview(view)删除显示区域
disp.imshow(frame, view)显示一帧
  • 图像操作 Graphic
函数名描述
dst = frame.rotate(degree)图像旋转
dst = frame.resize(width, height)图像缩放
dst = frame.crop(x, y, w, h)图像剪裁
nparr = frame.asarray()转为numpy数组,可给cv、numpy使用

12.3.5 详细文档

百度云盘

OneDrive