Häufig gestellte Fragen zum ROS-Container - AWS RoboMaker

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Häufig gestellte Fragen zum ROS-Container

Auf dieser Seite finden Sie häufig gestellte Fragen und Antworten zur Migration von ROS-basierten Roboter- und Simulationsanwendungen zu Docker-Containern, die für die Ausführung in geeignet sindAWS RoboMaker.

Unser Workflow übermittelt Simulationsaufträge mitcolcon-Bündelte Roboter- und Simulationsanwendungen. Muss ich migrieren?

Ja, Sie müssen migrieren. Die Schritte zur Migration finden Sie unterMigration von ROS-Anwendungen zu Containern.

Ich bin mir nicht sicher, ob meine Roboter- und Simulationsanwendungen migriert werden müssen. Woran erkenne ich das?

Sie können dies überprüfen überAWSKonsole oder dieAWS CLI. Anweisungen finden Sie auf der folgenden entsprechenden Registerkarte.

Using the console
  1. Melden Sie sich an der AWS RoboMaker-Konsole an.

  2. Wählen Sie im linken Navigationsbereich Development (Entwicklung) und anschließend Simulation applications (Simulationsanwendungen) aus.

  3. Wählen Sie dieNameeiner Simulationsanwendung, um deren Details zu sehen.

    Wenn du siehstAllgemeinesundLaufzeit der Simulation, eine Migration ist nicht erforderlich. Wenn Sie ROS- oder Gazebo-spezifische Werte sehen, müssen Sie migrieren.

Using the AWS CLI

Das Folgende ist ein BeispielAWS CLIBefehl, der das Äquivalent der konsolenbasierten Schritte ausführt.

aws robomaker describe-simulation-application --application YOUR-SIM-APP-ARN

Dieser Befehl gibt eine Ausgabe zurück, die angibt,simulationSoftwareSuite, derrobotSoftwareSuite(falls zutreffend) undenvironmentURI. Wenn du siehstLaufzeit der Simulationwie dersimulationSoftwareSuiteundAllgemeineswie derrobotSoftwareSuite, und deinenvironmentURI ist gesetzt, Ihre Simulationsanwendungen müssen nicht migriert werden.

Wie kommunizieren der Roboter und die Container der Simulationsanwendung miteinander?

Es unterscheidet sich nicht von der Art und Weise, wie ROS-basierte Anwendungen normalerweise mithilfe von ROS-Middleware miteinander kommunizieren. Sie müssen jedoch einige ROS-spezifische Umgebungsvariablen in den Startkonfigurationsobjekten Ihrer Simulationsauftragsanfrage festlegen.

Im Folgenden finden Sie einen Beispielausschnitt der Einstellungen, die Sie für die Roboteranwendung verwenden müssenlaunchConfig.

