一  什么是Buzz?

Buzz是一种面向异构机器人集群的编程语言,允许用户用简洁的脚本来表达复杂的群体行为。

它是基于C语言开发,可用于任何类型的机器人软件,可与ROS框架集成(例如RosBuzz)。

目前支持支持Linux 和 MacOSX系统。

在群体内,bytecode字节码文件会被上传到群内不同机器人上,每个机器人的BVM(Buzz Virtual Machine)会执行该字节码文件。Buzz的调试文件与字节码文件分离,节省了机器人上运行内存。

Buzz是基于ARGos模拟器开发调试的。

二  Buzz相关概念

离散群:群被视为离散的机器人集合,每个机器人独立运行BVM和Bytecode。

按步执行:每一步包含四个阶段,包括处理接收到的消息、读取传感器数据、执行step脚本、广播消息。在过程中,必须设置每步的长度,便于启动下一步之前终止上一步的所有阶段。

通信模型:Buzz假设群内的所有机器人能够通过位置通信来交换信息。位置通信是一种基于gossip的信息交换形式,在这种方式中,机器人在接收到消息后能够估计消息源的相对位置。

三  Buzz脚本的编译与执行

工具:bzzparse、buzzasm、bzzdeasm、bzzc、bzzrun

文件:*.bzz(Buzz脚本代码文件,Buzz Script)、*.bo(字节码文件)、*.bdb(调试信息文件)、*.basm(汇编文件)

编译过程:(假设Buzz脚本代码文件为A.bzz)

1)bzzparse命令将A.bzz脚本代码文件编译为A.basm汇编文件;

2)bzzasm命令将A.basm汇编文件编译为A.bo字节码文件和A.bdb调试信息文件;(bzzdeasm是bzzasm的反编译过程)

bzzc命令综合了bzzparse命令和bzzasm命令,也就是说,可以通过 $ bzzc A.bzz 命令直接编译出A.bo和A.bdb文件。

机器人执行命令:$ bzzrun A.bo A.bdb (-trace参数用于输出堆栈信息,-I 参数用于添加依赖的bzz文件路径)

四  运行Buzz第一个案例(群体梯度距离计算)

1)编写Buzz脚本代码testgradient.bzz
function init() {if(id == 0) {# Source robotmydist = 0.}else {# Other robotsmydist = 1000.# Listen to other robots' distancesneighbors.listen("dist_to_source",function(value_id, value, robot_id) {log("ROBOT ", id, ": value = ", value, " from robot ", robot_id, " at ", neighbors.get(robot_id).distance)mydist = math.min(mydist,neighbors.get(robot_id).distance + value)log("ROBOT ", id, ": mydist is now ", mydist)})}
}function step() {neighbors.broadcast("dist_to_source", mydist)log("ROBOT ", id, ": mydist = ", mydist)
}function destroy() {
}

mydist是本机器人到源机器人的距离,源机器人是id=0的机器人;

ARGos模拟器会按步执行调用step方法,step方法发送本机器人的全局变量mydist;

本机器人侦听邻居机器人发送过来的“dist_to_source”数据,计算并更新本地mydist;

2) 编译脚本代码:$ bzzc testgradient.bzz

3) 配置ARGos模拟器实验文件testgradient.argos(详细配置文件参考src/testing/test_experiment.argos文件)

3.1)配置控制器

<controllers><buzz_controller_footbot id="bcf"><actuators><differential_steering implementation="default" /><leds                  implementation="default" medium="leds" /><range_and_bearing implementation="default" /></actuators><sensors><range_and_bearing implementation="medium" medium="rab" show_rays="true" noise_std_dev="0" /></sensors><params bytecode_file="testgradient.bo" debug_file="testgradient.bdb"/></buzz_controller_footbot>
</controllers>

<params>用于指定argos要执行的buzz脚本。

3.2)配置场景机器人

  <arena size="50, 50, 4" center="0,0,2"><distribute><position method="uniform" min="-2,-2,0" max="2,2,0" /><orientation method="gaussian" mean="0,0,0" std_dev="360,0,0" /><entity quantity="6" max_trials="100"><foot-bot id="fb" rab_data_size="100"><controller config="bcf" /></foot-bot></entity></distribute></arena>

场景中6个foot-bot机器人,位置均匀分布在[-2,-2,0]和[2,2,0]的范围内,方向高斯分布在[0,0,0]和[360,0,0]的范围内,控制器使用第一步中定义的bcf控制器。

3.3)配置Buzz编辑器

  <visualization><qt-opengl><user_functions label="buzz_qt" /></qt-opengl></visualization>

4)启动argos模拟器,执行Buzz脚本

命令: $ argos3 –c testgradient.argos

按步执行结果:

结束!!!

