ubuntu16.04 --- ROS智能车定位导航仿真

2023-05-16

ubuntu16.04---ROS智能车定位导航

  • 一、准备阶段
    • 1.下载智能车源码包
    • 2.安装相应插件
    • 3.编译
  • 二、仿真
    • 1.运行小车模型
    • 2.运行赛道
    • 3.自主定位导航
    • 4.搭建自己的地图
    • 5.导航

一、准备阶段

1.下载智能车源码包

进入ROS工作区

cd ~/ROS/src/

在终端中使用Git命令下载源码包

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

如果在终端中下载失败或者下载非常缓慢,也可以试试在浏览器中下载源码包,然后将包放置到src目录下
在这里插入图片描述在这里插入图片描述

2.安装相应插件

1.driver_base类

sudo apt-get install ros-melodic-driver-base

2.controllers类

sudo apt-get install ros-kinetic-controller-manager
sudo apt-get install ros-kinetic-gazebo-ros-control
sudo apt-get install ros-kinetic-effort-controllers
sudo apt-get install ros-kinetic-joint-state-controller

3.rtabmap类

sudo apt-get install ros-kinetic-rtabmap-ros

4.ackermann_msgs类

sudo apt-get install ros-kinetic-ackermann-msgs

5.更多的错误解决可以参考https://github.com/xmy0916/racecar

3.编译

下载好源码包之后,回到工作空间,使用catkin_make进行编译以下
在这里插入图片描述加入环境变量

source ./devel/setup.bash

然后就可以使用roslaunch进行ros的训练了

二、仿真

1.运行小车模型

roslaunch racecar_gazebo racecar.launch

在这里插入图片描述
在程序运行之后,会出现如下图的界面,可以将鼠标移动到tk窗口上,然后可以使用WASD按键进行小车的运动
在这里插入图片描述

2.运行赛道

在终端中输入命令运行赛道

roslaunch racecar_gazebo racecar_runway.launch

当赛道运行成功后,可以通过tk窗口控制小车的运行,此时,再打开一个终端,输入如下命令,进行slam建图

roslaunch racecar_gazebo slam_gmapping.launch

当建图完成后,rviz中会出现建立成功的图形
在这里插入图片描述使用slam建图成功后,再打开一个终端,在终端中输入命令,将绘制好的地图保存下来

rosrun map_server map_saver -f test_map

如下图,地图文件已经保存到系统根目录
在这里插入图片描述再将地图剪切到racecar_gazebo的map文件夹中
在这里插入图片描述

3.自主定位导航

打开launch文件夹下的rececar_runway_navigation.launch文件,将其中的map路径改为刚才建立的地图名称
在这里插入图片描述
在这里插入图片描述
启动导航和环境地图

roslaunch racecar_gazebo racecar_runway_navigation.launch

启动rviz

roslaunch racecar_gazebo racecar_rviz.launch

启动rviz之后,在rviz的界面中使用2D Nav Goal工具进行手工绘制路线,如下
在这里插入图片描述启动自主导航

rosrun racecar_gazebo path_pursuit.py

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

4.搭建自己的地图

1.打开gazebo

gazebo

2.在gazebo中选择Building Editor,然后进行地图的绘制
在这里插入图片描述
3.保存地图
选择save as,然后输入一个名字,保存
在这里插入图片描述
4.再次打开gazebo,选择刚才创建的地图,在地图中放置障碍物
在这里插入图片描述
放置完成后保存
在这里插入图片描述5.新建一个launch文件
在文件中输入如下内容
在这里插入图片描述
6.启动导航
通小车赛道的导航一样,先启动地图模型,然后进行建图处理

roslaunch racecar_gazebo test_run.launch
roslaunch racecar_gazebo slam_gmapping.launch

同样通过tk窗口,使用按键来控制小车的运动
在这里插入图片描述待小车运动完成后,相应的地图也绘制完成
在这里插入图片描述
同样,打开一个新的终端,保存地图

rosrun map_server map_saver -f test_run_map

在这里插入图片描述
在系统的根目录下也可以看到保存的地图
在这里插入图片描述同样将地图文件剪切到racecar_gazebo的map文件夹中
在这里插入图片描述
在这里插入图片描述

5.导航

修改racecar_runway_navigition.launch文件的内容,将world和map修改为自己建立的world和map模型
在这里插入图片描述
修改保存之后,就可以进行自建地图的自主导航了

