Special Software Package¶
Docker Software Package¶
TB-RK3588X pre-installed debian11 image supports the Docker function.
Install Software Package¶
sudo apt -y install toybrick-server
Install Docker¶
Execute the following script to install docker:
toybrick-install.sh docker
Open Docker Configuration¶
Docker configuration need to open docker related configuration in kernel first.
More detail please refer to: Compiling Source code> Compiling Configuration > Setting Configuration Information, and open the Docker configuration according to the configuration information description.
Docker Usage¶
Image Search¶
Execute the following command to search image from https://hub.docker.com/
docker search $IMAGE
Image Download¶
Execute the following command to download image from https://hub.docker.com/
docker pull $IMAGE
Load the Existing Container or Image¶
Execute the following command to load the existing container or image.
docker load < $IMAGE.tar
Container Usage¶
Execute the following command to create a new container and enter the container in command line mode:
doocker run -it $IMAGE bash
Execute the following command to create a new container and map local ports/paths into the container:
docker run -d -v $LOCAL_PATH:$DOCKER_PATH -p $LOCAL_PORT:$DOCKER_PORT $IMAGE
Execute the following command to start up the existing container:
docker start $IMAGE
Execute the following command to enter the existing container in command line mode:
docker exec -it $IMAGE bash
Execute the following command to view the container/image.
docker ps -a #view all containers
docker images #view all images
Execute the following command to stop the running container.
docker stop $IMAGE
For other usages refer to :Docker
Description:
$IMAGE:image name
$LOCAL_PATH:local path
$DOCKER_PATH:docker container local path
$LOCAL_PORT:local port
$DOCKER_PORT:docker local port
ROS2 Software Package¶
TB-RK3588X pre-installed debian11 image supports ROS2 function.
Install Software Package¶
#Install ros2-foxy
sudo apt -y install ros2-foxy
#安装辅助软件包Install auxiliary Software Packages
ros2.sh prebuild
ROS2 Communication Test¶
Open two new terminals in turn and run the following command
#terminal 1 listener ros2 run demo_nodes_cpp listener #terminal 2 talker ros2 run demo_nodes_py talker
If the two terminals can communicate with each other and display the following logs, the compilation is successful:
#terminal 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] #terminal 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'
Note: The generated software package is installed in /opt/ros2_foxy directory.
C++ Demo of Volume Control¶
Download sample:
sudo apt -y install ros2-foxy-sample
Copy the sample to home directory:
sudo cp /opt/ros2-foxy/sample ~/sample chown -R toybrick:toybrick ~/sample/
Compile service, source code saved in sample/src/volume_control directory:
cd ~/sample colcon build --packages-select volume_control
Test service, if the correct volume control icon can display in screen, it indicates that the program is running properly.
#terminal 1:server source /opt/ros2-foxy/envsetup source ~/sample/install/setup.sh #terminal server ros2 run volume_control server #terminal 2:client source /opt/ros2-foxy/envsetup source ~/sample/install/setup.sh #volume+ ros2 run volume_control client 1 #volume- ros2 run volume_control client 0
Python Demo of Volume Control¶
Download sample:
sudo apt -y install ros2-foxy-sample
Copy the sample to home directory:
sudo cp /opt/ros2-foxy/sample ~/sample chown -R toybrick:toybrick ~/sample/
Compile service, source code saved in sample/src/py_volume_control directory:
cd ~/sample colcon build --packages-select py_volume_control
Open the two terminal running nodes respectively, and you can see the successful volume control icon on the desktop:
#terminal 1:server source /opt/ros2-foxy/envsetup source ~/sample/install/setup.sh #running server ros2 run py_volume_control server #terminal 2:client source /opt/ros2-foxy/envsetup source ~/sample/install/setup.sh #volume+ ros2 run py_volume_control client 1 #volume- ros2 run py_volume_control client 0
Python Software Package¶
The Toybrick Python SDK is a rapid development interface for Python specifically designed for EDGE SDK. The interface design follows Python’s compact philosophy and familiar CV naming, and fully integrates the Rockchip hardware acceleration module, operates with physical buffer and zero copy within the interface. Compatible with Numpy, Opencv and other common operation modules, convenient for users to develop and evaluate quickly.
How to Use¶
Install (Firmware is preinstalled by default)
sudo apt install python3-toybrick
Import package into python
import toybrick as toy
Support Platform¶
RK3588
Toybrick other chip platforms will be supported later
Accelerate Unit¶
GPU: Mali graphic processing unit
RGA: RK 2D graphic auxiliary computing unit
VPU:RK video hardware codec unit
Module¶
Global Utility Function: Utils¶
function name | description |
---|---|
toy.version | Check the current version |
frame = toy.copy_from(nparray) | Copy the numpy array and create a local physical buffer |
Input Stream: Capture¶
Function Name | Description |
---|---|
stream = toy.RtspCapture(url, usr, pwd, isTCP) | Create Rtsp input stream |
stream = toy.HdmiCapture(path) | Create Hdmi-In input stream |
stream = toy.PipeCapture() | Create process pipeline input stream |
ret, frame = stream.read(width, height, format) | Read a frame of image |
Output Stream: Writer¶
function name | description |
---|---|
stream = toy.RtspWriter(path, encoder, port) | Create Rtsp local service output stream |
stream.write(frame, width ,height) | Output a frame of image |
Display¶
Function Name | Description |
---|---|
disp = toy.Display(name, width, height, displayport) | New a display device |
w = disp.width() | Get the display Buffer width |
h = disp.height() | Get the display Buffer height |
view = disp.addview(x, y, w, h) | New display area |
disp.mvview(view, x, y, w, h) | Move display area |
disp.rmview(view) | Delete display area |
disp.imshow(frame, view) | display a frame of image |
Graphic Operation: Graphic¶
Function Name | Description |
---|---|
dst = frame.rotate(degree) | image rotate |
dst = frame.resize(width, height) | image resize |
dst = frame.crop(x, y, w, h) | image crop |
nparr = frame.asarray() | Convert to numpy array, can be used for cv, numpy |