PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Roboter mit PC steuern (Problem mit µC)



MichaelBMF
21.10.2008, 17:35
Hallo erst mal,

heut ist zwar erst mein 1. Beitrag/Frage, aber ich schau schon seit Ewigkeiten immer mal bei euch ins Forum bzw. die Seite. Ich denke, dass ich hier wohl die kompetentesten Leute (nicht nur) aus dem „Hobby-Bereich“ finden kann.

Zu meinem geplanten Projekt:
Ich bin Informatik-Student mit Nebenfach Maschinenbau/Mechatronik und höre im Moment Einführung Robotik und Automatisierungstechnik. Um die Theorie etwas besser zu verstehen zu können, wollen ein paar Kommilitonen und ich, uns jetzt einen eigenen Roboter bauen (so zusagen „learning by doing“). Als Basis soll eine Computer mit SSD, entweder eine Netbook (à la EEE-PC) oder ein ITX-PC (VIA oder Intel-Atom), dienen. Es sollen später evtl. komplexere Anwendungen vor allem im Bereich „Bildverstehen“ auf dem Ding laufen können. Auch eine Steuerung von einem 2. Computer über ein Netzwerk soll irgendwann möglich sein. Die Anbindung des Roboters an den Computer sollte dabei über USB gehen, da USB heut an jedem PC mehr oder weniger Pflicht ist und so der Computer, falls die Rechenleistung nicht ausreichen sollte, auch schnell gegen ein leitungsfähigeres Modell ausgetauscht werden kann.

Mein Problem:
Ich bin kein Elektroniker und hab wenig Ahnung von µC. Programmierung stehlt eigentlich kein Problem dar, da wir schon im 1. Semester maschinennah programmiert haben und Hochsprachen sind sowieso kein Problem. Aber welchen und wie viele µC brauch ich wo?
Im Moment hab ich da folgende Vorstellung: Am Computer hängt ein µC den ich per USB ansprechen kann. Der soll wiederum auch recht leistungsstark sein, da er kritische Prozesse, welche echtzeitfähig sein müssen (Notabschaltung, kritische Sensorwerte, etc.) ohne PC lösen können muss. Aber sonnst nimmt er die Befehle vom Computer entgegen und informiert diesen in regelmäßigen Abständen über den aktuellen Zustand. An diesem µC hängen dann wiederum die Sensoren und Motoren. Brauch ich da aber dann wiederum „kleine“ µC zwischen dem leistungsstarken µC und den Sensoren und Motoren (Motortreiber). Vor allem habe ich in Automatiesrungstechnik gehört dass es besser sei Sensoren und Motoren nicht direkt per Punkt-zu-Punkt-Verbindung anzuschließen, sondern ein Feldbus-System aufzubauen. Brauch ich dann aber nicht zwingen kleinere µC an den Sensoren/Motoren, da ich die ja dann irgendwie die Einzelnen Sensoren/Motoren adressieren, muss wenn die alle an einem Anschluss hängen? Vom Thema I²C hab ich leider auch noch nicht soviel Ahnung, aber ich vermute sehr stark, dass es sich dabei genau um die Lösung von meinem Problem handelt. Gibt es evtl. was besseres oder aktuelleres als I²C?
Und zu letzte und am wichtigsten: Welche Hardware benötige ich dann und welche könnt ihr mir empfehlen? Ist der RN-Mega2560 für die Aufgabe des größeren µC, der richtige? Kann ich diesen über USB so ansprechen wie ich mir das oben Vorstelle? Wir wollen es erst einmal langsam angehen und nur die Fahrfunktionen ermöglichen, d.h. wir müssen 2 Motoren und noch einen Servo ansteuern können. Kann mir hierzu einer Sagen wie eine Kombination aus PC, µC und Motoren auszusehen hat?
Ich bin wirklich für jede hilfreiche Antwort dankbar. Auch über eine bessere Lösung des Aufbaus/ bzw. Korrektur meiner Vorstellung würde ich mich freuen.

MFG

Michael

MichaelBMF
28.10.2008, 23:46
So, da zwar viele reinschauen aber keiner antwortet, war ich mal weiter auf der Suche und hab mich hoffentlich etwas mehr ins Thema eingearbeitet. Hab aber immer noch eine Frage: Ist das RN-Mega2560 als Haupt-µC, sowie das Micro Servoboard von robotikhardware.de für die Servoansteuerung und das RN-MotorControl für die Ansteuerung von normalen Modellbaumotoren eine empfehlenswerte Kombination?
Gruß Michael

Willa
29.10.2008, 08:33
Hi!
Wenn du schon das Micro Servoboard hast kannst du auch einfach zwei fahrtenregler für deine Motoren benutzen. Die werden auch per PWM angesteuert. Ansonsten kann ich dirleider nicht so richtig weiterhelfen, das einzige was ich mal in Richtung PC <-> µC gemacht habe findest du zusammengefasst in meinem Artikel:
https://www.roboternetz.de/wissen/index.php/Windows_Programm_zum_Steuern_des_AVR%27s
Das benutzt allerdings eine sehr altmodische serielle Schnittstelle.....

