ROS机器人定位导航仿真

ros机器人定位导航仿真

1、安装配置环境

2、仿真

3、创建地图

4、gmapping建图

5、导航运动

6、基于自建的路线导航

一、安装配置环境

1、设置工作区间,下载源码包

mkdir -p ~/ros/src
cd ~/ros/src
catkin_init_workspace
git clone https://github.com/xmy0916/racecar.git

下载完成:
ROS机器人定位导航仿真_第1张图片
2、安装需要的插件

sudo apt-get install ros-melodic-driver-base
sudo apt-get install ros-melodic-gazebo-ros-control
sudo apt-get install ros-melodic-effort-controllers
sudo apt-get install ros-melodic-joint-state-controller

3、编译

catkin_make

编译成功:
ROS机器人定位导航仿真_第2张图片

二、仿真

1、添加环境变量

source ~/ros/devel/setup.bash

2、运行模型

roslaunch racecar_gazebo racecar.launch 

ROS机器人定位导航仿真_第3张图片
通过在tk窗口下WASD来移动小车
ROS机器人定位导航仿真_第4张图片
3、修改小车位置并启动地图
ROS机器人定位导航仿真_第5张图片
修改后启动运行,位置发生改变
ROS机器人定位导航仿真_第6张图片

三、创建地图

1、建立并保存地图

gazebo

ROS机器人定位导航仿真_第7张图片
ROS机器人定位导航仿真_第8张图片
2、在gazebo中引入地图模型并添加障碍物
ROS机器人定位导航仿真_第9张图片
ROS机器人定位导航仿真_第10张图片
然后对该地图模型进行保存
ROS机器人定位导航仿真_第11张图片
3、运行地图

roslaunch racecar_gazebo racecar_runway.launch

ROS机器人定位导航仿真_第12张图片
ROS机器人定位导航仿真_第13张图片

四、gmapping建图

roslaunch racecar_gazebo racecar_runway.launch
roslaunch racecar_gazebo slam_gmapping.launch

分别运行上述命令后:
ROS机器人定位导航仿真_第14张图片
ROS机器人定位导航仿真_第15张图片
2、保存地图

rosrun map_server map_saver -f test_map

五、导航运动

1、启动rviz

roslaunch racecar_gazebo racecar_rviz.launch
roslaunch racecar_gazebo racecar_runway_navigation.launch

依次执行上述命令后:
ROS机器人定位导航仿真_第16张图片
2、设计行车轨迹

ROS机器人定位导航仿真_第17张图片
3、启动脚本

rosrun racecar_gazebo path_pursuit.py

小车在根据规划的路线前进:
ROS机器人定位导航仿真_第18张图片
4、到达目的地
ROS机器人定位导航仿真_第19张图片

六、基于自建的路线导航

创建并保存地图
通过floor plan绘制地图,导入图片文件生成地图
引入地图模型并添加障碍物,保存为world格式
ROS机器人定位导航仿真_第20张图片
新建launch文件

sudo gedit tgzq.launch

添加以下代码:
ROS机器人定位导航仿真_第21张图片
1、建图

roslaunch racecar_gazebo tgzq.launch
roslaunch racecar_gazebo slam_gmapping.launch 

2、移动小车,得到地图,然后保存地图

rosrun map_server map_saver -f tgzq_map

ROS机器人定位导航仿真_第22张图片
3、创建自主导航文件

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>

4、运行自主导航文件,启动rviz

roslaunch racecar_gazebo autocar.launch 
roslaunch racecar_gazebo racecar_rviz.launch

5、2D Nav Goal 设计行车轨迹
ROS机器人定位导航仿真_第23张图片
6、启动脚本:

rosrun racecar_gazebo path_pursuit.py

小车沿着规划的路线运动
ROS机器人定位导航仿真_第24张图片
最终运行结果:
ROS机器人定位导航仿真_第25张图片

你可能感兴趣的:(ROS机器人定位导航仿真)