Hello, I will check theremino, but one question is of general interest I think:
Does it support various kinematics, like 4- or 5 axis (palletized) robot arms or is it a solution for one motor?
Hi,
actually we have an unconventional approach that aims at low cost and low level of expertise for fairly simple automations.
Referring to the control of the movement of multiple motors, in theory we have no limits, better to say, we have the limit related to the number of motors and the speed and complexity of the protocol.
So far we have used compatible Dynamixel (https://www.dynamixel.com/) smart motors, produced in China to make prototypes of small robotic arms.
We use the -try, fail and learn- methodology for -pick and place- applications exactly as kids learn to mall claw machine.
Where no type of knowledge is needed to manage a Cartesian robot.
To get a real idea of āāwhat we are talking about go here:
We want to make a leap in quality by using CyberGear.
If you think this explanation is not enough, just ask and I will be happy to provide you with more details on the Theremino system.
Ciao
Leonardo
Hello friends,
the CyberGear is arrived, I prepare the mechanical support and now begin to play.
Someone know if all the documentation is stiil in Chinese or there are an official version in English?
Leo
Good luck! An English translation was posed earlier in the thread here. The rest of his GitHub repository has some useful links and information as well.
Dear friends,
I have write some software using Theremino Automationd and I have published on YouTube the tests:
Any comment, suggestion, criticism or questions are welcome.
Leo
Hi,
I carried out repeatability measurements and as you can see in the video, they are not exactly optimal.
I measured it in a somewhat empirical way, which on the 200 mm long arm is just under 1.5 mm.
https://youtu.be/1IwWmNGTGVg
I believe that the cause is to be found in the backlash that exists between the reduction gears.
Leo
Nice work! What library are you using to handle the communication with the motor?
Please excuse my delayed response; Iām currently moving and planning an international trip.
Our team at the THEREMINO SYSTEM takes a different approach to automation, specifically targeting users who arenāt professional programmers but want to solve practical problems. Weāve found that using Arduino and standard C++ cannot be challenging for many persons.
Consider this scenario:
Imagine someone wants to:
Turn on a fan when the temperature reaches a certain threshold.
Turn off the fan when the temperature drops below that threshold.
Log these events, including date, time, and temperature, to a text file on their PC.
Implementing this with Arduino and standard libraries can be quite complex or āmission impossibleā for non professional programmers.
Our Solution: THEREMINO AUTOMATION
Weāve developed an interpreted language called THEREMINO AUTOMATION under Visual Studio and OPEN SOURCE.
It simplifies interaction with sensors and actuators using a PIC microcontroller (Microchip) as a Master.
Also we rewrite how to communicate in ultrafast way over USB in HID mode to the Master.
This allows users with basic programming knowledge (like understanding āif-then-elseā or āfor-nextā) to create automation projects easily.
We prioritize accessibility for users familiar with tools like Microsoft Office and basic programming concepts.
Instead of relying on complex libraries, we focus on direct serial communication.
This approach leverages the PCās processing power.
Example: Controlling a Motor
Here is the way where we control the CyberGear motor:
Label Angle90
TTS Speak āgo to 90 degreesā 'use text to speak to inform the user about the actiom done
FrameAngle(90)
Return
Label FrameAngle
Numeric Angle
Numeric Destination = Rad(Angle)
String DestHex
Slot(slot_DestAngle) = Angle
DestHex = ConvertToIEEE754(Destination, True, False)
s1 = ā41 54 90 07 e8 0c 08 16 70 00 00 "
s1 = s1 + DestHex
s1 = s1 + " 0d 0aā
SendCommand
Return
Label SendCommand
COM WriteStringHEX s1
'Print āTx=ā + s1 + CRLF
Return
String Port = 5
Numeric Bauds = 921600
Essentially, we send hexadecimal strings over the serial port to control devices.
We aim to provide a straightforward automation solution for individuals who may not have extensive programming expertise.
Thanks for your time.
Iāve just published a comprehensive Python library to control the motor and a complimentary desktop GUI app similar to theirs.
- Library: GitHub - jgillick/python-cybergear: A python driver for the CyberGear motor
- Desktop app: GitHub - jgillick/CyberGearDashboard: A GUI dashboard and API for interfacing with the Xiaomi CyberGear Micromotor
I work on a mac and havenāt been able to get their Windows program to work on my system, so I built my own cross-platform desktop app. I hope itās useful to someone. Itās not as feature-rich as theirs yet, but I hope to build it out more.
The CyberGear CAN interface is pretty good, but it would be even better if SimpleFOC could be installed on this board. I know some people are working on it. Good luck!
Hi, I currently have exactly the same problem as you, concerning this zero position which is lost each time the power supply is cut. Have you been able to find a solution?
The documentation (section 4.1.6 ) states that the custom zero position is lost after power down.
Iām not sure how other people deal with this, but I assume the solution would be to have a secondary absolute encoder on the output shaft or limit switches to zero the motor on power-up.
Depending on your application, saving the zero position using the motorās internal encoder isnāt practical. The encoder tracks the absolute position of one full rotation of the motor before the planetary gearbox. This means it tracks ~8 rotations per output shaft rotation. So if you turn the power off and move the shaft manually, it wonāt know how to return to the absolute position it was at when the power was on.
You can see this yourself by turning the motor on and instructing it to move to the default zero position. Then, turn the motor off and manually turn the shaft a quarter turn. Now, turn the motor back on and instruct it to move to the default zero position. Youāll see that it doesnāt move it back to the position it was at on power down.
Thank you very much for your reply. Itās really annoying, I thought that on such recent motors, adapted for robotics, this problem was integrated. How do they do this for their mass-produced robot dogs, they also use additional sensors? Iāve also heard that it might be possible to describe a specific can frame to force this zero position into the motorās memory, has anyone ever used this method or perhaps something else? But if the encoder follows the logic you describe, it might not be much use either. For information, I use an ESP32 and the Arduino library.
Great work! I wrote my own python library but had trouble getting velocity to work in Operation Control and Position modes. Trying out both your libraries now.
Let me know if it works for you. Iām still finding a few bugs here and there and am trying to clean them up as I go.
Hi everyone,
Iām using the arduino library with the esp32 XIAO, Iām desperately trying to assign a new zero position as soon as the program starts. Iāve tried with the CMD_SET_MECH_POSITION_TO_ZERO function. But all my attempts have failed. Do any of you have an example of code to do this? Thank you !