#!/bin/bash #### CUSTOMIZE HERE ##### S3_BUCKET="" ROLE_ARN="" SUBNET='' # example '["subnet-1303f974", "subnet-939d74da", "subnet-d7063791"]' SECURITY_GROUP='' # example '["sg-012ffd67"]' S3_BUNDLE_BASEPATH="" PATH_TO_SIM_APP_WORKSPACE="simulation_ws" PATH_TO_ROBOT_APP_WORKSPACE="robot_ws" SIMULATION_APPNAME="" SIM_APP_PACKAGE="meiro_runner_simulation" SIM_APP_LAUNCH_FILE="create_maze_world.launch" SIM_APP_ENV="{}" # example "{\"TURTLEBOT3_MODEL\": \"waffle_pi\"}" ROBOT_APPNAME="" ROBOT_APP_PACKAGE="meiro_runner_robot" ROBOT_APP_LAUNCH_FILE="local_training.launch" ROBOT_APP_ENV="{\"MARKOV_PRESET_FILE\": \"meiro_runner.py\", \"MODEL_S3_BUCKET\": \"\", \"MODEL_S3_PREFIX\": \"model-store\", \"ROS_AWS_REGION\": \"\"}" # example "{\"TURTLEBOT3_MODEL\": \"waffle_pi\"}" GAZEBO_VERSION=9 #9 For Melodic, 7 for Kinetic ROS_VERSION=Melodic # Melodic or Kinetic #### CUSTOMIZE HERE END ##### S3KEY_SIM_APP=$S3_BUNDLE_BASEPATH/$PATH_TO_SIM_APP_WORKSPACE/bundle/output.tar S3KEY_ROBOT_APP=$S3_BUNDLE_BASEPATH/$PATH_TO_ROBOT_APP_WORKSPACE/bundle/output.tar # Copy bundle to Amazon S3 aws s3 cp $PATH_TO_SIM_APP_WORKSPACE/bundle/output.tar s3://$S3_BUCKET/$S3KEY_SIM_APP aws s3 cp $PATH_TO_ROBOT_APP_WORKSPACE/bundle/output.tar s3://$S3_BUCKET/$S3KEY_ROBOT_APP # Reister simulation application aws robomaker create-simulation-application \ --name $SIMULATION_APPNAME \ --sources "s3Bucket=$S3_BUCKET,s3Key=$S3KEY_SIM_APP,architecture=X86_64" \ --simulation-software-suite "name=Gazebo,version=$GAZEBO_VERSION" \ --robot-software-suite "name=ROS,version=$ROS_VERSION" \ --rendering-engine "name=OGRE,version=1.x"  # Register robot application aws robomaker create-robot-application \ --name $ROBOT_APPNAME \ --sources "s3Bucket=$S3_BUCKET,s3Key=$S3KEY_ROBOT_APP,architecture=X86_64" \ --robot-software-suite "name=ROS,version=$ROS_VERSION"  # Query simulation app sim_app=`aws robomaker list-simulation-applications | grep -o "arn:aws:robomaker:.*:simulation-application/${SIMULATION_APPNAME}.[^,\"]*"` # Query robot app robo_app=`aws robomaker list-robot-applications | grep -o "arn:aws:robomaker:.*:robot-application/${ROBOT_APPNAME}.[^,\"]*"` # Update aws robomaker update-simulation-application \ --application $sim_app \ --sources "s3Bucket=$S3_BUCKET,s3Key=$S3KEY_SIM_APP,architecture=X86_64" \ --simulation-software-suite "name=Gazebo,version=$GAZEBO_VERSION" \ --robot-software-suite "name=ROS,version=$ROS_VERSION" \ --rendering-engine "name=OGRE,version=1.x"  aws robomaker update-robot-application \ --application $robo_app \ --sources "s3Bucket=$S3_BUCKET,s3Key=$S3KEY_ROBOT_APP,architecture=X86_64" \ --robot-software-suite "name=ROS,version=$ROS_VERSION"  # Launch template=' { "iamRole":"%s", "maxJobDurationInSeconds":5400, "failureBehavior":"Fail", "simulationApplications":[{"application":"%s","applicationVersion":"$LATEST", "launchConfig":{ "packageName":"%s","launchFile":"%s", "environmentVariables": %s }}], "robotApplications":[{"application":"%s","applicationVersion":"$LATEST", "launchConfig":{ "packageName":"%s","launchFile":"%s", "environmentVariables": %s }}], "vpcConfig":{"subnets":%s,"securityGroups":%s,"assignPublicIp":true}}' json_params=$(printf "$template" "$ROLE_ARN" "$sim_app" "$SIM_APP_PACKAGE" "$SIM_APP_LAUNCH_FILE" "$SIM_APP_ENV" "$robo_app" "$ROBOT_APP_PACKAGE" "$ROBOT_APP_LAUNCH_FILE" "$ROBOT_APP_ENV" "$SUBNET" "$SECURITY_GROUP") aws robomaker create-simulation-job --cli-input-json "$json_params"