怎样调用扫描仪模块,在程序里进行扫描,定位等操作。

一品梅 2012-12-08 11:11:43
怎样调用扫描仪模块,在程序里进行扫描,定位等操作。
扫描仪我查的是MICROTEK 纷腾F60
我不知如何去做,在网上查了一篇文章C#通过调用WIA或者调用TWAIN使用Kodak组件获取扫描仪图片数据
其中一种就是微软官方推出的WIA接口调用扫描仪,这种方式是目前最新的。其实这种方式很容易编写,
只不过它内部不会存储用户需要扫描的分辨率等信息,不过这种方法在与方便快捷,直接安装WIA控件到

Windows,直接在C#代码中编写就可以直接调用,不用自己编辑控件的属性等,很方便易用。

另外一种方式就是传统的TWIAN,因为很多扫描仪厂家都墨守陈规的遵循了TWAIN的潜规则,所以这种方法

也是得到了很多编程爱好者的欢迎,这个接口可以直接调用扫描仪厂家已经编写好的扫描窗口,可以实现在驱

动层获取到图片信息,而且这种方法的好处就是可以批量扫描,添加Kodak扫描控件后,也可以实现批量扫描

的功能,而且还提供图片编辑等功能。

我也不知道具体怎么用,如果随便给你个扫描仪,你将怎么找到参考文档和链接库进行引用还有参考文档将怎么找啊?
...全文
526 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
peihexian 2014-06-08
  • 打赏
  • 举报
回复
这里有.net控制扫描仪源代码,猛击这里 http://peihexian.iteye.com/blog/1177123
_小黑_ 2013-07-10
  • 打赏
  • 举报
回复
楼主做出来了,我做出来了,已经封装好了点击下载
_小黑_ 2013-06-03
  • 打赏
  • 举报
回复
楼主 在不 做出来没呢 ,做出来 分享一下
薛小坏 2012-12-27
  • 打赏
  • 举报
回复
扫描仪接口是什么样的?USB接口还是串口? 如果有这个扫描仪的dll 你可以反编译一下看看 表示没接触过这个类型的扫描仪
renping21051281 2012-12-27
  • 打赏
  • 举报
回复
帮顶,没有做过。
kimmking 2012-12-26
  • 打赏
  • 举报
回复
我也很好奇这个,买过的扫描仪,一般都提供web或桌面的各种操作程序,就是没有api文档。
  • 打赏
  • 举报
回复
不太会, http://www.cnblogs.com/carekee/articles/2038907.html
一品梅 2012-12-21
  • 打赏
  • 举报
回复
哎,有没有做过的呢?求教啊。
段传涛 2012-12-19
  • 打赏
  • 举报
回复
木有了, 参考吧 http://www.cnblogs.com/carekee/articles/2038907.html
段传涛 2012-12-19
  • 打赏
  • 举报
回复
引用 3 楼 bdmh 的回复:
厂家一般都会提供开发文档的,里面写有各个接口原型及功能说明,你对着改写成c#的,好一点的,厂家还会提供各种语言的demo
是的 我们做的 是厂家提供的接口。而且我们的厂家和编写软件的不是一样 呵呵。 太久远了。 我只能找一下试试。
一品梅 2012-12-19
  • 打赏
  • 举报
回复
版主能帮我找找我提供的那个型号的帮助文档吗?
一品梅 2012-12-17
  • 打赏
  • 举报
回复
还有人在吗?
q107770540 2012-12-17
  • 打赏
  • 举报
回复
之前做过一工具,就是直接调用扫描仪扫描的图片,然后实现OCR扫描数据入库的 一般的扫描仪,厂家都提供了多种语言的调用接口和事例的
keepfool 2012-12-17
  • 打赏
  • 举报
回复
扫描条码的做过,扫描图片和文档的没做过。
一品梅 2012-12-11
  • 打赏
  • 举报
回复
楼上的大虾能就我这个型号帮帮忙吗?谢谢啊,呵呵
bdmh 2012-12-10
  • 打赏
  • 举报
