Isaac Mission Control Tutorial#
Overview#
This tutorial simulates a virtual Nova Carter running Mission Client in Isaac Sim and assigns it a mission using Isaac Mission Control.
Prerequisites#
Clone the Mission Control repository and navigate into it:
git clone https://github.com/nvidia-isaac/isaac_mission_control.git
cd isaac_mission_control
All subsequent steps in this tutorial should be run from the root of this cloned repository unless otherwise noted.
Tutorial Walkthrough#
Follow the Isaac ROS Mission Client Tutorial through starting the MQTT broker. Verify that you have the warehouse scene open in Isaac Sim along with Mission Client built and that the scene looks like the image below.
From the root of the Mission Control repository, bring up Mission Control and its dependencies using Docker Compose:
cd docs/tutorial/docker-compose docker compose -f bringup_services_tutorial.yaml up
Follow the launch Mission Client step of the Isaac ROS Mission Client Tutorial to start the Mission Client. For reference, the command below is run inside the Isaac Docker container:
ros2 launch isaac_ros_vda5050_client_bringup isaac_ros_vda5050_client_nav2.launch.py init_pose_x:=-2.0 init_pose_yaw:=3.14159
Construct a navigation mission using the Waypoint Selection Tool:
Run the following command from the root of the Mission Control repository:
docker compose -f waypoint_selection_ui/bringup_wp_selection_ui.yaml up --build
Access the Waypoint Selection Tool web interface at
http://localhost:8051.Go to Use Existing Files and select
carter_warehouse_navigation.pngandcarter_warehouse_navigation.yaml. Click Load Selected Files to load the map. Verify that the map origin appears near the middle of the map as shown below:
Click on the map to define waypoints for the mission. Avoid placing waypoints on obstacles (dark areas on the map) or too close to an obstacle. For example:
Press Generate Waypoints to get the list of waypoints as x, y coordinates. Verify that the output looks similar to the following:
[ { "x": -2.9223684210526315, "y": 4.0245616712068255 }, { "x": 7.07763157894737, "y": 3.8666669343647193 }, { "x": 7.1828947368421066, "y": -5.922806749845808 }, { "x": -3.2907894736842085, "y": -5.922806749845808 } ]
(Optional) Click Visualize Route to preview the route generated by the Mission Control route planner.
Submit the mission through the Mission Control web interface:
Open
http://localhost:8050/api/v1/docsin a web browser.Expand the
POST /mission/submit_missionendpoint and click Try it out.In the request body, create a JSON object with the key
routeset to the list of waypoints generated in the previous step. Press Execute to submit the mission.Optional mission parameters
Add the key
iterationsto specify how many times the mission should execute (default is 1). For example, to execute the route twice:{ "route": [ { "x": -2.9223684210526315, "y": 4.0245616712068255 }, { "x": 7.07763157894737, "y": 3.8666669343647193 }, { "x": 7.1828947368421066, "y": -5.922806749845808 }, { "x": -3.2907894736842085, "y": -5.922806749845808 } ], "iterations": 2 }
If you want the robot to end at a specific pose, use the
end_locationparameter withexactset totrue. Setthetato the desired orientation in radians:{ "route": [ { "x": -2.9223684210526315, "y": 4.0245616712068255 }, { "x": 7.07763157894737, "y": 3.8666669343647193 }, { "x": 7.1828947368421066, "y": -5.922806749845808 }, { "x": -3.2907894736842085, "y": -5.922806749845808 } ], "end_location": { "x": -2.5081181774400676, "y": -8.503454413823114, "theta": 1.57, "exact": true } }
After the response is received, verify that the Nova Carter navigates to the waypoints and completes the mission.