• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

智能车竞赛——室外光电创意组仿真之脱缰的野马

人工智能 布剪刀石头 3099次浏览 0个评论

一、前言

 

操作系统:ubuntu16.04

ROS版本:kinetic

Gazebo版本:7.0.0

本文介绍在MIT的racecar模型基础上搭建slam,仿真实现2019年室外光电创意组比赛。

 

二、效果

 

 

 

 

三、准备工作

 

3.1安装仿真环境

 

参考教程:北邮智能车仿真培训(一)—— 安装仿真环境

 

3.2 创建工作区间

 

mkdir -p ~/racecar_ws/src

cd ~/racecar_ws/src

catkin_init_workspace

git clone https://github.com/xmy0916/racecar.git

cd ..

catkin_make

 

 

创建成功如下:

 

智能车竞赛——室外光电创意组仿真之脱缰的野马

 

 

四、仿真介绍

 

4.1 阿克曼模型介绍

 

这个其实也没什么高大上的,就是我们常见的车模的样子,通过舵机改变前面两个转向轮的方向,后面的驱动轮方向始终不变,模型如下图(图片原文:http://www.rcfans.com/bbs/forum.php?mod=viewthread&tid=358236&ordertype=1 ):

 

智能车竞赛——室外光电创意组仿真之脱缰的野马

 

其中阿克曼角就是图中的 b – a,当阿克曼角越接近0的时候车子最适合漂移(老司机划重点),这种模型的设计就是为了让汽车在转向的过程中更加顺滑。而我们室外光电的车模就是基于这种车辆模型,但是钢铁侠官方给的驱动方式是差速控制,显然不是最合理的控制手段。

 

4.2 仿真文件介绍

 

4.2.1 racecar_contrl文件夹

这个文件主要是配置了车辆的关节运动,为什么说关节呢,这里设计racecar转向其实和机械臂的关节设计是一样的,他们的类型都是joint_state_controller

 

4.2.2 racecar_contrl/config文件夹

这个是关节参数的具体配置文件,里面有转向PID的参数配置,仿真其实就实际一样的。常用的舵机转向相当于是自带了位置环所以我们一般不去设计他的PID;但是仿真的转向没有位置环,因为我们是仿真世界的主人,我们可以知道关节转动了多少角度,也能控制转向速度,所以用角度作为反馈来控制转向速度从而让关节快速的转到我们所需要的角度,所以这里就必须配置关节的PID了,具体实现gazebo已经帮我们做好了,只要自己调参数就行。

 

4.2.3 racecar_contrl/launch文件夹

这个是配置了一些关节控制的启动文件。

 

4.2.4 racecar_contrl/scripts文件夹

这里面存放了一些控制的脚本,可以直接运行keyboard_teleop.py就可以控制小车运动。

 

4.2.5 racecar_description文件夹

这个是整个车模的描述文件夹,含有小车的xacro模型文件,和场地的模型文件,还有场地外观的材料文件。

 

4.2.6 racecar_gazebo文件夹

gazebo有关的文件

 

4.2.7 racecar_gazebo/config文件夹

里面是slam的配置文件,以及rviz启动的文件,gazebo文件夹下其他几个文件夹类似就不累述了

 

4.2.8 system文件夹

这里面主要用上的就是阿克曼消息的转换,文件中还有一些与硬件有关的驱动

 

五、启动仿真

 

5.1 使能环境变量:

echo "source ~/racecar_ws/devel/setup.bash" >> ~/.bashrc

source ~/.bashrc

 

5.2 启动地图:

roslaunch racecar_gazebo racecar_runway.launch

 

智能车竞赛——室外光电创意组仿真之脱缰的野马

 

六、建图

 

6.1 启动slam和rviz:

roslaunch racecar_gazebo slam_gmapping.launch

 

智能车竞赛——室外光电创意组仿真之脱缰的野马

 

6.2 控制车辆(左侧有个控制窗口,图标是问号点开),WASD控制前左后右的运动就可以建图了:

 

智能车竞赛——室外光电创意组仿真之脱缰的野马

 

智能车竞赛——室外光电创意组仿真之脱缰的野马

 

大家建图可以把锥桶先删了在建图的时候!!!

 

6.3 保存地图:

rosrun map_server map_saver -f ~/racecar_ws/src/racecar_gazebo/map/map_runway

 

智能车竞赛——室外光电创意组仿真之脱缰的野马

 

6.4 关闭建图:

ctrl + c关闭所有窗口

 

七、导航

 

7.1 启动导航和环境地图:

roslaunch racecar_gazebo racecar_runway_navigation.launch

 

7.2 启动rviz:

roslaunch racecar_gazebo racecar_rviz.launch

 

智能车竞赛——室外光电创意组仿真之脱缰的野马

 

7.3 用2D Nav Goal发布目标:

 

智能车竞赛——室外光电创意组仿真之脱缰的野马

 

7.4 启动导航脚本

rosrun racecar_gazebo path_pursuit.py

或者

cd ~/racecar_ws/src/racecar_gazebo/scripts

python path_pursuit.py

 

智能车竞赛——室外光电创意组仿真之脱缰的野马

 

开始导航!

 

八、总结

 

本文完整源代码地址:github.com/xmy0916/racecar

 

感谢古月居老师邀请写这个教程,室外光电创意组的至此全部完成,当然大家直接git clone下来的工程运行起来没什么难度……在MIT的github官网只有车辆的gazebo文件没有配置amcl和gmapping,自己配置一遍参数才知道过程是多么的艰辛,之前在网上看到有2019年参加过室外光电创意组的同学实现了这个仿真,但是没有开源教程和代码,我自己费劲千辛万苦弄了三四天才搭建好完整的框架开源给大家,点个赞支持下呗~后续会推出其他组别(除了电磁组)的阿克曼车模仿真教程

 


九、后文

 

介绍下怎么自己场地建模

 

智能车竞赛——室外光电创意组仿真之脱缰的野马

 

9.1 ctrl + alt + t打开新的终端输入命令打开空的gazebo:

gazebo

 

9.2 点击左上角的Edit选择Building Edit:

 

智能车竞赛——室外光电创意组仿真之脱缰的野马

 

9.3 点击Create Walls下面的Wall:

 

智能车竞赛——室外光电创意组仿真之脱缰的野马

 

9.4 根据场地模型在白色区域绘制地图(我这里画过了就随便画下):

 

智能车竞赛——室外光电创意组仿真之脱缰的野马

 

9.5 画完后点击左上角的File选择save as:

 

智能车竞赛——室外光电创意组仿真之脱缰的野马

 

9.6 修改名字runway,路径随便放一个先:

 

智能车竞赛——室外光电创意组仿真之脱缰的野马

 

9.7 可以看见对应目录下有了模型的描述文件:

 

智能车竞赛——室外光电创意组仿真之脱缰的野马

 

9.8 重启gazebo,点击左上角的Insert可以看到刚刚建立的模型,点击一下拖到gazebo中:

 

智能车竞赛——室外光电创意组仿真之脱缰的野马

 

9.9 这里最好把坐标轴放到我们车的起点,如图画圈处(不改也没关系,可以在启动文件里定义车模的坐标):

 

智能车竞赛——室外光电创意组仿真之脱缰的野马

 

9.10 插入锥桶,点击Insert选择Construction Cone拖入gazebo(如果没下载锥桶模型,参考这里:下载教程):

 

智能车竞赛——室外光电创意组仿真之脱缰的野马

 

9.11 保存世界文件,点击左上角File选择Save World As放在刚才的目录下叫runway_world.world就行:

 

智能车竞赛——室外光电创意组仿真之脱缰的野马

 

9.12 文件内容如下:

 

智能车竞赛——室外光电创意组仿真之脱缰的野马

 

 


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明智能车竞赛——室外光电创意组仿真之脱缰的野马
喜欢 (1)

您必须 登录 才能发表评论!

加载中……