MichaelBMF
29.10.2008, 11:33
Danke für die schnelle Antwort. Deinen Artikel hatte ich schon früher mal gelesen. Ich muss nur mal schauen was ich davon benutzen kann. Und auch Danke für den Tipp mit den Modellbau-Fahrtregler. Ich habe darauf hin auch schon nach passenden gesucht, sie sind aber nur ein wenig billiger als RN-MotorControl (ich hab zu mindestens keine wesentlich günstigere gefunden), und wenn ich mich richtig informiert habe, lässt sich MotorControl per I²C ansteuern und genau das wollen wir ja auch ausprobieren.
Gruß Michael

marvin42x
29.10.2008, 17:48
Hi
Das sind sehr viele Fragen die mit einem mal aufgeworfen werden.
Als ich mir über so was Gedanken gemacht habe stand ich vor Ähnlichen Fragen.
Die richtige Wahl ist sicher von Fall zu Fall sehr unterschiedlich.
Ich picke mal etwas davon raus zu dem ich Anregungen oder Meinungen anmerken kann.

Euer System soll ja High End Optionen bereithalten darum ist die Busfrage und die Programmarchitektur recht wichtig.
Da die Meisten Controller neben RS232 auch über den I2C Bus verfügen und alle anderen Verbindungsarten extra Aufwand benötigen hatte ich mich auch für den I2C Bus entschieden.
Wenn das dann als Multimaster aufgezogen wird und mit einer vernünftigen Adressierung versehen wird sollte das im unteren Bereich der Kontroller Kommunikation schnell genug sein.
Hier auf dieser Seite könnt Ihr euch vielleicht die eine oder andere Anregung holen.
http://www.marvins-lab.roboterbastler.de/index.html
Auf jeden Fall ist das mal eine Lösung zum Angucken. Ich vermute mal das Euer Projekt aber noch etwas Anspruchsvoller ist.
Es gibt in diesem Forum einige solcher Ansätze und natürlich International noch viel mehr.

Welche Sprache ist die richtige für die Kontrollerprogrammierung?
Welche Für die PC Seite?
Ich weis es nicht.
Ich habe Bascom Basic für die Kontroller gewählt weil ich da eine riesige Unterstützung im Forum habe und durch zusammentragen fertiger Bausteine zu Ergebnissen komme die ich alleine mit meiner Zeit und meinem Können nicht schaffen würde.

Auf der PC Seite war es, obwohl ich nicht so ein doller Microsoft Fan bin, Visual Basic 2005 aus denselben Gründen. Dort spielte für mich auch eine ausgereifte Programmierumgebung mit guten Fehlersuchmöglichkeiten eine Rolle. Das es kostenlos ist war natürlich auch ein Grund.

ich höre jetzt erstmal auf sonst wird das zu lang und schreibe vielleicht später noch mal was dazu.

Netter Gruß

Ps. das RN-Mega2560 ist schon was. Das würde mir als Master of Desaster auch gefallen. Da der Rest sowieso von anderen Kontrollern abgewickelt wird kann man dem schon ein paar schlaue Gedanken einbauen.
Ich glaube jetzt muss ich mir das auch kaufen :-) und meiner Mutter sage ich Ihr ward schuld weil Ihr mich auf den Gedanken gebracht habt.

MichaelBMF
29.10.2008, 20:44
Hi,
also der Gedanken das der RN Def. einheitliche Software-Schnittstellen/Transport-Protokolle fehlen ist mir heute auf dem Weg zur Uni auch schon gekommen (Es kann aber auch sein das ich dazu nur noch nichts gefunden habe). Deine Seite muss ich mir in den nächsten Tagen unbedingt genau anschauen, hab jetzt leider nur 5 min Zeit gehabt. Aber auf den 1. Blick extrem interessant. Aber so in etwa wie auf dem Bild hier (http://www.marvins-lab.roboterbastler.de/html/rncom.html) hab ich mir das auch vorgestellt. Nur das die einzelnen Aktoren und Sensoren über einen Bus laufen sollen und nicht wie eingezeichnet (aber wahrscheinlich nicht so gemeint) mit einer Punkt-zu-Punkt-Verbindung angeschlossen sind.
Ich selbst wurde ja am liebsten das ganze über Ethernet machen, da dort über Protokolle wie IP, TCP, UDP und dem OSI-Modell alles schon recht gut festgelegt ist. Nur leider hat sich Ind.-Ethernet in der Industrie (noch) nicht durchgesetzt und es wird schwer sein Sensoren mit Ethernetanschluss zu finden: Außer man baut sie sich selbst, aber dann hat man wieder eine Verbindung wie I²C etc. zwischen Ethernet-Komponente und Sensor.
Naja zu den Sprachen: Wir wollten so viel wie möglich bzw. alles in C machen (PC als auch Controller), da wir auch wenns net unbedingt gebraucht wird, auf Visual-Studio zurückgreifen können (legal :) ). Ich hoffe es gibt hier im Forum genug Leute die ihre Controller in C programmieren und die bei Problemen weiterhelfen können.
Ob unser Projekt wirklich anspruchsvoller ist kann ich im Moment nicht sagen, da der größte Teil eh in der Software die auf dem PC laufen soll stecken wird. Für mich ist im Moment die größte Hürde passende Hardware zu finden und diese dann richtig zusammen zu bauen und schließlich zum laufen zu bringen :).
Ach ja was ich schon die ganze Zeit fragen wollte: Zu dem RN-Mega2560 gibts ja so ein Test-Board, kann ich das irgendwo käuflich erwerben (zumindest als Baussatz)? Wenn ja, wieviel würde es etwa kosten? Oder muss ich mir die Platine bei nem Service ätzen lassen, denn selbst kann ich so was nicht machen?

