ROS智能车定位导航仿真(原赛道自主导航,构建地图再导航)

article/2025/8/18 23:10:12

文章目录

    • 0.视频演示
    • 1.智能车环境,空间,资源准备
        • a.初始化
        • b.克隆 racecar 源代码包,并编译
          • (1)遇到问题:Could NOT find driver_base_DIR
          • (2)遇到问题:Could NOT find OpenCV (missing: OpenCV_DIR)
          • (3)随带把环境变量添加了
    • 2.gazebo查看原环境
        • a.看一看小车
        • b.看一看地图
    • 3.手动导航,开启rviz画图
        • a.遇到问题:ImportError: No module named msg
        • b.将鼠标焦点放在tk弹窗上,可以进行移动操作
        • c.翻车,重启绘图
        • d.保存地图
    • 4.原赛道的小车自主导航
        • a.启动导航
        • b.遇到问题:Failed to create the teb_local_planner....
        • c.启动rviz
        • d.点击 2D Nav Goal,设置目标位置
        • e.新建终端,开启自动导航
    • 5.构建自己的环境模型
        • a.gazebo构建自己的模型
        • b.运行小车模型
        • c.加入自己的模型,设置一些障碍物
        • d.新建myWorld.launch
    • 6.自己绘制赛道的小车自主导航
        • a.制图
        • b.保存地图
        • c.自主导航
          • (1)创建autocar.launch文件
          • (2)两个终端分别运行
          • (3)2D Nav Goal设置目标
          • (4)运行运动脚本
        • d.运行过程
    • 7.总结

0.视频演示

地址链接

智能车自主导航

1.智能车环境,空间,资源准备

a.初始化

mkdir -p ~/		qianRuShi/racecar_ws/src
cd qianRuShi/racecar_ws/src
catkin_init_workspace

在这里插入图片描述

b.克隆 racecar 源代码包,并编译

git clone https://github.com/xmy0916/racecar.git
cd ..
catkin_make
(1)遇到问题:Could NOT find driver_base_DIR

在这里插入图片描述解决方案:更新apt-get,下载它

sudo apt-get update
sudo apt-get install ros-melodic-driver-base
  • 这里需要注意,如果更新慢的话,请更换国内源参考链接
  • 我的是Ubuntu18.04,所以是melodic,ros-你的版本-driver-base
  • 缺少其它包的话,相同道理,自行下载。
    在这里插入图片描述
(2)遇到问题:Could NOT find OpenCV (missing: OpenCV_DIR)

在这里插入图片描述解决方案:
查看你的opencv路径

locate OpenCVConfig.cmake

更改 racecar_gazebo/CMakeLists.txt如下:(截图的最后一行)

set(OpenCV_DIR /home/wangyang/opencv-3.4.1/build)

在这里插入图片描述

(3)随带把环境变量添加了
gedit ~/.bashrc

根据自己的路径,在末尾添加工作空间的环境变量,并保存:

source ~/qianRuShi/racecar_ws/devel/setup.bash

再次运行

source ~/.bashrc

2.gazebo查看原环境

a.看一看小车

roslaunch racecar_gazebo racecar.launch 

在这里插入图片描述关闭后

b.看一看地图

roslaunch racecar_gazebo racecar_runway.launch

效果如下:
在这里插入图片描述

3.手动导航,开启rviz画图

新建终端

roslaunch racecar_gazebo slam_gmapping.launch

a.遇到问题:ImportError: No module named msg

在这里插入图片描述

解决方案:镜像下载就行

pip install msg -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/

好吧,后来发现不是在python安装,如下安装:

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

b.将鼠标焦点放在tk弹窗上,可以进行移动操作

在这里插入图片描述
在racecar_ws/src/racecar/racecar_gazebo/scripts的keyboard_teleop.py可以看见
在这里插入图片描述

这里还容易翻车,大家注意了,开慢点,翻车了就重新来过

