yahboom
HomeLearn
Solution
Blog
Online Store
About Us
EN/中文
DOGZILLA-Lite📖
1. Get started quickly
  • 0. Notes (Must Read)new
  • 1. Main interface function experience (cm5)new
  • 1. Main interface function experience(cm4)
  • 2. APP control experience
  • 3. Web page image transmission control
  • 4. LLM-Embodied Intelligence Capabilities
  • 5. LLM-Smart Dog Capabilities
2. Basic operations of Raspberry Pi system
  • 1.SSH remote login
  • 2.VNC remote login desktop
  • 3.Remote file transfer
  • 4.JupyterLab environment construction and use
  • 5.Burn the system image
  • 6.Connect to WiFi
  • 7.Close large programs
  • 8.Raspberry Pi system expansion
3. Basic control of the dogzilla
  • 0. Introduction to DOGZILLA-Lite
  • 1. Screen display control
  • 2. Record Audio
  • 3. Play Audio
  • 4. Text to audio
  • 5. Voice to text
  • 6. Record Video
  • 7. Play Video
  • 8. Video recording function
  • 9. Read the posture angle
  • 10. Battery level reading
  • 11. Read the servo angle
  • 12. Screen display of expressions
  • 13. Calibration of the robot dog
  • 14. Burn the firmware
  • 15. Analysis of common problems
4. Motion control of the dogzilla
  • 1. The dog's forward, backward, left, and right movements and gait
  • 2. Dog Spin
  • 3. The dog adjusts its height and posture
  • 4. Dog periodic translation and rotation
  • 5. Self-balancing mode
  • 6. The dog performs preset actions
  • 7. Single Leg Control
  • 8. Robotic arm control
  • 9. Teaching mode
  • 10. Group Control Performance
  • 11. Teaching demonstration onlinenew
5. Open Source CV
A. Getting started with OpenCV
  • 1. Introduction to OpenCV
  • 2. OpenCV image reading and display
  • 3. OpenCV image writing
  • 4. OpenCV Image Quality
  • 5.OpenCV pixel operations
B. OpenCV geometric transformation
  • 1. Image scaling
  • 2. Image cutting
  • 3. Image translation
  • 4. Image mirroring
  • 5. Affine Transformation
  • 6. Image Rotation
  • 7. Perspective Transformation
C. OpenCV image processing and drawing text segments
  • 1. Grayscale processing
  • 2. Image Binarization
  • 3. Edge Detection
  • 4. Line drawing
  • 5. Rectangle and circle drawing
  • 6. Text and picture drawing
D. Image beautification
  • 1. Color Image Histogram
  • 2. Histogram Equalization
  • 3. Image repair
  • 4. Brightness enhancement
  • 5. Skin whitening
  • 6. Gaussian mean filtering
  • 7. Median Filter
6. AI recognition of the dogzilla
  • 1. Camera driver tutorial
  • 2. Color recognition
  • 3. HSV value test
  • 4. Object Recognition
  • 5. QR code recognition
  • 6. License Plate Recognition
  • 7. Human Pose Estimation
  • 8. Yolo detection
  • 9. Face Detection
  • 10. Human face mask
  • 11. Face effects
  • 12. 3D Object Recognition
  • 13. Paintbrush
  • 14. Finger recognition
  • 15. Gesture Recognition
  • 16. Age and gender identification
  • 17. Background Segmentation
  • 18. Facial Recognitionnew
  • 19. Emotion Recognitionnew
  • 20. Motion Detectionnew
7. Dogzilla AI Interaction
  • 1. Color patrol
  • 2. Line patrol and obstacle removal
  • 3. Color tracking
  • 4. Ball tracking
  • 5. The ball follows
  • 6. QR code recognition exercise
  • 7. Face tracking
  • 8. Remote control
  • 9. Gesture tracking
  • 10. Gesture-controlled movement
  • 11. You Drop, I Pick
  • 12. Independent football exercise
  • 13. Human Body Followingnew
8. AI large model interaction
  • 0.AI large model principle foundation
  • 1.Large model premise use configuration
  • 2.Q&A
  • 3.Embodied intelligence
  • 4.Smart dog
  • 5.Picture to text
  • 6.Intelligent interaction
  • 7.Voice intelligent vision
  • 8.Playing football
  • 9.Block gripping
  • 10.Line tracking and obstacle removal
  • 11.Control object tracking
Download
  • System_File
  • Code
  • Firmware
  • Communication interface
  • Instruction Manual
  • Appendix
Download ZIP

Welcome to DOGZILLA-Lite repository

13. Human Body Following

Human Body Following

Human Body Following1. Experimental Purpose2. Experimental Steps3. Experimental Results4. Experimental Source Code Analysis

This tutorial is specific to the CM5 version and will not work directly with the CM4 version

1. Experimental Purpose

Learn to use the robot dog's camera to locate and follow a human body.

2. Experimental Steps

Log in to the robot dog's system, exit the robot dog program, and enter "ip (where ip is the robot dog's IP address):8888 in your browser. Once logged in, enter the password "yahboom" image-2024112100001

Then log in. Go to cd ~/DOGZILLA_Lite_class/6.AI Visual Interaction Course/13.Human Body Follows and run follow_person.ipynb.

Finally, run the program.

3. Experimental Results

After running the program, the robot dog will detect a human and follow the human body by moving forward, backward, left, or right, depending on the distance from the human body.

image-2024112100002