【Buzz】简介及第一个案例相关推荐

  1. SpringMVC简介及第一个MVC程序

    文章目录 SpringMVC 一. 关于SpringMVC 1.MVC 2.Spring 1.Spring简介 2.Spring的7个模块 3.Spring优点 4.Spring核心机制 5.Spri ...

  2. C++桌面应用开发(Qt学习)--Qt简介及第一个Qt程序

    Qt简介 历史: 1991 奇趣科技 优点:跨平台:接口简单,易上手:简化了内存管理操作 成功案例:Linux桌面环境:WPS:谷歌地图等 创建一个Qt程序 点击创建项目后,选择项目路径以及给项目起名 ...

  3. 【概念简介】编辑器及第一个Javas cript程序

    [概念简介]编辑器及第一个Javas cript程序 Javas cript编辑器 在编写Javas cript代码的过程中,一款好的编辑器能让我们事半功倍.目前市面上流行的Javas cript编辑 ...

  4. 从一个案例看系统优化

    10月27日,由子衿技术团队首席架构师白鳝(徐戟)老师在"DBA+南京群"进行了一次关于"从一个案例看系统优化"的线上主题分享.小编特别整理出其中精华内容,供大 ...

  5. 2020车载凯立德懒人包下载_华为HarmonyOS App开发工具DevEco Studio下载安装及第一个HarmonyOS App实战教程...

    2020年9月10日,华为开发者大会发布了鸿蒙(HarmonyOS)2.0.HarmonyOS是一套全场景操作系统.从理论上讲,HarmonyOS可以在任何平台上运行(包括但不限于PC.手机.平板电脑 ...

  6. 【Vue3.0】Vue3.0简介-指令-过滤器-案例D2.0

    [Vue3.0]Vue3.0简介-指令-过滤器-案例 一.Vue3.0简介 1.1.vue3.0与vue2.0对比 vue2.0中绝大多数的API与特性,在vue3.0中同样支持.但是vue3.0中新 ...

  7. DL之HNN:Hopfield神经网络(HNN之DHNN、CHNN)的相关论文、简介、使用案例之详细攻略

    DL之HNN:Hopfield神经网络(HNN之DHNN.CHNN)的相关论文.简介.使用案例之详细攻略 导读:Hopfield神经网络(HNN)是一种具有循环.递归特性,结合存储和二元系统的神经网络 ...

  8. 【操作系统】HarmonyOS App开发工具HUAWEI DevEco Studio下载安装及第一个HarmonyOS App实战教程

    路标 DevEco Studio简介 DevEco Studio的下载安装 安装过程演示 开发第一个基于Java的TV App 微信公众号原文链接:点击查看 2020年9月10日,华为开发者大会发布了 ...

  9. 华为HarmonyOS App开发工具DevEco Studio下载安装及第一个HarmonyOS App实战教程

    路标 DevEco Studio简介 DevEco Studio的下载安装 安装过程演示 开发第一个基于Java的TV App 微信公众号原文链接:点击查看 2020年9月10日,华为开发者大会发布了 ...

  10. JUnit基础及第一个单元测试实例(JUnit3.8)

    JUnit基础及第一个单元测试实例(JUnit3.8) 单元测试 单元测试(unit testing) ,是指对软件中的最小可测试单元进行检查和验证. 单元测试不是为了证明您是对的,而是为了证明您没有 ...

最新文章

  1. python基础知识整理 第二节:容器(list tuple dict)
  2. 【播放器SDK】Android如何实现固定竖屏播放视频
  3. Linux基础系列(四)系统用户和组管理
  4. 2021年春季学期-信号与系统-第九次作业参考答案-第四小题
  5. 【commons】Bean工具类——commons-beanutils之BeanUtils
  6. 【NLP-ChatBot】搜索引擎的最终形态之问答系统(FAQ)详述
  7. 编写CGI小结(Java)
  8. YbtOJ#652-集合比较【Treap】
  9. Python小白的数学建模课-B5. 新冠疫情 SEIR模型
  10. 轻量级J2EE持久层解决方案,MiniDao-PE版 1.5.4【版本发布】
  11. arcgis分隔图层重复出文件_【干货】ArcGIS不可或缺的制图技巧,处理好细节才能让图更专业!...
  12. BGP华为、思科选路规则
  13. LINUX获得当前用户名
  14. Docker 清理数据卷 volumes
  15. CGContextRef绘图-iOS球形波浪加载进度控件-HcdProcessView详解 1
  16. 机器算法基础——回归分析
  17. 南京信息工程大学计算机博士点,南京信息工程大学2021年招收攻读博士学位研究生专业及考试科目...
  18. ThinkAdmin for PHP后台管理系统
  19. 【Python 23】52周存钱挑战3.0(循环计数for与range)
  20. 一加 Ace Pro怎么样?颜值性能它都有

热门文章

  1. 关于C语言常量需要注意的点
  2. 一套SCDM脚本建模与二次开发攻略
  3. 计算机音乐我还是曾经那个少年,我还是从前那个少年是什么歌
  4. spacy词性标注解释【dep、pos、tag】
  5. Word 尾部空格添加下划线
  6. 系统封装 如何加载PE到Easyboot进行合盘
  7. DataStore详解
  8. 日志:实现微信公众号自动问答机器人(待整理)
  9. android 点赞飘心,点赞飘心动画组件FlyHeartView
  10. 如何实现语音转文字?这三个方法简单又实用,轻松实现语音转文字