roslaunch racecar_gazebo racecar_runway_navigation.launch
roslaunch racecar_gazebo racecar_rviz.launch

gazebo和rviz启动之后,在rviz中使用2D Nav Goal进行手动的路线绘制,需要注意路线的精度,不要触碰到周围的障碍物,不然容易造成小车翻车,同时也需要注意小车的起始位置
下图中,由于起始位置小车是对着墙壁的,所以在路线绘制好之后进行自主导航时就出现了翻车现象
在这里插入图片描述
在之后,通过手动干预改变小车在地图中的起始位置,再绘制路线时就不会出现问题了
在这里插入图片描述
并且由于整个地图是联通的,所以没法进行全路段的导航
在这里插入图片描述最后,小车进行自主导航到达路线的终点
在这里插入图片描述

参考文献:
https://www.cnblogs.com/yytlmm/p/11083143.html
https://www.guyuehome.com/6463
https://blog.csdn.net/lxzysx/article/details/107042352
https://github.com/xmy0916/racecar.git

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

ubuntu16.04 --- ROS智能车定位导航仿真 的相关文章

  • ROS系统基本功能的使用详解(基本指令/节点/服务/启动文件/动态参数)

    ROS系统基本功能的使用详解 一 创建工作空间 二 创建与编译ROS功能包 三 ROS的基本命令 3 1 节点 3 2 主题 3 3 服务 3 4 参数服务器 四 节点的创建与运行 4 1 创建源文件 4 2 修改CMakeLists tx
  • Webots小车与Gampping建图仿真与ORB3算法实践

    此篇博客转自本作者在古月居的博客 https www guyuehome com 34537 前言 在研一的时候 由于XXX项目的需要 其中一项就是需要测试Gmapping建图 自然也要求使用ROS系统 由于之前经常在webots中进行仿真
  • ROS学习(1)——ROS1和ROS2的区别

    因为机器人是一个系统工程 它包括了机械臂结构 电子电路 驱动程序 通信框架 组装集成 调试和各种感知决策算法等方面 任何一个人甚至是一个公司都不可能完成机器人系统的研发工作 但是我们又希望自己能造出一个机器人跑一跑 验证一下自己的算法 所以
  • ROS2踩坑记录

    Vscode 显示 找不到module 以此选择 设置 Python 在setting json中编辑 在 python autoComplete extraPaths 中添加额外的第三方库路径 如 opt ros foxy lib pyt
  • ROS turtlebot_follower :让机器人跟随我们移动

    ROS turtlebot follower 学习 首先在catkin ws src目录下载源码 地址 https github com turtlebot turtlebot apps git 了解代码见注释 其中有些地方我也不是很明白
  • ROS noetic tf demo错误处理及python版本切换

    文章目录 报错描述及解决 ubuntu20 04下python版本切换 报错描述及解决 ubuntu版本 20 04 ROS版本 noetic roslaunch turtle tf turtle tf demo launch 报错信息 t
  • Hypervisor介绍及在智能驾驶的应用

    转自Hypervisor 智能座舱和智能驾驶融合的关键技术 腾讯新闻
  • 清华大学开源软件镜像站网址

    清华大学 TUNA 协会原名清华大学学生网管会 注册名清华大学学生网络与开源软件协会 是由清华大学网络技术和开源软件爱好者 技术宅组成的团体 现阶段向校内外提供开源软件镜像等服务 清华大学 TUNA 协会清华大学 TUNA 协会原名清华大学
  • ROS 笔记(01)— Ubuntu 20.04 ROS 环境搭建

    ROS 官网 https www ros org ROS 中文官网 http wiki ros org cn 1 系统和 ROS 版本 不同的 ROS 版本所需的 ubuntu 版本不同 每一版 ROS 都有其对应版本的 Ubuntu 切记
  • 如何将从 rospy.Subscriber 数据获得的数据输入到变量中?

    我写了一个示例订阅者 我想将从 rospy Subscriber 获得的数据提供给另一个变量 以便稍后在程序中使用它进行处理 目前 我可以看到订阅者正在运行 因为当我使用 rospy loginfo 函数时 我可以看到打印的订阅值 虽然我不
  • 如何将视频或图像序列转换为包文件?

    我是 ROS 新手 我需要转换预先存在的视频文件 或者large可以连接到视频流中的图像数量 bagROS 中的文件 我在网上找到了这段代码 http answers ros org question 11537 creating a ba
  • 在 CLion 中设置 ROS 包

    我正在使用 CLion C IDE 来编辑 ROS 包 我可以通过打开CMakeLists txt文件 但是 我收到一个错误 FATAL ERROR find package catkin 失败 在工作区和 CMAKE PREFIX PAT
  • 什么是 void `std::allocator`?即:`std::allocator`

    自动生成ROS 机器人操作系统 message C 头文件包含如下类型定义 typedef std msgs Header
  • 将 CUDA 添加到 ROS 包

    我想在 ros 包中使用 cuda 有人给我一个简单的例子吗 我尝试使用 cuda 函数构建一个静态库并将该库添加到我的包中 但总是出现链接错误 未定义的引用 cuda 我已经构建了一个可执行文件而不是库并且它可以工作 请帮忙 我自己找到了
  • Kinect / Primesense (Xtion) ROS Ubuntu 通过虚拟机 (VMware)

    由于我花了相当长的时间才弄清楚如何让 Xtion Primesense 在 VMware 上工作 所以我想在这里与大家分享 使用 Kinect 时 即使 VMware 已成功连接该设备 我也无法让 ROS 查看该设备 roslaunch o
  • 我的代码的 Boost 更新问题

    我最近将 boost 更新到 1 59 并安装在 usr local 中 我的系统默认安装在 usr 并且是1 46 我使用的是ubuntu 12 04 我的代码库使用 ROS Hydro 机器人操作系统 我有一个相当大的代码库 在更新之前
  • Caught exception in launch(see debug for traceback)

    Caught exception in launch see debug for traceback Caught exception when trying to load file of format xml Caught except
  • catkin_make 编译报错 Unable to find either executable ‘empy‘ or Python module ‘em‘...

    文章目录 写在前面 一 问题描述 二 解决方法 参考链接 写在前面 自己的测试环境 Ubuntu20 04 一 问题描述 自己安装完 anaconda 后 再次执行 catkin make 遇到如下问题 CMake Error at opt
  • 在 ROS - Python 中使用来自多个主题的数据

    我能够显示来自两个主题的数据 但无法在 ROS 中实时使用和计算这两个主题的数据 用 Python 代码编写 您有想法存储这些数据并实时计算吗 谢谢 usr bin env python import rospy import string
  • 安装 ROS 时 Cmake 未检测到 boost-python

    我一直在尝试在我的 Mac 上安装 ROS 并根据不同版本的 boost 使用不同的库解决了错误 然而 似乎有一个库甚至没有检测到 boost python 这是我得到的错误 CMake Error at usr local share c

