Cookie Hinweis
Cookies erleichtern die Bereitstellung unserer Dienste. Mit der Nutzung unserer Dienste erklären Sie sich damit einverstanden, dass wir Cookies verwenden.
x

HR-OS1 ROS.org Research Platform 25.12.2017 21:57

Der Roboter befindet sich derzeit in der Bauphase, weshalb der Beitrag stetig erweitert wird

Der HR-OS1 ist ein humanoider Roboter von dem amerikanischen Unternehmen TrossenRobotics. Die verwendeten Servomotoren werden von ROBOTIS produziert, und verfügen über interene Strommessung zur Regulierung des Drehmoments, und eine Auflösung von bis zu 1024 Steps/Umdrehung. In unserem Anwendungsbeispiel haben wir auf nachfolgende Komponenten gesetzt:

Der Roboter verfügt in der Basisversion über alle benötigten mechanischen Komponenten, jedoch über keine Verkleidung. Diese können mittels 3D-Drucker bei jedem vorort selbst hergestellt werden. In unserem Beispiel haben wir auf den Ultimaker 3 in Kombination mit PLA/PVA gesetzt.

Die 3D-Dateien (.stl) befinden sich im Interbotix GitHub Repository, weisen jedoch Polygonenfehler auf. Leider sind die Fehler so gravierend, weswegen unter anderem das Body Vorderteil nicht gedruckt werden kann. Solche Fehler resultieren meist aus alten CAD Programmen, oder fehlerhaften Plugins im CAD Programm. Zum Glück stellt Netfabb eine Softwarelösung zur Verfügung mit welcher sich solche Fehler korrigieren lassen.

Die bereinigten .stl Files können HIER heruntergeladen werden.

Software & Hardware

Unser Roboter soll auf der OpenSource Middleware ROS basieren. ROS steht für Robotic Operating System und wurde von dem amerikanischen Unternehmen Willow Garage entwickelt. Zu den derzeitigen Nutzer zählen unter anderem das MIT, Rethnik Robots, BMW und viele mehr.

Ein großer Unterschied zwischen ROS und einem "normalen" Python Code, ist das multi threading. Dies bedeutet das mehrere Threads (Prozesse) gleichzeitig ausgeführt werden können bzw. auch mit einander kommunizieren können (Peer to Peer).


Nachfolgend ein Arduino Beispielcode:
 

#include Servo.h>

Servo servo; 

void setup()

{
servo.attach(1);
serial.begin(9600); 
}

void loop()
{ 
servo.write(0); 
delay(3000);
serial.print("Position 0");
}

Das Servo ist am digitalen Port 1 angeschlossen und dreht zu einem Winkel von 0°, macht dann eine Pause von 3 Sekunden bevor die Ausgabe stattfindet, dass das Servo die Position erreicht hat.
In Verbindung mit ROS wäre es möglich, solch einen Prozess aufzuteilen, sodass die Ausgabeanweisung unabhängig von der Servoansteuerung abläuft.

Bezüglich der Hardware haben wir auf Low Cost Komponenten gesetzt, wie den Benewake TFmini LiDAR zur Distanzmessung, ein Raspberry Pi 3 mit Ubuntu Mate und ein von uns entwickeltes Dynamixel Servocontrollerboard, welches es in kürze bei uns im Shop zu kaufen gibt. Dieses Board verfügt wie die Dynamixel Servomotoren über ein Half Duplex Interface, wodurch der Servomotor sowohl angesteuert, als auch die aktuelle Position, Temperatur und anliegende Spannung abgefragt werden kann.

Darüber hinaus wurden 6 digitale, 4 anloge Ports sowie die I2C Schnittstelle des uC nach außen geführt. Dadurch können unteranderem noch 6 PWM Servos und diverse Expansion Boards angesteuert werden. Die Kommunikation zwischen Raspberry Pi/ROS und dem DSC (Dynamixel Sero Controller) erfolgt mittels der ersten UART Schnittstelle des uC (RX0/TX0)


Bitte melden Sie sich an, um einen Kommentar zu schreiben.