zoukankan      html  css  js  c++  java
  • 11.2-LV面向对象编程视频学习及周五与老师交流总结

    视频学习-Pure Data Flow-类的创建

    创建类

    • 创建类的用于数据访问的VI
      • 读取权限,静态或动态访问器
    • 类属性-连线外观

    创建Xcontrol

    • 保存,命名
    • 修改VI

    使用操作者框架

     

    计算机生成了可选文字: 型 说 明 符 V 丨 引 用 句 柄 〔 仅 用 于 型  丨 引 用  sin loop.Vl  开 始 异 步 调 用  关 鬲 引 用

     

    • 怎样指定异步调用的VI呢?在打开VI引用的“类型说明符引用句柄”端口创建常量
    • 然后打开资源管理器,找到想要异步调用的VI鼠标将此VI拖动到上一步创建的常量处

    总结

    • 这是一个XControl控件的制作,在制作过程中使用了ACTOR操作者框架,在制作过程中创建了操作者类,消息类及队列,SIN函数创建了一个队列,并调用一个异步线程SIN_LOOP100SIN(X)写入消息队列中。
      • 注意:这个异步线程SIN_LOOP.Vi可以看作是重写了的操作者核心函数的一个线程,另一个线程是执行一个父方法。
    • 异步线程每隔50毫秒向消息队列写入一个消息,写完之后结束操作者,释放队列。
    • XControl开始执行的时候,它读取一个队列名字,初始化一个队列,这个队列里面存储的元素是操作者的待入队列
      • 注意:这个带名字,手动创建的队列是队列的队列。至于在操作者框架中,队列的队列的功能是什么,目前还不太清楚。
    • 整个操作者的动能是,核心函数发送消息到队列,DO函数将接受到的消息里的值赋给Wave Form chart的引用的值,从而改变了XControl中控件的值,达到了显示的目的。

    与老师交流总结-操作者框架的通用解决框架(专业术语参考Hassan Gomaa.软件建模与设计.机械工业出版社)

    • 为每个边界对象创建一个操作者类,操作者作为真实世界外部对象的代理对象
    • 子操作者负责显示所代理的外部对象的信息
    • 子操作者不一定表示人机交互对象或代理对象,也可以表示实体对象(实体对象存储数据)或算法对象(算法对象存储算法逻辑)
    • 子操作者负责输出由其他子操作者发送过来的信息
    • 注意:
      • 子操作者负责人机交互,信息产生和接受,1)能够接受消息并反馈消息2)能够接受消息并通过人机交互界面3)能够接受消息并输出到外部对象
      • 主操作者负责信息决策及消息转发,能够快速将子操作者发送过来的信息转发给特定子操作者,并能够在转发消息之前确定是否马上转发该消息,或者修改消息内容。(本来是执行向前5M的命令,现在变成AB发送这个命令,但请你现在不要这么做,有一个消息确认位
      • 由上一条可以得到几个指导性意见:
        • 需要一个全局环境子操作者,甚至多个环境信息实体对象,用来存储数据或分析数据
        • 消息内容应该合理设置,如设置确认位(用作使能位),消息类型位(用来确定主操作者应该需要哪些额外的环境决策信息)(例如,手柄操作,发出消息类型为“基本移动”类消息,消息经过主操作者时,主操作者应该向环境模型操作者发问,询问目标机器人是否能够执行这一基本命令)(高层命令应该在主操作者中决策,底层命令如自我保护,急停等应该在机器人中用行为或事件表示)
        • 主操作者应该能够进行科学决策。
        • 其实并不一定是主操作者进行所有决策,决策也可以交到子操作者,比如P机器人在遇到障碍时拒绝执行向前移动的信息。

    最终规划

    • 我要做的事,一方面是软件建模与设计,另一方面是机器人控制系统的核心部分设计,即决策模块。
    • 主要参考文献:
      • 人工智能机器人学导论
      • 软件建模与设计
      • 应该要上网查文献

    用例建模

    • 用例名称:手柄控制P机器人
    • 概述:人通过控制手柄来实现机器人基本动作,控制中心要根据地图信息(全局环境模型)的使能来决定是否发送这条信息
    • 参与者:客户
    • 前置条件:建立连接,手动定义所有参数,如P机器人最大速度,急停障碍距离。
    • 主序列:
      1. 客户提出手动控制P机器人
        1. 手柄操作者,按一个按钮,切换控制模式,此时在P机器人上也应该切换模式,转为手动控制模式
        2. 手柄操作者每隔一定时间发送一个手柄状态消息(用轮询还是事件结构?)
      2. 客户操作手柄,客户可以看到实时图像
        1. 消息通过主操作者发送到P操作者
      3. 并发操作:机器人接受到消息时候能够动作,并更新环境模型(矩阵),并环境模型更新地图,机器人移动过程中能够急停
        1. 机器人接受到消息能够调用DLL动作
        2. 定时发送坐标消息到环境模型子操作者,环境更新
        3. 环境模型操作者发送消息到地图操作者,地图更新
      4. 系统向用户显示环境信息,地图信息,图像信息
        1. 环境信息由环境模型操作者负责
        2. 地图信息由地图操作者负责
        3. 图像信息由P机器人操作者负责
    • 可替代序列
      • 所有错误暂时不处理
      • 所有异常暂时不传递错误消息
    • 后置条件:向事件中心注册,机器人开始手动动作?
    • 用例分析
      • 操作者:手柄操作者,地图操作者,模型信息操作者,机器人操作者
      • 机器人操作者要能够做:设置机器人的所有参数,进行状态切换,在界面上显示需要的所有信息,能够向操作者发送指定的状态信息,能够使用行为进行急停。
        • 机器人操作者需要确定某一件事,是运行前指定还是运行时指定,是通过控件指定还是对话框指定。

     


  • 相关阅读:
    013.ES6 -对象字面量增强型写法
    012. ES6
    011. ES6 语法
    10. 9. Vue 计算属性的setter和getter 以及 计算属性的缓存讲解
    4. Spring MVC 数据响应方式
    3. SpringMVC 组件解析
    9. Vue 计算属性
    【洛谷 2984】给巧克力
    【洛谷 1821】捉迷藏 Hide and Seek
    【洛谷 1821】银牛派对Silver Cow Party
  • 原文地址:https://www.cnblogs.com/lizhensheng/p/11241959.html
Copyright © 2011-2022 走看看