4. Experimental Source Code Analysis

xxxxxxxxxx
# Display the output area
display(image_widget)
display(output_area)
​
from track import HumanTracker
from xgolib import XGO
​
button = Button()
dog = XGO(port="/dev/ttyAMA0", version="xgolite")
dog.attitude('p', -10)
​
​
tracker = HumanTracker()
from PIL import Image, ImageDraw
import xgoscreen.LCD_2inch as LCD_2inch
splash_theme_color = (255,255,255)
mydisplay = LCD_2inch.LCD_2inch()
mydisplay.Init()
mydisplay.clear()
# Init Splash
splash = Image.new("RGB", (mydisplay.height, mydisplay.width), splash_theme_color)
draw = ImageDraw.Draw(splash)
mydisplay.ShowImage(splash)
detector = HumanDetector()
last_move_x_speed = 0.0
last_turn_speed = 0.0
filter_coefficient = 0.3  # 滤波系数 filter coefficient
while True:
    with output_area:
        frame = picam2.capture_array()
        humans = detector.detect_humans(frame)
        for human in humans:
            if human:
                print("\n=== update  ===")
                center_x, distance = human['center_x'], human['distance'] if human else (None, None)
                #print(f"距离最近的人在 ({human['bbox']}), center_x: {human['center_x']}, distance: {human['distance']} cm")
                tracking_params = tracker.update(human)
                if tracking_params['is_detected'] and tracking_params['is_moving']:
                    prediction = tracker.predict_future_position(tracking_params, 0.06)
                    if prediction:
                        pass
                raw_move_x_speed = tracking_params['velocity_x'] * 0.05 + (distance - 100) * 0.1
                if -20 <distance - 70 <  20:
                    raw_move_x_speed = (distance - 70) * 0.3
                else: 
                    raw_move_x_speed = (distance - 70) * 0.2
                raw_turn_speed = tracking_params['velocity_x'] * 0.02
                if 145<center_x<175:
                    raw_turn_speed = 0
                elif 130<center_x<145 or 175< center_x <190:
                    raw_turn_speed = (160 - center_x) * 0.2
                else:
                    raw_turn_speed = (160 - center_x) * 0.15
                move_x_speed = filter_coefficient * last_move_x_speed + (1 - filter_coefficient) * raw_move_x_speed
                turn_speed = filter_coefficient * last_turn_speed + (1 - filter_coefficient) * raw_turn_speed
                max_move_speed = 10.0
                max_turn_speed = 15.0
                move_x_speed = max(-max_move_speed, min(max_move_speed, move_x_speed))
                turn_speed = max(-max_turn_speed, min(max_turn_speed, turn_speed))
                # 更新上一时刻的速度 Update the speed from the previous moment
                last_move_x_speed = move_x_speed
                last_turn_speed = turn_speed
                if la =="cn":
                    print(f'距离:{distance}, 中心点偏移:{160-center_x}')
                    print(f"移动速度: {move_x_speed:.2f}, 转向速度: {turn_speed:.2f}")
                else:
                    print(f'distance:{distance}, center_x:{160-center_x}')
                    print(f"move_x_speed: {move_x_speed:.2f}, turn_speed: {turn_speed:.2f}")
        
                #dog.move_x(move_x_speed)
                #dog.turn(turn_speed)
                # #dog.move_x(0.02 * tracking_params['velocity_y'])
                # #dog.turn(tracking_params['velocity_x'])
                
                
        # 如果没有检测到人体,逐渐减速 If no human body is detected, gradually slow down
        if humans == []:
            move_x_speed = 0.03*filter_coefficient * last_move_x_speed 
            turn_speed = 0.03*filter_coefficient * last_turn_speed 
            max_move_speed = 3.0
            max_turn_speed = 3.0
            move_x_speed = max(-max_move_speed, min(max_move_speed, move_x_speed))
            turn_speed = max(-max_turn_speed, min(max_turn_speed, turn_speed))
            dog.move_x(move_x_speed)
            dog.turn(turn_speed)
​
            if la =="cn":
                print(f"移动速度: {move_x_speed:.2f}, 转向速度: {turn_speed:.2f}")
            else:
                print(f"move_x_speed: {move_x_speed:.2f}, turn_speed: {turn_speed:.2f}")
            
            last_move_x_speed = move_x_speed
            last_turn_speed = turn_speed
            
        b, g, r = cv2.split(frame)
        image_widget.value = bgr8_to_jpeg(frame)
        #cv2.imshow('Human Detection', frame)
        
        img = cv2.merge((r, g, b))
        imgok = Image.fromarray(img)
        mydisplay.ShowImage(imgok)
​
        if button.press_b():
            dog.reset()
            break
xxxxxxxxxx
if -20 <distance - 70 <  20:
    raw_move_x_speed = (distance - 70) * 0.3
else: 
    raw_move_x_speed = (distance - 70) * 0.2
raw_turn_speed = tracking_params['velocity_x'] * 0.02
if 145<center_x<175:
    raw_turn_speed = 0
elif 130<center_x<145 or 175< center_x <190:
    raw_turn_speed = (160 - center_x) * 0.2
else:
    raw_turn_speed = (160 - center_x) * 0.15
  • If you want to change the following distance and the left and right turn range, you can modify the range here.
  • detector.detect_humans(frame): This function detects the position of human bodies in the image.

 

 

Independent football exercise
AI large model principle foundation

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/中文