Skip to content

openarmx/openarmx_motor_manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

1 Commit
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

OpenArmX Motor Manager

English | ็ฎ€ไฝ“ไธญๆ–‡

OpenArmX Multi-Robot Motor Management System - A PySide6-based graphical control tool for dual-arm robots.

Overview

openarmx_motor_manager is a desktop application for managing and controlling OpenArmX dual-arm robots. The system supports simultaneous management of multiple robots, providing an intuitive graphical interface for motor control, status monitoring, and CAN interface management.

Features

Multi-Robot Management

  • Support for simultaneous connection and management of multiple dual-arm robots
  • Each robot displayed in an independent tab
  • Automatic detection and pairing of CAN interfaces (can0-can1, can2-can3, ...)
  • Manual CAN channel configuration support

CAN Interface Management

  • One-click enable/disable all CAN interfaces
  • Automatic detection of real CAN interfaces (filtering virtual interfaces)
  • View CAN interface status and bitrate
  • Support for automatic sudo password input

Motor Control

  • Enable All Motors - Batch enable all motors on both arms
  • Disable All Motors - Batch stop all motors on both arms
  • Go Home - Command all motors to return to zero position
  • Set Zero - Set current position as motor zero point
  • Single Motor Test - Precise control of individual motors in MIT mode
  • Test All Motors - Execute simple motion tests

Motor Status Monitoring

  • Real-time display of motor status (position, velocity, torque, temperature)
  • Mode status indication (Motor mode/Reset mode/Cali mode)
  • Fault status monitoring

Multi-Language Support

  • ไธญๆ–‡ (zh_CN)
  • English (en_US)
  • ๆ—ฅๆœฌ่ชž (ja_JP)
  • ะ ัƒััะบะธะน (ru_RU)

Project Structure

openarmx_motor_manager/
โ”œโ”€โ”€ GUI_MultiRobot.py          # Program entry point
โ”œโ”€โ”€ __init__.py                # Package initialization
โ”œโ”€โ”€ requirements.txt           # Dependency list
โ”œโ”€โ”€ config/
โ”‚   โ”œโ”€โ”€ config.yaml            # Configuration file
โ”‚   โ”œโ”€โ”€ config_manager.py      # Configuration manager
โ”‚   โ””โ”€โ”€ script_finder.py       # Script finder
โ”œโ”€โ”€ ui/
โ”‚   โ”œโ”€โ”€ MainUI_MultiRobot.py   # Main interface
โ”‚   โ”œโ”€โ”€ RobotPage.py           # Robot control page
โ”‚   โ”œโ”€โ”€ RobotWorker.py         # Worker thread
โ”‚   โ”œโ”€โ”€ SingleMotorTestDialog.py  # Single motor test dialog
โ”‚   โ”œโ”€โ”€ SettingsDialog.py      # Settings dialog
โ”‚   โ”œโ”€โ”€ ConfigDialog.py        # Configuration dialog
โ”‚   โ”œโ”€โ”€ translations.yaml      # Multi-language translation file
โ”‚   โ”œโ”€โ”€ ui/                    # Qt Designer UI files
โ”‚   โ”‚   โ”œโ”€โ”€ MainUI.ui
โ”‚   โ”‚   โ”œโ”€โ”€ TestMotorUI.ui
โ”‚   โ”‚   โ”œโ”€โ”€ ui_MainUI.py
โ”‚   โ”‚   โ””โ”€โ”€ ui_TestMotorUI.py
โ”‚   โ””โ”€โ”€ texture/               # Icon resources
โ”‚       โ”œโ”€โ”€ icon.ico
โ”‚       โ””โ”€โ”€ icon.png
โ”œโ”€โ”€ utils/
โ”‚   โ””โ”€โ”€ can_detector.py        # CAN interface detector
โ””โ”€โ”€ scripts/                   # Command-line scripts
    โ”œโ”€โ”€ en_all_can.py          # Enable all CAN interfaces
    โ”œโ”€โ”€ dis_all_can.py         # Disable all CAN interfaces
    โ”œโ”€โ”€ en_all_motors.py       # Enable all motors
    โ”œโ”€โ”€ dis_all_motors.py      # Stop all motors
    โ”œโ”€โ”€ check_motor_status.py  # Check motor status
    โ”œโ”€โ”€ control_motor_gohome.py  # Motor go home
    โ”œโ”€โ”€ set_motor_zero.py      # Set zero point
    โ”œโ”€โ”€ test_motor_one_CSP.py  # Single motor CSP mode test
    โ”œโ”€โ”€ test_motor_one_MIT.py  # Single motor MIT mode test
    โ”œโ”€โ”€ test_motor_one_by_one.py  # Test motors one by one
    โ””โ”€โ”€ test_motor_all_random.py  # Test all motors randomly

