赞
踩
关于比赛正式资料参考钢铁侠和智能车竞赛官方网站。之前,博客涉及“偏方”如下:
有部分小伙伴并没有幸运免费得到比赛用车或没有购买,如何进行学习和开发呢?
这里推荐开源仿真包,mit-racecar。安装配置完成后,使用如下命令打开环境:
roslaunch racecar_gazebo racecar.launch
目前比赛规则已经渐渐明朗,参考官方,制作标准比赛仿真环境,学习阿克曼小车控制,ROS基础和相关智能车算法(后续会补充)。开启Building Editor,依据下图绘制环境:
逐步绘制:
双击墙体线设置参数:
绘制完成后,得到赛道图如下:
保存并应用:
加入各种路障后:
1.
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、车模未完成竞赛任务,根据越过锥桶障碍物的数量作为最终排名依据。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。