c.翻车,重启绘图

roslaunch racecar_gazebo racecar_runway.launch
roslaunch racecar_gazebo slam_gmapping.launch

好吧,我翻车两次了,大致样子是这样的:
地图:
在这里插入图片描述小车:
在这里插入图片描述

d.保存地图

你要是顺利完成地图,可以保存起来,后面自主导航用自己的(我尝试过用他的地图,但是莫名其妙的,图出来不了):
保存到racecar_gazebo/map吧,就不用了在移动了

cd racecar/racecar_gazebo/map
rosrun map_server map_saver -f map_racecar

在这里插入图片描述

4.原赛道的小车自主导航

在这里插入图片描述可关闭上面的rviz进程了,然后
修改racecar_runway_navigation.launch文件,更改地图:
在这里插入图片描述

a.启动导航

roslaunch racecar_gazebo racecar_runway_navigation.launch

b.遇到问题:Failed to create the teb_local_planner…

在这里插入图片描述解决方案:

sudo apt-get install ros-melodic-teb-local-planner

c.启动rviz

roslaunch racecar_gazebo racecar_rviz.launch

在这里插入图片描述

d.点击 2D Nav Goal,设置目标位置

在这里插入图片描述

e.新建终端,开启自动导航

rosrun racecar_gazebo path_pursuit.py

过程图:
在这里插入图片描述

在这里插入图片描述
终端的显示:
在这里插入图片描述

5.构建自己的环境模型

a.gazebo构建自己的模型

我原本准备使用的我以前构建的模型,如何创建,请自行百度------gazebo构建模型
发现被我删了,于是自己又搞了一个。

之前的终端都可以ctrl+c了。

b.运行小车模型

roslaunch racecar_gazebo racecar.launch 

c.加入自己的模型,设置一些障碍物

然后点击左侧的insert,将自己的模型拖进
再加入一些障碍物 Construction Cone(这里以前导入的模型库,没有自行百度,或者不要障碍物就是)

选择File->Save World As,保存到racecar/racecar_gazebo/worlds下:
在这里插入图片描述在这里插入图片描述

d.新建myWorld.launch

cd racecar/racecar_gazebo/launch
sudo gedit myWorld.launch

添加下列代码

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

6.自己绘制赛道的小车自主导航

a.制图

重复上面的步骤,终端运行

roslaunch racecar_gazebo myWorld.launch

新建终端运行

roslaunch racecar_gazebo slam_gmapping.launch 

同上,移动小车,绘制地图得到:
在这里插入图片描述

b.保存地图

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

在这里插入图片描述

c.自主导航

(1)创建autocar.launch文件

在racecar/racecar_gazebo/launch/下

gedit autocar.launch

添加:

<?xml version="1.0"?>
<launch><!-- Launch the racecar --><include file="$(find racecar_gazebo)/launch/racecar.launch"><arg name="world_name" value="myworld2"/></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 autocar.launch 
roslaunch racecar_gazebo racecar_rviz.launch
(3)2D Nav Goal设置目标

在这里插入图片描述

(4)运行运动脚本
rosrun racecar_gazebo path_pursuit.py 

d.运行过程

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

在这里插入图片描述
至此包括一些扩展所有都已经全部完成,

7.总结

过程中,遇到了不少问题,但是好在github的源码地址有解决方案,在过程中,可能会有许多网络问题,如github资源下载慢,请参考我的另外一篇文章三步解决github下载慢的问题,另外,apt-get下载慢的话,也自己更换源,阿里,清华的都可以,参考这里。运行中途,小车容易翻车,开车慢点所以,不然要搞很久。更换地图,更换launch文件,一定记得修改相关的文件设置。


http://chatgpt.dhexx.cn/article/u4UCkllQ.shtml

相关文章

AR rc漂移车

