# 特色软件包 ## Docker软件包 TB-RK3588X预置debian11固件内可直接支持Docker功能。 ### 安装软件包 ```shell sudo apt -y install toybrick-server ``` ### 安装docker 执行如下脚本安装docker: ```shell toybrick-install.sh docker ``` ### 打开docker配置 docker配置需要先打开kernel内的docker相关的配置。 具体配置方法 请参考 编译源代码 --> 编译配置 --> 设置配置信息 ,根据 配置信息说明 打开docker配置。 ### Docker使用 #### 查找镜像 执行以下命令从[Docker镜像站](https://hub.docker.com/)中查找镜像 ```shell docker search $IMAGE ``` #### 下载镜像 执行以下命令从[Docker镜像站](https://hub.docker.com/)中下载镜像 ```shell docker pull $IMAGE ``` #### 导入已有容器或镜像 执行以下命令导入已有容器/镜像 ```shell docker load < $IMAGE.tar ``` #### 使用容器 执行以下命令新建一个容器,并以命令行模式进入该容器: ```shell doocker run -it $IMAGE bash ``` 执行以下命令新建一个容器并映射本地端口/路径到容器内部: ```shell docker run -d -v $LOCAL_PATH:$DOCKER_PATH -p $LOCAL_PORT:$DOCKER_PORT $IMAGE ``` 执行以下命令启动已有容器: ```shell docker start $IMAGE ``` 执行以下命令以命令行模式进入已有容器: ```shell docker exec -it $IMAGE bash ``` 执行以下命令查看容器/镜像 ```shell docker ps -a #查看全部容器 docker images #查看全部镜像 ``` 执行以下命令停止正在运行的容器 ```shell docker stop $IMAGE ``` 其它用法详见:[官方文档](https://docs.docker.com/) *说明:* *$IMAGE:镜像名称* *$LOCAL_PATH:本地路径* *$DOCKER_PATH:docker容器内部路径* *$LOCAL_PORT:本地端口* *$DOCKER_PORT:docker内部端口* ## ROS1/ROS2软件包 TB-RK3588X预置debian11固件内可直接支持ROS1/ROS2功能。 ### 安装软件包 ROS1安装命令 ```shell #安装ros1 toybrick-install.sh ros1 #查看帮助命令 toybrick-install.sh --help ``` ROS2安装命令 ```shell #安装ros2-foxy sudo apt -y install ros2-foxy #安装辅助软件包 ros2.sh prebuild ``` ### ROS2通信测试 - 依次打开两个新的终端运行如下命令: ```shell #终端1 listener ros2 run demo_nodes_cpp listener #终端2 talker ros2 run demo_nodes_py talker ``` - 若两个终端能正常通信,显示如下日志,则说明编译成功: ```shell #终端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目录下* ### 音量控制C++ Demo - 下载sample: ```shell sudo apt -y install ros2-foxy-sample ``` - 将sample拷贝到home目录下: ```bash sudo cp /opt/ros2-foxy/sample ~/sample chown -R toybrick:toybrick ~/sample/ ``` - 编译service,源码实现在sample/src/volume_control目录下: ```bash cd ~/sample colcon build --packages-select volume_control ``` - 测试service,若能在屏幕上看到正确控制音量图标,则说明运行正常: ```shell #终端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 ``` ### 音量控制python Demo - 下载sample: ```shell sudo apt -y install ros2-foxy-sample ``` - 将sample拷贝到home目录下: ```shell sudo cp /opt/ros2-foxy/sample ~/sample chown -R toybrick:toybrick ~/sample/ ``` - 编译service,源码实现在sample/src/py_volume_control目录下: ```shell cd ~/sample colcon build --packages-select py_volume_control ``` - 分别打开两个终端运行节点,可以在桌面上看到已经成功控制音量加减图标: ```shell #终端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 ``` ## Python 软件包 Toybrick Python SDK是一款专门为边缘计算打造的Python快速开发接口,接口设计上沿用了Python精简的理念和熟悉的CV命名方式,完全融合了Rockchip硬件加速模块,在接口内均以物理Buffer和零拷贝的方式运作。兼容Numpy、Opencv等常用的运算模块,方便用户快速开发和评估。 ### 使用方法 * 安装(固件已经默认预装) ```shell sudo apt install python3-toybrick ``` * 在python中引入包 ```python import toybrick as toy ``` ### 支持平台 * RK3588 * Toybrick 其他芯片平台将在后续推出 ### 加速单元 * GPU:Mali 图形处理单元 * RGA:RK 2D图形辅助计算单元 * VPU:RK 视频硬件编解码单元 ### 模块一览 #### 全局工具函数 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使用 | ### 详细文档 ​ [百度云盘](https://eyun.baidu.com/s/3eT0UVcA) ​ [OneDrive](https://rockchips-my.sharepoint.com/:f:/g/personal/addy_ke_rockchips_onmicrosoft_com/EmHbNzgyOmJOgvh91PZsyUUBzXixiDLa0kmKJ1g3hnKeXQ?e=dPMFZo)