Gruß Michael

marvin42x
30.10.2008, 00:52
Ich bin mir sicher, dass ihr hier in C fündig werdet. sowohl auf der Kontrollerseite wie auch auf der PC Seite. Viele programmieren hier in C.
Zu dem RN.Mega2560 Testboard weis ich leider nichts zu sagen.

Auf jeden Fall bin ich sehr gespannt wie sich euer Projekt entwickelt. Eure Ideen und Ziele sind jedenfalls nach meinem Geschmack.

Auf der RnCom Seite mag nicht alles auf dem letzten Stand sein. Im Zweifel mal fragen.
Dort sind auch die Adressen zu dem dazugehörigen Thread im Forum und zu den Dokus.

Netter Gruß

johns
30.10.2008, 09:53
hallo,

also das ganze klingt nach einer vernünftigen idee!
für maschinelles sehen solltet ihr aufjedenfall etwas schnelleres als einen via C7M mit 1,2GHz verwenden... (persönliche erfahrung).
ein dual-core atom mini-itx board: http://www.heise.de/preisvergleich/a356403.html
besser als i2c wäre zb CAN (gegen welchen ich mich aufgrund des geringen angebots an günstigen sensoren entschieden habe)
ansonsten, sensoren deren werte als schneller datenstrom in den PC sollen (beschleunigungssensor, etc) haben bei mir eine eigene MCU die (zusätzlich zum i2c slave) eine direkte rs232(usb) anbindung ermöglicht.
als programmiersprache für die MCU würde ich C vorschlagen, im falle eines atmels mit der kostenlosen kombination aus win-avr und atmel avr studio.
dann wäre noch der pc 'zu programmieren'... ;) und dieses kapitel wird sehr leicht unterschätzt! und dabei meine ich nicht das eigentliche programmiern (implementieren) sondern den gesamten entwicklungsprozess. es gilt sehr viele designentscheidungen zu treffen auf die wiederum andere entscheidungen aufbauen (zb protokoll(stack)). wenn man also alles selbst macht sollte man von beginn an ausgereifte protokolle verwenden. multithreading ist auch unumgänglich, mitsamt dem damit verbundenen debug-'komfort'. eine gui sollte von beginn an als seperater prozess laufen und per TCP/IP angebunden sein.
auch wenn man ein robotik framework [1] verwendet ist der aufwand nicht unerheblich, denn zuerst gilt es vorhandene produkte zu evaluieren und sondieren, und dann muss man idR trotzdem noch zumindest das protokoll zwischen PC und MCU implementieren oder gar entwickeln, und die funktionalitäten als API exponieren.
und dann fängt der spass erst so richtig an: SLAM, CV, AI,...

viel spass by viel learning by viel doing,
lg


[1] microsoft robotics developer studio, player/stage/gazebo (pyro), webots, etc

PanicGamer
12.12.2008, 23:52
Hi!
Wenn du schon das Micro Servoboard hast kannst du auch einfach zwei fahrtenregler für deine Motoren benutzen. Die werden auch per PWM angesteuert. Ansonsten kann ich dirleider nicht so richtig weiterhelfen, das einzige was ich mal in Richtung PC <-> µC gemacht habe findest du zusammengefasst in meinem Artikel:
https://www.roboternetz.de/wissen/index.php/Windows_Programm_zum_Steuern_des_AVR%27s
Das benutzt allerdings eine sehr altmodische serielle Schnittstelle.....

Hallo Willa!
Wenn ich richtig versanden habe, kann man den AVR-Controller auch von PC aus steuern?! Denn sowas brauche ich für mein Projekt. Ist es möglich, dass ich von PC aus einen Befehl an den Controller sende, der dann die gespeicherte Prozedur ausführt? Was hälst du von RN-Mega2560 Modul? Der hat jede Menge zu bieten, und wird per USB an PC angeschlossen. Kann man den auch steuern? Sorry für die vielen Fragen, bin neu auf diesem Gebiet! 8-[
gruss
PanicGamer