回复
厂家一般都会提供开发文档的,里面写有各个接口原型及功能说明,你对着改写成c#的,好一点的,厂家还会提供各种语言的demo
足球中国 2012-12-10
  • 打赏
  • 举报
回复
帮你顶了。没做过。
XBodhi. 2012-12-08
  • 打赏
  • 举报
回复
扫描仪的 接口是什么的是,你可否通过操作接口来弄,要不就看看厂家给什么 API 没有
本书详细讲解了用Linux的图形配置工具配置Caldera OpenLinux,通过一个ppp与网络连接、使用K桌面环境、用StarOffice提高在家办公的效率、网络浏览、发传真、接收email及使用GIMP等图形工具。 24学时每次1小时的课程能使你迅速掌握Linux各方面的内容,简单易懂,通俗实用。本书在美国十分畅销,其作者是美国资深计算机书作家。本书适合初、中级读者阅读。 目 录 前言 第一部分 安装和配置 第1学时 准备安装Linux操作系统 2 1.1 什么是Linux操作系统 2 1.2 什么是OpenLinux操作系统 3 1.3 需要什么设备 4 1.4 支持什么设备 4 1.5 什么设备不能工作 5 1.5.1 Win打印机 5 1.5.2 Win调制解调器 5 1.5.3 红外端口 6 1.6 有什么设备 6 1.7 怎样计划安装过程 7 1.7.1 从CD - ROM光盘启动安装 8 1.7.2 从软盘启动安装 8 1.7.3 其他方法 9 1.8 计划开机启动过程 9 1.9 准备硬盘驱动器 10 1.10 课时小结 13 1.11 专家答疑 13 1.12 练习题 13 第2学时 安装Linux操作系统 14 2.1 开始安装 14 2.2 完成Linux操作系统安装过程 20 2.2.1 登录到Linux操作系统 22 2.2.2 重新启动和关机 24 2.3 课时小结 25 2.4 专家答疑 25 2.5 练习题 25 第3学时 安装后的系统配置工作 26 3.1 X Window System 26 3.1.1 X窗口系统是如何配置的 26 3.1.2 XF86Config文件 28 3.1.3 绕过或者禁止kdm登录引导画面 31 3.1.4 开始一个X11任务 31 3.2 为OpenLinux操作系统配置声卡 32 3.2.1 加载声卡驱动模块 32 3.2.2 测试声卡配置值 34 3.2.3 使用COAS配置声卡 34 3.2.4 一个快速录音命令脚本程序 36 3.2.5 配置声卡的简单方法 37 3.3 激活PCMCIA卡的服务程序 37 3.4 使用COAS配置网络信息 40 3.5 在OpenLinux操作系统中使用艾美加 (Iomega)公司的Zip驱动器 42 3.6 课时小结 43 3.7 专家答疑 43 3.8 练习题 43 第二部分 学习Linux操作系统的基本命令 第4学时 阅读与浏览命令 46 4.1 使用man命令获取帮助 46 4.2 浏览及搜索文件系统 48 4.2.1 使用cd命令进入不同的目录 48 4.2.2 使用pwd命令查看自己所在的位置 48 4.2.3 使用find命令在子目录中搜索 匹配的文件 49 4.2.4 使用whereis命令查找文件 50 4.2.5 使用locate命令定位文件 50 4.2.6 使用whatis和apropos命令获取命令 简介 51 4.3 阅读子目录和文件 52 4.3.1 使用ls命令列出子目录的内容清单 52 4.3.2 使用dir和vdir命令列出子目录的 内容清单 55 4.3.3 使用cat命令列出及合并文件 56 4.3.4 使用more命令阅读文件 58 4.3.5 使用less命令浏览文件 59 4.4 使用head或tail命令阅读文件的 开头和结尾 60 4.5 课时小结 61 4.6 专家答疑 61 4.7 练习题 62 第5学时 操作与搜索命令 63 5.1 操作文件和子目录 63 5.1.1 使用touch命令建立文件 63 5.1.2 使用rm命令删除文件 64 5.1.3 使用mkdir命令建立子目录 65 5.1.4 使用rmdir命令删除子目录 66 5.1.5 使用mv命令给文件改名 67 5.1.6 使用cp命令进行拷贝操作 68 5.1.7 使用ln命令建立硬链接和符号链接 70 5.1.8 使用Midnight Commander程序处 理文件 71 5.2 搜索文件 72 5.2.1 什么是规则表达式 72 5.2.2 使用grep命令在文件内进行搜索 74 5.3 压缩和解压缩文件 76 5.3.1 使用磁带文件归档命令建立 档案文件 76 5.3.2 建立cpio档案文件 78 5.3.3 使用gzip命令压缩文件 78 5.3.4 使用compress命令压缩文件 79 5.4 课时小结 79 5.5 专家答疑 80 5.6 练习题 80 第6学时 使用shell 81 6.1 什么是shell 81 6.2 系统中都有哪几种shell 81 6.2.1 ash的特色 82 6.2.2 Linux操作系统缺省的shell—bash 的特色 83 6.2.3 公共域Korn Shell—pdksh 84 6.2.4 与csh兼容的shell—tcsh的特色 84 6.2.5 zsh 85 6.3 了解shell的命令行 85 6.3.1 对shell进行定制设置 88 6.3.2 在后台运行程序 91 6.3.3 怎样使用管道 93 6.4 建立shell的命令脚本程序 95 6.5 课时小结 98 6.6 专家答疑 98 6.7 练习题 98 第7学时 使用X窗口系统 99 7.1 启动X 99 7.1.1 使用不同的颜色深度启动X11 100 7.1.2 在X11环境中使用虚拟控制台 102 7.1.3 启动多个X11任务操作 102 7.1.4 使用xdm程序登录进入OpenLinux操作 系统和X11环境 103 7.2 X11窗口管理器程序 104 7.2.1 配置fvwm窗口管理器程序 105 7.2.2 启动AfterStep窗口管理器程序 108 7.2.3 启动twm窗口管理器程序 109 7.3 X11终端程序 110 7.3.1 改变xterm终端程序的设置 110 7.3.2 使用高内存效率的rxvt终端程序 111 7.4 学习X11基本操作 112 7.4.1 使用X11客户程序的窗口尺寸 设置参数 112 7.4.2 为X11客户程序设置背景和 前景颜色 113 7.4.3 设置X11客户程序的资源 113 7.4.4 改变X11中鼠标和光标的状态 115 7.4.5 如何在X11中进行复制和粘贴 116 7.4.6 捕捉和转储X11窗口 117 7.4.7 定制X11根窗口并使用屏幕保护器 118 7.5 深入探索X11程序 121 7.5.1 使用xlsfonts列出X11的字体清单 121 7.5.2 使用xwininfo客户程序获得 窗口信息 121 7.5.3 使用xmessage客户程序生成日程提 示便条 122 7.5.4 使用X11时钟程序管理时间 123 7.6 课时小结 123 7.7 专家答疑 123 7.8 练习题 124 第8学时 探索K Desktop Environment 桌面环境 125 8.1 启动运行KDE桌面环境 126 8.2 KDE桌面的特点 127 8.2.1 执行基本的桌面操作 127 8.2.2 使用桌面控制条 127 8.2.3 编辑修改KDE桌面上的控制条菜单 128 8.2.4 使用kfm文件管理器程序 129 8.3 使用KDE控制中心配置KDE桌面环境 130 8.3.1 使用显示管理器程序选项 130 8.3.2 更换桌面的墙纸 132 8.3.3 改变屏幕保护器程序 133 8.3.4 改变缺省显示字体 134 8.3.5 设置系统操作声音效果 134 8.3.6 改变鼠标和键盘的设置 135 8.3.7 改变窗口按钮、属性和标题栏 136 8.3.8 控制光标在桌面之间的移动 138 8.4 课时小结 139 8.5 专家答疑 139 8.6 练习题 140 第三部分 与外部世界连接 第9学时 使用通讯程序 142 9.1 设置和测试调制解调器 142 9.2 使用通讯程序向外拨号 145 9.2.1 初始化并使用minicom 程序向外拨号 145 9.2.2 初始化并使用X11客户程序seyon 向外拨号 147 9.2.3 为Linux系统设置拨入连接 149 9.3 发送和接收传真 150 9.3.1 使用efax系列软件进行传真 151 9.3.2 使用ksendfax客户程序发送传真 155 9.3.3 使用mgetty+sendfax发送传真 156 9.4 课时小结 158 9.5 专家答疑 158 9.6 练习题 159 第10学时 与因特网连接 160 10.1 所需要的硬件 160 10.2 所需要的Linux操作系统软件 162 10.3 需要从ISP商处了解的信息 163 10.4 手动设置PPP连接 164 10.4.1 编辑resolv.conf文件 164 10.4.2 编辑PPP连接命令脚本程序 165 10.5 手动启动和中断PPP连接 166 10.5.1 使用minicom程序连接 167 10.5.2 使用ppp-on命令脚本程序连接 167 10.5.3 结束PPP连接 168 10.6 使用kppp客户程序配置一个PPP连接 168 10.6.1 配置kppp连接 168 10.6.2 使用kppp客户程序开始和结束PPP 连接 172 10.7 使用xisp程序配置一个PPP连接 172 10.7.1 配置一个新的xisp帐户 173 10.7.2 使用xisp客户程序开始和结束PPP 连接 174 10.8 检查连接 175 10.8.1 使用ifconfig命令 175 10.8.2 使用netstat命令 176 10.8.3 使用ping命令 176 10.8.4 使用route命令 177 10.8.5 查看系统登录记录 177 10.9 课时小结 178 10.10 专家答疑 178 10.11 练习题 179 第11学时 配置因特网电子邮件 180 11.1 初始化设置和获取电子邮件 180 11.2 使用Mail程序集发送邮件 183 11.2.1 使用mail程序 183 11.2.2 配置并使用elm邮件程序 184 11.2.3 配置并使用pine邮件程序 185 11.2.4 配置和使用网景公司的Messenger 软件收发电子邮件 188 11.2.5 订阅邮件表 191 11.3 配置procmail程序与写作模板对付 垃圾邮件 191 11.4 课时小结 193 11.5 专家答疑 193 11.6 练习题 194 第12学时 配置因特网新闻 195 12.1 使用tin新闻阅读器程序阅读 Usenet新闻 196 12.2 使用slrn新闻阅读器程序阅读 Usenet新闻 199 12.3 使用krn客户程序阅读Usenet新闻 201 12.4 使用网景公司的Discussions软件阅读 Usenet新闻 204 12.5 在Usenet新闻组上发布消息之前 207 12.6 课时小结 207 12.7 专家答疑 207 12.8 练习题 208 第13学时 因特网上的下载与浏览 209 13.1 使用文件传输协议程序来获取文件 209 13.1.1 使用ftp命令检索文件 209 13.1.2 使用ncftp命令进行下载 215 13.2 使用Linux浏览器程序浏览 World Wide Web网 216 13.2.1 使用lynx命令快速浏览 216 13.2.2 探索网景公司的Communicator 浏览器软件 217 13.3 使用因特网Relay Chat聊天 220 13.4 安装和配置AOL(美国在线)的Instant Messenger软件 221 13.5 使用telnet命令连接到其他的计算机 222 13.6 课时小结 224 13.7 专家答疑 224 13.8 练习题 225 第四部分 有效率地使用Linux操作系统 第14学时 文字处理程序 228 14.1 Linux操作系统环境中的字处理器 程序 228 14.1.1 XEmacs环境的特点 229 14.1.2 VIsual iMproved编辑器 程序—vim 232 14.1.3 pine软件的pico编辑器 程序的特点 233 14.1.4 合五为一的编辑器程序—joe 234 14.1.5 配置jed编辑器程序 235 14.1.6 使用kedit编辑器客户程序 235 14.1.7 使用CRiSPlite编辑器程序 236 14.1.8 StarOffice办公室套装软件中的StarWriter组件 237 14.1.9 Corel公司的WordPerfect for Linux 软件 238 14.1.10 Applix Words软件 239 14.1.11 使用sed和其他过滤器改变文本 240 14.2 对文档进行拼写检查 242 14.2.1 使用ispell命令改正文档 242 14.2.2 查找单个单词和其他技巧 243 14.3 课时小结 244 14.4 专家答疑 244 14.5 练习题 245 第15学时 排版打印文档 246 15.1 对文本进行排版 246 15.1.1 使用文本过滤器对文本进行排版 246 15.1.2 使用groff排版程序对文本进行 格式化处理 250 15.1.3 使用TeX排版软件对文本进行格式 化处理 252 15.2 打印文本文档 253 15.2.1 使用LPRng打印系统打印文档 254 15.2.2 使用lisa命令配置打印机 256 15.2.3 配置WordPerfect软件的打印功能 258 15.3 课时小结 260 15.4 专家答疑 260 15.5 练习题 261 第16学时 图形工具 262 16.1 了解Linux操作系统的图形文件格式 262 16.2 转换及观察图形 267 16.2.1 使用GIMP软件编辑图形 268 16.2.2 使用Image Magick软件进行 图像编辑 271 16.2.3 使用xv命令观看图形 272 16.2.4 使用gv命令查看PostScript 格式的文件 273 16.3 关于数字照相机和扫描 274 16.4 课时小结 275 16.5 专家答疑 275 16.6 练习题 276 第17学时 学习数学与财务工具 277 17.1 计算器 277 17.1.1 使用dc命令进行桌面计算 277 17.1.2 使用X11的xcalc客户程序 进行计算 278 17.1.3 使用kcalc客户程序进行计算 278 17.1.4 使用units命令进行计量单位转换 279 17.1.5 使用bc语言解释器编程计算器 280 17.2 电子表 281 17.2.1 使用公共域中的sc电子表 281 17.2.2 使用slsc电子表 282 17.2.3 使用免费的Wingz电子表 283 17.2.4 StarCalc电子表程序的特点 284 17.2.5 Applixware电子表程序的 商业化特点 285 17.3 使用gnuplot程序建立数学公式 的图形 286 17.4 课时小结 288 17.5 专家答疑 288 17.6 练习题 289 第18学时 个人事务工具程序 290 18.1 使用at命令安排个人日程备 忘录和任务 290 18.2 使用crontab命令安排周期性的 备忘录提示 292 18.3 使用X11的ical客户程序建立约会 备忘录提示 294 18.4 使用emacs查看日历和管理约会 297 18.5 使用knote客户程序设置报时钟 299 18.6 课时小结 299 18.7 专家答疑 299 18.8 练习题 300 第19学时 使用StarOffice软件实现 家庭办公室管理 301 19.1 安装和配置StarOffice软件 301 19.1.1 启动StarOffice软件运行 303 19.1.2 对StarOffice软件进行定制设置 304 19.1.3 为StarOffice软件安装一台打印机 305 19.2 使用StarOffice软件 305 19.2.1 使用StarWriter建立文档 307 19.2.2 对StarWriter文档进行拼写 检查和保存 309 19.2.3 使用StarCalc进行计算 310 19.2.4 使用StarCalc制作数据表图 313 19.3 课时小结 314 19.4 专家答疑 314 19.5 练习题 315 第20学时 休闲与玩Linux操作系统中的 游戏 316 20.1 使用kscd和xplaycd客户程序播放 音乐CD光盘 316 20.2 适合控制台的游戏 319 20.3 X窗口系统下的游戏 320 20.3.1 使用xboard客户程序玩国际象棋 320 20.3.2 玩X11版的solitaire扑克翻牌游戏 321 20.3.3 玩X11版的backgammon游戏 322 20.3.4 玩X11版的galaga游戏 322 20.3.5 玩X11版的击球游戏xboing 323 20.3.6 玩X窗口版Quake游戏 323 20.4 课时小结 324 20.5 专家答疑 324 20.6 练习题 325 第五部分 监管你的系统 第21学时 系统监管基础 328 21.1 使用su命令以根操作员的身份 执行操作 328 21.2 获取磁盘空间信息 329 21.2.1 使用df命令获取文件系统的 统计数据 330 21.2.2 使用du命令掌握文件系统的 磁盘使用情况 331 21.2.3 使用symlinks命令检查符号链接 332 21.2.4 节省磁盘空间 333 21.3 获取内存信息 335 21.3.1 使用free命令生成内存使用 情况的报告 335 21.3.2 使用vmstat命令生成虚拟内存使用 情况的报告 335 21.3.3 查看shell的“ulimit”设置 336 21.3.4 使用kill命令收回内存 337 21.4 使用top和xload命令获取系统 负载信息 338 21.4.1 使用uptime和w命令确定Linux操作 系统已经运转的时间 339 21.4.2 使用pppstats和mailstats命令获取网 络和邮件信息 340 21.4.3 使用statserial命令监控串行口 340 21.5 管理用户的存取权限 341 21.5.1 使用adduser命令建立用户 341 21.5.2 使用lisa命令管理用户 342 21.5.3 使用passwd命令改变口令字 342 21.5.4 限制登录 344 21.5.5 设置硬盘配额 345 21.6 课时小结 347 21.7 专家答疑 347 21.8 练习题 348 第22学时 管理文件和文件系统 349 22.1 OpenLinux操作系统是如何组织的 349 22.2 使用mount命令存取其他的 文件系统 351 22.3 了解文件系统表/etc/fstab文件 351 22.4 格式化一张软盘 353 22.5 使用KFloppy客户程序格式化软盘 355 22.6 mtools程序包 357 22.7 管理文件的所有权限和存取权限 358 22.7.1 掌握Linux操作系统中的 文件类型 358 22.7.2 解读文件的权限标志 359 22.8 使用chmod命令改变文件的权限 360 22.9 使用chown命令改变文件的所有权 362 22.10 使用chgrp和newgrp命令改变 用户组和所有权 362 22.11 使用rpm、lisa和kpackage程序管理 Linux软件 363 22.11.1 使用rpm命令 364 22.11.2 使用kpackage客户程序 366 22.11.3 使用lisa命令 368 22.12 课时小结 370 22.13 专家答疑 370 22.14 练习题 371 第23学时 备份和恢复系统 372 23.1 备份或者恢复操作之前需要考虑的 几个因素 372 23.1.1 配置BRU备份系统进行 备份和恢复 373 23.1.2 使用tar命令备份系统 376 23.1.3 使用cpio命令进行备份和恢复 377 23.1.4 使用taper命令脚本程序进行磁带机 备份和恢复 378 23.2 课时小结 380 23.3 专家答疑 380 23.4 练习题 380 第24学时 使用任务计划实现系统管理 自动化 381 24.1 使用cron程序包 381 24.1.1 管理用户的cron任务计划 382 24.1.2 使用crontab命令设置任务计划 382 24.2 使用atrun命令管理用户的任务计划 384 24.3 课时小结 386 24.4 专家答疑 386 24.5 练习题 386
机器人操作系统 ROS(机器人操作系统,Robot Operating System),是专为机器人软件开发所设计出来的一套电脑操作系统架构。它是一个开源的元级操作系统(后操作系统),提供类似于操作系统的服务,包括硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间消息传递、程序发行包管理,它也提供一些工具和库用于获取、建立、编写和执行多机融合的程序。 ROS的运行架构是一种使用ROS通信模块实现模块间P2P的松耦合的网络连接的处理架构,它执行若干种类型的通讯,包括基于服务的同步RPC(远程过程调用)通讯、基于Topic的异步数据流通讯,还有参数服务器上的数据存储。 1 发展目标 2 ROS的概念 2.1 ROS 的 Filesystem Level 2.2 ROS 的 Computation Graph Level 3 参考文献 4 外部链接 发展目标 ROS的首要设计目标是在机器人研发领域提高代码复用率。ROS是一种分布式处理框架(又名Nodes)。这使可执行文件能被单独设计,并且在运行时松散耦合。这些过程可以封装到数据包(Packages)和堆栈(Stacks)中,以便于共享和分发。ROS还支持代码库的联合系统。使得协作亦能被分发。这种从文件系统级别到社区一级的设计让独立地决定发展和实施工作成为可能。上述所有功能都能由ROS的基础工具实现。 为了实现“共享与协作”这一首要目标,人们制订了ROS架构中的其他支援性目标: “轻便”:ROS是设计得尽可能方便简易。您不必替换主框架与系统,因为ROS编写的代码可以用于其他机器人软件框架中。毫无疑问的,ROS更易于集成与其他机器人软件框架。事实上ROS已完成与OpenRAVE、Orocos和Player的整合。 ROS-agnostic库:【agnostic:不可知论】建议的开发模型是使用clear的函数接口书写ROS-agnostic库。 语言独立性:ROS框架很容易在任何编程语言中执行。我们已经能在Python和C++中顺利运行,同时添加有Lisp、Octave和Java语言库。 测试简单:ROS有一个内建的单元/组合集测试框架,称为“rostest”。这使得集成调试和分解调试很容易。 扩展性:ROS适合于大型实时系统与大型的系统开发项目。 ROS的概念 ROS有三个层次的概念:分别为Filesystem level,Computation graph level, 以及Communication level。 以下内容具体的总结了这些层次及概念。除了这三个层次的概念, ROS也定义了两种名称-- Package资源名称和Graph资源名称。同样会在以下内容中提及。 ROS 的 Filesystem Level 文件系统层概念就是你在碟片面遇到的资源,例如: Packages:ROS的基本组织,可以包含任意格式文件。一个Package 可以包含ROS执行时处理的文件(nodes),一个ROS的依赖库,一个数据集合,配置文件或一些有用的文件在一起。 Manifests:Manifests (manifest.xml) 提供关于Package元数据,包括它的许可信息和Package之间依赖关系,以及语言特性信息像编译旗帜(编译优化参数)。 Stacks: Stacks 是Packages的集合,它提供一个完整的功能,像“navigation stack” Stack与版本号关联,同时也是如何发行ROS软件方式的关键。 Manifest Stack Manifests: Stack manifests (stack.xml) 提供关于Stack元数据,包括它的许可信息和Stack之间依赖关系。 Message (msg) types: 信息描述, 位置在路径:my_package/msg/MyMessageType.msg, 定义数据类型在ROS的 messages ROS面。 Service (srv) types: 服务描述,位置在路径:my_package/srv/MyServiceType.srv, 定义这个请求和相应的数据结构 在ROS services 面。 ROS 的 Computation Graph Level Computation Graph Level(计算图)就是用ROS的P2P(peer-to-peer网络传输协议)网络集中处理所有的数据。基本的Computation Graph的概念包括Node, Master, Parameter Sever,messages, services, topics, 和bags, 以上所有的这些都以不同的方式给Graph传输数据。 Nodes: Nodes(节点)是一系列运行中的程序。ROS被设计成在一定颗粒度下的模块化系统。一个机器人控制系统通常包含许多Nodes。比如一个Node控制激光雷达,一个Node控制车轮马达,一个Node处理定位,一个Node执行路径规划,另外一个提供图形化界面等等。一个ROS节点是由Libraries ROS client library写成的, 例如 roscpp 和 rospy. Master: ROS Master 提供了登记列表和对其他计算图的查找。没有Master,节点将无法找到其他节点,交换消息或调用服务。 Server Parameter Server: 参数服务器使数据按照钥匙的方式存储。目前,参数服务器是主持的组成部分。 Messages:节点之间通过messages来传递消息。一个message是一个简单的数据结构,包含一些归类定义的区。支持标准的原始数据类型(整数、浮点数、布尔数,等)和原始数组类型。message可以包含任意的嵌套结构和数组(很类似于C语言的结构structs) Topics: Messages以一种发布/订阅的方式传递。一个node可以在一个给定的topic中发布消息。Topic是一个name被用于描述消息内容。一个node针对某个topic关注与订阅特定类型的数据。可能同时有多个node发布或者订阅同一个topic的消息;也可能有一个topic同时发布或订阅多个topic。总体上,发布者和订阅者不了解彼此的存在。主要的概念在于将信息的发布者和需求者解耦、分离。逻辑上,topic可以看作是一个严格规范化的消息bus。每个bus有一个名字,每个node都可以连接到bus发送和接受符合标准类型的消息。 Services:发布/订阅模型是很灵活的通讯模式,但是多对多,单向传输对于分布式系统中经常需要的“请求/回应”式的交互来说并不合适。因此,“请求/回应” 是通过services来实现的。这种通讯的定义是一种成对的消息:一个用于请求,一个用于回应。假设一个节点提供了一个服务提供下一个name和客户使用服务发送请求消息并等待答复。ROS的客户库通常以一种远程调用的方式提供这样的交互。 Bags: Bags是一种格式,用于存储和播放ROS消息。对于储存数据来说Bags是一种很重要的机制。例如传感器数据很难收集但却是开发与测试中必须的。 在ROS的计算图中,ROS的Master以一个name service的方式工作。它给ROS的节点存储了topics和service的注册信息。Nodes 与Master通信从而报告它们的注册信息。当这些节点与master通信的时候,它们可以接收关于其他以注册节点的信息并且建立与其它以注册节点之间的联系。当这些注册信息改变时Master也会回馈这些节点,同时允许节点动态创建与新节点之间的连接。 节点之间的连接是直接的; Master仅仅提供了查询信息,就像一个DNS服务器。节点订阅一个topic将会要求建立一个与发布该topics的节点的连接,并且将会在同意连接协议的基础上建立该连接。ROS面使用最广的连接协议是TCPROS,这个协议使用标准的TCP/IP 接口。 这样的架构允许脱钩工作(decoupled operation),通过这种方式大型或是更为复杂的系统得以建立,其中names方式是一种行之有效的手段。names方式在ROS系统中扮演极为重要的角色: topics, services, and parameters 都有各自的names。每一个ROS客户端库都支持重命名,这等同于,每一个编译成功的程序能够以另一种形似【名字】运行。 例如,为了控制一个北阳激光测距仪(Hokuyo laser range-finder),我们可以启动这个hokuyo_node 驱动,这个驱动可以给与激光仪进行对话并且在"扫描"topic下可以发布sensor_msgs/LaserScan 的信息。为了处理数据,我们也许会写一个使用laser_filters的node来订阅"扫描"topic的信息。订阅之后,我们的过滤器将会自动开始接收激光仪的信息。 注意两边是如何脱钩工作的。 所有的hokuyo_node的节点都会完成发布"扫描",不需要知道是否有节点被订阅了。所有的过滤器都会完成"扫描"的订阅,不论知道还是不知道是否有节点在发布"扫描"。 在不引发任何错误的情况下,这两个nodes可以任何的顺序启动,终止,或者重启。 以后我们也许会给我们的机器人加入另外一个激光器,这会导致我们重新设置我们的系统。我们所需要做的就是重新映射已经使用过的names。当我们开始我们的第一个hokuyo_node时,我们可以说它用base_scan代替了映射扫描,并且和我们的过滤器节点做相同的事。现在,这些节点将会用base_scan的topic来通信从而代替,并且将不再监听"扫描"topic的信息。然后我们就可以为我们的新激光测距仪启动另外一个hokuyo_node。 参考文献 http://www.ros.org/wiki/ros http://bbs.axnzero.com/index.php http://blog.sina.com.cn/digital2image2processing

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