A Fast, Easy, and User Friendly way to control Robotics Actuators.

Overview

GitHub issues GitHub pull-requests GitHub stars License


Logo

T-Motor Controller

A Fast, Easy, and User Friendly way to control Robotics Actuators.

View Demo · Report Bug · Request Feature

Table of Contents

  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Acknowledgements

About The Project

This project provides an easy to use GUI to control the T-Motor brand Robotic Actuators (motors) with feedback Plotting and close to Real-time Control. The Web app uses a Remote Procedure Call module (RPC). This module connects to a server running on your local or remote linux machine. That machine is connected to the motor over CAN bus. For more explanation on the technical terms please read the Glossary or view the Documentation to understand more about the architecture of the software.

The GUI provides:

  • Easy motor communication setup.
  • Easily stop motor operation.
  • Manual desired position input.
  • An Easy way to Visualize Motor Angles, Velocities, and Torques.
  • Visualize Desired values for Angles, Velocities, and Torques.
  • Save session plots as PNG for further analysis.
  • Set control parameters dynamically.
  • CSV desired position input (planned for future).

Project Motivation

Working with hardware is usually a very daunting task and it involves debugging both your software and hardware simultaneously, Roboticists usually have to spend a ton of time just to get the actuators to work which sometimes even include writing their own libraries for the actuators instead of focusing on the research at hand AFTER the motor starts working. This is what sparked the idea for this project, for now we will be working with the T-motor brand of motors only since they are quite popular in robotics. Future plans will include expanding to other models/brands and motor types. The end goal is to help Roboticists focus on what matters in their research.

Built With

(back to top)

Getting Started

The Server side should be running on your desired remote (for example a raspberry pi) or local machine. and the client side can run from anywhere (even on windows).

Install Prerequisites

First you need to install Python 3.6 or higher, then you can install the requirements from the command below on both your remote and local machines.
the command should run in the same folder as the requirements.txt file, otherwise provide file path (i.e. "path/to/file/requirements.txt")

pip install -r requirements.txt

Installation

Clone the repo from the terminal if you have git, or simply click the "download ZIP" from github.

git clone https://github.com/SeifAbdElrhman/T-Motor-Controller.git

Server Initialization

Copy the Server side folder to your desired remote (or local) machine, and run the ServerHandler.py file using the following command.

python ./ServerHandler.py <ip_address> <port#>

Don't forget to substitue "<ip_address>" and "<port#>" with your actual IP and Port for the remote machine (for local machine you can use "127.0.0.1" without quotes as the IP)

GUI Initialization

Now you can run the client.py file on your client machine (this machine doesn't have to be linux) with the following command.

streamlit run client.py

if your terminal is open on the full project folder please provide the path as "./src/Clien\ side/client.py". if you have a different directory structure provide your own path to the client.py file.

(back to top)

Usage

To use the interface you can easily

  • add IP and port of your server
  • connect to your CAN interface
  • send command to your motor
  • plots will be updated automatically

A simple Gif of the operation steps is shown below, along with the photage of the physical motor (here the motor is attached to a manipulator to show the movement more clearly)

UI.mp4
Demo.mp4

(back to top)

Roadmap

Currently we are working on multiple variants of a specific model of T-motors (the QDD AK80-6T, AK80-9T, AK45, and the AK30). Later we will expand to more models of T-motor. and Eventually fork to other brands.

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated and will boost the development of the Robotics community.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

For any bugs, issues, additional features, please open an issue on github with a detailed description and a proper Tag. Or feel free to contact the developers of the project directly

(back to top)

License

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)

Contact

Seif Farag - @FaragSeif - [email protected]
Nabila Adawy - @NabilaAdawy - [email protected]
Sherif Nafee- @Sh1co - [email protected]

Project Link: https://github.com/SeifAbdElrhman/T-Motor-Controller

(back to top)

Acknowledgements

  • Thanks to Simeon Nedelchev for his amazing control Library - rPyControl

(back to top)

This repository contains all the code and files needed to simulate the notspot quadrupedal robot using Gazebo and ROS.

Notspot robot simulation - Python version This repository contains all the files and code needed to simulate the notspot quadrupedal robot using Gazeb

50 Sep 26, 2022
A PYTHON Library for Controlling Motors using SOLO Motor Controllers with RASPBERRY PI, Linux, windows, and more!

A PYTHON Library for Controlling Motors using SOLO Motor Controllers with RASPBERRY PI, Linux, windows, and more!

SOLO Motor Controllers 3 Apr 29, 2022
A dashboard for Raspberry Pi to display environmental weather data, rain radar, weather forecast, etc. written in Python