随机推荐

  • 【acwj】05,Statements 实现“Statements”

    搬运自https github com DoctorWkt acwj xff0c 一个介绍如何使用C语言编写一个可自举的类C语言编译器的说明 进行了粗略的翻译 acwj 05 xff0c Statements 实现 Statements I
  • diff命令实现

    diff命令实现 diff是类UNIX系统下的一个重要的系统工具 xff0c 用于比较两个文本文件的差异 它有三种输出格式 先给大家看看两个用于比对的文件原文 file1 a e b a g h b g g file2 b c d g e
  • verilog 常见位宽问题集合

    verilog 常见的位宽问题集合 1 位宽不等 wire b 31 0 assign b 61 5 39 b0 这种错误常见于赋值操作中 2 保留最低位 wire b assign b 61 32 39 h5 此时因为b缺省定义为1位长度
  • glibc源码阅读

    FBI warning 本文仅仅是试图以二进制选手的方式来理解mallo c中所使用的堆机制 xff0c 不会对具体操作以及堆块结构作过多叙述 xff0c 敬请谅解 水平欠佳 xff0c 有问题也欢迎留言指出 先解释一些常用的宏与常量 变量
  • github copilot插件安装

    首先是github copilot的官网地址 xff1a https copilot github com 现在要使用copilot首先要先通过申请才可以使用 xff0c 点击 Sign up 登录 xff0c 这里最好已经有github的
  • 操作系统第一章知识点小结

    第一章 操作系统概述 1 1操作系统的概念 xff0c 功能和目标 资源管理者 xff08 接下来的4给章节就是对这四个功能的详细学习 xff09 处理机处理 xff1a 处理机管理因为是为进程分配处理机资源 xff0c 也称为进程管理 存
  • SerDes基础知识

    SerDes是什么 SerDes是Serializer Deserializer 的缩写 xff0c 即串行器和解串器 xff0c 顾名思义是一种将并行数据转换成串行数据发送 xff0c 将接收的串行数据转换成并行数据的 器件 对于FPGA
  • 安装Pycharm

    文章目录 Ubuntu使用pycharm解压安装使用pycharmwindows 使用Pycharmpip install cryptography 报错 Ubuntu使用pycharm 官网地址 这里以Ubuntu1604 LTS 下载p
  • 找完数(用数组实现)

    找完数 所谓完数就是该数恰好等于除自身外的因子之和 例如 xff1a 6 61 1 43 2 43 3 xff0c 其中1 2 3为6的因子 本题要求编写程序 xff0c 找出任意两正整数m和n之间的所有完数 输入格式 xff1a 输入在一
  • Ubuntu系统使用图形化界面来创建一个用户

  • 设计模式详解:抽象工厂模式

    今天我们来看一下另一个使用频率非常高的抽象工厂模式 xff0c 看完原理分别给出 NET和JAVA两种语言的实现源码 定义 xff1a 抽象工厂模式 xff1a 提供一个 创建一系列相关或相互依赖对象的接口 xff0c 而无须指定它们具体的
  • Vmmem进程(WSL)内存资源过高

    本文章向大家介绍Docker Vmmem内存占用过高的解决方案 Windows的linux子系统最大占用可到本机器的80 xff0c 所以必须限制一下它的性能来达到优化目的 解决方案 win 43 R 输入cmd打开控制台 输入wsl sh
  • git使用教程8-pycharm 使用 Reset 回滚到某次 commit 提交

    前言 当我们用 pycharm 提交代码的时候 xff0c 每天都要 commit 提交的内容 xff0c 有时候发现后面写的代码还不如前两天的稳定 这时候想把代码回退到某次 commit 提交 xff0c 可以使用git的 reset 功
  • IP地址中的网络地址和主机地址分别是什么意思?怎么计算的呢?

    什么意思呢 xff1f 先理解下这个 xff1a 01087654321 这是一个电话号码 xff0c 它是一坨数字但我们很清楚它分为两部分 xff0c 其中010是表示北京的区号 xff0c 后面87654321是北京范围内的一台座机号
  • Windows安装 hadoop 环境

    1 需要安装 Java 环境 2 下载 hadoop https archive apache org dist hadoop common 3 解压 hadoop 压缩包 xff08 如 xff1a 将下载好的压缩包放在 E config
  • C语言基础-猜拳问题

    题目描述 石头剪刀布是常见的猜拳游戏 石头胜剪刀 xff0c 剪刀胜布 xff0c 布胜石头 如果两个人出拳一样 xff0c 则不分胜负 一天 xff0c 小A和小B正好在玩石头剪刀布 已知他们的出拳都是有周期性规律的 xff0c 比如 石
  • 运算符左移与右移(点进来看看很有用,不只是说一下左移和右移,还有他们的有趣的应用)

    1 左移和右移 左移和右移这一对运算符 不知道有多少人可以很清楚它们 xff0c 并且可以很好的应用 xff0c 反正我是不可以 xff0c 于是就打算总结一下 左移 xff1a 左移就是把一个数的所有位都向左移动若干位 符号表示 xff1
  • Python中的if语句

    Python中的if语句 1 条件测试 每个if语句的核心都是一个值为True或False的表达式 xff0c 这种表达式被称为条件测试 当条件测试的结果为True时 xff0c if语句会执行后面的代码 xff1b 如果为False则不会
  • Ubuntu系统下的gcc升降版本 保姆级教程

    安装cuda出错Failed to verify gcc version See log at var log cuda installer log for details 在安装cuda xff0c 使用如下命令 xff1a sudo s
  • ubuntu16.04 --- ROS智能车定位导航仿真

    ubuntu16 04 ROS智能车定位导航 一 准备阶段1 下载智能车源码包2 安装相应插件3 编译 二 仿真1 运行小车模型2 运行赛道3 自主定位导航4 搭建自己的地图5 导航 一 准备阶段 1 下载智能车源码包 进入ROS工作区 c