Skip to content

Instantly share code, notes, and snippets.

@robclewley
Created July 16, 2018 16:54
Show Gist options
  • Save robclewley/135e81a02bf8f4fc475d1d60d21756c8 to your computer and use it in GitHub Desktop.
Save robclewley/135e81a02bf8f4fc475d1d60d21756c8 to your computer and use it in GitHub Desktop.
Early idea for a Jupyter client for Euclid Echo Homer online game
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import os, sys\n",
"import json\n",
"import urllib"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"server_url = 'https://euclid-echo-homer-1.herokuapp.com'"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"def call(path, id_code='', is_post=False, is_cli=True, **kwargs):\n",
" \"\"\"\n",
" Inputs\n",
" ------\n",
" path: API endpoint (as per game help) without leading slash [string] e.g. 'move/50.1/1.6'\n",
" id_code: unique drone_id needed for all drone-specific commands [string]\n",
" is_post: [bool, default False] only needed when posting form parameters for drone ID setup\n",
" is_cli: [bool, default True] tells the server to return JSON confirmations in cases that\n",
" it would otherwise render HTML\n",
" **kwargs: other keyword arguments to pass either as regular parameters (is_post=False) or\n",
" as form parameters (is_post=True)\n",
" \"\"\"\n",
" params = []\n",
" if is_cli:\n",
" params.append(('cli', 'true'))\n",
" if id_code != '':\n",
" params.append(('id', id_code))\n",
" path = urllib.parse.quote(path)\n",
" cmd = f'curl \"{server_url}/{path}'\n",
" if is_post:\n",
" # add trailing double quote prior to form params\n",
" cmd += '?' + urllib.parse.urlencode(params) + '\"'\n",
" for k, v in kwargs.items():\n",
" cmd += f\" --form {k}={v}\"\n",
" else:\n",
" params.extend(list(kwargs.items()))\n",
" cmd += '?' + urllib.parse.urlencode(params) + '\"'\n",
" #print(cmd)\n",
" res = os.popen(cmd).read()\n",
" try:\n",
" return json.loads(res)\n",
" except:\n",
" return res\n",
" \n",
"def make_player(name):\n",
" info = call('make_session', is_post=True, name=name)\n",
" try:\n",
" assert info['success']\n",
" return info['drone_id']\n",
" except:\n",
" print(info)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import math\n",
"from matplotlib import pyplot as plt\n",
"from time import time\n",
"\n",
"def radar_scan(drone_id, bearing):\n",
" return call(\"radar/{}\".format(bearing), id_code=drone_id)\n",
"\n",
"def full_scan(drone_id):\n",
" data_dict = {}\n",
" for angle in np.linspace(0, 360, int(360/30)+1)[:-1]:\n",
" t0 = time()\n",
" data_dict.update(radar_scan(drone_id, angle)['data']) \n",
" print(time()-t0)\n",
" radar_pts = []\n",
" for angle, res in data_dict.items():\n",
" radar_pts.extend([(d*np.cos((90-float(angle))*math.pi/180), d*np.sin((90-float(angle))*math.pi/180), signal) \\\n",
" for d, signal in res])\n",
" return radar_pts, data_dict"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 1228,
"metadata": {},
"outputs": [],
"source": [
"drone_id1 = make_player(\"Fry\")"
]
},
{
"cell_type": "code",
"execution_count": 1188,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'API info': 'These API endpoints require you to add your drone_id as a parameter. All return values are JSON and the server is JSONP compatible. You are encouraged to try the starter Jupyter notebook client at https://github.com/robclewley/euclid_echo_homer-clients',\n",
" 'Command endpoint list': ['help',\n",
" 'help/<command_name>',\n",
" 'status',\n",
" 'move/<bearing>/<distance>',\n",
" 'speak/<volume>/<message>',\n",
" 'memory/<kind>',\n",
" 'see',\n",
" 'radar/<bearing>',\n",
" 'refuel/<item_id>',\n",
" 'extract'],\n",
" 'Game info': \"Navigate your drone avatar through the dust-blown desert arena and find the exit at the centroid of the four beacons. Collaborate or compete with other online players! Use the 'help/<command_name' endpoint for more details about each command.\"}"
]
},
"execution_count": 1188,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"call('help', id=drone_id1)"
]
},
{
"cell_type": "code",
"execution_count": 1189,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"\"'radar/<bearing>' returns a 30 degree spread of detected objects centered at given bearing from North. Angular accuracy is limited to the nearest degree and distance accuracy decreases for distant objects. Returns a mapping of angle to a list of (distance, reflection strength).\""
]
},
"execution_count": 1189,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"call('help/radar', id=drone_id1)"
]
},
{
"cell_type": "code",
"execution_count": 1230,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'status': {'achievements': [],\n",
" 'devices': {'1': 'Empty', '2': 'Empty', '3': 'Empty'},\n",
" 'fuel': 99.9976404920102,\n",
" 'mass': 19.999864049201022,\n",
" 'time_elapsed': '0:00:05.527269'},\n",
" 'success': True}"
]
},
"execution_count": 1230,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"call('status', id_code=drone_id1)"
]
},
{
"cell_type": "code",
"execution_count": 1192,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'status': {'achievements': [],\n",
" 'devices': {'1': 'Empty', '2': 'Empty', '3': 'Empty'},\n",
" 'fuel': 99.98036166663165,\n",
" 'mass': 19.998136166663166,\n",
" 'time_elapsed': '0:00:07.604664'},\n",
" 'success': True}"
]
},
"execution_count": 1192,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"call('see', id_code=drone_id1)"
]
},
{
"cell_type": "code",
"execution_count": 1193,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'success': True,\n",
" 'visuals': [{'bearing': 71.73890294008353,\n",
" 'description': 'marker (K3R5QJ,386)',\n",
" 'distance': 9.194677746860497}]}"
]
},
"execution_count": 1193,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"call('move/180/2', id_code=drone_id1)"
]
},
{
"cell_type": "code",
"execution_count": 1194,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'status': {'achievements': [],\n",
" 'devices': {'1': 'Empty', '2': 'Empty', '3': 'Empty'},\n",
" 'fuel': 99.99798186950696,\n",
" 'mass': 19.999898186950695,\n",
" 'time_elapsed': '0:00:08.833532'},\n",
" 'success': True}"
]
},
"execution_count": 1194,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"call(\"speak/9/yo how are you today? i want to talk about solving this centroid problem!\", id_code=drone_id1)"
]
},
{
"cell_type": "code",
"execution_count": 1195,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'success': True, 'visuals': []}"
]
},
"execution_count": 1195,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"call(\"memory/speech\", id_code=drone_id1)"
]
},
{
"cell_type": "code",
"execution_count": 1198,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'success': True}"
]
},
"execution_count": 1198,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"radar_scan(drone_id1, 0)"
]
},
{
"cell_type": "code",
"execution_count": 1172,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1.7212836742401123\n",
"0.5812869071960449\n",
"0.6197431087493896\n",
"0.8358380794525146\n",
"0.8138937950134277\n",
"0.8811278343200684\n",
"0.8776819705963135\n",
"0.9337208271026611\n",
"0.39225316047668457\n",
"0.40308403968811035\n",
"0.38773107528686523\n",
"0.3654007911682129\n"
]
}
],
"source": [
"radar_pts, data_dict = full_scan(drone_id1)\n",
"radar_xs, radar_ys, signals = list(zip(*radar_pts))"
]
},
{
"cell_type": "code",
"execution_count": 1173,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 720x720 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig1, ax1 = plt.subplots(figsize=(10,10))\n",
"ax1.scatter(radar_xs, radar_ys, s=10*np.sqrt(np.array(signals)))\n",
"#ax1.set_xlim(-250,250)\n",
"#ax1.set_ylim(-250,250)\n",
"ax1.set_aspect('equal')"
]
},
{
"cell_type": "code",
"execution_count": 1157,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0.05109314, 0.06027187, 0.03181146, 0.04253804, 0.04650597,\n",
" 0.0316781 , 0.08337743, 0.12456385, 0.25744821, 0.04786697,\n",
" 0.09487978, 0.02493699, 0.04702345, 0.02728154, 0.04908906,\n",
" 0.02610086, 0.05936047, 0.63756924, 0.04611764, 0.26022521,\n",
" 0.02165623, 0.08978179, 0.02467808, 0.04260133, 0.08331991,\n",
" 0.65269911, 0.02701757, 0.0226761 , 0.05397771, 0.14875462,\n",
" 0.02943259, 0.10713654, 0.69958544, 0.1051112 , 0.1708353 ,\n",
" 0.05444822, 0.02524735, 0.02025031, 0.05578134, 0.03210349,\n",
" 0.0956795 , 0.02847276, 0.31296748, 0.12945858, 0.05824884,\n",
" 0.02464426, 0.0213104 , 0.02268091, 2.06971691, 15.19869694,\n",
" 0.43618811, 0.08574218, 0.02037307, 0.03185688, 0.04036981,\n",
" 0.12034084, 0.05912833, 0.0314447 , 0.03635532, 0.02545937,\n",
" 0.08278603, 0.02683517, 0.05503525, 0.05483776, 0.14788075,\n",
" 0.03460955, 0.02793366, 0.02101113])"
]
},
"execution_count": 1157,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.array(signals)"
]
},
{
"cell_type": "code",
"execution_count": 972,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'extract': 'Failed because drone not at centroid exit marker',\n",
" 'success': False}"
]
},
"execution_count": 972,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"call('extract', id_code=drone_id1)"
]
},
{
"cell_type": "code",
"execution_count": 1158,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'data': 'no such item closer than 1m', 'success': False}"
]
},
"execution_count": 1158,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"call('refuel/E379J8', id_code=drone_id1)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment