Skip to content

Commit d61b4b5

Browse files
committed
events
1 parent 26373a2 commit d61b4b5

File tree

9 files changed

+47
-18
lines changed

9 files changed

+47
-18
lines changed

cnn_train.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -890,6 +890,7 @@ def add_input_distortions(self, flip_left_right, random_crop, random_scale,
890890
The jpeg input layer and the distorted result tensor.
891891
"""
892892

893+
tf.logging.info("distortion - crop: " + str(random_crop) + " scale: " + str(random_scale) + " flip: " + str(flip_left_right))
893894
jpeg_data = tf.placeholder(tf.string, name='DistortJPGInput')
894895
decoded_image = tf.image.decode_jpeg(jpeg_data, channels=input_depth)
895896
decoded_image_as_float = tf.cast(decoded_image, dtype=tf.float32)

coderbot.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"move_tr_speed": "85", "move_fw_elapse": "1", "camera_color_object_size_min": "4000", "camera_jpeg_bitrate": "2000000", "load_at_start": "", "move_tr_elapse": "0.5", "sound_stop": "$shutdown.mp3", "show_control_move_commands": "true", "prog_level": "adv", "prog_scrollbars": "true", "move_fw_speed": "100", "camera_color_object_size_max": "160000", "sound_shutter": "$shutter.mp3", "show_page_prefs": "true", "cv_image_factor": "2", "ctrl_hud_image": "", "button_func": "none", "ctrl_fw_elapse": "-1", "ctrl_tr_elapse": "-1", "move_power_angle_2": "60", "move_power_angle_3": "60", "camera_path_object_size_max": "160000", "move_motor_trim": "1", "camera_path_object_size_min": "4000", "cnn_default_model": "harry_3_50", "show_page_program": "true", "sound_start": "$startup.mp3", "camera_exposure_mode": "auto", "ctrl_tr_speed": "80", "ctrl_fw_speed": "100", "camera_jpeg_quality": "20", "prog_maxblocks": "-1", "camera_framerate": "30", "move_motor_mode": "dc", "move_power_angle_1": "45", "show_page_control": "true"}
1+
{"move_tr_speed": "85", "move_fw_elapse": "1", "camera_color_object_size_min": "4000", "camera_jpeg_bitrate": "2000000", "load_at_start": "", "move_tr_elapse":"0.5", "sound_stop": "$shutdown.mp3", "show_control_move_commands": "true", "prog_level": "adv", "prog_scrollbars": "true", "move_fw_speed": "100", "camera_color_object_size_max": "160000", "sound_shutter": "$shutter.mp3", "show_page_prefs": "true", "cv_image_factor": "2", "ctrl_hud_image": "", "button_func": "none", "ctrl_fw_elapse": "-1", "ctrl_tr_elapse": "-1", "move_power_angle_2": "60", "move_power_angle_3": "60", "camera_path_object_size_max": "160000", "move_motor_trim": "1", "camera_path_object_size_min": "4000", "cnn_default_model": "harry_3_50", "show_page_program": "true", "sound_start": "$startup.mp3", "camera_exposure_mode": "auto", "ctrl_tr_speed": "80", "ctrl_fw_speed": "100", "camera_jpeg_quality": "20", "prog_maxblocks": "-1", "camera_framerate": "30", "move_motor_mode": "dc", "move_power_angle_1": "45", "show_page_control": "true"}

data/program_obstacle_avoidance.data

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"dom_code": "<xml xmlns=\"http://www.w3.org/1999/xhtml\"><block type=\"controls_whileUntil\" x=\"38\" y=\"95\"><field name=\"MODE\">WHILE</field><value name=\"BOOL\"><block type=\"logic_boolean\"><field name=\"BOOL\">TRUE</field></block></value><statement name=\"DO\"><block type=\"controls_if\"><mutation else=\"1\"></mutation><value name=\"IF0\"><block type=\"logic_compare\"><field name=\"OP\">LT</field><value name=\"A\"><block type=\"coderbot_sonar_get_distance\"><field name=\"SONAR\"></field></block></value><value name=\"B\"><block type=\"math_number\"><field name=\"NUM\">10</field></block></value></block></value><statement name=\"DO0\"><block type=\"coderbot_adv_move\"><field name=\"ACTION\">RIGHT</field><value name=\"SPEED\"><block type=\"math_number\"><field name=\"NUM\">100</field></block></value><value name=\"ELAPSE\"><block type=\"math_number\"><field name=\"NUM\">0.5</field></block></value></block></statement><statement name=\"ELSE\"><block type=\"coderbot_adv_move\"><field name=\"ACTION\">FORWARD</field><value name=\"SPEED\"><block type=\"math_number\"><field name=\"NUM\">100</field></block></value><value name=\"ELAPSE\"><block type=\"math_number\"><field name=\"NUM\">-1</field></block></value></block></statement></block></statement><next><block type=\"coderbot_adv_stop\"></block></next></block></xml>", "code": "while True:\n get_prog_eng().check_end()\n if get_bot().get_sonar_distance() < 10:\n get_bot().right(speed=100, elapse=0.5)\n else:\n get_bot().forward(speed=100, elapse=-1)\nget_bot().stop()\n", "name": "obstacle_avoidance"}
1+
{"dom_code": "", "code": "while True:\n get_prog_eng().check_end()\n if get_bot().get_sonar_distance(0) < 15:\n get_bot().backward(speed=100, elapse=0.5)\n get_bot().right(speed=100, elapse=0.7)\n else:\n get_bot().forward(speed=100, elapse=0.5)\nget_bot().stop()\n", "name": "obstacle_avoidance"}

event.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,23 @@ def register_event_generator(self, generator_func):
3333
generator = threading.Thread(target=generator_func)
3434
self._event_generators.append(generator)
3535
generator.start()
36+
37+
def unregister_listeners(self):
38+
for subscriber in self._event_listeners:
39+
try:
40+
subscriber.unregister()
41+
except:
42+
logging.error("unable to unregister subscriber")
43+
self._event_listeners = []
44+
45+
def unregister_publishers(self):
46+
for publisher in self._publishers:
47+
try:
48+
publisher.unregister()
49+
except:
50+
logging.error("unable to unregister publisher")
51+
self._event_listeners = []
52+
3653

3754
def start_event_generators(self):
3855
for g in self._event_generators:

main.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,7 @@ def handle_program_status():
312312
prog = Program("")
313313
if app.prog:
314314
prog = app.prog
315-
return json.dumps({'name': prog.name, "running": prog.is_running(), "log": prog.get_log()})
315+
return json.dumps({'name': prog.name, "running": prog.is_running(), "log": app.prog_engine.get_log()})
316316

317317
@app.route("/cnnmodels", methods=["GET"])
318318
def handle_cnn_models_list():

photos/metadata.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

program.py

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
import json
2424
import logging
2525

26+
import math #keep it for blockly math functions!
27+
2628
import coderbot
2729
import camera
2830
import motion
@@ -63,6 +65,7 @@ class ProgramEngine:
6365
def __init__(self):
6466
self._program = None
6567
self._repository = {}
68+
self._log = ""
6669
for dirname, dirnames, filenames, in os.walk("./data"):
6770
for filename in filenames:
6871
if PROGRAM_PREFIX in filename:
@@ -105,6 +108,13 @@ def is_running(self, name):
105108
def check_end(self):
106109
return self._program.check_end()
107110

111+
def log(self, text):
112+
self._log += text + "\n"
113+
114+
def get_log(self):
115+
return self._log
116+
117+
108118
class Program:
109119
_running = False
110120

@@ -118,7 +128,6 @@ def __init__(self, name, code=None, dom_code=None):
118128
self.name = name
119129
self._dom_code = dom_code
120130
self._code = code
121-
self._log = ""
122131

123132
def execute(self):
124133
if self._running:
@@ -148,12 +157,6 @@ def check_end(self):
148157
raise RuntimeError('end requested')
149158
return None
150159

151-
def log(self, text):
152-
self._log += text + "\n"
153-
154-
def get_log(self):
155-
return self._log
156-
157160
def is_running(self):
158161
return self._running
159162

@@ -172,14 +175,19 @@ def run(self):
172175
imports = "import json\n"
173176
code = imports + self._code
174177
exec(code)
175-
get_event().wait_event_generators()
176178
except RuntimeError as re:
177179
logging.info("quit: " + str(re))
178180
self.log(str(re))
179181
except Exception as e:
180182
logging.info("quit: " + str(e))
181183
self.log(str(e))
182184
finally:
185+
try:
186+
get_event().wait_event_generators()
187+
get_event().unregister_listeners()
188+
get_event().unregister_publishers()
189+
except:
190+
logging.error("error polishing event system")
183191
try:
184192
get_cam().video_stop() #if video is running, stop it
185193
get_motion().stop()

static/js/program.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,7 @@ if($('#page-program')) {
1212
} else {
1313
editor = new ProgramEditorPython(editorDOMElement);
1414
}
15-
}
16-
17-
$("#b_new_prog").on("click", function() {editor.newProgramDlg()});
15+
$("#b_new_prog").on("click", function() {editor.newProgramDlg()});
1816
$("#b_load_prog").on("click", function() {editor.loadProgramDlg()});
1917
$("#b_save_prog").on("click", function() {editor.saveProgram()});
2018
$("#b_save_prog_as").on("click", function() {editor.saveProgramAsDlg()});
@@ -34,7 +32,9 @@ if($('#page-program')) {
3432
$('#popup-video').find('video').attr('src', src);
3533
$('#popup-video').popup("open");
3634
});
37-
});
35+
}
36+
37+
});
3838

3939
$(document).on( "pagecreate", '#page-program', function( event ) {
4040
});

wifi.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,8 +150,11 @@ def start_as_client(cls):
150150
out = os.system("wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf > /dev/null 2>&1")
151151
out += os.system("dhclient -1 wlan0")
152152
print out
153-
cls.register_ipaddr(cls.get_macaddr("wlan0"), cls.get_config().get('bot_name', 'CoderBot'), cls.get_ipaddr("wlan0"), "roberto.previtera@gmail.com")
154-
print "registered bot, ip: " + str(cls.get_ipaddr("wlan0") + " name: " + cls.get_config().get('bot_name', 'CoderBot'))
153+
try:
154+
cls.register_ipaddr(cls.get_macaddr("wlan0"), cls.get_config().get('bot_name', 'CoderBot'), cls.get_ipaddr("wlan0"), "roberto.previtera@gmail.com")
155+
print "registered bot, ip: " + str(cls.get_ipaddr("wlan0") + " name: " + cls.get_config().get('bot_name', 'CoderBot'))
156+
except:
157+
pass
155158
except subprocess.CalledProcessError as e:
156159
print e.output
157160
raise

0 commit comments

Comments
 (0)