Ende des Supporthinweises: Am 10. September 2025 AWS
wird der Support für AWS RoboMaker eingestellt. Nach dem 10. September 2025 können Sie nicht mehr auf die AWS RoboMaker Konsole oder die AWS RoboMaker Ressourcen zugreifen. Weitere Informationen AWS Batch zur Umstellung auf containerisierte Simulationen finden Sie in diesem Blogbeitrag.
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.
ROS-Behälter FAQs
Auf dieser Seite finden Sie häufig gestellte Fragen und Antworten zur Migration von ROS-basierten Roboter- und Simulationsanwendungen zu Docker-Containern, in denen sie ausgeführt werden können. AWS RoboMaker
In unserem Workflow werden Simulationsaufträge mithilfe colcon
gebündelter Roboter- und Simulationsanwendungen eingereicht. Muss ich migrieren?
Ja, Sie müssen migrieren. Die Schritte zur Migration befinden sich 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 über die AWS Konsole oder die überprüfen AWS CLI. Anweisungen finden Sie auf der folgenden entsprechenden Registerkarte.
-
Melden Sie sich an der AWS RoboMaker -Konsole
an. -
Wählen Sie im linken Navigationsbereich Development (Entwicklung) und anschließend Simulation applications (Simulationsanwendungen) aus.
-
Wählen Sie den Namen einer Simulationsanwendung aus, um deren Details zu sehen.
Wenn Sie „Allgemein“ und „Simulationslaufzeit“ sehen, ist keine Migration erforderlich. Wenn Sie ROS- oder Gazebo-spezifische Werte sehen, müssen Sie migrieren.
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 Simulationsjobanforderung festlegen.
Im Folgenden finden Sie ein Beispiel für die Einstellungen, die Sie für die Roboteranwendung verwenden müssen. launchConfig
"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 bereitgestellten ROBOMAKER_*
Zeichenfolgen und Portnummern verwenden, um ROS_IP
ROS_MASTER_URI
, und festzulegen. GAZEBO_MASTER_URI
Weitere Informationen finden Sie unter Eine Simulation ausführen.
Wo ist meine RTF-Metrik (Real-Time Factor) geblieben? Wie kann ich sie wiederherstellen?
AWS RoboMaker veröffentlicht diese Metrik nicht mehr automatisch. Wenn Sie diese Metrik veröffentlichen möchten CloudWatch, müssen Sie das AWS RoboMaker CloudWatch Publisher-PaketREADME.md
Wie storniere und markiere ich meine Simulationsjobs?
Sie können die VPC-Konfiguration verwenden, um Ihre AWS RoboMaker Simulationsjobs mithilfe der generischen Version selbst zu taggen oder abzubrechen. AWS APIs Um den folgenden Ansatz zu verwenden, muss der Container in einer VPC mit einer öffentlichen Route über ein NAT oder IGW zum laufen. AWS APIs Der einfachste Ansatz besteht darin, ein öffentliches Subnetz in Ihrer Standard-VPC zu verwenden, um eine Verbindung zu AWS herzustellen. APIs Wenn Sie Simulationen in einem privaten Subnetz ausführen möchten, können Sie alternativ ein NAT oder einen VPC-Schnittstellen-Endpunkt einrichten. Weitere Informationen finden Sie unter AWS RoboMaker und Schnittstellen-VPC-Endpunkte ()AWS PrivateLink.
Anmerkung
Wenn Sie das IGW verwenden, stellen Sie sicher, dass Sie die Einstellungen assignPublicIp=True
wie in der folgenden Dokumentation beschrieben vornehmen. Wenn Sie eine öffentliche IP verwenden, stellen Sie sicher, dass Ihre Sicherheitsgruppen ausreichend gesperrt sind.
Sie müssen den Anforderungsparametern den folgenden Block hinzufügen.
vpcConfig={
'subnets': [
'string',
],
'securityGroups': [
'string',
],
'assignPublicIp': True|False
},
Darüber hinaus muss der AWS RoboMaker Simulationsjob über eine IAM-Rolle mit Berechtigungen zum Markieren und Stornieren von Simulationsaufträgen verfügen.
In Ihrem Simulationsjob können Sie entweder die AWS CLI oder die boto3
Python-Bibliothek verwenden, um public aufzurufen AWS RoboMaker APIs. Sie müssen die AWS CLI boto3
and-Bibliothek in Ihrem Container vorinstalliert haben, bevor Sie sie in einem AWS RoboMaker Simulationsjob verwenden können. Der folgende Python-Beispielcode zeigt, wie ein Simulationsjob 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 WorldForge Simulationswelten in den Simulationsjob?
Wenn Sie WorldForge Simulations-Assets in Ihren Simulationsjob importieren müssen, verwenden Sie die DataSource
API. Auf diese Weise können Sie Welt-Assets aus dem Amazon S3 S3-Ausgabeverzeichnis des Weltexportauftrags in ein Ziel Ihrer Wahl innerhalb Ihres Simulationsjob-Containers importieren.
Weitere Informationen finden Sie unter Verwendung exportierter Welten in der Simulation.
Die Protokolldateien meiner Anwendung werden nicht erstellt. Was ist los?
Stellen Sie sicher, dass Sie alle Ausgabeverzeichnisse erstellt haben, auf die Sie sich für das Debuggen verwandter Artefakte in Ihrem Dockerfile verlassen. Sie können Ihrem Dockerfile beispielsweise die folgende Zeile hinzufügen.
RUN mkdir -p $YOUR_LOG_DIR
Weitere Informationen finden Sie unter Hinzufügen einer benutzerdefinierten Upload-Konfiguration.
Meine Simulationsanwendung ist mit der Meldung „run_id auf dem Parameterserver entspricht nicht der deklarierten run_id“ fehlgeschlagen. Was soll ich tun?
Wenn Sie Ihren ROS-Simulationsjob sowohl mit einer Roboteranwendung als auch mit einer Simulationsanwendung starten, sollten Sie die Roslaunch-Befehle ergänzen. --wait