Awesome
Transport Challenge
In the Transport Challenge API, the Magnebot must transport target objects (small objects scattered throughout the scene) with the aid of containers (box-shaped objects without lids that can hold target objects) to the goal zone (a circle defined by a position and a radius in the center of a room and the scene).
If all of the target objects are in the goal zone, the task is successful.
Read the API documentation here.
The Transport Challenge API is an extension of the Magnebot API which in turn is built on the TDW simulation platform.
<img src="doc/images/api_hierarchy.png" style="zoom:50%;" />Installation
Check if you've already installed magnebot
or tdw
on your computer: if pip3 show magnebot
or pip3 show tdw
prints any text, then the module is installed.
If magnebot
or tdw
is not already installed on this computer:
- Download TDW build v1.8.7
git clone https://github.com/alters-mit/transport_challenge.git
cd transport_challenge
pip3 install -e .
This will install all underlying modules, includingmagnebot
andtdw
- Make sure that the underlying TDW system is working correctly. See: Getting Started With TDW Ignore warnings about upgrading TDW!
If magnebot
or tdw
is already installed on this computer:
pip3 uninstall magnebot
pip3 uninstall tdw
pip3 unintall ikpy
- Download TDW build v1.8.7
git clone https://github.com/alters-mit/transport_challenge.git
cd transport_challenge
pip3 install -e .
This will install all underlying modules, includingmagnebot
andtdw
- Make sure that the underlying TDW system is working correctly. See: Getting Started With TDW Ignore warnings about upgrading TDW!
Usage
- Run this controller:
python3 controller.py
If you're running on an IBM server, you'll need to set a custom S3 bucket for the scenes, models, and materials:TRANSPORT_CHALLENGE=https://bucket_url python3 controller
. If this is a local path, set the variable to the absolute path, i.e.TRANSPORT_CHALLENGE=file:///home/<user>/model_library python3 controller
from transport_challenge import Transport
m = Transport()
# Initializes the scene.
status = m.init_scene(scene="2a", layout=1)
print(status) # ActionStatus.success
# Prints a list of all container IDs.
print(m.containers)
# Prints a list of all target object IDs.
print(m.target_objects)
m.end()
Documentation
Example controllers
- This controller is an example use-case. It uses very naive logic to navigate (it assumes that everything is in the same room and that there aren't obstructions between objects) but it should be a good example of how to use this API.
- This controller is a promo controller. It is visually indicative of an actual use-case and includes an overhead camera so that it's easy to see what's going on. However, this controller includes a lot of code that you shouldn't add to your controller because it's unnecessary, inflexible, and slow.
- These controllers are test controllers. They are meant only for testing the API.