基于Webots平台的简易智能机器人避障算法的实现

ObstacleAvoidanceAlgoBasedOnWebots 基于Webots平台的简易智能机器人避障算法的实现(华南理工大学2021年智能机器人期末课程作业) 实验目的: 熟悉机器人仿真软件(例如Simbad

本文包含相关资料包-----> 点击直达获取<-------

ObstacleAvoidanceAlgoBasedOnWebots

基于Webots平台的简易智能机器人避障算法的实现(华南理工大学2021年智能机器人期末课程作业)

实验目的:

熟悉机器人仿真软件(例如Simbad、Webots、TeamBots、Player/Stage/Gazebo、MotionPlaner等)的使用方法;掌握若干机器人路径规划算法。能够更清楚了解智能机器人软硬件组成、工作原理等基本知识;熟练掌握机器人程序的设计与编写;能够综合运用所学基础理论和专业知识进行创新设计的能力。

实验要求:

在机器人软件平台上建立一个包含若干个静止障碍物和运动障碍物的仿真环境,设定机器人的起始点和终点后,机器人能够规划出一条从起始点到目标点的安全路径。查阅相关路径规划算法,实现一种以上算法并相互比较。要求给出源代码、试验结果并且进行演示。

实验环境和平台:

Win10 + Webots

代码语言:

python

实验过程:

1.了解软件结构和各功能分区

打开界面,左侧栏是node界面,用于添加/删除/修改世界中的各节点。右侧是控制器代码的文本编辑器页面,Webots允许使用C/C++/Java/python/matlab等多种编程语言,可以选择自己熟悉的语言进行编写。页面上方是控制模拟的各种按钮,包括开始/暂停/重载等。页面最下方是控制台,可以看到程序运行过程中输出的信息。页面正中央是视图区,可以设计世界布局及调整视角。

2.新建一个世界

通过添加node,可以在不同的位置摆放不同的障碍物。Webots提供了各类内置的basic node。展开node,可以设置node的具体属性,包括transition,rotation,color,size等。

除了webots内置节点外,还可以通过修改basic node中的children属性,添加子节点,来实现自主设计。在本次实验中,我使用了内置的e-puck节点进行避障实验,同时还自主搭建了一个同时配备GPS,compass, 两个发动机和8个距离传感器的robot来进行路径规划实验。

3.用e-puck机器人实现自动避障(包括静态障碍和动态障碍)

E-puck内置了8个距离传感器和左右两个发动机。其运动原理是通过读取位于其转塔周围的8个红外距离传感器的返回值,根据传感器读数判断周围环境并驱动两个车轮。距离传感器返回的值在0到4096之间缩放。数值越大表示障碍物越近。

避障代码实现在test_controller.py文件中

实现原理:

使用 getDevice() 方法,初始化各传感器。使用 enable() setPosition() setVelocity() 等方法,初始化传感器和发动机的各项参数。

在while主循环中,通过 getValue() 方法读取传感器数值,并根据返回的传感器数值判断是否发生了碰撞。如果发生碰撞,则改变左右两个发动机的速度来实现转向。

4.实现BFS路径规划控制器

bfs_target.py:
路径规划算法,按照给定的地图设计合理路径,封装成BFS类

实现了 getTarget() 方法。该方法会返回一个列表类型,在规划路径后记录路径中所经点的坐标,并传递给主控制器。

bfs.py:
控制器代码,启动各部件并控制机器人按照规划好的路径进行移动

根据world的障碍物布局,手动输入map列表,实例化bfs类得到target列表(存放目标路径的经过点坐标)

计算robot当前位置到目标位置的距离和方向夹角,调整发动机速度。

5.实现DFS路径规划控制器

dfs_target.py
dfs.py

通过调整robots的controller参数,即可试验不同控制器的避障效果

6.实验结果和改进方向

在我个人设计的世界地图下,e-puck和连接了bfs控制器的robot被放置在同一场景下测试。

e-puck机器人在碰见静态障碍物(如地图中的木箱)和动态障碍物如(运动中的robot)都能实现自动转向和避障。
Robot测试过程中,设置左上角为起始点,右下角为终点。测试发现robot能够按照给定的地图进行合理的路径规划,并在控制台输出路径step数。修改robot的控制器属性为dfs可以进行相同的测试。

实验过程中也遇到了一些难点:

1、在实现BFS时,多次用到了list类型和dict类型,并组合使用。在构建队列时忽视了 浅拷贝和深拷贝 的区别,导致路径规划错误,花费了大量的时间进行修正。
2、除了BFS和DFS,还尝试了实现人工势场法,但由于对软件熟悉程度不够和时间不足,导致代码实现部分仍然存在问题,故未实现
3、在构建路径前, 需要手动输入 map列表。没有找到直接获取整个布局状态的传感器或对应的传感器参数,导致浪费大量时间且存在误差。
4、障碍物设置不当,自动避障小车在与球类障碍物相撞时,有时会引起 球类障碍物位置的偏移 ,进而影响路径规划的准确度。因此在最终实验中,用油桶或木块等其他障碍物进行了替代。需要找到克服球类障碍物随意移动特性的方法

参考文献

  • 云机器人系统的计算卸载研究与设计(西安科技大学·许志杰)
  • 基于ROS和Spark的智能家居+大数据系统设计(北方工业大学·李长圆)
  • 云机器人同步定位与地图构建技术研究(国防科学技术大学·谭杰夫)
  • 基于深度学习的地形识别研究及多任务云平台系统实现(华南理工大学·张扬彪)
  • 基于ROS的果园遥控割草机器人设计与试验(南京农业大学·张文海)
  • 基于模型预测轮廓控制的多机器人路径规划设计与实现(郑州大学·屈曜光)
  • 基于模型预测轮廓控制的多机器人路径规划设计与实现(郑州大学·屈曜光)
  • 基于BIM的建筑搬运机器人地图构建与导航研究(西安建筑科技大学·陈宇帆)
  • 机器人技术的教学系统设计与开发(山东师范大学·慈英思)
  • 智慧农场物流机器人移动平台设计与研究(天津农学院·武波)
  • 基于深度学习的地形识别研究及多任务云平台系统实现(华南理工大学·张扬彪)
  • 基于微服务的机器人容器云平台系统设计与实现(浙江大学·方晨)
  • 机器人技术的教学系统设计与开发(山东师范大学·慈英思)
  • 云机器人系统的计算卸载研究与设计(西安科技大学·许志杰)
  • 面向智能建筑机器人的云平台系统关键技术研究(天津理工大学·林德祥)

本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:毕业设计驿站 ,原文地址:https://m.bishedaima.com/yuanma/35982.html

相关推荐

  • 基于Python实现损失函数的参数估计

    1, 实验目的 理解逻辑回归模型,掌握逻辑回归模型的参数估计算法, 2, 实验要求 实现两种损失函数的参数估计(1,无惩罚项;2,加入对参数的惩罚),可以采用梯度下降
    2024年05月14日
    1 1 1
  • 基于jsp和mysql实现的个人博客系统

    基于jsp和mysql实现的个人博客系统 1,项目简介 1,1 项目概述 这是一个简单的个人博客系统,个人练手,完成会部署到云服务器作为记录自己生活学习的点点滴滴的一个工具
    2024年05月14日
    17 1 3
  • 在线文档管理系统

    这是一个🔥🔥基于SpringBoot框架的在线文档管理系统设计与实现🔥🔥的项目源码,开发语言Java,框架使用的SpringBoot+vue技术,开发环境Idea/Eclipse
    2024年05月23日
    1 1 1
  • 基于JSP和MySQL的宠物网站设计与实现

    基于JSP和MySQL的宠物网站设计与实现 摘 要 本系统是采用Java技术来构建的一个基于Web技术的B/S结构的宠物网站,该网站建立在Spring和Struts2框架之上
    2024年05月14日
    11 1 2
  • Java+SSH酒店预订管理网站

    这是一个🔥🔥SSH酒店预订管理网站🔥🔥的项目源码,开发语言Java,开发环境Idea/Eclipse,这个 酒店预订开发技术栈为SSH项目,可以作为毕业设计课程设计作业基于Java+SSH技术(Struts2
    2024年05月23日
    3 1 1
  • 基于Java+SSM的房屋租赁管理系统、javaweb+mysql框架

    房屋租赁管理系统在当今社会扮演着重要角色,随着城市化进程的不断加快,人们对于房屋租赁的需求也日益增长,基于Java+SSM的房屋租赁管理系统具有极大的应用潜力,本论文旨在探讨如何利用Javaweb技术开发一个全面而高效的房屋租赁管理系统
    2024年05月07日
    3 1 1
  • 基于Python实现的新闻网络爬虫程序

    基于Python实现的新闻网络爬虫程序 1,简介 1,1 引用术语与缩写解释 缩写,术语 解 释 Python 一种简洁而强大的解释型脚本语言 pyodbc Python下的ODBC数据库访问组件 SQLAlchemy Python下的ORM数据访问组件 pywin32 Python下的Win32接口访问组件 requests Python下的Web访问组件 Pillow Python下的图像处理组件 解释型语言 无需编译源码可敏捷部署并执行的语言 IOC 控制反转
    2024年05月14日
    3 1 2
  • 基于ASR的语音词频提取云平台(python)

    基于ASR的语音词频提取云平台(python) 摘要 随着互联网的发展,语音文件成为了人们接触得越来越多文件,如何高效的从一段录音中提取出关键信息
    2024年05月14日
    2 1 2
  • 基于Java+SSH的在线教学交流平台、基于JavaWeb的在线教学交流平台

    在当今信息化时代,教育行业迎来了数字化转型的浪潮,基于Java+SSH框架(struts2+spring+hibernate)的在线教学交流平台应运而生,本研究旨在设计和开发一个全面的师生学习交流平台
    2024年05月07日
    6 1 3
  • 基于Java Web和MySQL的学生信息管理系统

    基于Java Web和MySQL的学生信息管理系统 1,系统概述 1,1 课设目的 复习,巩固JavaWeb,数据库,AJAX,JQuery,HTML的基础知识
    2024年05月14日
    2 1 1

发表回复

登录后才能评论