全国大学生智能车室外光电组补充资料(偏方版本)

关于比赛正式资料参考钢铁侠和智能车竞赛官方网站。之前,博客涉及“偏方”如下:

  1. 来龙去脉:https://blog.csdn.net/ZhangRelay/article/details/89639965
  2. 常规攻略:https://blog.csdn.net/ZhangRelay/article/details/90300095


有部分小伙伴并没有幸运免费得到比赛用车或没有购买,如何进行学习和开发呢?

这里推荐开源仿真包,mit-racecar。安装配置完成后,使用如下命令打开环境:

roslaunch racecar_gazebo racecar.launch

目前比赛规则已经渐渐明朗,参考官方,制作标准比赛仿真环境,学习阿克曼小车控制,ROS基础和相关智能车算法(后续会补充)。开启Building Editor,依据下图绘制环境:

-图1-比赛标准室外赛道细则图

 

逐步绘制:

双击墙体线设置参数: 

绘制完成后,得到赛道图如下:

保存并应用:

加入各种路障后:

1.

2.

愉快调试吧~

特殊情况如下,自行搭建实现:

-图2-比赛标准室内赛道细则图

控制小车算法可以用Python也可以用C++,具体实现策略参考之前博文介绍。

Python版本标准模板如下:

#!/usr/bin/env python

"""
template_node.py

LCHS RACECAR 2016-17
Written by Braden Oh

This program serves as a template for a working node.
It contains a useful implementation of the drive function,
an outline for the main function, and contains all commands
necessary to initialize a node.  It also contains comments
outlining specific documentation.

"""

#----------------------------------------------------------
# IMPORTS
#----------------------------------------------------------
import rospy											# Import ROS libraries
from sensor_msgs.msg import LaserScan					# Import required msg types
from ackermann_msgs.msg import AckermannDriveStamped	
# Other imports here...

#----------------------------------------------------------
# CONSTANTS
#----------------------------------------------------------
DATA_IN = '/scan'									# Read data from this topic
DATA_OUT = 'vesc/ackermann_cmd_mux/input/navigation'	# Publish data to this topic
NODE_NAME = 'sampleController'						# Name of the node
SPEED = 1.0											# Default speed in m/s
# Other constants here...

#----------------------------------------------------------
# Functions
#----------------------------------------------------------
def drive(speed, angle, myPublisher):
        msg = AckermannDriveStamped()           # Initializes msg object
        msg.drive.speed = speed                 # Sets msg speed to entered speed
        msg.drive.acceleration = 0              # Sets msg acceleration to 0
        msg.drive.jerk = 1                      # Sets msg jerk to 1
        msg.drive.steering_angle = angle        # Sets msg steering angle to entered angle
        msg.drive.steering_angle_velocity = 1   # Sets msg angle velocity to 1
        myPublisher.publish(msg)              	# Publishes the message
        
# def myFunction(parameter_1, parameter_n):
	# Other functions here

#============================
# MAIN
#============================
def main(msg):

	# Initialize publisher object
	myPublisher = rospy.Publisher(DATA_OUT,AckermannDriveStamped,queue_size=10)

	# Useful calculations here...
	
	# Use the publisher
	# i.e. to drive straight ahead, call the drive function:
	# drive(SPEED, 0, myPublisher)  

#============================

rospy.init_node(NODE_NAME)					# Initialize node with preset name
rospy.Subscriber(DATA_IN,LaserScan,main)	# Create subscriber object
											#  - Reads data from preset topic
											#  - Data of type LaserScan
											#  - Upon new data, execute main
rospy.spin()	# Continue running until user stops this node





算法提示:

  • 常规激光壁障算法
  • 导航功能包改进算法
  • 模型预测控制算法
  • 人工智能控制算法

AI可以参考这个链接:https://zhangrelay.blog.csdn.net/article/details/92050001


官方比赛规则:

区域赛赛道搭建方案:

1. 室外搭建赛道全长约64m,跑道宽2米。使用长400厘米宽38厘米的条幅搭建。为了比赛的公平公正性,请按照给出的样例统一搭建赛道。(以图一为例)

 

2. 如遇天气(阴雨、强风、暴晒)等特殊情况,无法在室外搭建,请采用室内搭建方案:赛道全长约64m,跑道宽2米。使用长400厘米宽38厘米的条幅搭建。为了比赛的公平公正性,请按照给出的样例统一搭建赛道。(以图二为例)

 

区域赛比赛任务及规则说明

区域赛预赛阶段:进入预赛的队伍根据抽签决定出场次序,按照竞赛规则,各参赛队伍需在规定时间内(根据预赛时间及队伍数量确定每队伍分配时间)完成智能车调试及竞赛任务。智能车根据构建的地图自主导航,避开锥桶障碍物10个,从赛道起点跑到终点,视为完成比赛任务,记录比赛完成时间,根据完成时间进行比赛成绩排名。根据比赛成绩,从预赛的队伍中筛选出前2/3的队伍,晋级决赛。

区域赛决赛阶段:进入决赛的队伍根据抽签决定出场次序,竞赛场地增加锥桶障碍物至15个,其他规则同预赛阶段,最终根据比赛成绩,按照国赛名额分配到各赛区比例筛选队伍,晋级国赛。

区域赛违规说明

1、车模完成比赛任务,但车模中途碰触到锥桶,每碰触一次比赛时间加1s。

2、车模完成比赛任务,但车模碰触到赛道围栏,每碰触一次比赛时间加2s。

3、车模在行驶途中意外停止运行,且停止时间超过10秒,视为未完成竞赛任务。

4、车模未完成竞赛任务,根据越过锥桶障碍物的数量作为最终排名依据。


 

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangrelay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值