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)

CircuitPython library for the CH559 USB to Serial chip

CH559 (USB to Serial) CircuitPython Library Why? Because you might want to get keyboard/mouse/gamepad/HID input into your CircuitPython projects witho

Guy Dupont 3 Nov 19, 2022
Alarm Control Panel component for Zigbee Keypads using action_transaction field

hass_transaction_alarm_panel Alarm Control Panel component for Zigbee Keypads using action_transaction field. Works together with zigbee2mqtt Supporte

Konstantin 4 Jun 09, 2022
BoneIO is a compact IO controller for home automation.

Project description BoneIO is a compact IO controller for home automation. Main features of this controller are Compact size (27x11x6)cm - 15 DIN modu

Maciej Krasuski 120 Nov 30, 2022
Get input from OLED Joystick, Runs command, Displays output on OLED Screen (Great for P4wnP1)

p4wnsolo-joyterm Gets text input from OLED Joystick Runs the command you typed Displays output on OLED Screen (Great for P4wnP1 - even better on Raspb

PawnSolo 7 Dec 19, 2022
A small Python app to converse between MQTT messages and 433MHz RF signals.

mqtt-rf-bridge A small Python app to converse between MQTT messages and 433MHz RF signals. This acts as a bridge between Paho MQTT and rpi-rf. Require

David Swarbrick 3 Jan 27, 2022
Toy robot that traverses on a finite surface

Toy Robot Challenge - Release Notes November 12, 2021 New features Initialisation - Users can set the home position and heading of the robot. Position

Ze Fei Teo 0 Feb 03, 2022
Isaac Gym Environments for Legged Robots

Isaac Gym Environments for Legged Robots This repository provides the environment used to train ANYmal (and other robots) to walk on rough terrain usi

Robotic Systems Lab - Legged Robotics at ETH Zürich 372 Jan 08, 2023
Python Keylogger for Linux

A keylogger is a program that records your keystrokes, this program saves them in a .txt file on your local computer and, after 30 seconds (or as long as you want), it will close the .txt file and se

Darío Mazzitelli 4 Jul 31, 2021
A Fast, Easy, and User Friendly way to control Robotics Actuators.

T-Motor Controller A Fast, Easy, and User Friendly way to control Robotics Actuators. View Demo · Report Bug · Request Feature Table of Contents About

26 Aug 23, 2022
An open source two key macro-pad modeled to look like a cartoony melting popsicle

macropopsicle An open source two key macro-pad modeled to look like a cartoony melting popsicle. Build instructions Parts List -1x Top case half (3D p

17 Aug 18, 2022
Shotgrid Toolkit Engine for Gaffer

Shotgun toolkit engine for Gaffer Contact : Diego Garcia Huerta Overview Implementation of a shotgun engine for Gaffer. It supports the classic bootst

Diego Garcia Huerta 12 May 21, 2022
ROS2 nodes for Waveshare Alphabot2-Pi mobile robot.

ROS2 for Waveshare Alphabot2-Pi This repo contains ROS2 packages for the Waveshare Alphabot2-Pi mobile robot: alphabot2: it contains the nodes used to

Michele Rizzo 2 Oct 11, 2022
A python script for Homeassistant that counts down the days to birthdays, anniversaries etc

Date Countdown A python script for Homeassistant that counts down the days to birthdays, anniversaries etc Important note I no longer use homeassistan

Marc Forth 21 Mar 12, 2022
Unofficial Playdate reverse-engineering notes/tools - covers file formats, server API and USB commands

Unofficial Playdate reverse-engineering notes/tools - covers file formats, server API and USB commands ⚠️ This documentation is unofficial and is not

James 106 Dec 31, 2022
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
Universal Xiaomi MIoT integration for Home Assistant

Xiaomi MIoT Raw 简体中文 | English MIoT 协议是小米智能家居从 2018 年起推行的智能设备通信协议规范,此后凡是可接入米家的设备均通过此协议进行通信。此插件按照 MIoT 协议规范与设备通信,实现对设备的状态读取及控制。

1.9k Jan 02, 2023
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
raspberry pi servo control using pca9685

RPi_servo-control_pca9685 raspberry pi 180° servo control using pca9685 Requirements Requires you to have the adafruit servokit library installed You

1 Jan 10, 2022
Mycodo is open source software for the Raspberry Pi that couples inputs and outputs in interesting ways to sense and manipulate the environment.

Mycodo Environmental Regulation System Latest version: 8.12.9 Mycodo is open source software for the Raspberry Pi that couples inputs and outputs in i

Kyle Gabriel 2.3k Dec 29, 2022
Mini Pupper - Open-Source,ROS Robot Dog Kit

Mini Pupper - Open-Source,ROS Robot Dog Kit

MangDang 747 Dec 28, 2022