Weather Clock for Raspberry PI This project is a dashboard for Raspberry Pi to display environmental weather data, rain radar, weather forecast, etc.

Markus Geiger 1 May 01, 2022
LifeSaver automatically, periodically saves USB flash drive data into the PC

LifeSaver automatically, periodically saves USB flash drive data into the PC. Theoriticaly it will work with any any connected drive ex - Hard Disk ,SSD ... But, can't handle Backing up multipatition

siddharth dhaka 4 Sep 26, 2021
Pure micropython ESP32 SPI driver for sdcard and screen at the same SPI bus

micropython-esp32-spi-sdcard-and-screen-driver Proof of concept of Pure micropython espidf SPI driver for sdcard with screen at the same SPI bus (exam

Thomas Favennec 7 Mar 14, 2022
Python library to interact with the GCE Electronics IPX800 device

A python library to control a GCE-Electronics IPX800 V4 device through its API.

Marc-Aurèle Brothier 2 Oct 20, 2021
Automate gate/garage door opening via 433.92MHz emitter with Raspberry Pi, Home Assistant and Homekit.

Automate opening your garage door / gate Summary This project sums up how I automated opening my garage door using a Raspberry PI, a 433Mhz emitter, H

Julien Fouilhé 29 Nov 30, 2022
Create a low powered, renewable generation forecast display with a Raspberry Pi Zero & Inky wHAT.

GB Renewable Forecast Display This Raspberry Pi powered eInk display aims to give you a quick way to time your home energy usage to help balance the g

Andy Brace 32 Jul 02, 2022
A script and GUI for controlling stepper motors from an arduino

A script and GUI for controlling stepper motors from an arduino (nema 23 in my case but should work for others in general)

Pip 2 Aug 01, 2022
Inykcal is a software written in python for selected E-Paper displays.

Inykcal is a software written in python for selected E-Paper displays. It converts these displays into useful information dashboards. It's open-source, free for personal use, fully modular and user-f

Ace 727 Jan 02, 2023
This OctoPrint plugin will make the initial connection to 3D Hub a breeze

3D Hub Connector This OctoPrint plugin will make the initial connection to 3D Hub a breeze. In future it will help in setting up a tunnel connection a

3D Hub 2 Aug 03, 2022
Rasberry Pie GPIO memory game. Press the corresponding key to the lit LED.

RPie-keyboard-game Rasberry Pie GPIO memory game. Press the corresponding key to the lit LED. Randem LED (general output) is lit up on rasberrypi rand

Shawn Dowling 1 Oct 24, 2021
DOS-like OS for RP2040 basic microcontroller boards

Micropython DOS-like OS for RP2040 microcontroller boards. Check out the demo video at https://www.youtube.com/watch?v=Az_oiq8GE4Y To start the OS typ

RetiredWizard 58 Dec 27, 2022
Mini Pupper - Open-Source,ROS Robot Dog Kit

Mini Pupper - Open-Source,ROS Robot Dog Kit

MangDang 747 Dec 28, 2022
Homeautomation system created with Raspberry Pi 3 and Firebase.

Homeautomation System - Raspberry Pi 3 Desenvolvido com Python, Flask com AJAX e Firebase permite o controle local e remoto Itens necessários Raspberr

Joselino Santos 0 Mar 09, 2022
Pinion — Nice-looking interactive diagrams for KiCAD PCBs

Pinion — Nice-looking interactive diagrams for KiCAD PCBs Pinion is a simple tool that allows you to make a nice-looking pinout diagrams for your PCBs

Jan Mrázek 297 Jan 06, 2023
Extremely simple PyBadge examples to demonstrate different aspects of CircuitPython using PyBadge hardware.

BeginnerPyBadge I purchased a PyBadge recently. I'm new to hardware. I was surprised how hard it was to find easy examples demonstrating how different

Rubini LaForest 2 Oct 21, 2021
Automatic Watering System using Soil Moisture Sensor and RTC Timer with Arduino

Automatic-Watering-System - Technical Answers to Real-World Problems. Evolution of Watering Manually to Watering Automatically.

Vaishnavi Pothugunta 4 Dec 31, 2021
Bucatini: a soft PIPE PHY for FPGA SerDes

Bucatini: a soft PIPE PHY for FPGA SerDes Bucatini is a noodly gateware layer capable of transforming an FPGA SerDes into a PIPE PHY, allowing you to

Great Scott Gadgets 28 Dec 02, 2022
A lightweight script for updating custom components for Home Assistant

Updater for Home Assistant This is a lightweight script for updating custom components for Home Assistant. If for some reason you do not want to use H

Alex X 12 Sep 21, 2022