前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为什么以及如何通过机器人学习编程和项目实践

为什么以及如何通过机器人学习编程和项目实践

作者头像
zhangrelay
发布2021-03-03 14:38:37
3910
发布2021-03-03 14:38:37
举报

编程语言有很多,算法应用场景也很丰富,通过机器人学习编程的优势在哪里?

  • 仿真:零成本测试算法
  • 真机:实际环境中直观展示算法
代码语言:txt
复制
机器人项目实践    

机器人编程

深度优先搜索Depth First Search (DFS)

伪代码形式Pseudocode:

代码语言:javascript
复制
DFS-iterative (G, s):                                   //Where G is graph and s is source vertex
      let S be stack
      S.push( s )            //Inserting s in stack 
      mark s as visited.
      while ( S is not empty):
          //Pop a vertex from stack to visit next
          v  =  S.top( )
         S.pop( )
         //Push all the neighbours of v in stack that are not visited   
        for all neighbours w of v in Graph G:
            if w is not visited :
                     S.push( w )         
                    mark w as visited


    DFS-recursive(G, s):
        mark s as visited
        for all neighbours w of s in Graph G:
            if w is not visited:
                DFS-recursive(G, w)

很抽象,对不对。其大概意思是:

DFS的这种递归性质可以使用堆栈来实现。基本思想如下:

选择一个起始节点并将其所有相邻节点推入堆栈。

从堆栈中弹出一个节点选择下一个要访问的节点,并将其所有相邻节点推入堆栈。

重复此过程,直到堆栈为空。但是,请确保已标记访问的节点。这将防止多次访问同一节点。如果未标记访问的节点,并且多次访问同一节点,则可能会陷入无限循环。

还是很抽象?

代码语言:txt
复制
DFS的工作方式图示    

好像能看懂这个算法了,但是依然不清楚这个算法有啥用啊……为啥要学这个???

路径规划(Path Planning)

但是如果通过机器人导航中路径规划案例切入这类算法,就会非常清晰的了解这些算法的背景。

代码语言:txt
复制
路径规划示意图    

当想机器人沿着每条路径到达终点并在终点找到“目标”时,深度优先搜索是一个不错的选择。由于算法没有均匀地覆盖每条路径,因此效果可能不太理想,但是,如果目标在列的中间,可以找到它而无需搜索每条路径,因此效率更高。发现“目标”的速度比使用BFS(Breadth First Search,广度优先搜索,)更快,在计算上也将更加容易。如果只有一个目标,可能会很好,但是如果有多个目标/路径,可能会错过较短的“最佳”路径。

如下所示:

代码语言:txt
复制
目标点导航    

什么情况更类似广度优先搜索BFS呢?建立环境地图或者区域覆盖的时候:

代码语言:txt
复制
全区域覆盖    

通俗而言,地图范围内目标单一且明确,直奔目标而去,深度更合适;而对于环境未知,需要探索,或者目标较多,那就广度优先,把地图好好利用起来,机器人在里面漫游一圈。


对于互联网和移动互联网时代,计算机主要处理的是信息数据检索和排序等,例如搜索引擎的使用,就是信息的快速查找,深度优先和广度优先算法用于信息查找;

当进入物联网和移动物联网时代后,计算机虚拟世界和现实世界依靠强大的传感器和执行器深度融合,这时候信息的快速查找就更为具体,比如从家到公司的路径,选用何种交通方式等,这时候的深度优先和广度优先算法用于对真实世界建模后数字化地图数据的信息处理。

机器人是最佳的综合性移动物联网节点,可“甜”可“咸”,既可以通过自身传感器完成对真实世界的建模理解,又可以将决策应用到环境中执行任务。最典型的案例为室内扫地机器人和自动驾驶汽车。

代码语言:txt
复制
扫地机器人算法测试     
代码语言:txt
复制
自动驾驶汽车算法测试    

这时所学习的算法需要处理的不再是单纯的虚拟信息或数据,而是我们的真实世界的数字模型。

更多内容参考,博客相关介绍文章。

项目实践

那么如何才能更好的掌握机器人编程?

  • 纸上得来终觉浅
  • 项目实践最重要

这里推荐的研习路径,就是最热门的机器人开源项目,参与其中必然成长收获非常大。

最后,回顾一下这5年,每年10月自己觉得还不错的博文:

  1. 2015年10月:原创 机器人操作系统ROS(indigo)与三维仿真软件V-Rep(3.2.1)通信接口使用笔记
  2. 2016年10月:原创 ROS(indigo)RRT路径规划
  3. 2017年10月:原创 ROS(1和2)机器人操作系统相关书籍、资料和学习路径
  4. 2018年10月:原创 在Windows10安装和使用机器人操作系统ROS补充说明
  5. 2019年10月:原创 物联网IoT Arduino 机器人ROS 人工智能OpenAI融合课程(幼儿园到大学)

祝大家2020.10.24节日快乐,感谢CSDN让我们相遇^_^

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-10-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 机器人编程
    • 深度优先搜索Depth First Search (DFS)
      • 路径规划(Path Planning)
      • 项目实践
      相关产品与服务
      物联网
      腾讯连连是腾讯云物联网全新商业品牌,它涵盖一站式物联网平台 IoT Explorer,连连官方微信小程序和配套的小程序 SDK、插件和开源 App,并整合腾讯云内优势产品能力,如大数据、音视频、AI等。同时,它打通腾讯系 C 端内容资源,如QQ音乐、微信支付、微保、微众银行、医疗健康等生态应用入口。提供覆盖“云-管-边-端”的物联网基础设施,面向“消费物联”和 “产业物联”两大赛道提供全方位的物联网产品和解决方案,助力企业高效实现数字化转型。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档