文章目录 前言一、物料准备二、车辆安装三、舵机调试1.舵机控制原理2.舵机供电及连线3.PWM控制舵机 四、电机调试1.电机控制原理2.电机供电及连线3.PWM控制电机4.附 五、单片机独立供电六、蓝牙遥控 前言 前几天偶然看到了《马里奥赛车 Live:家庭巡回赛》这款运行在switch上的A…

ROS学习记录(二)阿克曼转向车运动学模型及在gazebo中搭建仿真环境

前言&#xff1a;该篇是ROS学习记录的第二篇&#xff0c;如果还没关注过之前文章的读者&#xff0c;如有需要可以通过下方传送门去看之前的文章&#xff1a; ROS学习记录&#xff08;一&#xff09; Plugin插件 这两天关注了古月老师的公众号&#xff0c;看到了其中一篇课程推…

(ROS)ROS智能车自主导航roslaunch racecar_gazebo racecar_runway_navigation.launch报错

前提&#xff1a; 修改修改racecar_runway_navigation.launch文件后&#xff0c;运行roslaunch racecar_gazebo racecar_runway_navigation.launch 出现红色报错。 ERROR: cannot launch node of type [move_base/move_base]: move_base ROS path [0]/opt/ros/indigo/share/ro…

用ROS来做无人测试平台系列之国外的一些RACECAR

MIT RACECAR&#xff0c;最早开始做racecar的&#xff0c;主要基于双目摄像头激光雷达: http://fast.scripts.mit.edu/racecar/hardware/ UPENN F1 TENTH&#xff0c;同MIT racecar特别像&#xff0c;不过很多东西需自己组装&#xff0c;电调模块需自己焊接: http://f1tenth.o…

多移动机器人(阿克曼小车)在gazebo中的配置

多移动机器人&#xff08;阿克曼小车&#xff09;在gazebo中的配置 前言 最近需要进行异构多机器人方面的工作&#xff0c;在之前的工作中已经实现了多麦克纳姆轮小车在gazebo中的仿真。 &#xff08;如何在Gazebo中实现多机器人仿真 https://www.guyuehome.com/4889&#xf…

记实现多racecar仿真过程中遇到的问题(一)

最近尝试过使用多turtlebot3仿真之后&#xff0c;想测试一下多Ackermann结构车的仿真效果&#xff0c;在一番寻找下将目光锁定到了MIT-racecar。但是在使用过程中遇到了许多问题&#xff0c;在此记录一下。 运行环境&#xff1a; Ubuntu18.04(虚拟机)&#xff0c;ROS-melodic…

HackTheBox You know racecar 格式化字符串漏洞pwn题目

题目网址&#xff1a; https://app.hackthebox.com/challenges/racecar解压密码为hackthebox 文件信息收集 file racecar这是一个32位的程序&#xff0c;动态链接的 checksec vuln防护都开着的&#xff0c;从上到下依次是 32位程序 全部RELRO 开启栈保护 启用数据执行防护…

什么是Race Condition?

简介 race condition是多线程的应用程序中经常遇到的问题&#xff0c;本文章接下来会解释什么是race condition&#xff0c;如何检测到它们以及如何解决这类问题。 Race condition 从定义来说&#xff0c;race condition是代码中一些执行结果取决于其执行的相对时间或者多线…

免费教程·开源 | 从零开始制作ROS无人竞速车RACECAR教程

一、课程前提 自动驾驶汽车即将成为交通出行的主流工具之一&#xff0c;它以计算机、现代汽车产业技术为基础&#xff0c;以数字化、智能化为依托实现自动化驾驶&#xff0c;学习自动驾驶需要了解架构、环境感知、行为决策、规划路径&#xff0c;多传感器融合等一系列技术&…

Racecar 基于ROS通信机制的多点导航实验

基于ROS通信机制的多点导航实验 一、实验目的二、实验环境三、实验原理四、实验内容五、实验步骤1.获取rviz发送目标点的topic&#xff1b;2.对已经建好的图获取相应目标点的坐标&#xff08;多个&#xff0c;即小车要去的目标&#xff09;&#xff0c;还没建图先完成建图&…