Installation

Dependencies

pip install -r requirements.txt

Main dependencies:

  • PySide6 >= 6.5.0
  • PyYAML >= 6.0
  • openarmx_arm_driver >= 1.1.5
  • python-can >= 4.0.0

System Requirements

  • Linux operating system (CAN interface support required)
  • Python 3.8+
  • CAN hardware device (e.g., USB-CAN adapter)

Usage

Launch GUI Application

cd /path/to/openarmx_motor_manager
python3 GUI_MultiRobot.py

Quick Start

  1. Enable CAN Interfaces

    • Menu bar โ†’ CAN โ†’ Enable CAN Interfaces
    • First-time use requires sudo password input
  2. Add Robot

    • Menu bar โ†’ Robot โ†’ Add Robot
    • Choose automatic or manual CAN channel configuration
    • System requires at least 2 CAN interfaces to control one dual-arm robot
  3. Control Motors

    • Use motor control buttons in the robot page
    • Check output panel for operation results

Command-Line Scripts

You can also use command-line scripts directly:

# Enable all CAN interfaces
python scripts/en_all_can.py

# Enable all motors
python scripts/en_all_motors.py

# Check motor status
python scripts/check_motor_status.py

# Motor go home
python scripts/control_motor_gohome.py

# Disable all motors
python scripts/dis_all_motors.py

# Disable all CAN interfaces
python scripts/dis_all_can.py

Configuration

Configuration file is located at config/config.yaml with the following settings:

version: 2.0.0
first_run: false              # Whether it's the first run
language: zh_CN               # Interface language
sudo_password: ""             # sudo password (stored in plaintext, ensure security)
last_can_channels:            # Last used CAN channels
  right: can0
  left: can1
scripts:                      # MoveIt script paths
  moveit_sim: ""
  moveit_can: ""

Safety Notice

When using single motor test function, please note:

  1. Ensure motors are securely mounted and no personnel are nearby
  2. Operator's hand should hover over the emergency stop button
  3. For initial testing, parameter values should be less than 10% of maximum
  4. Press emergency stop button immediately if any abnormality is detected

API Dependencies

This system is based on the openarmx_arm_driver package, mainly using the following features:

  • Robot - Dual-arm robot control class
  • get_all_can_interfaces() - Get all CAN interfaces
  • get_available_can_interfaces() - Get enabled CAN interfaces
  • enable_can_interface() - Enable CAN interface
  • disable_can_interface() - Disable CAN interface
  • check_can_interface_type() - Check interface type (real/virtual)
  • verify_can_interface() - Verify interface status

Author

  • Wei Lindong (้ญๆž—ๆ ‹)
  • Company: Chengdu Changshu Robot Co., Ltd. (ๆˆ้ƒฝ้•ฟๆ•ฐๆœบๅ™จไบบๆœ‰้™ๅ…ฌๅธ)
  • Website: https://openarmx.com/

Version

v2.0.0

License

This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (CC BY-NC-SA 4.0).

Copyright (c) 2026 Chengdu Changshu Robot Co., Ltd. (ๆˆ้ƒฝ้•ฟๆ•ฐๆœบๅ™จไบบๆœ‰้™ๅ…ฌๅธ)

For more details, see the LICENSE file or visit: http://creativecommons.org/licenses/by-nc-sa/4.0/


๐Ÿ“ž Contact Us

Chengdu Changshu Robot Co., Ltd.

Contact Information
๐Ÿ“ง Email openarmrobot@gmail.com
๐Ÿ“ฑ Phone / WeChat +86-17746530375
๐ŸŒ Website https://openarmx.com/
๐Ÿ“ Address Huacheng Machinery Plant, No.11 Xinye 8th Street, West Area, Tianjin Economic-Technological Development Area
๐Ÿ‘ค Contact Person Mr. Wang

About

openarmx_motor_manager is a desktop application designed to manage and control the OpenArmX dual-arm robot. The system supports managing multiple robots simultaneously and provides an intuitive graphical interface for performing motor control, status monitoring, and CAN interface management. ๐Ÿš€

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages