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

一、前言

操作系统: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发布目标实现智能车的自主定位,小车容易打滑,而且在遇到障碍物时,有时会发生侧翻现象。可能是相关代码还不够完善吧。不过最终还是跑出来了。注意事项:在构建地图时要注意地图尺寸大小,如果不合适,将会影响下车的导航,就会一直卡在某一个障碍物的前面。

  • 17
    点赞
  • 236
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
回答: 在Ubuntu 20.04上安装ROS(Robot Operating System)小车需要以下步骤: 1. 首先,更新管理器并安装ROS的完整桌面版。在终端中运行以下命令: ``` sudo apt update sudo apt-get install ros-noetic-desktop-full ``` 注意,这里使用的是ROS Noetic版本,根据你的Ubuntu版本可能需要安装其他版本的ROS。确保使用适合你的Ubuntu版本的命令,以避免出现错误信息。 2. 接下来,初始化rosdep并更新。在终端中运行以下命令: ``` sudo rosdep init rosdep update ``` 如果在执行`sudo rosdep init`时出现错误提示`sudo rosdep: command not found`,请运行以下命令来安装`python-rosdep`: ``` sudo apt install python-rosdep ``` 3. 安装rosinstall和其他必要的软件。在终端中运行以下命令: ``` sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential ``` 4. 最后,设置ROS环境变量。在终端中运行以下命令: ``` echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc source ~/.bashrc ``` 完成以上步骤后,你的Ubuntu 20.04系统就准备好安装和使用ROS小车了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Ubuntu20.04安装ROS——实现小海龟仿真](https://blog.csdn.net/zhoushuaiyxlmwan/article/details/129293364)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值