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机器人操作者负责
    • 可替代序列
      • 所有错误暂时不处理
      • 所有异常暂时不传递错误消息
    • 后置条件:向事件中心注册,机器人开始手动动作?
    • 用例分析
      • 操作者:手柄操作者,地图操作者,模型信息操作者,机器人操作者
      • 机器人操作者要能够做:设置机器人的所有参数,进行状态切换,在界面上显示需要的所有信息,能够向操作者发送指定的状态信息,能够使用行为进行急停。
        • 机器人操作者需要确定某一件事,是运行前指定还是运行时指定,是通过控件指定还是对话框指定。

     


  • 相关阅读:
    面试题目-atof与ftoa
    数据结构-List
    数据结构-Vector
    面试题目-计算最大公约数
    数据结构-二分查找
    面试题目-用递归通过单字符输出打印多位的数字
    Linux-守护进程的实现
    面试题目-链表反转
    Linux-C程序的存储空间布局
    Linux-如何添加路由表
  • 原文地址:https://www.cnblogs.com/lizhensheng/p/11241959.html
Copyright © 2011-2022 走看看