yahboom
HomeLearn
Solution
Blog
Online Store
About Us
EN/中文
RDK X3 Robot📖
01. About RDK-X3-Robot
1. Instructions
  • 1. Introduction
  • 2. FAQ
  • 3. Battery and charger use precautions
  • 4.TF card expand capacity
2. Common problem analysis
02. Assembly video
  • Part1-Install Motor
  • Part2-Install Battert Fixing Column
  • Part3-Install Motor Coupling
  • Part4-Install Mecanum wheel
  • Part5-Install Expansion Board
  • Part6-Wiring Show
  • Part7-Install Main Control Board
  • Part8-Install Car Top Plate and Antenna
  • Part9-Install OLED Screen
  • Part10-Install Depth Camera(Optional)
  • Part11-Install OLED Screen
  • Part12-Install HD Camera
  • Part13-Install Top Plate
  • Part14-Install Right Side Plate
  • Part15-Motor Wiring Show
  • Part16-lnstall Car Body
  • Part17-Install Battery
  • Part18-Install Lidar
03. Remote control tutorial
  • 1. The phone APP remote tutorial
  • 2. USB wireless controller remote tutorial
04. ROS functional tutorial
  • 1. Introduction of extension board
  • 2. Set up STM32 development environment
  • 3. Key control buzzer sound
  • 4. FreeRTOS application
  • 5. Serial communication
  • 6. SBUS model remote control
  • 7. CAN bus communication
  • 8. RGB color light strip
  • 9. Timer interrupt control PWM servo
  • 10. Control serial steering gear
  • 11. Nine-axis attitude sensor to obtain data
  • 12. Control motor forward and reverse
  • 13. The timer captures encoder data
  • 14. Theory of robot kinematics analysis
  • 15. PID control robot motion
05. Basic control tutorial
  • 1. Update the firmware of the expansion module
  • 2. Install the Python driver library
  • 3. Set the type of bottom car
  • 4. Open and close the APP program control
  • 5. Turn hotspot mode on and off
  • 6. The buzzer blows
  • 7. Control the motor forward and reverse
  • 8. Control robot movement
  • 9. OLED display
  • 10. Control fan and lamp effect
06. Development environment setup
  • 1. Virtual Machine
  • 2. Linux Basics
  • 3. Remote connection
  • 4. Multi-computer communication configuration
  • 5. Bind the device ID
  • 6. Image installation and backup
07. ROS2 Basic Course
  • 1. Introduction to ROS2
  • 2. ROS2 install Humble
  • 3. ROS2 development environment
  • 4. ROS2 workspace
  • 5. ROS2 function package
  • 6. ROS2 node
  • 7. ROS2 topic communication
  • 8. ROS2 service communication
  • 9. ROS2 action communication
  • 10. ROS2 custom interface message
  • 11. ROS2 parameter service case
  • 12. ROS2 meta-function package
  • 13. ROS2 distributed communication
  • 14. ROS2 DDS
  • 15. ROS2 time related API
  • 16. ROS2 common command tools
  • 17. ROS2 rviz2 use
  • 18. ROS2 rqt toolbox
  • 19. ROS2 Launch startup file configuration
  • 20. ROS2 recording and playback tool
  • 21. ROS2 URDF model
  • 22. ROS2 Gazebo simulation platform
  • 23. ROS2 TF2 coordinate transformation
08. Robot chassis control
  • 1. PID algorithm theory
  • 2. Robot information release
  • 3. Robot control
  • 4. Robot state estimation
  • 5. Robot calibration
  • 6. Robot trajectory tracking
  • 7. URDF model
09. Lidar courses
  • 1. Introduction and use of lidar
  • 2. Lidar obstacle avoidance
  • 3. Lidar following
  • 4. Lidar guard
  • 5. Patrol
  • 6. gmapping algorithm
  • 7. cartographer algorithm
  • 8. Navigation and obstacle avoidance
  • 9. App mapping and navigation
10. OpenCV courses
  • 1. Introduction to OpenCV
  • 2. OpenCV geometric transformation
  • 3. OpenCV image processing
  • 4. OpenCV image beautification
  • 5. Qr code creation and identification
