360 likes | 572 Views
HCR 软件需求和构架. 讨论稿 nonstop2050@hotmail.com 2008-09-03 V0.03. HCR – 家用监护机器人. 互联网个人兴趣开源项目 HCR 项目 QQ 群号: 65524419 发起贴 http://bbs.roboticfan.com/topic.aspx?topicid=6046 项目状况 http://bbs.roboticfan.com/board.aspx?boardid=62. HCR – 项目基本目标. 尝试机器人开源合作模式 创建一个可扩展的机器人机械、硬件平台;使广大机器人爱好者有一个学习平台
E N D
HCR软件需求和构架 讨论稿 nonstop2050@hotmail.com 2008-09-03 V0.03
HCR – 家用监护机器人 • 互联网个人兴趣开源项目 • HCR项目QQ群号:65524419 • 发起贴 http://bbs.roboticfan.com/topic.aspx?topicid=6046 • 项目状况 http://bbs.roboticfan.com/board.aspx?boardid=62
HCR – 项目基本目标 • 尝试机器人开源合作模式 • 创建一个可扩展的机器人机械、硬件平台;使广大机器人爱好者有一个学习平台 • 实现HCR定义的功能 • 某种意义上,1,2比3还重要。 • 但是3是项目成功的具体目标
HCR – 功能定义 Phase 1 • 主人通过HCR可查看家中的情况(视音频)。 • 主人可下达特定任务:如360度巡视。 • 可扩展家庭防盗,门禁,娱乐。 • 1)自动壁障:能够自动避开障碍物 • 2)互联网控制:能够通过Internet进行远程控制,并加装有摄像头 • 3)自动充电:在电量不足的情况下,自动寻找坞站,进行充电
HCR – 功能定义 后续扩充部分 • 1、有接触式避障和非接触式避障功能。这是室内巡航的基本条件。 • 2、有边沿检测功能,不能掉到楼梯底下。 • 3、有接受警戒线信号的功能,有些危险地方划定警戒线,不能入内。 • 4、有失控保护功能。防止失控,如电机飞车到处乱跑,撞伤东西。 • 5、有电池管理功能。防止过充过放引起电池损坏、起火等。 • 这些是基本的安全保障功能,非常重要。 • 6、有交互功能,能有简单的语音交互,动作交互,没有交互在家庭中就不可能用起来。 • 7、有无线功能。它不能拖着线跑,也不能在地上到处跑,我们要控制它就得追上它,把它的开关关掉。要能够无线控制,我们随时能够获取它的控制权,在危险条件下随时中断机器人的作业。 • 8、有视觉,这是最基本的家庭监控功能。 • 9、能够接入以太网,能够在远程进行控制。 • 10、有动作执行机构,只有两个轮子一个摄像头起不到什么作用。至少要有一双简单的机械手和一个可转动的头部。 • 11、有气体、温度传感器,能够对气体、火源进行监控。 • 12、有一定的娱乐功能,比如能够识别人脸并记住,下次遇见的时候能说一些比较有趣的话。
HCR使用场景 – 实用性 Internet 随时查看 录像 放音 通话 Mobile Network Internet HCR
HCR使用场景 – 学习性 交流平台 算法库 机械平台 软件开放平台 运动平台 HCR 硬件平台
HCR Phase1软件功能需求 • 支持远程控制运动 • 支持远程视音频监控 • 支持自主巡航;自主避障 • 支持自动充电
HCR软件系统需求 • 室内定位算法 • 支持无线数据连接 • 导航功能(自动充电返回;门窗监控) • 通用开发平台(XP Embedded,VC++) • 考虑可移植性
HCR软件性能需求 - TBC • 移动性 • 响应时间 • TBC • 视频分辨率 • 320×240
HCR – 工作状态 被控态(远程操控) • 待机态: • 自主巡航 • 等待命令 • 被控态: • 主人通过远程PC或手机控制HCR运动和功能 • 自主任务态: • 由系统触发或主人下达命令 • HCR自主完成特定任务;如自动充电。 主人远程操控 待机态(巡航) 远程操控释放 下达命令 内部触发(如低电) 命令完成 主人强制中断 任务完成 自主任务态
HCR功能模块简化映射 – 模型1 MiniPC/XP Embedded RS232,自定义协议 RS232,标准协议;AT USB,标准协议;涉及驱动使用 USB/PCMCIA,标准协议 总线TBD 运动控制板 机体控制板 传感器采集板 GPRS模块 摄像头 WiFi 卡 电机 机械臂 云台 红外 超声波
HCR功能模块简化映射 – 模型2 MiniPC/XP Embedded RS232,自定义协议 RS232,标准协议;AT USB/PCMCIA,标准协议 WiFi摄像头和主控完全独立,有自己的内部IP地址,视频服务器,可单独访问(WEB),简化系统复杂性。 实用性集成在远程控制客户端完成 总线TBD 运动控制板 机体控制板 传感器采集板 GPRS模块 WiFi 卡 电机 机械臂 云台 红外 超声波 独立WiFi摄像头
HCR软件构架 - 系统模型2 远程控制客户端PC 守护进程 TCP/IP; 存储;声音; Web Server System Manager 待机子系统(巡航) 被控子系统 (远程控制) 测试 控制单元 仿真接口单元 自主任务子系统:充电等 远程控制客户端Windows Mobile 逻辑层 控制层 接口层 传感响应与执行层 运动控制:避障 定位,SLAM GPRS控制 … 运动执行接口 机体控制执行 传感器数据采集 … 测试客户端 TCP/IP On WiFi 总线;RS232;TTL… 运动响应:紧急处理;停止 电机 控制 传感器控制 机体控制 机体响应 功能单元 功能单元间通信 CPU HCR 电机控制板 传感器控制板 机体控制板
HCR软件构架 – 功能单元/FU • FU完成特定功能可运行程序组。此功能可能是底层的,也可能是高层的 • FU有统一构架 • FU是可能是跨进程的,跨CPU的 • FU之间是通过消息通信的 • FU是有优先级的 • 考虑未来移植性和跨平台性,FU通信使用最基本的消息机制,而不使用高级的跨平台通信机制 • 同上,FU构架使用标准C++,保证X86, ARM平台编译器均适用 • 上位机开发使用VC++,但核心部分不会使用任何MFC或平台相关特性;测试或UI部分需要界面部分作为独立FU,不考虑移植性 功能单元 Function Unit 取消息 处理消息
HCR软件构架 – 功能单元/FU struct FUMsgHead { U16 wSenderCPU_ID; U16 wSenderFU_ID; U16 wRecverCPU_ID; U16 wRecverFU_ID; U16 wMsgID; U16 wMsgLength; } class CFU { private: virtual void SendMessage(FUMSG * pFUMSG); virtual void PostMessage(FUMSG * pFUMSG); public: int m_priority; void Run(); void ProcessMessage(); ...... } class CFUManager { public: FUList *pFUList; ...... } 功能单元 Function Unit 取消息 处理消息
FU – FU管理器 • FU管理器是系统的调度核心 • FU管理器提供统计分析功能;可以给出性能数据 • 消息管理器是FU管理器的一部分
FU – 跨CPU消息处理机制 • 跨CPU的消息机制相对简单 • 由CPU内消息管理器发送至特定CPU(根据消息头) • 在测试或调试模式下,消息管理器可能会COPY一份消息到测试模块 • 跨CPU消息只提供消息队列机制:SendMessage同PostMessage
FU – CPU内消息处理机制 • CPU内部消息使用内存处理 • 提供直接处理机制(SendMessage)和队列处理机制PostMessage • 直接处理机制: • 用于取得数据等操作,效率等同函数级调用 • 跨平台移植时,有可能会定义SendMessage和PostMessage相同 • 队列处理机制 • 标准消息处理方法
HCR软件构架 – 子系统SubSys • 子系统符合功能单元(FU)构架 • 但是子系统中可能附加更复杂的功能,例如: • 图形编程语言编译/解释 • Web功能的集成 • 声音图像的处理 • 待补充
SubSys – 待机子系统 • 完成巡航的上层逻辑控制以完成地图的绘制 • 等待远端控制或自主任务
SubSys – 自主任务子系统 • 需完成多自主任务框架 • Phase1仅实现自动充电功能 • 根据定位信息实现导航 • 导航算法在此实现
SubSys – 被控子系统 • 此子系统涉及较多外延技术,但并不涉及太多Robot相关技术 • 定义,实习远程网络控制协议 • 根据远程操控命令控制HCR运动
定位 – 实现方法的选择 1)充电站可见 红外+超声波定位 2)充电站不可见 航迹推算: 编码器+加速度传感器
定位 – 算法 • 每次启动以充电座为坐标系 • 充电座加红外和超声波传感器 • 超出范围使用航迹推算法 • 需细化
定位 – 误差补偿方法 • 待补充
导航 – 算法,地图描述 导航和定位结合主要使用在自动充电功能中: 从一个充电座不可见的位置返回到充电座自动充电 考虑栅格法描述地图
测试 – 测试模块构架 基于消息的收发,可以实现特定FU或子系统的测试
仿真 – 仿真模块构架 模拟实现部分FU后,可以由软件系统仿真HCR的工作情况
HCR软件构架 – 通用算法库 形成通用算法库 远程控制客户端PC 守护进程 TCP/IP; 存储;声音; Web Server System Manager 待机子系统(巡航) 被控子系统 (远程控制) 测试 控制单元 仿真接口单元 自主任务子系统:充电等 远程控制客户端Windows Mobile 逻辑层 控制层 接口层 传感响应与执行层 运动控制:避障 定位,SLAM GPRS控制 … 运动执行接口 机体控制执行 传感器数据采集 … 测试客户端 TCP/IP On WiFi 总线;RS232;TTL… 运动响应:紧急处理;停止 电机 控制 传感器控制 机体控制 机体响应 功能单元 功能单元间通信 CPU 电机控制板 传感器控制板 机体控制板 HCR
HCR软件构架 – 人员,工具 系统:1+人 运动控制:1+人 定位:1+人 接口层:1人 3个子系统:3人 控制板嵌入式软件:TBC PC远程控制软件:TBC 手机远程控制软件:TBC 测试系统:1人 开发工具 上位机:MS VC++ 控制板:ADS? 仿真:TBD 版本管理:SVN/CVS
HCR几个问题的讨论 – 定位 充电站可见 1)充电站可见 红外+超声波定位 2)充电站不可见 航迹推算: 编码器+加速度传感器 HCR HCR (X1,Y1) 充电坞站 (X2,Y2) 充电站不可见
HCR几个问题的讨论 –大脑和神经系统 • 运动控制系统的实现 • 上位机运动控制和传感响应运动的分工? • 性能问题 • 硬件相关 • 上位机和各个控制板连接使用总线还是单独连接 • 性能问题?
更改记录 • 2008.08.28 V0.02 • 参考云淡和大笨龙的建议,调整软件整体构架映射,覆盖总线机制 • 2008-09-03 V0.03 • 细化部分软件描述
期待您的补充! MSN: nonstop2050@hotmail.com