"robotApplications": [ { "application": "YOUR-ROBOT-APP-ARN", "applicationVersion": "$LATEST", "launchConfig": { "environmentVariables": { "ROS_IP": "ROBOMAKER_ROBOT_APP_IP", "ROS_MASTER_URI": "http://ROBOMAKER_ROBOT_APP_IP:11311", "GAZEBO_MASTER_URI": "http://ROBOMAKER_SIM_APP_IP:11345" }, ... # Removed extra data for clarity } ]

Im Folgenden finden Sie einen Beispielausschnitt der Einstellungen, die Sie für die Simulationsanwendung verwenden müssen.launchConfig.

"simulationApplications": [ { "application": "YOUR-SIM-APP-ARN", "applicationVersion": "$LATEST", "launchConfig": { "environmentVariables": { "ROS_IP": "ROBOMAKER_SIM_APP_IP", "ROS_MASTER_URI": "http://ROBOMAKER_ROBOT_APP_IP:11311", "GAZEBO_MASTER_URI": "http://ROBOMAKER_SIM_APP_IP:11345" }, ... # Removed extra data for clarity } ]

Die Container kommunizieren erwartungsgemäß miteinander, wenn Sie die bereitgestelltenROBOMAKER_*einzustellende Zeichenketten und PortnummernROS_IP,ROS_MASTER_URI, undGAZEBO_MASTER_URI.

Weitere Informationen finden Sie unter Simulationsanwendungen.

Wo ist meine Real-Time Factor (RTF) -Metrik geblieben? Wie kann ich es wiederherstellen?

AWS RoboMakerveröffentlicht diese Metrik nicht mehr automatisch. Wenn Sie diese Metrik veröffentlichen möchten inCloudWatch, Sie müssen das importierenAWS RoboMaker CloudWatchHerausgeberpacken Sie es in Ihre Simulationsanwendung ein und ändern Sie Ihre Simulationsstartdatei mithilfe der Anweisungen in derREADME.mdDatei.

Wie storniere und tagge ich meine Simulationsjobs?

Sie können die VPC-Konfiguration verwenden, um IhreAWS RoboMakerSimulationsjobs mit dem GenerikumAWSAPIs. Um den folgenden Ansatz zu verwenden, muss der Container in einer VPC mit einer öffentlichen Route über eine ausgeführt werdenNAToderIGWzumAWSAPIs. Der einfachste Ansatz ist die Verwendung eines öffentlichen Subnetzes in IhremStandard-VPCum eine Verbindung zu AWS-APIs herzustellen. Wenn Sie Simulationen in einem privaten Subnetz ausführen möchten, können Sie alternativ ein NAT oder einen Schnittstellen-VPC-Endpunkt einrichten. Weitere Informationen finden Sie unter AWS RoboMaker und Schnittstellen-VPC-Endpunkte (AWS PrivateLink).

Anmerkung

Wenn Sie das IGW verwenden, stellen Sie sicher, dassassignPublicIp=Truewie in der folgenden Dokumentation beschrieben. Wenn Sie eine öffentliche IP verwenden, stellen Sie sicher, dass Ihre Sicherheitsgruppen ausreichend gesperrt sind.

Sie müssen den folgenden Block zu den Anforderungsparametern hinzufügen.

vpcConfig={ 'subnets': [ 'string', ], 'securityGroups': [ 'string', ], 'assignPublicIp': True|False },

Darüber hinaus ist derAWS RoboMakerDer Simulationsauftrag muss über eine IAM-Rolle mit Berechtigungen zum Taggen und Stornieren von Simulationsaufträgen verfügen.

In Ihrem Simulationsjob können Sie entwederAWS CLIoder derboto3Python-Bibliothek zum öffentlichen AufrufAWS RoboMakerAPIs. Du musst die habenAWS CLIundboto3Bibliothek in Ihrem Container vorinstalliert, bevor Sie sie in einem verwenden könnenAWS RoboMakerSimulationsjob. Der folgende Python-Beispielcode zeigt, wie ein Simulationsauftrag abgebrochen wird.

class RoboMakerUtils: def __init__(self): self.job_arn = os.getenv('AWS_ROBOMAKER_SIMULATION_JOB_ARN') self.client = boto3.client('robomaker', region_name=os.getenv('AWS_ROBOMAKER_REGION', 'us-east-1')) def tag_robomaker_sim_job(self, key, value): self.client.tag_resource( resourceArn=self.job_arn, tags={ key: str(value) } ) def cancel_robomaker_sim_job(self): self.tag_robomaker_sim_job("END_TIME", time.time()) response = self.client.cancel_simulation_job( job=self.job_arn )

Wie importiere ich SimulationWorldForgeWelten in den Simulationsjob?

Wenn Sie Simulation importieren müssenWorldForgeAssets in Ihren Simulationsjob, verwenden Sie dieDataSourceAPI. Auf diese Weise können Sie World-Assets aus dem Amazon S3-Ausgabeverzeichnis des Weltexportauftrags in ein Ziel Ihrer Wahl innerhalb Ihres Simulationsauftragscontainers importieren.

Weitere Informationen finden Sie unter Verwendung exportierter Welten in der Simulation.

Die Logdateien meiner Anwendung werden nicht erstellt. Was ist los?

Stellen Sie sicher, dass Sie alle Ausgabeverzeichnisse erstellt haben, auf die Sie sich zum Debuggen verwandter Artefakte in Ihrem Dockerfile verlassen. Sie können beispielsweise die folgende Zeile zu Ihrem Dockerfile hinzufügen.

RUN mkdir -p $YOUR_LOG_DIR

Weitere Informationen finden Sie unter Hinzufügen einer benutzerdefinierten Upload-Konfiguration.

Meine Simulationsanwendung ist mit „run_id auf dem Parameterserver entspricht nicht der deklarierten run_id“ fehlgeschlagen. Was soll ich tun?

Wenn Sie Ihren ROS-Simulationsjob sowohl mit der Roboteranwendung als auch mit der Simulationsanwendung starten, sollten Sie Folgendes hinzufügen--waitzu den Roslaunch-Befehlen.