11. MIPI camera course
  • 1. Camera driver
  • 2. Adjust the color HSV value
  • 3. Color recognition
  • 4. Color tracking
  • 5. Color follow
  • 6. Qr code command
  • 7. Face detection
  • 8. Object detection
  • 9. Visual Inspection -OpenCV
  • 10. Visual inspection - Deep learning
  • 11. Human tracking
  • 12. Gesture control
12. Depth Camera courses
  • 1. Use depth camera
  • 2. Calibration of camera internal reference
  • 3. ROS+OpenCV Foundation
  • 4. AR vision
  • 5. Color tracking
  • 6. Object tracking
13. Multi vehicle control
  • 1. Multi-vehicle synchronous control
  • 2. Multi-vehicle navigation
Remote login control
  • 1. VNC and SSH remote login
  • 2. Jupyter lab login and case code running
Download
  • RemoteCtrl_APP(iOS/Android))
  • Mapping_APP(iOS_Android)
  • Code
  • System File
  • VM_File
  • Manual
  • Software_File
  • Hardware_File
  • ROS2_Basic_VM
Download ZIP

Welcome to RDK X3 Robot repository

4. AR vision

4. AR vision

4. AR vision4.1. AR Overview4.2 Program function description4.3 Program Code Reference paths4.4. Program Startup4.4.1. Web display4.4.2 rqt_image_view4.5. Core Source Code Resolution

 

4.1. AR Overview

Augmented Reality (AR), referred to as "AR", is a technology that cleverly integrates virtual information with the real world, widely using multimedia, three-dimensional modeling, real-time tracking and registration, intelligent interaction, sensing and other technical means. The computer generated text, image, 3D model, music, video and other virtual information after simulation, applied to the real world, the two kinds of information complement each other, so as to achieve the real world "enhancement".

AR system has three outstanding characteristics: (1) Information integration between real world and virtual world; ② It has real-time interaction; ③ is to add positioning virtual objects in the three-dimensional scale space.

Augmented reality technology includes multimedia, three-dimensional modeling, real-time video display and control, multi-sensor fusion, real-time tracking and registration, scene fusion and other new technologies and new means.

4.2 Program function description

Once the program is started, the Astra camera recognizes the checkerboard and displays the AR effect, which can be visualized on the web side.

The operation of this function must have the internal parameters of the camera, the internal parameters file path is,

xxxxxxxxxx
/userdata/yahboomcar_ws/src/yahboomcar_visual/astra.yaml

The internal reference calibration can be quickly calibrated with checkerboard, and the specific method can be seen in the content of the "Camera internal reference calibration" in the "Depth Camera Series Course". (This step has already been done in the system image)

After the calibration is completed on the VM, move the generated [calibrationdata.tar.gz] file to the current directory to decompress it, open the [ost.yaml] file in the folder, and find the camera parameter matrix and distortion coefficient.

After remotely connecting the car in VSCode, open the [/userdata/yahboomcar_ws/src/yahboomcar_visual/astra.yaml] file and modify the following two [data] contents (if you are familiar with linux instructions, You can also directly switch to the file directory after SSH connection to the car in the terminal, and use the vim tool to modify the file content),

xxxxxxxxxx
camera_matrix: !!opencv-matrix
  rows: 3
  cols: 3
  dt: d
  data: [608.182089,   0.     , 324.255471,
           0.     , 607.855617, 245.971079,
           0.     ,   0.     ,   1.     ]
distortion_model: plumb_bob
distortion_coefficients: !!opencv-matrix
  rows: 1
  cols: 5
  dt: d
  data: [0.100236, -0.073376, 0.004033, -0.001132, 0.000000]

There are a total of 12 effects in this section.

xxxxxxxxxx
["Triangle", "Rectangle", "Parallelogram", "WindMill", "TableTennisTable", "Ball", "Arrow", "Knife", "Desk", "Bench", "Stickman", "ParallelBars"]

4.3 Program Code Reference paths

After SSH connection car, the location of the function source code is located at,