C语言的整数除法

c语言的整数除法是向下取整的。

C语言 从5~100之间找出能被5或7整除的数

从5~100之间找出能被5或7整除的数 算法分析&#xff1a;注意“或”的理解&#xff1a;或此或彼或彼此 #include "stdio.h" main( ) { int i;for(i5;i<100;i)if(i%50||i%70)printf("%d\t",i); }有伙伴问倒序输出&#xff1a; 在线编译C语言&#xff1a;…

C语言实现计算数字能否被3个数整除

C语言实现计算数字能否被3个数整除 编程实现&#xff1a;输入一个整数&#xff0c;判断它能否被3&#xff0c;5&#xff0c;7整除&#xff0c;并输出以下信息之一&#xff1a; ①能同时被3&#xff0c;5&#xff0c;7整除&#xff1b; ②能被其中两数(要指出哪两个)整除&#x…

C语言-求能被7或11整除的整数

本关任务&#xff1a;编写程序求[1&#xff0c;1000]范围内能被7或11整除&#xff0c;但不能同时被7和11整除的整数。按每行8个数&#xff0c;每个数占5个字符且以左对齐的格式进行输出。 #include<stdio.h> int main() {int i1;int count0;for(i1;i<1000;i){if((i%7…

c语言学习-判断一个数是否能被3整除

判断一个数是否能被3整除 在主函数中输入整型数据n,判断该数是否能被3整除&#xff0c;如果能被3 整除&#xff0c;输出“yes”,否则输出“no” 程序流程图&#xff1a; void main() { int a; printf("please enteraguess number:\n"); scanf("%d",&…

C语言--编写程序,输入一个整数,判断它能否被3,5,7整除

编写程序&#xff0c;输入一个整数&#xff0c;判断它能否被3,5,7整除&#xff0c;并输出下列信息之一&#xff1a; 能同时被3,5,7整除&#xff1b;能被x和y两个数整除&#xff1b;能被x整除&#xff1b;不能被3,5,7任一个数整除。 #include <stdio.h> void main() { in…

【C语言】数据整除判断

题目&#xff1a;C语言编程实现——输入一个整数&#xff0c;判断它能否被 3&#xff0c;5&#xff0c;7 整除&#xff0c;并输出以下信息之一&#xff1a; ①能同时被 3&#xff0c;5&#xff0c;7 整除&#xff1b; ②能被其中两数&#xff08;要指出哪两个&#xff09;整除…

C语言—整除问题、求余、赋值、逻辑运算符易错点

前言 &#x1f428;这一篇主要是讲那些老师可能不会讲&#xff0c;但是很多初学者都容易踩坑的地方 &#x1f914; 根据自己踩过的的坑整理了一下&#x1f927; 文章目录 前言一、整除问题1️⃣第一种情况&#xff1a;整数相除&#xff0c;抹去小数位2️⃣第二种情况&#xff…

东南大学本 硕 博论文中期答辩 毕业答辩ppt模板2021版

东南大学本硕博开题、中期、毕业论文答辩ppt模板 ppt模板样式如下&#xff1a; 如果对您有用 &#xff0c;欢迎点赞&#xff0c;关注和收藏&#xff0c;谢谢各位路官。 下载地址 https://download.csdn.net/download/Vertira/19026191

计算机硕士系统毕业论文答辩ppt,计算机硕士论文答辩ppt

为毕业生写计算机硕士论文答辩ppt提供计算机硕士论文答辩ppt范文参考,涵盖硕士、大学本科毕业论文范文和职称论文范文,包括论文选题、开题报告、文献综述、任务书、参考文献等,是优秀免费计算机硕士论文答辩ppt网站。 费孝通的博士论文答辩“花天酒地” 费孝通的博士论文答辩…