A monorepo containing jupyter-blocks and jupyter-tidyblocks. Blockly extension for JupyterLab.
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge pull request #28 from DenisaCG/separate_niryo

Remove the Niryo One plugin

authored by

Carlos Herrero and committed by
GitHub
0be9b91f 58e05ae8

+2 -2170
+1 -16
src/index.ts
··· 208 208 } 209 209 }; 210 210 211 - import BlocklyNiryo from './niryo/niryo_one_python_generators'; 212 - 213 - /** 214 - * Initialization data for the jupyterlab-blocky extension. 215 - */ 216 - const niryo: JupyterFrontEndPlugin<void> = { 217 - id: 'jupyterlab-blocky:niryo', 218 - autoStart: true, 219 - requires: [IBlocklyRegisty], 220 - activate: (app: JupyterFrontEnd, blockly: IBlocklyRegisty): void => { 221 - console.log('JupyterLab extension jupyterlab-blocky-niryo is activated!'); 222 - blockly.registerToolbox('niryo', BlocklyNiryo.Toolbox); 223 - } 224 - }; 225 - 226 - export default [plugin, niryo]; 211 + export default plugin;
-2153
src/niryo/niryo_one_python_generators.js
··· 1 - /* 2 - niryo_one_python_generators.js 3 - Copyright (C) 2017 Niryo 4 - All rights reserved. 5 - 6 - This program is free software: you can redistribute it and/or modify 7 - it under the terms of the GNU General Public License as published by 8 - the Free Software Foundation, either version 3 of the License, or 9 - (at your option) any later version. 10 - 11 - This program is distributed in the hope that it will be useful, 12 - but WITHOUT ANY WARRANTY; without even the implied warranty of 13 - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 - GNU General Public License for more details. 15 - 16 - You should have received a copy of the GNU General Public License 17 - along with this program. If not, see <http://www.gnu.org/licenses/>. 18 - */ 19 - 20 - // adds Custom Niryo One blocks + Python generators 21 - 22 - import * as Blockly from 'blockly'; 23 - 24 - var niryo_one_color = '#3D4D9A'; 25 - 26 - // Interface color 27 - var logic_color = '#00876d'; 28 - var loop_color = '#49a563'; 29 - var math_color = '#5769a1'; 30 - var list_color = '#765da1'; 31 - var variable_color = '#ad5a7e'; 32 - var function_color = '#9f5ca1'; 33 - var movement_color = '#4f87c0'; 34 - var io_color = '#c05150'; 35 - var tool_color = '#bf964b'; 36 - var utility_color = '#bead76'; 37 - var vision_color = '#546e7a'; 38 - var conveyor_color = '#00838f'; 39 - 40 - // Color object for vision 41 - //TODO Should be in a class 42 - const g_color_values = { 43 - COLOR_RED: 'RED', 44 - COLOR_GREEN: 'GREEN', 45 - COLOR_BLUE: 'BLUE', 46 - COLOR_ANY: 'ANY' 47 - }; 48 - 49 - // Shape object for vision 50 - //TODO Should be in a class 51 - const g_shape_values = { 52 - SHAPE_SQUARE: 'SQUARE', 53 - SHAPE_CIRCLE: 'CIRCLE', 54 - SHAPE_ANY: 'ANY' 55 - }; 56 - 57 - /* 58 - * Blocks definition 59 - */ 60 - 61 - // Movement 62 - Blockly.Blocks['niryo_one_connect'] = { 63 - init: function () { 64 - this.appendDummyInput().appendField('IP Address'); 65 - this.appendDummyInput() 66 - .appendField(new Blockly.FieldNumber(10, 0, 255, 0), 'ip_0') 67 - .appendField('.') 68 - .appendField(new Blockly.FieldNumber(10, 0, 255, 0), 'ip_1') 69 - .appendField('.') 70 - .appendField(new Blockly.FieldNumber(10, 0, 255, 0), 'ip_2') 71 - .appendField('.') 72 - .appendField(new Blockly.FieldNumber(10, 0, 255, 0), 'ip_3'); 73 - this.appendStatementInput('DO'); 74 - this.setInputsInline(true); 75 - this.setPreviousStatement(false, null); 76 - this.setNextStatement(false, null); 77 - this.setColour(function_color); 78 - this.setTooltip('Connect to the robot and disconnects after the execution'); 79 - this.setHelpUrl(''); 80 - } 81 - }; 82 - Blockly.Blocks['niryo_one_move_joints'] = { 83 - init: function () { 84 - this.appendDummyInput().appendField('Move Joints'); 85 - this.appendDummyInput() 86 - .appendField('j1') 87 - .appendField( 88 - new Blockly.FieldNumber(0, -Infinity, Infinity, 0.001), 89 - 'JOINTS_1' 90 - ) 91 - .appendField('j2') 92 - .appendField( 93 - new Blockly.FieldNumber(0, -Infinity, Infinity, 0.001), 94 - 'JOINTS_2' 95 - ) 96 - .appendField('j3') 97 - .appendField( 98 - new Blockly.FieldNumber(0, -Infinity, Infinity, 0.001), 99 - 'JOINTS_3' 100 - ) 101 - .appendField('j4') 102 - .appendField( 103 - new Blockly.FieldNumber(0, -Infinity, Infinity, 0.001), 104 - 'JOINTS_4' 105 - ) 106 - .appendField('j5') 107 - .appendField( 108 - new Blockly.FieldNumber(0, -Infinity, Infinity, 0.001), 109 - 'JOINTS_5' 110 - ) 111 - .appendField('j6') 112 - .appendField( 113 - new Blockly.FieldNumber(0, -Infinity, Infinity, 0.001), 114 - 'JOINTS_6' 115 - ); 116 - this.setInputsInline(true); 117 - this.setPreviousStatement(true, null); 118 - this.setNextStatement(true, null); 119 - this.setColour(movement_color); 120 - this.setTooltip('Give all 6 joints to move the robot'); 121 - this.setHelpUrl(''); 122 - } 123 - }; 124 - 125 - Blockly.Blocks['niryo_one_move_pose'] = { 126 - init: function () { 127 - this.appendDummyInput().appendField('Move Pose'); 128 - this.appendDummyInput() 129 - .appendField('x') 130 - .appendField( 131 - new Blockly.FieldNumber(0, -Infinity, Infinity, 0.001), 132 - 'POSE_X' 133 - ) 134 - .appendField('y') 135 - .appendField( 136 - new Blockly.FieldNumber(0, -Infinity, Infinity, 0.001), 137 - 'POSE_Y' 138 - ) 139 - .appendField('z') 140 - .appendField( 141 - new Blockly.FieldNumber(0, -Infinity, Infinity, 0.001), 142 - 'POSE_Z' 143 - ) 144 - .appendField('roll') 145 - .appendField( 146 - new Blockly.FieldNumber(0, -Infinity, Infinity, 0.001), 147 - 'POSE_ROLL' 148 - ) 149 - .appendField('pitch') 150 - .appendField( 151 - new Blockly.FieldNumber(0, -Infinity, Infinity, 0.001), 152 - 'POSE_PITCH' 153 - ) 154 - .appendField('yaw') 155 - .appendField( 156 - new Blockly.FieldNumber(0, -Infinity, Infinity, 0.001), 157 - 'POSE_YAW' 158 - ); 159 - this.setInputsInline(true); 160 - this.setPreviousStatement(true, null); 161 - this.setNextStatement(true, null); 162 - this.setColour(movement_color); 163 - this.setTooltip(''); 164 - this.setHelpUrl(''); 165 - } 166 - }; 167 - 168 - Blockly.Blocks['niryo_one_shift_pose'] = { 169 - init: function () { 170 - this.appendDummyInput().appendField('Shift'); 171 - this.appendDummyInput() 172 - .appendField( 173 - new Blockly.FieldDropdown([ 174 - ['pos. x', '0'], 175 - ['pos. y', '1'], 176 - ['pos. z', '2'], 177 - ['rot. x', '3'], 178 - ['rot. y', '4'], 179 - ['rot. z', '5'] 180 - ]), 181 - 'SHIFT_POSE_AXIS' 182 - ) 183 - .appendField('by') 184 - .appendField( 185 - new Blockly.FieldNumber(0, -Infinity, Infinity, 0.001), 186 - 'SHIFT_POSE_VALUE' 187 - ); 188 - this.setInputsInline(true); 189 - this.setPreviousStatement(true, null); 190 - this.setNextStatement(true, null); 191 - this.setColour(movement_color); 192 - this.setTooltip(''); 193 - this.setHelpUrl(''); 194 - } 195 - }; 196 - 197 - Blockly.Blocks['niryo_one_set_arm_max_speed'] = { 198 - init: function () { 199 - this.appendValueInput('SET_ARM_MAX_SPEED') 200 - .setCheck('Number') 201 - .appendField('Set Arm max. speed to'); 202 - this.appendDummyInput().appendField('%'); 203 - this.setInputsInline(true); 204 - this.setPreviousStatement(true, null); 205 - this.setNextStatement(true, null); 206 - this.setColour(movement_color); 207 - this.setTooltip(''); 208 - this.setHelpUrl(''); 209 - } 210 - }; 211 - 212 - Blockly.Blocks['niryo_one_calibrate_auto'] = { 213 - init: function () { 214 - this.appendDummyInput().appendField('Calibrate motors (auto)'); 215 - this.setPreviousStatement(true, null); 216 - this.setNextStatement(true, null); 217 - this.setColour(movement_color); 218 - this.setTooltip( 219 - 'Will auto calibrate motors. If already calibrated, will do nothing.' 220 - ); 221 - this.setHelpUrl(''); 222 - } 223 - }; 224 - 225 - Blockly.Blocks['niryo_one_calibrate_manual'] = { 226 - init: function () { 227 - this.appendDummyInput().appendField('Calibrate motors (manual)'); 228 - this.setPreviousStatement(true, null); 229 - this.setNextStatement(true, null); 230 - this.setColour(movement_color); 231 - this.setTooltip( 232 - 'Will manually calibrate motors (robot needs to be in home position). If already calibrated, will do nothing.' 233 - ); 234 - this.setHelpUrl(''); 235 - } 236 - }; 237 - 238 - Blockly.Blocks['niryo_one_activate_learning_mode'] = { 239 - init: function () { 240 - this.appendDummyInput() 241 - .appendField( 242 - new Blockly.FieldDropdown([ 243 - ['Activate', '1'], 244 - ['Deactivate', '0'] 245 - ]), 246 - 'LEARNING_MODE_VALUE' 247 - ) 248 - .appendField('learning mode'); 249 - this.setPreviousStatement(true, null); 250 - this.setNextStatement(true, null); 251 - this.setColour(movement_color); 252 - this.setTooltip(''); 253 - this.setHelpUrl(''); 254 - } 255 - }; 256 - 257 - Blockly.Blocks['niryo_one_joint'] = { 258 - init: function () { 259 - this.appendDummyInput().appendField('Joints'); 260 - this.appendValueInput('j1').setCheck('Number').appendField('j1'); 261 - this.appendValueInput('j2').setCheck('Number').appendField('j2'); 262 - this.appendValueInput('j3').setCheck('Number').appendField('j3'); 263 - this.appendValueInput('j4').setCheck('Number').appendField('j4'); 264 - this.appendValueInput('j5').setCheck('Number').appendField('j5'); 265 - this.appendValueInput('j6').setCheck('Number').appendField('j6'); 266 - this.setInputsInline(true); 267 - this.setOutput(true, null); 268 - this.setColour(movement_color); 269 - this.setTooltip('Represents an object pose'); 270 - this.setHelpUrl(''); 271 - } 272 - }; 273 - 274 - Blockly.Blocks['niryo_one_move_joint_from_joint'] = { 275 - init: function () { 276 - this.appendValueInput('JOINT') 277 - .setCheck('niryo_one_joint') 278 - .appendField('Move joint'); 279 - this.setTooltip('Move joint with an object pose given'); 280 - this.setPreviousStatement(true, null); 281 - this.setNextStatement(true, null); 282 - this.setColour(movement_color); 283 - this.setHelpUrl(''); 284 - } 285 - }; 286 - 287 - Blockly.Blocks['niryo_one_move_pose_from_pose'] = { 288 - init: function () { 289 - this.appendValueInput('POSE') 290 - .setCheck('niryo_one_pose') 291 - .appendField('Move pose'); 292 - this.setPreviousStatement(true, null); 293 - this.setNextStatement(true, null); 294 - this.setColour(movement_color); 295 - this.setTooltip('Move pose with an object pose given'); 296 - this.setHelpUrl(''); 297 - } 298 - }; 299 - 300 - Blockly.Blocks['niryo_one_pose'] = { 301 - init: function () { 302 - this.appendDummyInput().appendField('Pose'); 303 - this.appendValueInput('x').setCheck('Number').appendField('x'); 304 - this.appendValueInput('y').setCheck('Number').appendField('y'); 305 - this.appendValueInput('z').setCheck('Number').appendField('z'); 306 - this.appendValueInput('roll').setCheck('Number').appendField('roll'); 307 - this.appendValueInput('pitch').setCheck('Number').appendField('pitch'); 308 - this.appendValueInput('yaw').setCheck('Number').appendField('yaw'); 309 - this.setInputsInline(true); 310 - this.setOutput(true, null); 311 - this.setColour(movement_color); 312 - this.setTooltip('Represents an object pose'); 313 - this.setHelpUrl(''); 314 - } 315 - }; 316 - 317 - Blockly.Blocks['niryo_one_move_pose_from_pose'] = { 318 - init: function () { 319 - this.appendValueInput('POSE') 320 - .setCheck('niryo_one_pose') 321 - .appendField('Move pose'); 322 - this.setPreviousStatement(true, null); 323 - this.setNextStatement(true, null); 324 - this.setColour(movement_color); 325 - this.setTooltip('Move pose with an object pose given'); 326 - this.setHelpUrl(''); 327 - } 328 - }; 329 - 330 - Blockly.Blocks['niryo_one_pick_from_pose'] = { 331 - init: function () { 332 - this.appendValueInput('POSE') 333 - .setCheck('niryo_one_pose') 334 - .appendField('Pick from pose'); 335 - this.setPreviousStatement(true, null); 336 - this.setNextStatement(true, null); 337 - this.setColour(movement_color); 338 - this.setTooltip('Pick an object at a pose given'); 339 - this.setHelpUrl(''); 340 - } 341 - }; 342 - 343 - Blockly.Blocks['niryo_one_place_from_pose'] = { 344 - init: function () { 345 - this.appendValueInput('POSE') 346 - .setCheck('niryo_one_pose') 347 - .appendField('Place from pose'); 348 - this.setPreviousStatement(true, null); 349 - this.setNextStatement(true, null); 350 - this.setColour(movement_color); 351 - this.setTooltip('Place an object at a pose given'); 352 - this.setHelpUrl(''); 353 - } 354 - }; 355 - 356 - // I/O 357 - 358 - Blockly.Blocks['niryo_one_gpio_select'] = { 359 - init: function () { 360 - this.appendDummyInput().appendField( 361 - new Blockly.FieldDropdown([ 362 - ['1A', 'GPIO_1A'], 363 - ['1B', 'GPIO_1B'], 364 - ['1C', 'GPIO_1C'], 365 - ['2A', 'GPIO_2A'], 366 - ['2B', 'GPIO_2B'], 367 - ['2C', 'GPIO_2C'] 368 - ]), 369 - 'GPIO_SELECT' 370 - ); 371 - this.setOutput(true, 'niryo_one_gpio_select'); 372 - this.setColour(io_color); 373 - this.setTooltip(''); 374 - this.setHelpUrl(''); 375 - } 376 - }; 377 - 378 - Blockly.Blocks['niryo_one_set_pin_mode'] = { 379 - init: function () { 380 - this.appendValueInput('SET_PIN_MODE_PIN') 381 - .setCheck('niryo_one_gpio_select') 382 - .setAlign(Blockly.ALIGN_RIGHT) 383 - .appendField('Set Pin'); 384 - this.appendDummyInput() 385 - .appendField('to mode') 386 - .appendField( 387 - new Blockly.FieldDropdown([ 388 - ['INPUT', 'PIN_MODE_INPUT'], 389 - ['OUTPUT', 'PIN_MODE_OUTPUT'] 390 - ]), 391 - 'PIN_MODE_SELECT' 392 - ); 393 - this.setInputsInline(true); 394 - this.setPreviousStatement(true, null); 395 - this.setNextStatement(true, null); 396 - this.setColour(io_color); 397 - this.setTooltip(''); 398 - this.setHelpUrl(''); 399 - } 400 - }; 401 - 402 - Blockly.Blocks['niryo_one_digital_write'] = { 403 - init: function () { 404 - this.appendValueInput('DIGITAL_WRITE_PIN') 405 - .setCheck('niryo_one_gpio_select') 406 - .appendField('Set Pin'); 407 - this.appendDummyInput() 408 - .appendField('to state') 409 - .appendField( 410 - new Blockly.FieldDropdown([ 411 - ['HIGH', 'PIN_HIGH'], 412 - ['LOW', 'PIN_LOW'] 413 - ]), 414 - 'PIN_WRITE_SELECT' 415 - ); 416 - this.setInputsInline(true); 417 - this.setPreviousStatement(true, null); 418 - this.setNextStatement(true, null); 419 - this.setColour(io_color); 420 - this.setTooltip(''); 421 - this.setHelpUrl(''); 422 - } 423 - }; 424 - 425 - Blockly.Blocks['niryo_one_digital_read'] = { 426 - init: function () { 427 - this.appendValueInput('DIGITAL_READ_PIN') 428 - .setCheck('niryo_one_gpio_select') 429 - .appendField('Get Pin'); 430 - this.appendDummyInput().appendField('state'); 431 - this.setInputsInline(true); 432 - this.setOutput(true, 'niryo_one_gpio_state'); 433 - this.setColour(io_color); 434 - this.setTooltip(''); 435 - this.setHelpUrl(''); 436 - } 437 - }; 438 - 439 - Blockly.Blocks['niryo_one_gpio_state'] = { 440 - init: function () { 441 - this.appendDummyInput() 442 - .appendField('state') 443 - .appendField( 444 - new Blockly.FieldDropdown([ 445 - ['HIGH', 'PIN_HIGH'], 446 - ['LOW', 'PIN_LOW'] 447 - ]), 448 - 'GPIO_STATE_SELECT' 449 - ); 450 - this.setOutput(true, 'niryo_one_gpio_state'); 451 - this.setColour(io_color); 452 - this.setTooltip(''); 453 - this.setHelpUrl(''); 454 - } 455 - }; 456 - 457 - Blockly.Blocks['niryo_one_sw_select'] = { 458 - init: function () { 459 - this.appendDummyInput().appendField( 460 - new Blockly.FieldDropdown([ 461 - ['SW1', 'SW_1'], 462 - ['SW2', 'SW_2'] 463 - ]), 464 - 'SW_SELECT' 465 - ); 466 - this.setOutput(true, 'niryo_one_sw_select'); 467 - this.setColour(io_color); 468 - this.setTooltip(''); 469 - this.setHelpUrl(''); 470 - } 471 - }; 472 - 473 - Blockly.Blocks['niryo_one_set_12v_switch'] = { 474 - init: function () { 475 - this.appendValueInput('SET_12V_SWITCH') 476 - .setCheck('niryo_one_sw_select') 477 - .appendField('Set 12V Switch'); 478 - this.appendDummyInput() 479 - .appendField('to state') 480 - .appendField( 481 - new Blockly.FieldDropdown([ 482 - ['HIGH', 'PIN_HIGH'], 483 - ['LOW', 'PIN_LOW'] 484 - ]), 485 - 'SET_12V_SWITCH_SELECT' 486 - ); 487 - this.setPreviousStatement(true, null); 488 - this.setNextStatement(true, null); 489 - this.setColour(io_color); 490 - this.setTooltip(''); 491 - this.setHelpUrl(''); 492 - } 493 - }; 494 - 495 - // Tool 496 - 497 - Blockly.Blocks['niryo_one_tool_select'] = { 498 - init: function () { 499 - this.appendDummyInput().appendField( 500 - new Blockly.FieldDropdown([ 501 - ['Standard gripper', 'TOOL_GRIPPER_1_ID'], 502 - ['Large gripper', 'TOOL_GRIPPER_2_ID'], 503 - ['Adaptive gripper ', 'TOOL_GRIPPER_3_ID'], 504 - ['electromagnet 1', 'TOOL_ELECTROMAGNET_1_ID'], 505 - ['vacuum pump 1', 'TOOL_VACUUM_PUMP_1_ID'] 506 - ]), 507 - 'TOOL_SELECT' 508 - ); 509 - this.setOutput(true, 'niryo_one_tool_select'); 510 - this.setColour(tool_color); 511 - this.setTooltip(''); 512 - this.setHelpUrl(''); 513 - } 514 - }; 515 - 516 - Blockly.Blocks['niryo_one_change_tool'] = { 517 - init: function () { 518 - this.appendValueInput('NEW_TOOL_ID') 519 - .setCheck('niryo_one_tool_select') 520 - .appendField('Change tool to'); 521 - this.setInputsInline(true); 522 - this.setPreviousStatement(true, null); 523 - this.setNextStatement(true, null); 524 - this.setColour(tool_color); 525 - this.setTooltip(''); 526 - this.setHelpUrl(''); 527 - } 528 - }; 529 - 530 - Blockly.Blocks['niryo_one_detach_tool'] = { 531 - init: function () { 532 - this.appendDummyInput().appendField('Detach current tool'); 533 - this.setPreviousStatement(true, null); 534 - this.setNextStatement(true, null); 535 - this.setColour(tool_color); 536 - this.setTooltip(''); 537 - this.setHelpUrl(''); 538 - } 539 - }; 540 - 541 - Blockly.Blocks['niryo_one_open_gripper'] = { 542 - init: function () { 543 - this.appendValueInput('OPEN_GRIPPER_ID') 544 - .setCheck('niryo_one_tool_select') 545 - .appendField('Open Gripper'); 546 - this.appendDummyInput() 547 - .appendField('at speed') 548 - .appendField( 549 - new Blockly.FieldDropdown([ 550 - ['1/5', '100'], 551 - ['2/5', '250'], 552 - ['3/5', '500'], 553 - ['4/5', '750'], 554 - ['5/5', '1000'] 555 - ]), 556 - 'OPEN_SPEED' 557 - ); 558 - this.setInputsInline(true); 559 - this.setPreviousStatement(true, null); 560 - this.setNextStatement(true, null); 561 - this.setColour(tool_color); 562 - this.setTooltip(''); 563 - this.setHelpUrl(''); 564 - } 565 - }; 566 - 567 - Blockly.Blocks['niryo_one_close_gripper'] = { 568 - init: function () { 569 - this.appendValueInput('CLOSE_GRIPPER_ID') 570 - .setCheck('niryo_one_tool_select') 571 - .appendField('Close Gripper'); 572 - this.appendDummyInput() 573 - .appendField('at speed') 574 - .appendField( 575 - new Blockly.FieldDropdown([ 576 - ['1/5', '100'], 577 - ['2/5', '250'], 578 - ['3/5', '500'], 579 - ['4/5', '750'], 580 - ['5/5', '1000'] 581 - ]), 582 - 'CLOSE_SPEED' 583 - ); 584 - this.setInputsInline(true); 585 - this.setPreviousStatement(true, null); 586 - this.setNextStatement(true, null); 587 - this.setColour(tool_color); 588 - this.setTooltip(''); 589 - this.setHelpUrl(''); 590 - } 591 - }; 592 - 593 - Blockly.Blocks['niryo_one_pull_air_vacuum_pump'] = { 594 - init: function () { 595 - this.appendValueInput('PULL_AIR_VACUUM_PUMP_ID') 596 - .setCheck('niryo_one_tool_select') 597 - .appendField('Pull air with Vacuum Pump'); 598 - this.setInputsInline(true); 599 - this.setPreviousStatement(true, null); 600 - this.setNextStatement(true, null); 601 - this.setColour(tool_color); 602 - this.setTooltip(''); 603 - this.setHelpUrl(''); 604 - } 605 - }; 606 - 607 - Blockly.Blocks['niryo_one_push_air_vacuum_pump'] = { 608 - init: function () { 609 - this.appendValueInput('PUSH_AIR_VACUUM_PUMP_ID') 610 - .setCheck('niryo_one_tool_select') 611 - .appendField('Push air with Vacuum Pump'); 612 - this.setInputsInline(true); 613 - this.setPreviousStatement(true, null); 614 - this.setNextStatement(true, null); 615 - this.setColour(tool_color); 616 - this.setTooltip(''); 617 - this.setHelpUrl(''); 618 - } 619 - }; 620 - 621 - Blockly.Blocks['niryo_one_setup_electromagnet'] = { 622 - init: function () { 623 - this.appendValueInput('SETUP_ELECTROMAGNET_ID') 624 - .setCheck('niryo_one_tool_select') 625 - .appendField('Setup Electromagnet'); 626 - this.appendValueInput('SETUP_ELECTROMAGNET_PIN') 627 - .setCheck('niryo_one_gpio_select') 628 - .setAlign(Blockly.ALIGN_RIGHT) 629 - .appendField('with pin'); 630 - this.setInputsInline(true); 631 - this.setPreviousStatement(true, null); 632 - this.setNextStatement(true, null); 633 - this.setColour(tool_color); 634 - this.setTooltip(''); 635 - this.setHelpUrl(''); 636 - } 637 - }; 638 - 639 - Blockly.Blocks['niryo_one_activate_electromagnet'] = { 640 - init: function () { 641 - this.appendValueInput('ACTIVATE_ELECTROMAGNET_ID') 642 - .setCheck('niryo_one_tool_select') 643 - .appendField('Activate Electromagnet'); 644 - this.appendValueInput('ACTIVATE_ELECTROMAGNET_PIN') 645 - .setCheck('niryo_one_gpio_select') 646 - .setAlign(Blockly.ALIGN_RIGHT) 647 - .appendField('with pin'); 648 - this.setInputsInline(true); 649 - this.setPreviousStatement(true, null); 650 - this.setNextStatement(true, null); 651 - this.setColour(tool_color); 652 - this.setTooltip(''); 653 - this.setHelpUrl(''); 654 - } 655 - }; 656 - 657 - Blockly.Blocks['niryo_one_deactivate_electromagnet'] = { 658 - init: function () { 659 - this.appendValueInput('DEACTIVATE_ELECTROMAGNET_ID') 660 - .setCheck('niryo_one_tool_select') 661 - .appendField('Deactivate Electromagnet'); 662 - this.appendValueInput('DEACTIVATE_ELECTROMAGNET_PIN') 663 - .setCheck('niryo_one_gpio_select') 664 - .setAlign(Blockly.ALIGN_RIGHT) 665 - .appendField('with pin'); 666 - this.setInputsInline(true); 667 - this.setPreviousStatement(true, null); 668 - this.setNextStatement(true, null); 669 - this.setColour(tool_color); 670 - this.setTooltip(''); 671 - this.setHelpUrl(''); 672 - } 673 - }; 674 - 675 - // Utility 676 - 677 - Blockly.Blocks['niryo_one_sleep'] = { 678 - init: function () { 679 - this.appendValueInput('SLEEP_TIME') 680 - .setCheck('Number') 681 - .appendField('Wait for '); 682 - this.appendDummyInput().appendField('seconds'); 683 - this.setInputsInline(true); 684 - this.setPreviousStatement(true, null); 685 - this.setNextStatement(true, null); 686 - this.setColour(utility_color); 687 - this.setTooltip(''); 688 - this.setHelpUrl(''); 689 - } 690 - }; 691 - 692 - Blockly.Blocks['niryo_one_comment'] = { 693 - init: function () { 694 - this.appendDummyInput() 695 - .appendField('Comment :') 696 - .appendField(new Blockly.FieldTextInput(''), 'COMMENT_TEXT'); 697 - this.setPreviousStatement(true, null); 698 - this.setNextStatement(true, null); 699 - this.setColour(utility_color); 700 - this.setTooltip('This block will not be executed.'); 701 - this.setHelpUrl(''); 702 - } 703 - }; 704 - 705 - Blockly.Blocks['niryo_one_break_point'] = { 706 - init: function () { 707 - this.appendDummyInput().appendField('Break Point'); 708 - this.setPreviousStatement(true, null); 709 - this.setNextStatement(true, null); 710 - this.setColour(utility_color); 711 - this.setTooltip( 712 - "Stop the execution of the program. Press 'Play' to resume." 713 - ); 714 - this.setHelpUrl(''); 715 - } 716 - }; 717 - 718 - // Vision 719 - 720 - Blockly.Blocks['niryo_one_vision_color'] = { 721 - init: function () { 722 - this.appendDummyInput() 723 - .appendField('Color') 724 - .appendField( 725 - new Blockly.FieldDropdown([ 726 - ['RED', 'COLOR_RED'], 727 - ['GREEN', 'COLOR_GREEN'], 728 - ['BLUE', 'COLOR_BLUE'], 729 - ['ANY', 'COLOR_ANY'] 730 - ]), 731 - 'COLOR_SELECT' 732 - ); 733 - this.setOutput(true, 'niryo_one_vision_color'); 734 - this.setColour(vision_color); 735 - this.setTooltip("Color object (must be used with Vision's blocks)"); 736 - } 737 - }; 738 - 739 - Blockly.Blocks['niryo_one_vision_shape'] = { 740 - init: function () { 741 - this.appendDummyInput() 742 - .appendField('Shape') 743 - .appendField( 744 - new Blockly.FieldDropdown([ 745 - ['SQUARE', 'SHAPE_SQUARE'], 746 - ['CIRCLE', 'SHAPE_CIRCLE'], 747 - ['OBJECT', 'SHAPE_ANY'] 748 - ]), 749 - 'SHAPE_SELECT' 750 - ); 751 - this.setOutput(true, 'niryo_one_vision_shape'); 752 - this.setColour(vision_color); 753 - this.setTooltip("Shape object (must be used with Vision's blocks)"); 754 - } 755 - }; 756 - 757 - Blockly.Blocks['niryo_one_vision_pick'] = { 758 - init: function () { 759 - this.appendValueInput('COLOR_SWITCH') 760 - .setCheck('niryo_one_vision_color') 761 - .appendField('Vision pick'); 762 - 763 - this.appendValueInput('SHAPE_SWITCH').setCheck('niryo_one_vision_shape'); 764 - this.appendDummyInput().appendField('in workspace'); 765 - 766 - this.appendValueInput('WORKSPACE_NAME').setCheck('String'); 767 - 768 - this.appendValueInput('HEIGHT_OFFSET') 769 - .setCheck('Number') 770 - .appendField('with height offset (mm)'); 771 - 772 - this.setOutput(true, 'Boolean'); 773 - this.setColour(vision_color); 774 - this.setHelpUrl(''); 775 - this.setTooltip( 776 - 'Pick an object of SHAPE / COLOR given, with gripper close position at HEIGHT_OFFSET cm.' 777 - ); 778 - this.setInputsInline(false); 779 - } 780 - }; 781 - 782 - Blockly.Blocks['niryo_one_vision_is_object_detected'] = { 783 - init: function () { 784 - this.appendValueInput('COLOR_SWITCH') 785 - .setCheck('niryo_one_vision_color') 786 - .appendField('Is object detected'); 787 - 788 - this.appendValueInput('SHAPE_SWITCH').setCheck('niryo_one_vision_shape'); 789 - this.appendDummyInput().appendField('in workspace'); 790 - 791 - this.appendValueInput('WORKSPACE_NAME').setCheck('String'); 792 - 793 - this.setOutput(true, 'Boolean'); 794 - this.setColour(vision_color); 795 - this.setHelpUrl(''); 796 - this.setTooltip( 797 - 'Detect is there is an object of SHAPE / COLOR in the WORKSPACE given.' 798 - ); 799 - this.setInputsInline(false); 800 - } 801 - }; 802 - 803 - // Conveyor 804 - 805 - Blockly.Blocks['niryo_one_conveyor_models'] = { 806 - init: function () { 807 - this.appendDummyInput().appendField( 808 - new Blockly.FieldDropdown([ 809 - ['Conveyor 1', 'CONVEYOR_1'], 810 - ['Conveyor 2', 'CONVEYOR_2'] 811 - ]), 812 - 'CONVEYOR_SELECT' 813 - ); 814 - this.setOutput(true, 'niryo_one_conveyor_models'); 815 - 816 - this.setColour(conveyor_color); 817 - this.setHelpUrl(''); 818 - this.setTooltip('Conveyors available with Niryo One.'); 819 - } 820 - }; 821 - 822 - Blockly.Blocks['niryo_one_conveyor_use'] = { 823 - init: function () { 824 - this.appendValueInput('CONVEYOR_SWITCH') 825 - .setCheck('niryo_one_conveyor_models') 826 - .appendField('Use conveyor:'); 827 - 828 - this.setColour(conveyor_color); 829 - this.setHelpUrl(''); 830 - this.setTooltip('Allow the conveyor to be controlled via Niryo One.'); 831 - this.setPreviousStatement(true, null); 832 - this.setNextStatement(true, null); 833 - } 834 - }; 835 - 836 - Blockly.Blocks['niryo_one_conveyor_control'] = { 837 - init: function () { 838 - this.appendValueInput('CONVEYOR_SWITCH') 839 - .setCheck('niryo_one_conveyor_models') 840 - .appendField('Control conveyor:'); 841 - 842 - this.appendValueInput('SPEED_PERCENT') 843 - .setCheck('Number') 844 - .appendField('with speed (%):'); 845 - 846 - this.appendDummyInput() 847 - .appendField('in direction:') 848 - .appendField( 849 - new Blockly.FieldDropdown([ 850 - ['FORWARD', '1'], 851 - ['BACKWARD', '-1'] 852 - ]), 853 - 'DIRECTION_SELECT' 854 - ); 855 - 856 - this.setColour(conveyor_color); 857 - this.setHelpUrl(''); 858 - this.setTooltip('Control the conveyor given.'); 859 - this.setPreviousStatement(true, null); 860 - this.setNextStatement(true, null); 861 - this.setInputsInline(false); 862 - } 863 - }; 864 - 865 - Blockly.Blocks['niryo_one_conveyor_stop'] = { 866 - init: function () { 867 - this.appendValueInput('CONVEYOR_SWITCH') 868 - .setCheck('niryo_one_conveyor_models') 869 - .appendField('Stop conveyor'); 870 - 871 - this.setColour(conveyor_color); 872 - this.setHelpUrl(''); 873 - this.setTooltip('Stop the conveyor given.'); 874 - this.setPreviousStatement(true, null); 875 - this.setNextStatement(true, null); 876 - } 877 - }; 878 - 879 - /* 880 - * Generators 881 - */ 882 - 883 - const connexion = ` 884 - from contextlib import contextmanager 885 - from pyniryo import * 886 - 887 - @contextmanager 888 - def niryo_connect(ip): 889 - n = NiryoRobot(ip) 890 - try: 891 - yield n 892 - except: 893 - n.close_connection() 894 - raise 895 - else: 896 - n.close_connection() 897 - `; 898 - 899 - Blockly.Python['niryo_one_connect'] = function (block) { 900 - var ip_0 = block.getFieldValue('ip_0'); 901 - var ip_1 = block.getFieldValue('ip_1'); 902 - var ip_2 = block.getFieldValue('ip_2'); 903 - var ip_3 = block.getFieldValue('ip_3'); 904 - 905 - let branch = Blockly.Python.statementToCode(block, 'DO'); 906 - var ip = ip_0 + '.' + ip_1 + '.' + ip_2 + '.' + ip_3; 907 - 908 - var code = connexion + '\nwith niryo_connect("' + ip + '") as n:\n' + branch; 909 - return code; 910 - }; 911 - 912 - Blockly.Python['niryo_one_move_joints'] = function (block) { 913 - var number_joints_1 = block.getFieldValue('JOINTS_1'); 914 - var number_joints_2 = block.getFieldValue('JOINTS_2'); 915 - var number_joints_3 = block.getFieldValue('JOINTS_3'); 916 - var number_joints_4 = block.getFieldValue('JOINTS_4'); 917 - var number_joints_5 = block.getFieldValue('JOINTS_5'); 918 - var number_joints_6 = block.getFieldValue('JOINTS_6'); 919 - 920 - var code = 921 - 'n.move_joints([' + 922 - number_joints_1 + 923 - ', ' + 924 - number_joints_2 + 925 - ', ' + 926 - number_joints_3 + 927 - ', ' + 928 - number_joints_4 + 929 - ', ' + 930 - number_joints_5 + 931 - ', ' + 932 - number_joints_6 + 933 - '])\n'; 934 - return code; 935 - }; 936 - 937 - Blockly.Python['niryo_one_move_pose'] = function (block) { 938 - var number_pose_x = block.getFieldValue('POSE_X'); 939 - var number_pose_y = block.getFieldValue('POSE_Y'); 940 - var number_pose_z = block.getFieldValue('POSE_Z'); 941 - var number_pose_roll = block.getFieldValue('POSE_ROLL'); 942 - var number_pose_pitch = block.getFieldValue('POSE_PITCH'); 943 - var number_pose_yaw = block.getFieldValue('POSE_YAW'); 944 - 945 - var code = 946 - 'n.move_pose(' + 947 - number_pose_x + 948 - ', ' + 949 - number_pose_y + 950 - ', ' + 951 - number_pose_z + 952 - ', ' + 953 - number_pose_roll + 954 - ', ' + 955 - number_pose_pitch + 956 - ', ' + 957 - number_pose_yaw + 958 - ')\n'; 959 - return code; 960 - }; 961 - 962 - Blockly.Python['niryo_one_shift_pose'] = function (block) { 963 - var dropdown_shift_pose_axis = block.getFieldValue('SHIFT_POSE_AXIS'); 964 - var number_shift_pose_value = block.getFieldValue('SHIFT_POSE_VALUE'); 965 - 966 - var code = 967 - 'n.shift_pose(' + 968 - dropdown_shift_pose_axis + 969 - ', ' + 970 - number_shift_pose_value + 971 - ')\n'; 972 - return code; 973 - }; 974 - 975 - Blockly.Python['niryo_one_set_arm_max_speed'] = function (block) { 976 - var value_set_arm_max_speed = 977 - Blockly.Python.valueToCode( 978 - block, 979 - 'SET_ARM_MAX_SPEED', 980 - Blockly.Python.ORDER_ATOMIC 981 - ) || '0'; 982 - value_set_arm_max_speed = value_set_arm_max_speed 983 - .replace('(', '') 984 - .replace(')', ''); 985 - var code = 'n.set_arm_max_velocity(' + value_set_arm_max_speed + ')\n'; 986 - return code; 987 - }; 988 - 989 - Blockly.Python['niryo_one_calibrate_auto'] = function (block) { 990 - var code = 'n.calibrate_auto()\n'; 991 - return code; 992 - }; 993 - 994 - Blockly.Python['niryo_one_calibrate_manual'] = function (block) { 995 - var code = 'n.calibrate_manual()\n'; 996 - return code; 997 - }; 998 - 999 - Blockly.Python['niryo_one_activate_learning_mode'] = function (block) { 1000 - var dropdown_learning_mode_value = block.getFieldValue('LEARNING_MODE_VALUE'); 1001 - var code = 'n.activate_learning_mode(' + dropdown_learning_mode_value + ')\n'; 1002 - return code; 1003 - }; 1004 - 1005 - Blockly.Python['niryo_one_joint'] = function (block) { 1006 - var value_j1 = Blockly.Python.valueToCode( 1007 - block, 1008 - 'j1', 1009 - Blockly.Python.ORDER_ATOMIC 1010 - ) 1011 - .replace('(', '') 1012 - .replace(')', ''); 1013 - var value_j2 = Blockly.Python.valueToCode( 1014 - block, 1015 - 'j2', 1016 - Blockly.Python.ORDER_ATOMIC 1017 - ) 1018 - .replace('(', '') 1019 - .replace(')', ''); 1020 - var value_j3 = Blockly.Python.valueToCode( 1021 - block, 1022 - 'j3', 1023 - Blockly.Python.ORDER_ATOMIC 1024 - ) 1025 - .replace('(', '') 1026 - .replace(')', ''); 1027 - var value_j4 = Blockly.Python.valueToCode( 1028 - block, 1029 - 'j4', 1030 - Blockly.Python.ORDER_ATOMIC 1031 - ) 1032 - .replace('(', '') 1033 - .replace(')', ''); 1034 - var value_j5 = Blockly.Python.valueToCode( 1035 - block, 1036 - 'j5', 1037 - Blockly.Python.ORDER_ATOMIC 1038 - ) 1039 - .replace('(', '') 1040 - .replace(')', ''); 1041 - var value_j6 = Blockly.Python.valueToCode( 1042 - block, 1043 - 'j6', 1044 - Blockly.Python.ORDER_ATOMIC 1045 - ) 1046 - .replace('(', '') 1047 - .replace(')', ''); 1048 - 1049 - var code = 1050 - '[' + 1051 - value_j1 + 1052 - ', ' + 1053 - value_j2 + 1054 - ', ' + 1055 - value_j3 + 1056 - ', ' + 1057 - value_j4 + 1058 - ', ' + 1059 - value_j5 + 1060 - ', ' + 1061 - value_j6 + 1062 - ']'; 1063 - return [code, Blockly.Python.ORDER_NONE]; 1064 - }; 1065 - 1066 - Blockly.Python['niryo_one_move_joint_from_joint'] = function (block) { 1067 - // Position object 1068 - var value_joint = Blockly.Python.valueToCode( 1069 - block, 1070 - 'JOINT', 1071 - Blockly.Python.ORDER_ATOMIC 1072 - ); 1073 - value_joint = value_joint.replace('(', '').replace(')', ''); 1074 - 1075 - var code = 'n.move_joints(' + value_joint + ')\n'; 1076 - return code; 1077 - }; 1078 - 1079 - Blockly.Python['niryo_one_pose'] = function (block) { 1080 - var value_x = Blockly.Python.valueToCode( 1081 - block, 1082 - 'x', 1083 - Blockly.Python.ORDER_ATOMIC 1084 - ) 1085 - .replace('(', '') 1086 - .replace(')', ''); 1087 - var value_y = Blockly.Python.valueToCode( 1088 - block, 1089 - 'y', 1090 - Blockly.Python.ORDER_ATOMIC 1091 - ) 1092 - .replace('(', '') 1093 - .replace(')', ''); 1094 - var value_z = Blockly.Python.valueToCode( 1095 - block, 1096 - 'z', 1097 - Blockly.Python.ORDER_ATOMIC 1098 - ) 1099 - .replace('(', '') 1100 - .replace(')', ''); 1101 - var value_roll = Blockly.Python.valueToCode( 1102 - block, 1103 - 'roll', 1104 - Blockly.Python.ORDER_ATOMIC 1105 - ) 1106 - .replace('(', '') 1107 - .replace(')', ''); 1108 - var value_pitch = Blockly.Python.valueToCode( 1109 - block, 1110 - 'pitch', 1111 - Blockly.Python.ORDER_ATOMIC 1112 - ) 1113 - .replace('(', '') 1114 - .replace(')', ''); 1115 - var value_yaw = Blockly.Python.valueToCode( 1116 - block, 1117 - 'yaw', 1118 - Blockly.Python.ORDER_ATOMIC 1119 - ) 1120 - .replace('(', '') 1121 - .replace(')', ''); 1122 - 1123 - var code = 1124 - '[' + 1125 - value_x + 1126 - ', ' + 1127 - value_y + 1128 - ', ' + 1129 - value_z + 1130 - ', ' + 1131 - value_roll + 1132 - ', ' + 1133 - value_pitch + 1134 - ', ' + 1135 - value_yaw + 1136 - ']'; 1137 - return [code, Blockly.Python.ORDER_NONE]; 1138 - }; 1139 - 1140 - Blockly.Python['niryo_one_move_pose_from_pose'] = function (block) { 1141 - // Position object 1142 - var value_pose = Blockly.Python.valueToCode( 1143 - block, 1144 - 'POSE', 1145 - Blockly.Python.ORDER_ATOMIC 1146 - ); 1147 - value_pose = value_pose.replace('(', '').replace(')', ''); 1148 - 1149 - var code = 'n.move_pose(*' + value_pose + ')\n'; 1150 - return code; 1151 - }; 1152 - 1153 - Blockly.Python['niryo_one_pick_from_pose'] = function (block) { 1154 - // Position object 1155 - var value_pose = Blockly.Python.valueToCode( 1156 - block, 1157 - 'POSE', 1158 - Blockly.Python.ORDER_ATOMIC 1159 - ); 1160 - value_pose = value_pose.replace('(', '').replace(')', ''); 1161 - 1162 - var code = 'n.pick_from_pose(*' + value_pose + ')\n'; 1163 - return code; 1164 - }; 1165 - 1166 - Blockly.Python['niryo_one_place_from_pose'] = function (block) { 1167 - // Position object 1168 - var value_pose = Blockly.Python.valueToCode( 1169 - block, 1170 - 'POSE', 1171 - Blockly.Python.ORDER_ATOMIC 1172 - ); 1173 - value_pose = value_pose.replace('(', '').replace(')', ''); 1174 - 1175 - var code = 'n.place_from_pose(*' + value_pose + ')\n'; 1176 - return code; 1177 - }; 1178 - 1179 - // I/O 1180 - 1181 - Blockly.Python['niryo_one_gpio_state'] = function (block) { 1182 - var dropdown_gpio_state_select = block.getFieldValue('GPIO_STATE_SELECT'); 1183 - var code = dropdown_gpio_state_select; 1184 - return [code, Blockly.Python.ORDER_NONE]; 1185 - }; 1186 - 1187 - Blockly.Python['niryo_one_set_pin_mode'] = function (block) { 1188 - var value_pin = 1189 - Blockly.Python.valueToCode( 1190 - block, 1191 - 'SET_PIN_MODE_PIN', 1192 - Blockly.Python.ORDER_ATOMIC 1193 - ) || '(0)'; 1194 - value_pin = value_pin.replace('(', '').replace(')', ''); 1195 - var dropdown_pin_mode_select = block.getFieldValue('PIN_MODE_SELECT'); 1196 - var code = 1197 - 'n.pin_mode(' + value_pin + ', ' + dropdown_pin_mode_select + ')\n'; 1198 - return code; 1199 - }; 1200 - 1201 - Blockly.Python['niryo_one_digital_write'] = function (block) { 1202 - var value_pin = 1203 - Blockly.Python.valueToCode( 1204 - block, 1205 - 'DIGITAL_WRITE_PIN', 1206 - Blockly.Python.ORDER_ATOMIC 1207 - ) || '(0)'; 1208 - value_pin = value_pin.replace('(', '').replace(')', ''); 1209 - var dropdown_pin_write_select = block.getFieldValue('PIN_WRITE_SELECT'); 1210 - var code = 1211 - 'n.digital_write(' + value_pin + ', ' + dropdown_pin_write_select + ')\n'; 1212 - return code; 1213 - }; 1214 - 1215 - Blockly.Python['niryo_one_digital_read'] = function (block) { 1216 - var value_pin = 1217 - Blockly.Python.valueToCode( 1218 - block, 1219 - 'DIGITAL_READ_PIN', 1220 - Blockly.Python.ORDER_ATOMIC 1221 - ) || '(0)'; 1222 - value_pin = value_pin.replace('(', '').replace(')', ''); 1223 - var code = 'n.digital_read(' + value_pin + ')'; 1224 - return [code, Blockly.Python.ORDER_NONE]; 1225 - }; 1226 - 1227 - Blockly.Python['niryo_one_gpio_select'] = function (block) { 1228 - var dropdown_gpio_select = block.getFieldValue('GPIO_SELECT'); 1229 - var code = dropdown_gpio_select; 1230 - return [code, Blockly.Python.ORDER_NONE]; 1231 - }; 1232 - 1233 - Blockly.Python['niryo_one_sw_select'] = function (block) { 1234 - var dropdown_sw_select = block.getFieldValue('SW_SELECT'); 1235 - var code = dropdown_sw_select; 1236 - return [code, Blockly.Python.ORDER_NONE]; 1237 - }; 1238 - 1239 - Blockly.Python['niryo_one_set_12v_switch'] = function (block) { 1240 - var value_pin = 1241 - Blockly.Python.valueToCode( 1242 - block, 1243 - 'SET_12V_SWITCH', 1244 - Blockly.Python.ORDER_ATOMIC 1245 - ) || '(0)'; 1246 - value_pin = value_pin.replace('(', '').replace(')', ''); 1247 - var dropdown_set_12v_switch_select = block.getFieldValue( 1248 - 'SET_12V_SWITCH_SELECT' 1249 - ); 1250 - var code = 1251 - 'n.digital_write(' + 1252 - value_pin + 1253 - ', ' + 1254 - dropdown_set_12v_switch_select + 1255 - ')\n'; 1256 - return code; 1257 - }; 1258 - 1259 - // Tool 1260 - 1261 - Blockly.Python['niryo_one_tool_select'] = function (block) { 1262 - var dropdown_tool_select = block.getFieldValue('TOOL_SELECT'); 1263 - var code = dropdown_tool_select; 1264 - return [code, Blockly.Python.ORDER_NONE]; 1265 - }; 1266 - 1267 - Blockly.Python['niryo_one_change_tool'] = function (block) { 1268 - var value_tool_name = 1269 - Blockly.Python.valueToCode( 1270 - block, 1271 - 'NEW_TOOL_ID', 1272 - Blockly.Python.ORDER_ATOMIC 1273 - ) || '(TOOL_NONE)'; 1274 - value_tool_name = value_tool_name.replace('(', '').replace(')', ''); 1275 - var code = 'n.change_tool(' + value_tool_name + ')\n'; 1276 - return code; 1277 - }; 1278 - 1279 - Blockly.Python['niryo_one_detach_tool'] = function (block) { 1280 - var code = 'n.change_tool(0)\n'; 1281 - return code; 1282 - }; 1283 - 1284 - Blockly.Python['niryo_one_open_gripper'] = function (block) { 1285 - var value_gripper_id = 1286 - Blockly.Python.valueToCode( 1287 - block, 1288 - 'OPEN_GRIPPER_ID', 1289 - Blockly.Python.ORDER_ATOMIC 1290 - ) || '(TOOL_NONE)'; 1291 - value_gripper_id = value_gripper_id.replace('(', '').replace(')', ''); 1292 - var number_open_speed = block.getFieldValue('OPEN_SPEED'); 1293 - var code = 1294 - 'n.open_gripper(' + value_gripper_id + ', ' + number_open_speed + ')\n'; 1295 - return code; 1296 - }; 1297 - 1298 - Blockly.Python['niryo_one_close_gripper'] = function (block) { 1299 - var value_gripper_id = 1300 - Blockly.Python.valueToCode( 1301 - block, 1302 - 'CLOSE_GRIPPER_ID', 1303 - Blockly.Python.ORDER_ATOMIC 1304 - ) || '(TOOL_NONE)'; 1305 - value_gripper_id = value_gripper_id.replace('(', '').replace(')', ''); 1306 - var number_close_speed = block.getFieldValue('CLOSE_SPEED'); 1307 - var code = 1308 - 'n.close_gripper(' + value_gripper_id + ', ' + number_close_speed + ')\n'; 1309 - return code; 1310 - }; 1311 - 1312 - Blockly.Python['niryo_one_pull_air_vacuum_pump'] = function (block) { 1313 - var value_vacuum_pump_id = 1314 - Blockly.Python.valueToCode( 1315 - block, 1316 - 'PULL_AIR_VACUUM_PUMP_ID', 1317 - Blockly.Python.ORDER_ATOMIC 1318 - ) || '(TOOL_NONE)'; 1319 - value_vacuum_pump_id = value_vacuum_pump_id.replace('(', '').replace(')', ''); 1320 - var code = 'n.pull_air_vacuum_pump(' + value_vacuum_pump_id + ')\n'; 1321 - return code; 1322 - }; 1323 - 1324 - Blockly.Python['niryo_one_push_air_vacuum_pump'] = function (block) { 1325 - var value_vacuum_pump_id = 1326 - Blockly.Python.valueToCode( 1327 - block, 1328 - 'PUSH_AIR_VACUUM_PUMP_ID', 1329 - Blockly.Python.ORDER_ATOMIC 1330 - ) || '(TOOL_NONE)'; 1331 - value_vacuum_pump_id = value_vacuum_pump_id.replace('(', '').replace(')', ''); 1332 - var code = 'n.push_air_vacuum_pump(' + value_vacuum_pump_id + ')\n'; 1333 - return code; 1334 - }; 1335 - 1336 - Blockly.Python['niryo_one_setup_electromagnet'] = function (block) { 1337 - var value_electromagnet_id = 1338 - Blockly.Python.valueToCode( 1339 - block, 1340 - 'SETUP_ELECTROMAGNET_ID', 1341 - Blockly.Python.ORDER_ATOMIC 1342 - ) || '(TOOL_NONE)'; 1343 - value_electromagnet_id = value_electromagnet_id 1344 - .replace('(', '') 1345 - .replace(')', ''); 1346 - var value_electromagnet_pin = 1347 - Blockly.Python.valueToCode( 1348 - block, 1349 - 'SETUP_ELECTROMAGNET_PIN', 1350 - Blockly.Python.ORDER_ATOMIC 1351 - ) || '(0)'; 1352 - value_electromagnet_pin = value_electromagnet_pin 1353 - .replace('(', '') 1354 - .replace(')', ''); 1355 - var code = 1356 - 'n.setup_electromagnet(' + 1357 - value_electromagnet_id + 1358 - ', ' + 1359 - value_electromagnet_pin + 1360 - ')\n'; 1361 - return code; 1362 - }; 1363 - 1364 - Blockly.Python['niryo_one_activate_electromagnet'] = function (block) { 1365 - var value_electromagnet_id = 1366 - Blockly.Python.valueToCode( 1367 - block, 1368 - 'ACTIVATE_ELECTROMAGNET_ID', 1369 - Blockly.Python.ORDER_ATOMIC 1370 - ) || '(TOOL_NONE)'; 1371 - value_electromagnet_id = value_electromagnet_id 1372 - .replace('(', '') 1373 - .replace(')', ''); 1374 - var value_electromagnet_pin = 1375 - Blockly.Python.valueToCode( 1376 - block, 1377 - 'ACTIVATE_ELECTROMAGNET_PIN', 1378 - Blockly.Python.ORDER_ATOMIC 1379 - ) || '(0)'; 1380 - value_electromagnet_pin = value_electromagnet_pin 1381 - .replace('(', '') 1382 - .replace(')', ''); 1383 - var code = 1384 - 'n.activate_electromagnet(' + 1385 - value_electromagnet_id + 1386 - ', ' + 1387 - value_electromagnet_pin + 1388 - ')\n'; 1389 - return code; 1390 - }; 1391 - 1392 - Blockly.Python['niryo_one_deactivate_electromagnet'] = function (block) { 1393 - var value_electromagnet_id = 1394 - Blockly.Python.valueToCode( 1395 - block, 1396 - 'DEACTIVATE_ELECTROMAGNET_ID', 1397 - Blockly.Python.ORDER_ATOMIC 1398 - ) || '(TOOL_NONE)'; 1399 - value_electromagnet_id = value_electromagnet_id 1400 - .replace('(', '') 1401 - .replace(')', ''); 1402 - var value_electromagnet_pin = 1403 - Blockly.Python.valueToCode( 1404 - block, 1405 - 'DEACTIVATE_ELECTROMAGNET_PIN', 1406 - Blockly.Python.ORDER_ATOMIC 1407 - ) || '(0)'; 1408 - value_electromagnet_pin = value_electromagnet_pin 1409 - .replace('(', '') 1410 - .replace(')', ''); 1411 - var code = 1412 - 'n.deactivate_electromagnet(' + 1413 - value_electromagnet_id + 1414 - ', ' + 1415 - value_electromagnet_pin + 1416 - ')\n'; 1417 - return code; 1418 - }; 1419 - 1420 - // Utility 1421 - 1422 - Blockly.Python['niryo_one_sleep'] = function (block) { 1423 - var value_sleep_time = 1424 - Blockly.Python.valueToCode( 1425 - block, 1426 - 'SLEEP_TIME', 1427 - Blockly.Python.ORDER_ATOMIC 1428 - ) || '0'; 1429 - value_sleep_time = value_sleep_time.replace('(', '').replace(')', ''); 1430 - var code = 'n.wait(' + value_sleep_time + ')\n'; 1431 - return code; 1432 - }; 1433 - 1434 - Blockly.Python['niryo_one_comment'] = function (block) { 1435 - var text_comment_text = block.getFieldValue('COMMENT_TEXT'); 1436 - var code = ' #' + text_comment_text + '\n'; 1437 - return code; 1438 - }; 1439 - 1440 - Blockly.Python['niryo_one_break_point'] = function (block) { 1441 - var code = 'n.break_point()\n'; 1442 - return code; 1443 - }; 1444 - 1445 - // Vision 1446 - 1447 - Blockly.Python['niryo_one_vision_color'] = function (block) { 1448 - var dropdown_color_select = block.getFieldValue('COLOR_SELECT'); 1449 - var code = dropdown_color_select; 1450 - code = '"' + g_color_values[code] + '"'; 1451 - return [code, Blockly.Python.ORDER_NONE]; 1452 - }; 1453 - 1454 - Blockly.Python['niryo_one_vision_shape'] = function (block) { 1455 - var dropdown_shape_select = block.getFieldValue('SHAPE_SELECT'); 1456 - var code = dropdown_shape_select; 1457 - code = '"' + g_shape_values[code] + '"'; 1458 - return [code, Blockly.Python.ORDER_NONE]; 1459 - }; 1460 - 1461 - Blockly.Python['niryo_one_vision_pick'] = function (block) { 1462 - // Color (int) value (see g_shape_values at top of this file) 1463 - var value_color = 1464 - Blockly.Python.valueToCode( 1465 - block, 1466 - 'COLOR_SWITCH', 1467 - Blockly.Python.ORDER_ATOMIC 1468 - ) || '(0)'; 1469 - value_color = value_color.replace('(', '').replace(')', ''); 1470 - 1471 - // Shape (int) value (see g_shape_values at top of this file) 1472 - var value_shape = 1473 - Blockly.Python.valueToCode( 1474 - block, 1475 - 'SHAPE_SWITCH', 1476 - Blockly.Python.ORDER_ATOMIC 1477 - ) || '(0)'; 1478 - value_shape = value_shape.replace('(', '').replace(')', ''); 1479 - 1480 - // Name of workspace 1481 - var workspace_name = 1482 - Blockly.Python.valueToCode( 1483 - block, 1484 - 'WORKSPACE_NAME', 1485 - Blockly.Python.ORDER_ATOMIC 1486 - ) || '(0)'; 1487 - workspace_name = workspace_name.replace('(', '').replace(')', ''); 1488 - 1489 - // Height in centimeter 1490 - var height_offset = 1491 - Blockly.Python.valueToCode( 1492 - block, 1493 - 'HEIGHT_OFFSET', 1494 - Blockly.Python.ORDER_ATOMIC 1495 - ) || '(0)'; 1496 - height_offset = height_offset.replace('(', '').replace(')', ''); 1497 - 1498 - var code = 1499 - 'n.vision_pick(' + 1500 - workspace_name + 1501 - ', float(' + 1502 - height_offset + 1503 - ')/1000, ' + 1504 - value_shape + 1505 - ', ' + 1506 - value_color + 1507 - ')[0]'; 1508 - return [code, Blockly.Python.ORDER_NONE]; 1509 - }; 1510 - 1511 - Blockly.Python['niryo_one_vision_is_object_detected'] = function (block) { 1512 - // Color (int) value (see g_shape_values at top of this file) 1513 - var value_color = 1514 - Blockly.Python.valueToCode( 1515 - block, 1516 - 'COLOR_SWITCH', 1517 - Blockly.Python.ORDER_ATOMIC 1518 - ) || '(0)'; 1519 - value_color = value_color.replace('(', '').replace(')', ''); 1520 - 1521 - // Shape (int) value (see g_shape_values at top of this file) 1522 - var value_shape = 1523 - Blockly.Python.valueToCode( 1524 - block, 1525 - 'SHAPE_SWITCH', 1526 - Blockly.Python.ORDER_ATOMIC 1527 - ) || '(0)'; 1528 - value_shape = value_shape.replace('(', '').replace(')', ''); 1529 - 1530 - // Name of workspace 1531 - var workspace_name = 1532 - Blockly.Python.valueToCode( 1533 - block, 1534 - 'WORKSPACE_NAME', 1535 - Blockly.Python.ORDER_ATOMIC 1536 - ) || '(0)'; 1537 - workspace_name = workspace_name.replace('(', '').replace(')', ''); 1538 - 1539 - var code = 1540 - 'n.detect_object(' + 1541 - workspace_name + 1542 - ', ' + 1543 - value_shape + 1544 - ', ' + 1545 - value_color + 1546 - ')[0]'; 1547 - return [code, Blockly.Python.ORDER_NONE]; 1548 - }; 1549 - 1550 - // Conveyor 1551 - 1552 - Blockly.Python['niryo_one_conveyor_models'] = function (block) { 1553 - const conveyor_id_map = { 1554 - CONVEYOR_1: 6, 1555 - CONVEYOR_2: 7 1556 - }; 1557 - var conveyor_model_id = block.getFieldValue('CONVEYOR_SELECT'); 1558 - var code = conveyor_id_map[conveyor_model_id]; 1559 - return [code, Blockly.Python.ORDER_NONE]; 1560 - }; 1561 - 1562 - Blockly.Python['niryo_one_conveyor_use'] = function (block) { 1563 - var conveyor_id = 1564 - Blockly.Python.valueToCode( 1565 - block, 1566 - 'CONVEYOR_SWITCH', 1567 - Blockly.Python.ORDER_ATOMIC 1568 - ) || '(0)'; 1569 - conveyor_id = conveyor_id.replace('(', '').replace(')', ''); 1570 - var code = 'n.set_conveyor(' + conveyor_id + ', True)\n'; 1571 - return code; 1572 - }; 1573 - 1574 - Blockly.Python['niryo_one_conveyor_control'] = function (block) { 1575 - var conveyor_id = 1576 - Blockly.Python.valueToCode( 1577 - block, 1578 - 'CONVEYOR_SWITCH', 1579 - Blockly.Python.ORDER_ATOMIC 1580 - ) || '(0)'; 1581 - conveyor_id = conveyor_id.replace('(', '').replace(')', ''); 1582 - var speed_percent = 1583 - Blockly.Python.valueToCode( 1584 - block, 1585 - 'SPEED_PERCENT', 1586 - Blockly.Python.ORDER_ATOMIC 1587 - ) || '(0)'; 1588 - speed_percent = speed_percent.replace('(', '').replace(')', ''); 1589 - var direction = block.getFieldValue('DIRECTION_SELECT'); 1590 - var code = 1591 - 'n.control_conveyor(' + 1592 - conveyor_id + 1593 - ', True, ' + 1594 - speed_percent + 1595 - ', ' + 1596 - direction + 1597 - ')\n'; 1598 - return code; 1599 - }; 1600 - 1601 - Blockly.Python['niryo_one_conveyor_stop'] = function (block) { 1602 - var conveyor_id = 1603 - Blockly.Python.valueToCode( 1604 - block, 1605 - 'CONVEYOR_SWITCH', 1606 - Blockly.Python.ORDER_ATOMIC 1607 - ) || '(0)'; 1608 - conveyor_id = conveyor_id.replace('(', '').replace(')', ''); 1609 - var code = 'n.control_conveyor(' + conveyor_id + ', False, 0, 1)\n'; 1610 - return code; 1611 - }; 1612 - 1613 - // Creating a toolbox containing all the main (default) blocks. 1614 - const TOOLBOX = { 1615 - kind: 'categoryToolbox', 1616 - contents: [ 1617 - { 1618 - kind: 'category', 1619 - name: 'Logic', 1620 - colour: '210', 1621 - contents: [ 1622 - { 1623 - kind: 'block', 1624 - type: 'controls_if' 1625 - }, 1626 - { 1627 - kind: 'BLOCK', 1628 - type: 'logic_compare' 1629 - }, 1630 - { 1631 - kind: 'BLOCK', 1632 - blockxml: '<block type="logic_operation"></block>', 1633 - type: 'logic_operation' 1634 - }, 1635 - { 1636 - kind: 'BLOCK', 1637 - blockxml: '<block type="logic_negate"></block>', 1638 - type: 'logic_negate' 1639 - }, 1640 - { 1641 - kind: 'BLOCK', 1642 - blockxml: '<block type="logic_boolean"></block>', 1643 - type: 'logic_boolean' 1644 - }, 1645 - { 1646 - kind: 'BLOCK', 1647 - blockxml: '<block type="logic_null"></block>', 1648 - type: 'logic_null' 1649 - }, 1650 - { 1651 - kind: 'BLOCK', 1652 - blockxml: '<block type="logic_ternary"></block>', 1653 - type: 'logic_ternary' 1654 - } 1655 - ] 1656 - }, 1657 - { 1658 - kind: 'category', 1659 - name: 'Loops', 1660 - colour: '120', 1661 - contents: [ 1662 - { 1663 - kind: 'BLOCK', 1664 - blockxml: 1665 - '<block type="controls_repeat_ext">\n <value name="TIMES">\n <shadow type="math_number">\n <field name="NUM">10</field>\n </shadow>\n </value>\n </block>', 1666 - type: 'controls_repeat_ext' 1667 - }, 1668 - { 1669 - kind: 'BLOCK', 1670 - blockxml: '<block type="controls_whileUntil"></block>', 1671 - type: 'controls_whileUntil' 1672 - }, 1673 - { 1674 - kind: 'BLOCK', 1675 - blockxml: 1676 - '<block type="controls_for">\n <value name="FROM">\n <shadow type="math_number">\n <field name="NUM">1</field>\n </shadow>\n </value>\n <value name="TO">\n <shadow type="math_number">\n <field name="NUM">10</field>\n </shadow>\n </value>\n <value name="BY">\n <shadow type="math_number">\n <field name="NUM">1</field>\n </shadow>\n </value>\n </block>', 1677 - type: 'controls_for' 1678 - }, 1679 - { 1680 - kind: 'BLOCK', 1681 - blockxml: '<block type="controls_forEach"></block>', 1682 - type: 'controls_forEach' 1683 - }, 1684 - { 1685 - kind: 'BLOCK', 1686 - blockxml: '<block type="controls_flow_statements"></block>', 1687 - type: 'controls_flow_statements' 1688 - } 1689 - ] 1690 - }, 1691 - { 1692 - kind: 'CATEGORY', 1693 - name: 'Math', 1694 - colour: '230', 1695 - contents: [ 1696 - { 1697 - kind: 'BLOCK', 1698 - blockxml: '<block type="math_number"></block>', 1699 - type: 'math_number' 1700 - }, 1701 - { 1702 - kind: 'BLOCK', 1703 - blockxml: 1704 - '<block type="math_arithmetic">\n <value name="A">\n <shadow type="math_number">\n <field name="NUM">1</field>\n </shadow>\n </value>\n <value name="B">\n <shadow type="math_number">\n <field name="NUM">1</field>\n </shadow>\n </value>\n </block>', 1705 - type: 'math_arithmetic' 1706 - }, 1707 - { 1708 - kind: 'BLOCK', 1709 - blockxml: 1710 - '<block type="math_single">\n <value name="NUM">\n <shadow type="math_number">\n <field name="NUM">9</field>\n </shadow>\n </value>\n </block>', 1711 - type: 'math_single' 1712 - }, 1713 - { 1714 - kind: 'BLOCK', 1715 - blockxml: 1716 - '<block type="math_trig">\n <value name="NUM">\n <shadow type="math_number">\n <field name="NUM">45</field>\n </shadow>\n </value>\n </block>', 1717 - type: 'math_trig' 1718 - }, 1719 - { 1720 - kind: 'BLOCK', 1721 - blockxml: '<block type="math_constant"></block>', 1722 - type: 'math_constant' 1723 - }, 1724 - { 1725 - kind: 'BLOCK', 1726 - blockxml: 1727 - '<block type="math_number_property">\n <value name="NUMBER_TO_CHECK">\n <shadow type="math_number">\n <field name="NUM">0</field>\n </shadow>\n </value>\n </block>', 1728 - type: 'math_number_property' 1729 - }, 1730 - { 1731 - kind: 'BLOCK', 1732 - blockxml: 1733 - '<block type="math_change">\n <value name="DELTA">\n <shadow type="math_number">\n <field name="NUM">1</field>\n </shadow>\n </value>\n </block>', 1734 - type: 'math_change' 1735 - }, 1736 - { 1737 - kind: 'BLOCK', 1738 - blockxml: 1739 - '<block type="math_round">\n <value name="NUM">\n <shadow type="math_number">\n <field name="NUM">3.1</field>\n </shadow>\n </value>\n </block>', 1740 - type: 'math_round' 1741 - }, 1742 - { 1743 - kind: 'BLOCK', 1744 - blockxml: '<block type="math_on_list"></block>', 1745 - type: 'math_on_list' 1746 - }, 1747 - { 1748 - kind: 'BLOCK', 1749 - blockxml: 1750 - '<block type="math_modulo">\n <value name="DIVIDEND">\n <shadow type="math_number">\n <field name="NUM">64</field>\n </shadow>\n </value>\n <value name="DIVISOR">\n <shadow type="math_number">\n <field name="NUM">10</field>\n </shadow>\n </value>\n </block>', 1751 - type: 'math_modulo' 1752 - }, 1753 - { 1754 - kind: 'BLOCK', 1755 - blockxml: 1756 - '<block type="math_constrain">\n <value name="VALUE">\n <shadow type="math_number">\n <field name="NUM">50</field>\n </shadow>\n </value>\n <value name="LOW">\n <shadow type="math_number">\n <field name="NUM">1</field>\n </shadow>\n </value>\n <value name="HIGH">\n <shadow type="math_number">\n <field name="NUM">100</field>\n </shadow>\n </value>\n </block>', 1757 - type: 'math_constrain' 1758 - }, 1759 - { 1760 - kind: 'BLOCK', 1761 - blockxml: 1762 - '<block type="math_random_int">\n <value name="FROM">\n <shadow type="math_number">\n <field name="NUM">1</field>\n </shadow>\n </value>\n <value name="TO">\n <shadow type="math_number">\n <field name="NUM">100</field>\n </shadow>\n </value>\n </block>', 1763 - type: 'math_random_int' 1764 - }, 1765 - { 1766 - kind: 'BLOCK', 1767 - blockxml: '<block type="math_random_float"></block>', 1768 - type: 'math_random_float' 1769 - } 1770 - ] 1771 - }, 1772 - { 1773 - kind: 'CATEGORY', 1774 - name: 'Text', 1775 - colour: '160', 1776 - contents: [ 1777 - { 1778 - kind: 'BLOCK', 1779 - blockxml: '<block type="text"></block>', 1780 - type: 'text' 1781 - }, 1782 - { 1783 - kind: 'BLOCK', 1784 - blockxml: '<block type="text_join"></block>', 1785 - type: 'text_join' 1786 - }, 1787 - { 1788 - kind: 'BLOCK', 1789 - blockxml: 1790 - '<block type="text_append">\n <value name="TEXT">\n <shadow type="text"></shadow>\n </value>\n </block>', 1791 - type: 'text_append' 1792 - }, 1793 - { 1794 - kind: 'BLOCK', 1795 - blockxml: 1796 - '<block type="text_length">\n <value name="VALUE">\n <shadow type="text">\n <field name="TEXT">abc</field>\n </shadow>\n </value>\n </block>', 1797 - type: 'text_length' 1798 - }, 1799 - { 1800 - kind: 'BLOCK', 1801 - blockxml: 1802 - '<block type="text_isEmpty">\n <value name="VALUE">\n <shadow type="text">\n <field name="TEXT"></field>\n </shadow>\n </value>\n </block>', 1803 - type: 'text_isEmpty' 1804 - }, 1805 - { 1806 - kind: 'BLOCK', 1807 - blockxml: 1808 - '<block type="text_indexOf">\n <value name="VALUE">\n <block type="variables_get">\n <field name="VAR">text</field>\n </block>\n </value>\n <value name="FIND">\n <shadow type="text">\n <field name="TEXT">abc</field>\n </shadow>\n </value>\n </block>', 1809 - type: 'text_indexOf' 1810 - }, 1811 - { 1812 - kind: 'BLOCK', 1813 - blockxml: 1814 - '<block type="text_charAt">\n <value name="VALUE">\n <block type="variables_get">\n <field name="VAR">text</field>\n </block>\n </value>\n </block>', 1815 - type: 'text_charAt' 1816 - }, 1817 - { 1818 - kind: 'BLOCK', 1819 - blockxml: 1820 - '<block type="text_getSubstring">\n <value name="STRING">\n <block type="variables_get">\n <field name="VAR">text</field>\n </block>\n </value>\n </block>', 1821 - type: 'text_getSubstring' 1822 - }, 1823 - { 1824 - kind: 'BLOCK', 1825 - blockxml: 1826 - '<block type="text_changeCase">\n <value name="TEXT">\n <shadow type="text">\n <field name="TEXT">abc</field>\n </shadow>\n </value>\n </block>', 1827 - type: 'text_changeCase' 1828 - }, 1829 - { 1830 - kind: 'BLOCK', 1831 - blockxml: 1832 - '<block type="text_trim">\n <value name="TEXT">\n <shadow type="text">\n <field name="TEXT">abc</field>\n </shadow>\n </value>\n </block>', 1833 - type: 'text_trim' 1834 - }, 1835 - { 1836 - kind: 'BLOCK', 1837 - blockxml: 1838 - '<block type="text_print">\n <value name="TEXT">\n <shadow type="text">\n <field name="TEXT">abc</field>\n </shadow>\n </value>\n </block>', 1839 - type: 'text_print' 1840 - }, 1841 - { 1842 - kind: 'BLOCK', 1843 - blockxml: 1844 - '<block type="text_prompt_ext">\n <value name="TEXT">\n <shadow type="text">\n <field name="TEXT">abc</field>\n </shadow>\n </value>\n </block>', 1845 - type: 'text_prompt_ext' 1846 - } 1847 - ] 1848 - }, 1849 - { 1850 - kind: 'CATEGORY', 1851 - name: 'Lists', 1852 - colour: '260', 1853 - contents: [ 1854 - { 1855 - kind: 'BLOCK', 1856 - blockxml: 1857 - '<block type="lists_create_with">\n <mutation items="0"></mutation>\n </block>', 1858 - type: 'lists_create_with' 1859 - }, 1860 - { 1861 - kind: 'BLOCK', 1862 - blockxml: '<block type="lists_create_with"></block>', 1863 - type: 'lists_create_with' 1864 - }, 1865 - { 1866 - kind: 'BLOCK', 1867 - blockxml: 1868 - '<block type="lists_repeat">\n <value name="NUM">\n <shadow type="math_number">\n <field name="NUM">5</field>\n </shadow>\n </value>\n </block>', 1869 - type: 'lists_repeat' 1870 - }, 1871 - { 1872 - kind: 'BLOCK', 1873 - blockxml: '<block type="lists_length"></block>', 1874 - type: 'lists_length' 1875 - }, 1876 - { 1877 - kind: 'BLOCK', 1878 - blockxml: '<block type="lists_isEmpty"></block>', 1879 - type: 'lists_isEmpty' 1880 - }, 1881 - { 1882 - kind: 'BLOCK', 1883 - blockxml: 1884 - '<block type="lists_indexOf">\n <value name="VALUE">\n <block type="variables_get">\n <field name="VAR">list</field>\n </block>\n </value>\n </block>', 1885 - type: 'lists_indexOf' 1886 - }, 1887 - { 1888 - kind: 'BLOCK', 1889 - blockxml: 1890 - '<block type="lists_getIndex">\n <value name="VALUE">\n <block type="variables_get">\n <field name="VAR">list</field>\n </block>\n </value>\n </block>', 1891 - type: 'lists_getIndex' 1892 - }, 1893 - { 1894 - kind: 'BLOCK', 1895 - blockxml: 1896 - '<block type="lists_setIndex">\n <value name="LIST">\n <block type="variables_get">\n <field name="VAR">list</field>\n </block>\n </value>\n </block>', 1897 - type: 'lists_setIndex' 1898 - }, 1899 - { 1900 - kind: 'BLOCK', 1901 - blockxml: 1902 - '<block type="lists_getSublist">\n <value name="LIST">\n <block type="variables_get">\n <field name="VAR">list</field>\n </block>\n </value>\n </block>', 1903 - type: 'lists_getSublist' 1904 - }, 1905 - { 1906 - kind: 'BLOCK', 1907 - blockxml: 1908 - '<block type="lists_split">\n <value name="DELIM">\n <shadow type="text">\n <field name="TEXT">,</field>\n </shadow>\n </value>\n </block>', 1909 - type: 'lists_split' 1910 - }, 1911 - { 1912 - kind: 'BLOCK', 1913 - blockxml: '<block type="lists_sort"></block>', 1914 - type: 'lists_sort' 1915 - } 1916 - ] 1917 - }, 1918 - { 1919 - kind: 'CATEGORY', 1920 - name: 'Color', 1921 - colour: '20', 1922 - contents: [ 1923 - { 1924 - kind: 'BLOCK', 1925 - blockxml: '<block type="colour_picker"></block>', 1926 - type: 'colour_picker' 1927 - }, 1928 - { 1929 - kind: 'BLOCK', 1930 - blockxml: '<block type="colour_random"></block>', 1931 - type: 'colour_random' 1932 - }, 1933 - { 1934 - kind: 'BLOCK', 1935 - blockxml: 1936 - '<block type="colour_rgb">\n <value name="RED">\n <shadow type="math_number">\n <field name="NUM">100</field>\n </shadow>\n </value>\n <value name="GREEN">\n <shadow type="math_number">\n <field name="NUM">50</field>\n </shadow>\n </value>\n <value name="BLUE">\n <shadow type="math_number">\n <field name="NUM">0</field>\n </shadow>\n </value>\n </block>', 1937 - type: 'colour_rgb' 1938 - }, 1939 - { 1940 - kind: 'BLOCK', 1941 - blockxml: 1942 - '<block type="colour_blend">\n <value name="COLOUR1">\n <shadow type="colour_picker">\n <field name="COLOUR">#ff0000</field>\n </shadow>\n </value>\n <value name="COLOUR2">\n <shadow type="colour_picker">\n <field name="COLOUR">#3333ff</field>\n </shadow>\n </value>\n <value name="RATIO">\n <shadow type="math_number">\n <field name="NUM">0.5</field>\n </shadow>\n </value>\n </block>', 1943 - type: 'colour_blend' 1944 - } 1945 - ] 1946 - }, 1947 - { 1948 - kind: 'SEP' 1949 - }, 1950 - { 1951 - kind: 'CATEGORY', 1952 - colour: '330', 1953 - custom: 'VARIABLE', 1954 - name: 'Variables' 1955 - }, 1956 - { 1957 - kind: 'CATEGORY', 1958 - colour: '290', 1959 - custom: 'PROCEDURE', 1960 - name: 'Functions' 1961 - }, 1962 - { 1963 - kind: 'SEP' 1964 - }, 1965 - { 1966 - kind: 'CATEGORY', 1967 - colour: '210', 1968 - name: 'Niryo', 1969 - contents: [ 1970 - { 1971 - kind: 'BLOCK', 1972 - type: 'niryo_one_connect' 1973 - }, 1974 - { 1975 - kind: 'BLOCK', 1976 - type: 'niryo_one_move_joints' 1977 - }, 1978 - { 1979 - kind: 'BLOCK', 1980 - type: 'niryo_one_move_pose' 1981 - }, 1982 - { 1983 - kind: 'BLOCK', 1984 - type: 'niryo_one_shift_pose' 1985 - }, 1986 - { 1987 - kind: 'BLOCK', 1988 - type: 'niryo_one_set_arm_max_speed' 1989 - }, 1990 - { 1991 - kind: 'BLOCK', 1992 - type: 'niryo_one_calibrate_auto' 1993 - }, 1994 - { 1995 - kind: 'BLOCK', 1996 - type: 'niryo_one_calibrate_manual' 1997 - }, 1998 - { 1999 - kind: 'BLOCK', 2000 - type: 'niryo_one_activate_learning_mode' 2001 - }, 2002 - { 2003 - kind: 'BLOCK', 2004 - type: 'niryo_one_joint' 2005 - }, 2006 - { 2007 - kind: 'BLOCK', 2008 - type: 'niryo_one_move_joint_from_joint' 2009 - }, 2010 - { 2011 - kind: 'BLOCK', 2012 - type: 'niryo_one_move_pose_from_pose' 2013 - }, 2014 - { 2015 - kind: 'BLOCK', 2016 - type: 'niryo_one_pose' 2017 - }, 2018 - { 2019 - kind: 'BLOCK', 2020 - type: 'niryo_one_move_pose_from_pose' 2021 - }, 2022 - { 2023 - kind: 'BLOCK', 2024 - type: 'niryo_one_pick_from_pose' 2025 - }, 2026 - { 2027 - kind: 'BLOCK', 2028 - type: 'niryo_one_place_from_pose' 2029 - }, 2030 - { 2031 - kind: 'BLOCK', 2032 - type: 'niryo_one_gpio_select' 2033 - }, 2034 - { 2035 - kind: 'BLOCK', 2036 - type: 'niryo_one_set_pin_mode' 2037 - }, 2038 - { 2039 - kind: 'BLOCK', 2040 - type: 'niryo_one_digital_write' 2041 - }, 2042 - { 2043 - kind: 'BLOCK', 2044 - type: 'niryo_one_digital_read' 2045 - }, 2046 - { 2047 - kind: 'BLOCK', 2048 - type: 'niryo_one_gpio_state' 2049 - }, 2050 - { 2051 - kind: 'BLOCK', 2052 - type: 'niryo_one_sw_select' 2053 - }, 2054 - { 2055 - kind: 'BLOCK', 2056 - type: 'niryo_one_set_12v_switch' 2057 - }, 2058 - { 2059 - kind: 'BLOCK', 2060 - type: 'niryo_one_tool_select' 2061 - }, 2062 - { 2063 - kind: 'BLOCK', 2064 - type: 'niryo_one_change_tool' 2065 - }, 2066 - { 2067 - kind: 'BLOCK', 2068 - type: 'niryo_one_detach_tool' 2069 - }, 2070 - { 2071 - kind: 'BLOCK', 2072 - type: 'niryo_one_open_gripper' 2073 - }, 2074 - { 2075 - kind: 'BLOCK', 2076 - type: 'niryo_one_close_gripper' 2077 - }, 2078 - { 2079 - kind: 'BLOCK', 2080 - type: 'niryo_one_pull_air_vacuum_pump' 2081 - }, 2082 - { 2083 - kind: 'BLOCK', 2084 - type: 'niryo_one_push_air_vacuum_pump' 2085 - }, 2086 - { 2087 - kind: 'BLOCK', 2088 - type: 'niryo_one_setup_electromagnet' 2089 - }, 2090 - { 2091 - kind: 'BLOCK', 2092 - type: 'niryo_one_activate_electromagnet' 2093 - }, 2094 - { 2095 - kind: 'BLOCK', 2096 - type: 'niryo_one_deactivate_electromagnet' 2097 - }, 2098 - { 2099 - kind: 'BLOCK', 2100 - type: 'niryo_one_sleep' 2101 - }, 2102 - { 2103 - kind: 'BLOCK', 2104 - type: 'niryo_one_comment' 2105 - }, 2106 - { 2107 - kind: 'BLOCK', 2108 - type: 'niryo_one_break_point' 2109 - }, 2110 - { 2111 - kind: 'BLOCK', 2112 - type: 'niryo_one_vision_color' 2113 - }, 2114 - { 2115 - kind: 'BLOCK', 2116 - type: 'niryo_one_vision_shape' 2117 - }, 2118 - { 2119 - kind: 'BLOCK', 2120 - type: 'niryo_one_vision_pick' 2121 - }, 2122 - { 2123 - kind: 'BLOCK', 2124 - type: 'niryo_one_vision_is_object_detected' 2125 - }, 2126 - { 2127 - kind: 'BLOCK', 2128 - type: 'niryo_one_conveyor_models' 2129 - }, 2130 - { 2131 - kind: 'BLOCK', 2132 - type: 'niryo_one_conveyor_use' 2133 - }, 2134 - { 2135 - kind: 'BLOCK', 2136 - type: 'niryo_one_conveyor_control' 2137 - }, 2138 - { 2139 - kind: 'BLOCK', 2140 - type: 'niryo_one_conveyor_stop' 2141 - } 2142 - ] 2143 - } 2144 - ] 2145 - }; 2146 - 2147 - const BlocklyNiryo = { 2148 - Blocks: Blockly.Blocks, 2149 - Generator: Blockly.Python, 2150 - Toolbox: TOOLBOX 2151 - }; 2152 - 2153 - export default BlocklyNiryo;
+1 -1
tsconfig.json
··· 18 18 "target": "es2017", 19 19 "types": [] 20 20 }, 21 - "include": ["src/**/*.ts", "src/**/*.js", "src/**/*.tsx", "style/icons"], 21 + "include": ["src/**/*.ts", "src/**/*.tsx", "style/icons"], 22 22 "exclude": ["node_modules"] 23 23 }