基于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://bishedaima.com/yuanma/35982.html

相关推荐

  • 基于Python实现学生成绩管理系统

    1, 课程设计目的 《软件设计基础-Python》课程设计是这门课程的实践性教学环节之一,本次设计结合实际应用的要求,使课程设计既覆盖Python的知识点,又接近工程实际需要
    2024年05月14日
    7 1 1
  • 设计一个web服务器

    设计一个web服务器 课程设计目的 《Java&,net》是一门实践性较强的软件基础课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践,本课程设计的目的就是要达到理论与实际应用相结合
    2024年05月14日
    2 1 1
  • Java+Swing实现仿windows计算器程序

    本论文旨在探讨基于Java+Swing实现仿Windows计算器程序的设计与实现,随着计算机技术的不断发展,计算器程序在日常生活与工作中扮演着重要角色,然而,当前市面上的计算器程序功能多样性不足
    2024年05月07日
    3 1 1
  • Python实现简易人脸识别

    1,对图片进行预处理 utils,py 一共是十个文件夹,都是从微博下载下来的,对原始图片需要的是进行识别,裁剪;有很多种方法可以成功,笔者尝试效果比较好的是 caffemodel 或者 haarcascade_frontalface_alt2
    2024年05月14日
    2 1 1
  • 基于spring+mysql实现的音乐推荐系统

    基于spring+mysql实现的音乐推荐系统 1,项目简介 本音乐网站的开发主要利用 spring 框架开发后台,前端采用 Boostrap+jsp 实现
    2024年05月14日
    5 1 2
  • 基于Java+JSP+Servlet+Mysql的考勤管理系统

    基于Java+JSP+Servlet+Mysql的考勤管理系统具有重要意义,随着信息技术的飞速发展,企业对于高效管理人力资源的需求日益迫切,传统的考勤管理方式已经不能满足现代企业的需求
    2024年05月07日
    5 1 2
  • 基于 Web 的遗失物品管理系统

    基于 Web 的遗失物品管理系统 一,摘 要 在许多社区或校园里,常常有人遗失物品或者捡到物品,个人物品的遗失是普遍存在的一个现象,物品的遗失对于失主的工作
    2024年05月14日
    7 1 1
  • 基于JavaEE的在线考试管理系统源码

    在当前数字化时代,教育行业也逐渐迎来了智能化的转型,基于JavaEE的在线考试管理系统作为其中一种典型应用,具有着重要的研究背景和现实意义,随着互联网技术的迅猛发展,传统的纸质考试方式已经无法满足教育教学的需求
    2024年05月07日
    26 1 6
  • javaweb高校毕业生就业管理系统,springmvc+mysql

    这是一个🔥🔥javaweb高校毕业生就业管理系统🔥🔥的项目源码,开发语言Java,开发环境Idea/Eclipse,这个 毕业生就业管理系统开发技术栈为SSH项目,可以作为毕业设计课程设计作业设计并实现一个高校毕业生就业管理平台
    2024年05月23日
    25 1 5
  • 使用同一数据库基于TCP Socket和Websocket实现的相互即时通信系统

    使用同一数据库基于TCP Socket和Websocket实现的相互即时通信系统 摘 要 随着网络通信和计算机技术的发展,人们越来越希望能够即时发送和接收互联网消息
    2024年05月14日
    11 1 2

发表回复

登录后才能评论