xxxxxxxxxx
#launch文件#launch file
/userdata/yahboomcar_ws/src/yahboomcar_visual/launch/ar_launch.xml

The node or launch file is explained as follows:

  • simple_AR: Generate AR effect. The source path is,
xxxxxxxxxx
/userdata/yahboomcar_ws/src/yahboomcar_visual/yahboomcar_visual/simple_AR.py
  • rosbridge_websocket_launch.xml: enables the websocket to interact with the Web
  • rosboard_node: starts the ROSboard

The program uses opencv to read camera image data, so it does not start the ROS node of Astra's camera.

4.4. Program Startup

After SSH connection to the car, terminal input,,

xxxxxxxxxx
ros2 launch yahboomcar_visual ar_launch.xml

View ros topics by using the following command, enter in the virtual machine terminal,

xxxxxxxxxx
ros2 topic list

1684986393153

  • /Graphics_topic: The topic name of the effect. Subscribe to the effect to be identified.
  • /simpleAR/camera: The topic name of the image to publish the image.

4.4.1. Web display

Open the browser on the PC side (note that the computer and the Rising Sun network must be in the same LAN), enter the URL: car IP:9999, for example, my car IP is 192.168.2.67, enter the URL in the browser on the virtual machine side to open the ROSboard webpage:

xxxxxxxxxx
192.168.2.67:9999

Select the topic /simpleAR/camera,

1684985665767

You can show the AR effect.

1684986132651

Press [f] key in the page to switch different effects.

1684986174891

4.4.2 rqt_image_view

You can also use rqt_image_view to view published images, virtual machine terminal input,

xxxxxxxxxx
ros2 run rqt_image_view rqt_image_view

1684986310901

In the top left corner, select /simpleAR/camera to view the image.

At this time, the effect cannot be switched by keyboard keys, but it can be modified by publishing topic data, for example, virtual machine terminal input,

xxxxxxxxxx
ros2 topic pub /Graphics_topic std_msgs/msg/String "data: Desk"

1684986756630

At this point the AR effect was changed to Desk.

4.5. Core Source Code Resolution

Code flow:

1684987828053* Part of the code in simple_AR.py is as follows:

xxxxxxxxxx
# 查找每个图片的角点
# Find the corner of each image
retval, corners = cv.findChessboardCorners(
    gray, self.patternSize, None,
    flags=cv.CALIB_CB_ADAPTIVE_THRESH + cv.CALIB_CB_NORMALIZE_IMAGE + cv.CALIB_CB_FAST_CHECK)
# 查找角点亚像素
# Find corner subpixels
if retval:
    corners = cv.cornerSubPix(
        gray, corners, (11, 11), (-1, -1),
        (cv.TERM_CRITERIA_EPS + cv.TERM_CRITERIA_MAX_ITER, 30, 0.001))
    # 计算对象姿态
    # Compute object pose
    retval, rvec, tvec, inliers = cv.solvePnPRansac(
        self.objectPoints, corners, self.cameraMatrix, self.distCoeffs)
    # 输出图像点和雅可比矩阵
    # Output image points and Jacobian matrix
    image_Points, jacobian = cv.projectPoints(
        self.axis, rvec, tvec, self.cameraMatrix, self.distCoeffs, )
    img = self.draw(img, corners, image_Points)
# 发布图像
# Publish image
self.pub_img.publish(self.bridge.cv2_to_imgmsg(img, "bgr8"))
ROS+OpenCV Foundation
Color tracking

COMPANY

  • About us
  • Team Style
  • Blog

LEARNING & EXPLORATION

  • Tutorials
  • Edge AI hardware
  • Educational robots
  • Embedded intelligent hardware

WHERE TO BUY

  • Yahboom Online Store
  • Amazon
  • Alibaba
  • AliExpress
  • Mercado

TECHNOLOGY SUPPORT

  • Email: support@yahboom.com

BE A DISTRIBUTOR

  • Email: sales@yahboom.com
QR Code

Copyright © 2017-2026 Yahboom. All Rights Reserved.

EN/中文