青海快三下载 » TurtleBot-Blockly教程 » TurtleBot-Blockly入门教程-创建带输入的block

青海快三玩法:TurtleBot-Blockly入门教程-创建带输入的block

青海快三下载 www.41pi3.cn TurtleBot-Blockly入门教程-创建带输入的block

说明:

  • 介绍如何编写带输入功能的block
  • block类型有三种:
    • 带输入的block
    • 带输出的block
    • 不带输入或输出的block

带输入的block:

  • 涉及的两个文件:
turtlebot_blockly/frontend/blockly/generators/python/customName.js
turtlebot_blockly/frontend/blockly/blocks/customName.js
  • 我们将看到move_forward块的同一个例子。
  • ../generators/python/customName.js中的文件具有以下代码
Blockly.Python['move_forward'] = function(block) {

var dropdown_speed = block.getFieldValue('speed');

var code = "";
code += "dropdown_speed = \"" + dropdown_speed.toString() + "\"\n";
code += Blockly.readPythonFile("../blockly/generators/python/scripts/turtlebot3/move_forward.py");
return code;

};
  • 下面的代码片段为用户提供了速度{SLOW,NORMAL或FAST}的值。
var dropdown_speed = block.getFieldValue('speed');
  • 位置../blockly/blocks/customName.js中的.js文件具有以下代码
Blockly.Blocks['move_forward'] = {
  init: function() {
    this.appendDummyInput()
        .appendField("Move_Forward ")
        .appendField(new Blockly.FieldDropdown([["SLOW", "SLOW"], ["NORMAL", "NORMAL"], ["FAST", "FAST"]]), "speed")
        .appendField("Speed");
    this.setPreviousStatement(true);
    this.setNextStatement(true);
    this.setColour(65);
    this.setTooltip('');
    this.setHelpUrl('//erlerobotics.com/docs/Robot_Operating_System/ROS/Blockly/Intro.html');
  }
};
  • 除了输入来自用户的速度值之外,我们还看到以下内容:
this.setPreviousStatement(true);
this.setNextStatement(true);
  • 这两行为块提供了连接前一块和未来块的方法。
  • 如图:

请输入图片描述

  • 重复块连接到move_forward块再次连接到Wait块。
  • 该组块的python脚本是:
for count in range(2):
  dropdown_speed = "SLOW"
  import rospy, sys
  import time
  from geometry_msgs.msg import Twist

  pub = rospy.Publisher('cmd_vel', Twist, queue_size=10)
  #rospy.init_node('circle_mode', anonymous=True)
  rate = rospy.Rate(10) # 10Hz
  twist = Twist()
  start = time.time()
  flag=True #time flag
  # Angular velocity = linear velocity / radius
  speed=dropdown_speed # SLOW, NORMAL, FAST
  twist.linear.z = 0.00

  # CLOCKWISE rotation
  if speed =='SLOW':
      twist.linear.y = 0.05
      twist.linear.x = 0.05
  elif speed =='NORMAL':
      twist.linear.y = 0.25
      twist.linear.x = 0.25
  elif speed == 'FAST':
      twist.linear.y = 0.75
      twist.linear.x = 0.75
  while not rospy.is_shutdown() and flag:
      sample_time=time.time()
      if ((sample_time - start) > 3):
        flag=False
      pub.publish(twist)
  twist = Twist()
  pub.publish(twist)
  rate.sleep()
  import time
  time.sleep(3)

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: turtlebot-blockly入门教程

  • 游泳池水质可手机扫码查询 数据5分钟更新一次 2019-05-02
  • 楼顶建起1.7万平方米运动场   “8D重庆”又现网红建筑 2019-04-29
  • 涂颜淼:转变思维 做新时代的消防战士 2019-04-29
  • 扫码有风险,公众需警惕 2019-04-20
  • 计划确定之后,还需要落实,就要求计划所涵盖的所有因素都按预订的方案对接转化,尤其是计划所涉及的人一定要达到相应的要求并严格按计划开展活动…… 2019-04-20
  • 所以,让你和你的四两吓坏了![微笑] 2019-04-19
  • 喝了这药真的必死无疑了吗? 2019-04-14
  • 东莞高考泄题?假的! 2019-04-14
  • 总榜第一!大洋网总有惊喜要给你,请足够相信 2019-04-13
  • 久久为功,扎实推进生态宜居的美丽乡村建设 2019-04-13
  • “白色污染”怎么治 网友:塑料垃圾为何屡禁不止 2019-03-30
  • 默滕斯建功卢卡库梅开二度 比利时3 2019-03-30
  • 在这里,医生一起撸串 2019-03-28
  • 1至5月我区为企业和社会减负4200余万元 2019-03-28
  • 大豆自己种,芯片自己造 2019-03-20
  • 974| 861| 154| 907| 342| 513| 807| 423| 696| 757|