yahboom
HomeLearn
Solution
Blog
Online Store
About Us
EN/中文
Muto S2 Robot📖
1.Introduction to Muto Robot
  • 1.Introduction to Muto Robot
  • 2.Accessories introduction
  • 3.Precautions for battery
  • 4.FAQ
2.Assembly and write system
  • 1.Raspberry Pi write system
  • 2.Jetson Nano write sytem
  • 3. Robot assembly tutorial
  • 4. Installation Video Part1-Part5
  • 4. Installation Video Part6-Part10
3.Remote control course
  • 1.Close APP control process
  • 2.Mobile APP remote control tutorial
  • 3.USB wireless handle remote control
4.Linux basic course
  • 1.Introduction to Linux system
  • 2.Ubuntu file system
  • 3.Ubuntu common commands
  • 4.Ubuntu common editors
  • 5.Ubuntu software operation commands
  • 6.Virtual machine installation
  • 7.SSH remote control
  • 8.VNC remote control
  • 9.Transfer files remotely
  • 10.Driver library and communication
  • 11.Static IP and hotspot mode
  • 12.Bind device ID
  • 13.Capacity expansion and resource allocation
  • 14.Update system software sources
  • 15.Set root user password
  • 16.sudo free password
  • 17.Connect to WiFi network
  • 18.View system version
  • 19.Customized service management
  • 20.Back up system image
5.JupyterLab course
  • 1.ReadMe before operate
  • 2.Environment setup
  • 3.Basic usage tutorial
  • 4.Widgets configuration
  • 5.Widgets controls use
6.Jetson NANO course
  • 1.About JetsonNano system
  • 2.Network configuration and Jtop
  • 3.swap space increased
  • 4.API usage of GPIO library
  • 5.Hardware library configuration
  • 6.Pin reading function
  • 7.Pin level output control
  • 8.Control LED
  • 9.Jetson Nano communicates with external device serial ports
  • 10.jetson nano I2C communication
7.Raspberry Pi course
  • 1.Python usage
  • 2.Use APT to install Python packages
  • 3.Python virtual environment
  • 4.GPIO Zero
  • 5.Pin output high and low levels
  • 6.Pin reads high and low levels
  • 7.Pin output PWM
  • 8.Serial communication
  • 9.I2C communication
8.Robot basic course
  • 1.Control buzzer
  • 2.Control PWM servo
  • 3.Control bus servo
  • 4.Robot forward and backward
  • 5.Robot move left and right
  • 6.Robot rotate left and right
  • 7.Control height
  • 8.Control head
  • 9.Action group performance
  • 10.Read data
  • 11.Host computer control
  • 12.Camera driver
9.Open Source CV course
  • 1.Introduction to Open Source CV
  • 2.Image reading and display
  • 3.Picture writing
  • 4.Image Quality
  • 5.Pixel operations
  • 6.Image zoom
  • 7.Picture cut
  • 8.Picture pan
  • 9.Picture mirroring
  • 10.Affine transformation
  • 11.Picture rotation
  • 12.perspective transformation
  • 13.Grayscale processing
  • 14.Binary image
  • 15.Edge green detection
  • 16.Line segment drawing
  • 17.Rectangular circle drawing
  • 18.Text and picture drawing
7.AI vision course
  • 0.Color HSV value calibration
  • 1.Color recognition
  • 2.Color tracking
  • 3.Color following
  • 4.Color recognition action group
  • 5.Face detection
  • 6.Face tracking
  • 7.Greet people
  • 8.QR code recognition
  • 9.QR code instructions
  • 10.visual line following
  • 11.Motion learning
  • 12.Teach pendant synchronized action
8.Machine deep learning
  • 1.KNN
  • 2.TensorFlow basic tutorial
  • 3.Basic use of PyTorch
  • 4.Yolov5 detects objects in real time
  • 5.Jetson-inference environment construction(selective viewing)
  • 6.Object detection and action
  • 7.Body movement control robot
  • 8.Gesture controlled robot
Remote login control
  • 1. VNC and SSH remote login
  • 2. Jupyter lab login and case code running
9.FAQnew
  • Using your own Jetson board, Muto S2 cannot start normally
Download
  • APP(iOS/Android)
  • SystemFile_For_RPi5
  • System_for_RPi4
  • System_for_JetsonNANO
  • Hardware and protocol
  • Instruction manual
  • Jetson_Boot_USB.tar.gz
Download ZIP

Welcome to Muto S2 Robot repository

11.Motion learning

11、motion learning

11、motion learning11.1 Introduction to gameplay11.2Core content analysis11.3 operation

11.1 Introduction to gameplay

This course mainly implements the learning function by reading and writing the servo angle. The idea of action learning is to record each attitude into a local txt file, and then run multiple postures in sequence to form an action.

 

11.2Core content analysis

ACTION_FILE_NAME records the location where the action is saved. For the convenience of viewing, the text file is placed in the same directory of the program. Generally, it does not need to be modified.

ACTION_FILE_NAME = "Action_Data.txt"

Since robot motion learning requires unloading of the two front leg servos, the positions of the two middle legs need to be set first to ensure a stable state when learning is started.

