单目纯视觉避障方案——2020中国机器人大赛FIRA避障仿真组决赛代码开源

本文介绍了一种应用于2020年中国机器人大赛FIRA避障仿真组的单目纯视觉避障方案。该方案利用图像处理技术,通过计算图片的质心来确定机器人的行驶方向,并成功实现了在复杂环境下的自主导航。

单目纯视觉避障方案——2020中国机器人大赛FIRA避障仿真组决赛代码开源

特别鸣谢两位吴同学,董同学和曾同学为最终版代码做出的努力

比赛环境介绍

比赛仿真环境地址:https://github.com/zerowind168/SIMUROSOT-ROBOCHALLENGE

此为 2020 年 FIRA SIMUROSOT ROBO CHANLLENGE 中国赛区的比赛环境

操作系统: ubuntu 16.04

ROS版本: Kinectic

在这里插入图片描述

赛题要求

该比赛分为两个任务。简单来说,任务一提供了障碍物的位置信息,机器人可以通过一个单目摄像头返回的图像信息进行避障,最终到达对面的球门;任务二则只提供了视觉信息,最终目标仍然是到达对面的球门。

由于机器人采用双轮差动的方式行驶,给赛题的完成增加了不少难度。

在这里插入图片描述

比赛思路

最终版本代码的思路主要分为以下几个部分:

  1. 场地信息提取
  2. 通过计算图片的“质心”得到下一步的行驶方向
  3. 解算速度并发送至机器人驱动模块

该方案的出彩点

本方案的核心代码只有一行,且通过路径图像的质点实时导航的方式基本不需要过多的处理。

仍需优化的地方

  1. 通过路径图像的质点导航,可能被诱导向错误路径行驶或者导致机器人擦边障碍物;
  2. 检测球门的代码条件需要完全看不到视野内的障碍物,可能会导致看到蓝色球门时只能看到一根门柱,最终无法过门撞到柱子;
  3. 速度过慢,理论来讲增大速度的同时增加偏转幅度并不会导致避障效果的降低。

代码

# coding=utf-8
#四川大学ros避障代码,纯视觉算法
import rospy
import numpy as np
import math
import time
import cv2 as cv
from robot import Robot
from geometry_msgs.msg import Twist

#主要调整参数,调整转向幅度
k = -0.0086
#调整机器人速度,一般来说速度越快绝对值应该也增大,否则相当于一定程度减小转向幅度
v = 0.5
#erate,腐蚀系数,扩大障碍物及灰色背景的面积,一般来说腐蚀系数越大越安全,但太大可能导致可行的路径被遮挡
erate = 150
#背景灰度总和阀值,可调参数
gary_scale_value = 48000000
#向ros发布命令的周期与频率,rate=1/dt,一般需要和图像处理速度匹配
dt = 0.1
rate = 10

def navigation(bgr_image):
    H, W, C = bgr_image.shape
    image = np.array(bgr_image, dtype= np.uint8)
    hsv_image = cv.cvtColor(image, cv.COLOR_BGR2HSV)
    hsv_image = cv.GaussianBlur(hsv_image, (5, 5),0)
    #场景中颜色hsv上下界值
    lower_hsv_gray = np.array([0,0,46])         #灰色下界
    upper_hsv_gray = np.array([180
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值