ROS智能车定位导航仿真+功能包自带的地图实现+自己建立的地图实现

2023-05-16

ROS智能车定位导航仿真

  • 一、前言
  • 二、效果图
  • 三、准备工作
    • [1.在Ubuntu上安装ROS Kinetic](https://blog.csdn.net/qq_42585108/article/details/104327661)
    • 2.创建ROS工作区间
      • ①1创建racecar_ws和src文件夹
      • ②初始化工作空间
      • ③下载racecar源代码包,并编译工程
  • 四、启动仿真
    • 1.设置环境变量
    • 2.启动地图
  • 五、建图
    • 1.启动slam和rviz
    • 2 控制车辆(左侧有个控制窗口),WASD控制前左后右的运动就可以建图了:
    • 3.新建终端保存地图
  • 六、自主定位导航
    • 1.启动导航和环境地图:
    • 2.启动rviz:
    • 3.用2D Nav Goal发布目标:
    • 4.启动导航脚本
  • 七、用自己所建的地图赛道,来跑小车
    • 1.打开gazebo
    • 2.点击Edit->Build Editor,进行模型创建
    • 3.将创建好的地图模型保存
    • 4.运行小车模型,导入刚刚的模型框架,然后保存world文件
    • 5.保存world文件到下载功能包中的racecar_gazebo包中的worlds文件夹中
    • 6.创建launch文件,填写赛道配置参数
    • 7.运行跑道模型,控制小车跑图了
    • 8.gmapping建图(上面一步的终端保持开启状态)
  • 八、自主定位导航(自己建的赛道)
    • 1.新建终端,创建mycar1.launch文件
    • 2.运行跑道
    • 3.新建终端,运行RVIZ进行手工导航
    • 4.用2D Nav Goal发布目标:
    • 5.启动导航脚本
  • 九、总结

一、前言

操作系统:ubuntu16.04

ROS版本:kinetic

Gazebo版本:7.0.0

二、效果图

三、准备工作

1.在Ubuntu上安装ROS Kinetic

2.创建ROS工作区间

①1创建racecar_ws和src文件夹

mkdir -p ~/racecar_ws/src

②初始化工作空间

cd ~/racecar_ws/src
catkin_init_workspace

在这里插入图片描述

③下载racecar源代码包,并编译工程

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

创建成功如下:
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

四、启动仿真

1.设置环境变量

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

source ~/.bashrc

2.启动地图

roslaunch racecar_gazebo racecar_runway.launch

在这里插入图片描述

五、建图

1.启动slam和rviz

新建终端

cd racecar_ws/
roslaunch racecar_gazebo slam_gmapping.launch

在这里插入图片描述

2 控制车辆(左侧有个控制窗口),WASD控制前左后右的运动就可以建图了:

在这里插入图片描述

原图:
在这里插入图片描述
成果图:
在这里插入图片描述

3.新建终端保存地图

保存地图的路径:/racecar_ws/src/racecar/racecar_gazebo/map

cd ~/racecar_ws/src/racecar/racecar_gazebo/map
rosrun map_server map_saver -f map_racecar

在这里插入图片描述
在这里插入图片描述

分析:在控制小车运动时,小车很容易翻车。不过最终能运行完地图。

六、自主定位导航

1.启动导航和环境地图:

新建终端

cd racecar_ws/
roslaunch racecar_gazebo racecar_runway_navigation.launch

在这里插入图片描述

2.启动rviz:

新建终端:

cd racecar_ws/
roslaunch racecar_gazebo racecar_rviz.launch

在这里插入图片描述

3.用2D Nav Goal发布目标:

在这里插入图片描述

4.启动导航脚本

新建终端

cd racecar_ws/
rosrun racecar_gazebo path_pursuit.py

在这里插入图片描述
在这里插入图片描述
上图,对比发现小车确实打导航定位成功。

七、用自己所建的地图赛道,来跑小车

1.打开gazebo

gazebo

在这里插入图片描述

2.点击Edit->Build Editor,进行模型创建

在这里插入图片描述
在这里插入图片描述

3.将创建好的地图模型保存

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.运行小车模型,导入刚刚的模型框架,然后保存world文件

roslaunch racecar_gazebo racecar.launch 

点击insert—>track,即可将跑道模型拖到小车模型中。注意:将小车放到适当的位置。

在这里插入图片描述
为跑道添加障碍物
在这里插入图片描述

5.保存world文件到下载功能包中的racecar_gazebo包中的worlds文件夹中

选择File->Save World As
在这里插入图片描述
在这里插入图片描述

6.创建launch文件,填写赛道配置参数

cd racecar_ws/src/racecar/racecar_gazebo/launch
touch mycar.launch
gedit mycar.launch

写入如下代码:

<?xml version="1.0"?>
<launch>
  <!-- Launch the racecar -->
  <include file="$(find racecar_gazebo)/launch/racecar.launch">
    <arg name="world_name" value="mycar"/>
  </include>
</launch>

在这里插入图片描述

7.运行跑道模型,控制小车跑图了

roslaunch racecar_gazebo mycar.launch

在这里插入图片描述

8.gmapping建图(上面一步的终端保持开启状态)

roslaunch racecar_gazebo slam_gmapping.launch 

在这里插入图片描述
控制小车跑一圈地图,建好的地图如下:
在这里插入图片描述
新建终端,保存gmapping创建的地图

cd racecar_ws/src/racecar/racecar_gazebo/map
rosrun map_server map_saver -f mycar_map

在这里插入图片描述
在这里插入图片描述

八、自主定位导航(自己建的赛道)

1.新建终端,创建mycar1.launch文件

cd racecar_ws/src/racecar/racecar_gazebo/launch/
touch mycar1.launch
gedit mycar1.launch

并写入以下代码:

<?xml version="1.0"?>
<launch>
  <!-- Launch the racecar -->
  <include file="$(find racecar_gazebo)/launch/racecar.launch">
    <arg name="world_name" value="mycar"/>
  </include>
  
  <!-- Launch the built-map -->
  <node name="map_server" pkg="map_server" type="map_server" args="$(find racecar_gazebo)/map/mycar_map.yaml" />

  <!--Launch the move base with time elastic band-->
  <param name="/use_sim_time" value="true"/>
  <node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen">
    <rosparam file="$(find racecar_gazebo)/config/costmap_common_params.yaml" command="load" ns="global_costmap" />
    <rosparam file="$(find racecar_gazebo)/config/costmap_common_params.yaml" command="load" ns="local_costmap" />
    <rosparam file="$(find racecar_gazebo)/config/local_costmap_params.yaml" command="load" />
    <rosparam file="$(find racecar_gazebo)/config/global_costmap_params.yaml" command="load" />
    <rosparam file="$(find racecar_gazebo)/config/teb_local_planner_params.yaml" command="load" />

    <param name="base_global_planner" value="global_planner/GlobalPlanner" />
    <param name="planner_frequency" value="0.01" />
    <param name="planner_patience" value="5.0" />
    <!--param name="use_dijkstra" value="false" /-->
    
    <param name="base_local_planner" value="teb_local_planner/TebLocalPlannerROS" />
    <param name="controller_frequency" value="5.0" />
    <param name="controller_patience" value="15.0" />

    <param name="clearing_rotation_allowed" value="false" />
  </node>
  
</launch>

在这里插入图片描述

2.运行跑道

roslaunch racecar_gazebo mycar1.launch 

在这里插入图片描述

3.新建终端,运行RVIZ进行手工导航

roslaunch racecar_gazebo racecar_rviz.launch

在这里插入图片描述

4.用2D Nav Goal发布目标:

在这里插入图片描述

5.启动导航脚本

rosrun racecar_gazebo path_pursuit.py 

发现现车确实在自己定位
在这里插入图片描述

九、总结

通过这次实验很好的对ROS下智能车的仿真实验的完成,用仿真功能包自带的地图很好的能跑出来,而且能够用2D Nav Goal发布目标来实现智能车的自主定位,但在用自己所建的赛道时,用键盘确实能完成跑道,但在用2D Nav Goal发布目标实现智能车的自主定位,小车容易打滑,而且在遇到障碍物时,有时会发生侧翻现象。可能是相关代码还不够完善吧。不过最终还是跑出来了。注意事项:在构建地图时要注意地图尺寸大小,如果不合适,将会影响下车的导航,就会一直卡在某一个障碍物的前面。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS智能车定位导航仿真+功能包自带的地图实现+自己建立的地图实现 的相关文章

  • 修改firefox浏览器滚动条的样式

    最近做了一个网站的项目 xff0c 使用原生的滚动条 ie和谷歌都显示的好好的 xff0c 火狐的滚动条样式没有生效 原因 xff1a 火狐浏览器没有提供原生滚动条的方法和属性 后来浏览器升级之后提供了部分可以修改样式的属性 属性较多 xf
  • jetson nx ssd镜像克隆

    1 打开disk查看要克隆的ssd名称 2卸载ssd 制作镜像 sudo umount dev sdb1 sudo s sudo dd if 61 dev sdb1 conv 61 sync noerror bs 61 64k gzip c
  • Android 关于IPV6 DNS的问题

    目前在测试IPV6 DNS解析的时候发现一个问题 xff0c 这里记录一下 问题是 xff1a 当dhcpv6服务器分配的IPV6 dns是fe80类型的dns时 xff0c 无法发送dns请求 xff0c 抓包看不到有目标地址为fe80
  • PX4开发环境搭建

    PX4开发环境搭建 编译工具链的安装vscode 编译工具链的安装 下载ubuntu sh requirements txt wget https raw githubusercontent com PX4 Firmware master
  • TFmini在nora+(px4)上的使用和验证

    目标 xff1a 使用tfmini完成定高实验 设置 xff1a 1 sens tfmini cfg 设置为telem2 xff08 可修改为其他 xff0c 保证硬件连线一致 xff0c 1一般是无线数传所以没改过去 其他的对应在官网里有
  • ROS | Realsense中的IMU解算orientation

    文章目录 概述 一 定义介绍 二 操作教程 一 下载并编译imu tools功能包 1 创建工作空间并初始化 2 下载imu tools并编译 二 修改配置 1 修改imu tools源码 2 修改launch文件 3 启动解算 概述 本文
  • prometheus服务监控之mysql监控

    文章目录 上传解压安装mysqld exporter安装mariadb在数据库里创建mysql账号用户收集数据在mysql exporter中设置mysql配置信息启动mysql exporter配置prometheus拉取mysql节点信
  • HTTP请求头Authorization

    今天部署了一个Authorization项目 xff0c 由于改了auth服务器客户端id和密码 xff0c 而前端请求header没有修改 xff0c 登录时一直弹框要求输入用户名和密码 xff0c 输入后却无效 xff0c 只好改前端代
  • c语言编程规范第三部分

    3 头文件应向稳定的方向包含 头文件的包含关系是一种依赖 xff0c 一般来说 xff0c 应当让不稳定的模块依赖稳定的模块 xff0c 从而当不稳定的模块发生变化时 xff0c 不会影响 xff08 编译 xff09 稳定的模块 就我们的
  • 看完《C++ primer》后,我都收获了什么?

    文章目录 1 语言只是一个工具2 光学会一门语言还不够3 结语 迫于读研和未来就业的压力 xff0c 我研一上自学了C 43 43 的这门语言 xff0c 自我感觉比较认真的看完了 C 43 43 primer 这本书的大部分章节 xff0
  • Ubuntu18.04 ROS Melodic版本安装gazebo_ros_pkgs包

    疫情期间宅在家没法做实验 xff0c 只能上手gazebo做仿真 xff0c 导入实验室机器人的相关文件后 xff0c 打算看看效果 xff0c 运行代码 roslaunch probot gazebo probot anno gazebo
  • vim如何批量注释

    1 ctrl 43 v 进入 2 按箭头 选中要注释的首行 3 按下大写 i 进入插入模式 4输入 按esc 就可以看到如下内容
  • 还弄不明白【委托和事件】么?看这一篇就足够了!!!

    这两个概念长时间不用了 xff0c 今天看到CAD二次开发中用到了自定义事件 xff0c 有点迷糊了 xff0c 索性再整理一下加深印象 xff01 一说到委托和事件 xff0c 他们总是绑定在一起的不可分割 xff01 可能你会说啊 xf
  • 三种简单排序(冒泡、插入、选择)的比较和图解

    冒泡排序 这种排序方式是最容易理解的 xff0c 主体思想就是 xff1a 指针重复地走访过要排序的数列 xff0c 一次比较两个元素 xff0c 如果他们的顺序错误就把他们交换过来 走访数列的工作是重复地进行直到没有再需要交换 xff0c
  • ModuleNotFoundError: No module named 'XXX'的解决办法

    类似问题一 ModuleNotFoundError No module named 39 captcha 39 pycharm打开的项目 xff0c 在虚拟环境里通过终端命令python manage py runserver运行pytho
  • 微信小程序实现搜索功能以及效果(超详细)

    我们先来看一下实现哪些功能 1 搜索历史记录以及清空历史记录 2 热门搜索推荐以及更新推荐内容 3 根据输入框输入的内容来自动搜索相关查询 后台逻辑是模糊查询 后台就先不扯了 这里我用的是自己定义的虚拟数据 暂时没用后台接口 可能有点问题
  • 微信小程序实现收货地址城市选择效果(添加收货地址)

    先来张效果图 这里主要是城市选择效果 请忽视其他 不要吐槽 谢谢 接下来看一下代码吧 wxml lt pages my my add address index wxml gt lt view class 61 34 redact addr
  • uni-app实现商城多商家购物车功能(超详细, 附带源码)

    我们先来看一下效果 有什么不懂可以直接下方留言 先来看代码 lt template gt lt view class 61 34 cart 34 gt lt 购物车为空 S gt lt view v if 61 34 cartList le
  • 微信小程序web-view的使用教程

    最近公司有需求 xff0c 需要点击小程序首页banner xff0c 跳转到别人的h5页面 首先是域名的问题 xff1a 步骤 xff1a 先登录小程序开发平台 xff0c 将页面需要跳转的域名写上去 xff0c 注意了 xff0c 域名
  • uni-app实现上传图片裁剪效果(附源码)

    我们先来看一下效果 封装一个组件在components下创建一个 文件夹随意命名 xff0c 这里我是uni img cropper uni img cropper vue lt template gt lt view class 61 3

随机推荐