xxxxxxxxxx
def ready_study():
    g_bot.reset()
    time.sleep(1)
    g_bot.motor(5, -60, 500)
    g_bot.motor(14, -60, 500)
    time.sleep(.5)
    g_bot.motor(4, 30, 500)
    g_bot.motor(13, -30, 500)
    time.sleep(.5)
    g_bot.motor(5, -35, 500)
    g_bot.motor(14, -35, 500)
    time.sleep(.5)

Start learning the movements and uninstall the two front leg servos, leg1 and leg6 respectively.

xxxxxxxxxx
def start_study():
    g_bot.unload_leg(1)
    time.sleep(.1)
    g_bot.unload_leg(6)

Learn the action, read the robot's current attitude and servo angle, and use Python's own open function to open and write a line of data (the two front leg servo angle values).

xxxxxxxxxx
def study_action():
    read_angle = g_bot.read_motor()
    angle_value = [0,0,0,0,0,0]
    for i in range(3):
        angle_value[i] = read_angle[i]
        angle_value[5-i] = read_angle[17-i]
    write_action(ACTION_FILE_NAME, angle_value)
    
def write_action(file_name, value):
    if len(value) != 6:
        return
    base_dir = str(os.getcwd())
    base_dir = base_dir.replace('\\', '/')
    file_path = base_dir + "/" + str(file_name)
    with open(file_path, "a") as f:
        wf_str = str(value[0]) + ', ' + str(value[1]) + ', ' + \
            str(value[2]) + ', ' + str(value[3]) + ', ' + \
            str(value[4]) + ', ' + str(value[5])  + '\n'
        f.write(wf_str)
        f.flush()

Stop the learning action and reload the two front leg servos.

xxxxxxxxxx
def stop_study():
    g_bot.load_leg(1)
    time.sleep(.1)
    g_bot.load_leg(6)

Read all actions, read the actions in the txt text line by line, save them to the group, and return the group array.

xxxxxxxxxx
def read_all_action(file_name):
    base_dir = str(os.getcwd())
    base_dir = base_dir.replace('\\', '/')
    file_path = base_dir + "/" + str(file_name)
    group = ()
    try:
        with open(file_path, "r+") as f:
            lines = f.readlines()
            for line in lines:
                if len(line) != 0:
                    list = line.split(',')
                    if len(list) == 6:
                        action = ([int(list[0]), int(list[1]), int(list[2]),
                               int(list[3]), int(list[4]), int(list[5])], )
                        group = group + action
    except FileNotFoundError:
        print(str(file_name), "File not Found")
        return None
    except:
        return None
    return group

Run the action group and run the read group action groups in sequence. You can modify the runtime time of the motor function (default 800) and the sleep time below to control the speed of the servo.

xxxxxxxxxx
def play_action():
    group = read_all_action(ACTION_FILE_NAME)
    if group == None:
        print("No action found")
        return
    len_group = len(group)
    print("group:", len_group, group)
    motor_id = [1, 2, 3, 16, 17, 18]
    for action in group:
        for i in range (6):
            g_bot.motor(motor_id[i], action[i], 800)
        time.sleep(1)

The clearing action is relatively simple, just delete the ACTION_FILE_NAME file directly. Note: After clearing, the previous action data cannot be restored.

xxxxxxxxxx
def clear_action(file_name):
    base_dir = str(os.getcwd())
    base_dir = base_dir.replace('\\', '/')
    file_path = base_dir + "/" + str(file_name)
    os.system('rm ' + file_path)
    print("remove file:", file_path)

Create multiple new buttons to operate and perform related functions.

xxxxxxxxxx
def on_button_clicked(b):
    # with output:
    #     print("Button clicked:", b.description)
    # print("Button clicked:", b.description)
    if b.description == Name_widgets['Stop_Study'][g_ENABLE_CHINESE]:
        stop_study()
        button_Start_Study.icon = "uncheck"
    elif b.description == Name_widgets['Start_Study'][g_ENABLE_CHINESE]:
        start_study()
        button_Start_Study.icon = "check"
    elif b.description == Name_widgets['Study_Action'][g_ENABLE_CHINESE]:
        if button_Start_Study.icon == "check":
            study_action()
    elif b.description == Name_widgets['Clear_Action'][g_ENABLE_CHINESE]:
        clear_action(ACTION_FILE_NAME)
    elif b.description == Name_widgets['Play_Action'][g_ENABLE_CHINESE]:
        play_action()

 

11.3 operation

Open the jupyterLab client and find the code path:

xxxxxxxxxx
muto/Samples/AI_Samples/11_study_mode/11.study_mode.ipynb

Click to run all cells, and then scroll to the bottom to see the generated controls.

image-20220810163917767

image-20230815101429305

First click Start_Study to start learning. At this time, the two front legs of the robot will be unloaded, and you can turn the two front legs by hand for six servo angles.

When you turn to the posture you want to learn, click Study_Action to learn and record a posture. Record different postures repeatedly to form an action group.

image-20230823192607515

After the movement learning is completed, please click Stop_Study to end the learning. At this time, reload the two front leg servos of the robot. You cannot turn the servos angle by hand.

Click Play_Action to start playing the action you just learned.

When you need to clear the action or relearn the action, please click Clear_Action to clear the action data.

visual line following
Teach pendant synchronized action

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