Skip to content

Commit a1bb26e

Browse files
committed
fix locale, add encoder
1 parent dbc0658 commit a1bb26e

File tree

8 files changed

+56
-26
lines changed

8 files changed

+56
-26
lines changed

coderbot.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"move_tr_speed": "80", "move_fw_elapse": "1", "camera_path_object_size_min": "4000", "load_at_start": "", "move_tr_elapse": "0.5", "sound_stop": "$shutdown.mp3", "camera_color_object_size_min": "4000", "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": "20", "move_power_angle_3": "20", "move_power_angle_1": "15", "move_motor_trim": "0.9", "show_page_program": "true", "sound_start": "$startup.mp3", "camera_exposure_mode": "auto", "ctrl_tr_speed": "80", "ctrl_fw_speed": "100", "camera_refresh_timeout": "0.1", "camera_jpeg_quality": "20", "prog_maxblocks": "-1", "move_motor_mode": "dc", "camera_path_object_size_max": "160000", "show_page_control": "true"}
1+
{"move_tr_speed": "80", "move_fw_elapse": "1", "camera_color_object_size_min": "4000", "camera_path_object_size_min": "4000", "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": "4", "ctrl_hud_image": "", "button_func": "none", "ctrl_fw_elapse": "-1", "ctrl_tr_elapse": "-1", "move_power_angle_2": "60", "move_power_angle_3": "60", "move_power_angle_1": "45", "move_motor_trim": "1", "show_page_program": "true", "sound_start": "$startup.mp3", "camera_exposure_mode": "auto", "ctrl_tr_speed": "80", "ctrl_fw_speed": "100", "camera_refresh_timeout": "0.1", "camera_jpeg_quality": "20", "prog_maxblocks": "-1", "move_motor_mode": "dc", "camera_path_object_size_max": "160000", "show_page_control": "true"}

coderbot.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,10 @@ def servo4(self, angle):
118118
def get_sonar_distance(self, sonar_id=0):
119119
return self.sonar[sonar_id].get_distance()
120120

121-
def _dc_motor(self, speed_left=100, speed_right=100, elapse=-1):
121+
def _dc_motor(self, speed_left=100, speed_right=100, elapse=-1, steps_left=-1, steps_right=-1 ):
122+
self._encoder_target_left = steps_left
123+
self._encoder_target_right = steps_right
124+
122125
self._is_moving = True
123126
if speed_left < 0:
124127
speed_left = abs(speed_left)
@@ -185,8 +188,16 @@ def set_callback(self, gpio, callback, elapse):
185188
self._cb_last_tick[gpio] = 0
186189

187190
def callback(self, gpio, level, tick):
188-
if gpio in [PIN_ENCODER_LEFT, PIN_ENCODER_RIGHT]:
189-
print( "encoder: " + str(gpio) + " level: " + str(level) + " tick: " + str(tick))
191+
if gpio == PIN_ENCODER_LEFT:
192+
self._encoder_cur_left += 1
193+
if self._encoder_target_left >= self._encoder_cur_left:
194+
self.pi.write(PIN_LEFT_FORWARD, 0)
195+
self.pi.write(PIN_LEFT_BACKWARD, 0)
196+
elif gpio == PIN_ENCODER_RIGHT:
197+
self._encoder_cur_right += 1
198+
if self._encoder_target_right >= self._encoder_cur_right:
199+
self.pi.write(PIN_RIGHT_FORWARD, 0)
200+
self.pi.write(PIN_RIGHT_BACKWARD, 0)
190201
else:
191202
cb = self._cb.get(gpio)
192203
if cb:

motion.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ def __init__(self):
6363
self.power_angles = [[15, (int(cfg.get("move_power_angle_1")), -1)], [4, (int(cfg.get("move_power_angle_2")), 0.05)], [1, (int(cfg.get("move_power_angle_3")), 0.02)], [0, (0, 0)]]
6464
self.image_width = 640 / int(cfg.get("cv_image_factor"))
6565
self.image_heigth = 480 / int(cfg.get("cv_image_factor"))
66+
self.transform = image.Image.get_transform(self.image_width)
6667
_motion = None
6768

