赞
踩
对于个人而言,这是我获得的竞赛类最高奖项,省级一等奖,没有国家级的奖项,让我在多项荣誉伴随的同时倍感凄凉。梅西在12/19的凌晨带领球队夺得本届世界杯的冠军,他结束了来自内心的凄凉,拿到了属于自己的最高荣誉,他不在乎他是不是金靴,是不是MVP,因为这不是最高荣誉,只有全金的大力神杯才是他心中想要的,我没法与世界巨星相比较,他昨天的经历仿佛映照在现在的我身上,但是今天的他补足了这份遗憾,功成名就,而我,确实不再可能拿到属于我自己的本科阶段大学生竞赛类国奖。因而对我现在拿到的最高奖项作总结,当作遗憾,也作为纪念。
本次比赛在10月6日印发红头文件,我们收到竞赛通知是在10月11日,最比赛时间定为11月26,27日,可能因为疫情影响,最终时间改到12月4日,这个时间是智能无人仿真车竞速比赛,收到通知后,我们实验室成员首先进行分组商讨,但是有一位同学因疫情原因不能到校,所以分组方面纠结了有一周时间,为此深感羞愧。
组队组委会限制不超出三人,我们最终组名定为“一xin”,三人成一组开始了长达一月半备赛,也不要嘲笑我,这虽然不是我们学院第一次参加这个比赛的这个项目,但是并没有真正做出可以跑动作品的学长,没有了前人栽树,哪有后人乘凉的道理,这一月半就当我为学院栽了棵树,做了微乎其微了贡献。
既然是栽树,那第一件事就是看看树是什么品种,不错,我们连这个比赛是什么都不知道,什么是ROS,什么是Gazebo,什么又是Sim_time等等,其实当时坚持了两周没有一点头绪时组内就不想接着做下去了,有这些时间背几个abandon也是好的,幸好有一天,我们装好系统了,这么点成就也足以成为我们继续做下去的动力。
钉钉群是组委会赛前培训比赛内容,发布比赛规则,解决参赛选手问题的群聊,但是并不会在我们存在问题的时候去指导怎么做,我为自己和组内另一位同学配置完两套系统,(防止赛时我的电脑崩溃,作备用)可以说一样的电脑存在的问题并不相同,所以在群内的error问题和bug问题,组委会是不可能为我们解决的,而且这种也保证了比赛的公平性,当时感觉很无奈,现在想想确实考验参赛选手的各方面素质。
这是摘取的群内部分聊天,可以看到,包括我在内的很多人都存在问题,他们与我分别来自省内的21所大学,我也通过这次比赛结识了许多志同道合的同学。
整体的运行环境要在虚拟机上进行,要下载的有VMware,其次是ubuntu,组委会在培训时使用的版本是16.04,但是对于比赛的ubuntu版本不作限制,经过大量版本对比查阅后我们下载了较新版本的20.04,之后就是安装机器人操作系统ROS,最后便是Gazebo和Rviz(如下图标),最后导入组委会提供的小车模型,赛道模型和基本参数。
赛道模型并不复杂,采用“去”“回”模式,也就是对称模型 ,但是对于代码控制的仿真车来讲便是个问题了,组委会禁止向小车发送实时位置坐标,刚开始我还不理解为什么要这么限制,后续做出点眉目的时候才明白,向小车实时发布坐标就等同于上帝视角,驾照都应该学过,如果给我们上帝视角去考试,会有人挂科吗?所以取消这种做法做出来的小车便具有不确定性,我最终最出来的小车在比赛的时间也是在限定五分钟内重跑了一次,庆幸第二次跑成功了,最终公布的成绩单中时间是1分28秒。
做好环境配置工作后,需要绘制小车运行的地图。
绘制过程中需要手动控制按键WASD,待小车走完全图,地图建立完毕。
地图建立后,需要保存,保存默认在主文件夹,需要将地图放置到工程中的map文件夹下。保存命令为
rosrun map_server map_saver -f test_map//“test_map”是地图名
启动Gazebo,Rviz命令
roslaunch bringup racecar_gazebo_rviz.launch
输入上方命令时,Rviz里没有地图,需要输入地图命令。
运行小车地图命令
roslaunch bringup move_base.launch
链接: https://download.csdn.net/download/CauchyKAI/87319786.
链接: https://www.bilibili.com/video/BV1zM41127uA/?vd_source=e1a731dd19e7c02baaa22bc85db8648c.
小车的初始位置不能改变!!!
x=-0.5;
y=0.0;
z=0.0;
racecar.launch
<?xml version="1.0"?> <launch> <!-- 设置launch文件的参数 --> <arg name="paused" default="false"/> <arg name="use_sim_time" default="true"/> <arg name="gui" default="true"/> <arg name="headless" default="false"/> <arg name="debug" default="false"/> <!--模型车的位置不能修改--> <arg name="x_pos" default="-0.5"/> <arg name="y_pos" default="0.0"/> <arg name="z_pos" default="0.0"/> <!--运行gazebo仿真环境--> <include file="$(find gazebo_ros)/launch/empty_world.launch"> <arg name="debug" value="$(arg debug)" /> <arg name="gui" value="$(arg gui)" /> <arg name="paused" value="$(arg paused)"/> <arg name="use_sim_time" value="$(arg use_sim_time)"/> <arg name="headless" value="$(arg headless)"/> <arg name="world_name" value="$(find racecar_gazebo)/worlds/racetrack.world"/> <!-- 此处改成参赛者放置.world文件的地址--> </include> <!-- 加载机器人模型描述参数 --> <param name="robot_description" command="$(find xacro)/xacro --inorder '$(find racecar_description)/urdf/racecar.urdf.xacro'"/> <!--运行joint_state_publisher节点,发布机器人关节状态--> <node name = "robot_state_publisher" pkg = "robot_state_publisher" type = "state_publisher"> <param name="publish_frequency" type="double" value="20.0" /> </node> <!-- 在gazebo中加载机器人模型--> <node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen" args="-urdf -model shcrobot -param robot_description -x $(arg x_pos) -y $(arg y_pos) -z $(arg z_pos)"/> </launch>
camera.xacro
<?xml version="1.0"?> <robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="camera"> <link name="camera_link"> <inertial> <mass value="0.001" /> <origin xyz="0 0 0" /> <inertia ixx="0.001" ixy="0.0" ixz="0.0" iyy="0.001" iyz="0.0" izz="0.001" /> </inertial> <visual> <origin xyz=" 0 0 0 " rpy="1.57 0 1.57" /> <geometry> <mesh filename="package://racecar_description/meshes/S1030-0315.dae" scale="0.1 0.1 0.1" /> </geometry> </visual> <collision> <origin xyz="0.0 0.0 0.0" rpy="0 0 0" /> <geometry> <box size="0.03 0.16 0.03" /> </geometry> </collision> </link> <gazebo reference="camera_link"> <material>Gazebo/Black</material> </gazebo> <gazebo reference="camera_link"> <sensor type="camera" name="camera_node"> <pose>0 0 0 0 0 0</pose> <update_rate>30.0</update_rate> <camera name="head"> <horizontal_fov>1.3962634</horizontal_fov> <image> <width>1280</width> <height>720</height> <format>R8G8B8</format> </image> <clip> <near>0.02</near> <far>300</far> </clip> <noise> <type>gaussian</type> <mean>0.0</mean> <stddev>0.007</stddev> </noise> </camera> <plugin name="gazebo_camera" filename="libgazebo_ros_camera.so"> <alwaysOn>true</alwaysOn> <updateRate>0.0</updateRate> <cameraName>/camera</cameraName> <imageTopicName>image_raw</imageTopicName> <cameraInfoTopicName>camera_info</cameraInfoTopicName> <frameName>camera_link</frameName> <hackBaseline>0.07</hackBaseline> <distortionK1>0.0</distortionK1> <distortionK2>0.0</distortionK2> <distortionK3>0.0</distortionK3> <distortionT1>0.0</distortionT1> <distortionT2>0.0</distortionT2> </plugin> </sensor> </gazebo> </robot>
imu.xacro
<?xml version="1.0"?> <robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="imu"> <xacro:macro name="imu" params="prefix:=imu"> <!-- Create laser reference frame --> <link name="${prefix}_link"> <inertial> <mass value="0.001" /> <origin xyz="0 0 0" /> <inertia ixx="0.001" ixy="0.0" ixz="0.0" iyy="0.001" iyz="0.0" izz="0.001" /> </inertial> <visual>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。