6869
@classmethod
@@ -190,8 +191,8 @@ def calc_motion(self):
190191

191192
#avg_delta_x_t = 0.0
192193
if len(vectors_t) > 0:
193-
vectors_t = image.Image.transform(vectors_t)
194-
for v in vectors_t.reshape(-1, 2, 2):
194+
vectors_t = image.Image.transform(vectors_t, self.transform)
195+
for v in vectors_t.reshape(-1, 2, 2):
195196
avg_delta_y += (v[1][1] - v[0][1])
196197
#avg_delta_x_t += v[1][0] - v[0][0]
197198
#avg_delta_x_t = avg_delta_x_t / (vectors_t.shape[0] / 2)

static/js/blockly/blocks.js

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -184,14 +184,19 @@ Blockly.Blocks['coderbot_audio_say'] = {
184184
// Block for text to speech.
185185
init: function() {
186186
this.setHelpUrl('http://code.google.com/p/blockly/wiki/Say');
187-
this.setColour(290);
187+
this.setColour(220);
188188
var vi = this.appendValueInput('TEXT');
189189
vi.setCheck(["String", "Number", "Date"]);
190190
if(CODERBOT_PROG_LEVEL.indexOf("basic")>=0) {
191191
vi.appendField(new Blockly.FieldImage('/images/blocks/say.png', 32, 32, '*'));
192192
} else {
193193
vi.appendField(Blockly.Msg.CODERBOT_SAY);
194194
}
195+
vi.appendField(new Blockly.FieldDropdown([[Blockly.Msg.CODERBOT_LOCALE_EN, 'en'],
196+
[Blockly.Msg.CODERBOT_LOCALE_IT, 'it'],
197+
[Blockly.Msg.CODERBOT_LOCALE_FR, 'fr'],
198+
[Blockly.Msg.CODERBOT_LOCALE_ES, 'es']]), 'LOCALE')
199+
195200
this.setPreviousStatement(true);
196201
this.setNextStatement(true);
197202
this.setTooltip(('CoderBot_sayTooltip'));
@@ -202,7 +207,8 @@ Blockly.Python['coderbot_audio_say'] = function(block) {
202207
// Generate Python for turning left or right.
203208
var text = Blockly.Python.valueToCode(block, 'TEXT',
204209
Blockly.Python.ORDER_NONE) || '\'\'';
205-
return 'get_audio().say(' + text + ')\n';
210+
var locale = block.getFieldValue('LOCALE');
211+
return 'get_audio().say(' + text + ', locale="' + locale + '")\n';
206212
};
207213

208214
Blockly.Blocks['coderbot_sleep'] = {
@@ -464,7 +470,7 @@ Blockly.Blocks['coderbot_adv_pathAhead'] = {
464470
*/
465471
init: function() {
466472
this.setHelpUrl(Blockly.Msg.LOGIC_BOOLEAN_HELPURL);
467-
this.setColour(290);
473+
this.setColour(250);
468474
this.appendDummyInput()
469475
.appendField(Blockly.Msg.CODERBOT_SENSOR_PATHAHEAD);
470476
this.setOutput(true, 'Number');
@@ -485,7 +491,7 @@ Blockly.Blocks['coderbot_adv_findLine'] = {
485491
*/
486492
init: function() {
487493
this.setHelpUrl(Blockly.Msg.LOGIC_BOOLEAN_HELPURL);
488-
this.setColour(290);
494+
this.setColour(250);
489495
this.appendDummyInput()
490496
.appendField(Blockly.Msg.CODERBOT_SENSOR_FINDLINE);
491497
this.setOutput(true, 'Number');
@@ -506,7 +512,7 @@ Blockly.Blocks['coderbot_adv_findSignal'] = {
506512
*/
507513
init: function() {
508514
this.setHelpUrl(Blockly.Msg.LOGIC_BOOLEAN_HELPURL);
509-
this.setColour(290);
515+
this.setColour(250);
510516
this.appendDummyInput()
511517
.appendField(Blockly.Msg.CODERBOT_SENSOR_FINDSIGNAL);
512518
this.setOutput(true, 'Number');
@@ -527,7 +533,7 @@ Blockly.Blocks['coderbot_adv_findFace'] = {
527533
*/
528534
init: function() {
529535
this.setHelpUrl(Blockly.Msg.LOGIC_BOOLEAN_HELPURL);
530-
this.setColour(290);
536+
this.setColour(250);
531537
this.appendDummyInput()
532538
.appendField(Blockly.Msg.CODERBOT_SENSOR_FINDFACE)
533539
.appendField(new Blockly.FieldDropdown([[Blockly.Msg.CODERBOT_SENSOR_FINDFACE_X, 'X'], [Blockly.Msg.CODERBOT_SENSOR_FINDFACE_Y, 'Y'],[Blockly.Msg.CODERBOT_SENSOR_FINDFACE_SIZE, 'SIZE'],[Blockly.Msg.CODERBOT_SENSOR_FINDFACE_ALL,'ALL']]), 'RETVAL')
@@ -552,7 +558,7 @@ Blockly.Blocks['coderbot_adv_findColor'] = {
552558
*/
553559
init: function() {
554560
this.setHelpUrl(Blockly.Msg.LOGIC_BOOLEAN_HELPURL);
555-
this.setColour(290);
561+
this.setColour(250);
556562
this.appendDummyInput()
557563
.appendField(Blockly.Msg.CODERBOT_SENSOR_FINDCOLOR_FIND)
558564
.appendField(new Blockly.FieldDropdown([[Blockly.Msg.CODERBOT_SENSOR_FINDCOLOR_DIST, 'DIST'], [Blockly.Msg.CODERBOT_SENSOR_FINDCOLOR_ANGLE, 'ANGLE'],[Blockly.Msg.CODERBOT_SENSOR_FINDCOLOR_BOTH,'BOTH']]), 'RETVAL')
@@ -581,7 +587,7 @@ Blockly.Blocks['coderbot_cam_average'] = {
581587
*/
582588
init: function() {
583589
this.setHelpUrl(Blockly.Msg.LOGIC_BOOLEAN_HELPURL);
584-
this.setColour(290);
590+
this.setColour(250);
585591
this.appendDummyInput()
586592
.appendField(Blockly.Msg.CODERBOT_SENSOR_AVERAGE)
587593
.appendField(new Blockly.FieldDropdown([[Blockly.Msg.CODERBOT_SENSOR_AVERAGE_HUE, 'H'],
@@ -609,7 +615,7 @@ Blockly.Blocks['coderbot_adv_findText'] = {
609615
*/
610616
init: function() {
611617
this.setHelpUrl(Blockly.Msg.LOGIC_BOOLEAN_HELPURL);
612-
this.setColour(290);
618+
this.setColour(250);
613619
this.appendDummyInput()
614620
.appendField(Blockly.Msg.CODERBOT_SENSOR_FINDTEXT_FIND)
615621
.appendField(new Blockly.FieldDropdown([[Blockly.Msg.CODERBOT_SENSOR_FINDTEXT_ACCEPT_ALPHA, 'alpha'],
@@ -640,7 +646,7 @@ Blockly.Blocks['coderbot_adv_findCode'] = {
640646
*/
641647
init: function() {
642648
this.setHelpUrl(Blockly.Msg.LOGIC_BOOLEAN_HELPURL);
643-
this.setColour(290);
649+
this.setColour(250);
644650
this.appendDummyInput()
645651
.appendField(Blockly.Msg.CODERBOT_SENSOR_FINDCODE);
646652
this.setOutput(true, 'String');
@@ -662,7 +668,7 @@ Blockly.Blocks['coderbot_adv_findLogo'] = {
662668
*/
663669
init: function() {
664670
this.setHelpUrl(Blockly.Msg.LOGIC_BOOLEAN_HELPURL);
665-
this.setColour(290);
671+
this.setColour(250);
666672
this.appendDummyInput()
667673
.appendField(Blockly.Msg.CODERBOT_SENSOR_FINDLOGO);
668674
this.setOutput(true, 'Number');
@@ -683,7 +689,7 @@ Blockly.Blocks['coderbot_audio_record'] = {
683689
*/
684690
init: function() {
685691
this.setHelpUrl(Blockly.Msg.LOGIC_BOOLEAN_HELPURL);
686-
this.setColour(290);
692+
this.setColour(220);
687693
this.appendValueInput('FILENAME')
688694
.setCheck('String')
689695
.appendField(Blockly.Msg.CODERBOT_AUDIO_RECORD_FILE_NAME);
@@ -693,7 +699,7 @@ Blockly.Blocks['coderbot_audio_record'] = {
693699
this.setInputsInline(true);
694700
this.setPreviousStatement(true);
695701
this.setNextStatement(true);
696-
this.setTooltip(('CoderBot_audio_say_Tooltip'));
702+
this.setTooltip(('CoderBot_audio_record_Tooltip'));
697703
}
698704
};
699705

@@ -711,7 +717,7 @@ Blockly.Blocks['coderbot_audio_play'] = {
711717
// Block for text to speech.
712718
init: function() {
713719
this.setHelpUrl('http://code.google.com/p/blockly/wiki/Play');
714-
this.setColour(290);
720+
this.setColour(220);
715721
var vi = this.appendValueInput('FILENAME');
716722
vi.setCheck("String");
717723
if(CODERBOT_PROG_LEVEL.indexOf("basic")>=0) {
@@ -739,7 +745,7 @@ Blockly.Blocks['coderbot_audio_hear'] = {
739745
*/
740746
init: function() {
741747
this.setHelpUrl(Blockly.Msg.LOGIC_BOOLEAN_HELPURL);
742-
this.setColour(290);
748+
this.setColour(220);
743749
this.appendValueInput('LEVEL')
744750
.setCheck(["Number"])
745751
.appendField(Blockly.Msg.CODERBOT_AUDIO_HEAR + Blockly.Msg.CODERBOT_AUDIO_HEAR_LEVEL);
@@ -767,7 +773,7 @@ Blockly.Blocks['coderbot_audio_listen'] = {
767773
*/
768774
init: function() {
769775
this.setHelpUrl(Blockly.Msg.LOGIC_BOOLEAN_HELPURL);
770-
this.setColour(290);
776+
this.setColour(220);
771777
this.appendDummyInput()
772778
.appendField(Blockly.Msg.CODERBOT_AUDIO_LISTEN)
773779
.appendField(new Blockly.FieldDropdown([[Blockly.Msg.CODERBOT_AUDIO_LISTEN_MODEL_SIMPLE, 'model_simple'],
@@ -793,7 +799,7 @@ Blockly.Blocks['coderbot_sonar_get_distance'] = {
793799
*/
794800
init: function() {
795801
this.setHelpUrl(Blockly.Msg.LOGIC_BOOLEAN_HELPURL);
796-
this.setColour(290);
802+
this.setColour(250);
797803
this.appendDummyInput()
798804
.appendField(Blockly.Msg.CODERBOT_SONAR_GET_DISTANCE)
799805
.appendField(new Blockly.FieldDropdown([[Blockly.Msg.CODERBOT_SONAR_SENSOR_1, 0],

static/js/blockly/bot_en.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@ Blockly.Msg.CODERBOT_MOVE_MOTION_MOVE_TIP = "move bot, using vision to control"
2727
Blockly.Msg.CODERBOT_MOVE_MOTION_TURN_TIP = "turn bot, using vision to control"
2828
Blockly.Msg.CODERBOT_MOVE_STOP = "stop";
2929
Blockly.Msg.CODERBOT_SAY = "say";
30+
Blockly.Msg.CODERBOT_LOCALE_EN = "English";
31+
Blockly.Msg.CODERBOT_LOCALE_IT = "Italian";
32+
Blockly.Msg.CODERBOT_LOCALE_FR = "French";
33+
Blockly.Msg.CODERBOT_LOCALE_ES = "Spanish";
3034
Blockly.Msg.CODERBOT_PHOTO_TAKE = "take photo";
3135
Blockly.Msg.CODERBOT_VIDEO_REC = "video rec";
3236
Blockly.Msg.CODERBOT_VIDEO_STOP = "video stop";

static/js/blockly/bot_fr.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@ Blockly.Msg.CODERBOT_MOVE_MOTION_MOVE_TIP = "déplace le robot, en utilisant la
2727
Blockly.Msg.CODERBOT_MOVE_MOTION_TURN_TIP = "tourne le robot, en utilisant la caméra pour controller"
2828
Blockly.Msg.CODERBOT_MOVE_STOP = "stop";
2929
Blockly.Msg.CODERBOT_SAY = "dit";
30+
Blockly.Msg.CODERBOT_LOCALE_EN = "English";
31+
Blockly.Msg.CODERBOT_LOCALE_IT = "Italian";
32+
Blockly.Msg.CODERBOT_LOCALE_FR = "French";
33+
Blockly.Msg.CODERBOT_LOCALE_ES = "Spanish";
3034
Blockly.Msg.CODERBOT_PHOTO_TAKE = "prend une photo";
3135
Blockly.Msg.CODERBOT_VIDEO_REC = "démarre l'enregistrement vidéo";
3236
Blockly.Msg.CODERBOT_VIDEO_STOP = "arrête l'enregistrement vidéo";

static/js/blockly/bot_it.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,11 @@ Blockly.Msg.CODERBOT_MOVE_ADV_TIP_TAIL= " a velocità (0-100%) per tempo (second
2626
Blockly.Msg.CODERBOT_MOVE_MOTION_MOVE_TIP = "muovi bot, usando la camera per il posizionamento"
2727
Blockly.Msg.CODERBOT_MOVE_MOTION_TURN_TIP = "gira il bot, usando la camera per il posizionamento"
2828
Blockly.Msg.CODERBOT_MOVE_STOP = "stop";
29-
Blockly.Msg.CODERBOT_SAY = "dire";
29+
Blockly.Msg.CODERBOT_SAY = "pronuncia in";
30+
Blockly.Msg.CODERBOT_LOCALE_EN = "Inglese";
31+
Blockly.Msg.CODERBOT_LOCALE_IT = "Italiano";
32+
Blockly.Msg.CODERBOT_LOCALE_FR = "Francese";
33+
Blockly.Msg.CODERBOT_LOCALE_ES = "Spagnolo";
3034
Blockly.Msg.CODERBOT_PHOTO_TAKE = "scatta foto";
3135
Blockly.Msg.CODERBOT_VIDEO_REC = "registra video";
3236
Blockly.Msg.CODERBOT_VIDEO_STOP = "stop video";

templates/blocks_adv.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@
231231
<block type="coderbot_camera_videoRec"></block>
232232
<block type="coderbot_camera_videoStop"></block>
233233
</category>
234-
<category name="{% trans %}Sensor{% endtrans %}" colour="290">
234+
<category name="{% trans %}Sensor{% endtrans %}" colour="250">
235235
<block type="coderbot_cam_average"></block>
236236
<block type="coderbot_adv_pathAhead"></block>
237237
<block type="coderbot_adv_findLine"></block>
@@ -252,7 +252,7 @@
252252
<block type="coderbot_adv_findCode"></block>
253253
<block type="coderbot_sonar_get_distance"></block>
254254
</category>
255-
<category name="{% trans %}Sound{% endtrans %}" colour="290">
255+
<category name="{% trans %}Sound{% endtrans %}" colour="220">
256256
<block type="coderbot_audio_say"></block>
257257
<block type="coderbot_audio_record"></block>
258258
<block type="coderbot_audio_play"></block>

0 commit comments

Comments
 (0)