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
下载完成:
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
编译成功:
二、仿真
1、添加环境变量
source ~/ros/devel/setup.bash
2、运行模型
roslaunch racecar_gazebo racecar.launch
通过在tk窗口下WASD来移动小车
3、修改小车位置并启动地图
修改后启动运行,位置发生改变
三、创建地图
1、建立并保存地图
gazebo
2、在gazebo中引入地图模型并添加障碍物
然后对该地图模型进行保存
3、运行地图
roslaunch racecar_gazebo racecar_runway.launch
四、gmapping建图
roslaunch racecar_gazebo racecar_runway.launch
roslaunch racecar_gazebo slam_gmapping.launch
分别运行上述命令后:
2、保存地图
rosrun map_server map_saver -f test_map
五、导航运动
1、启动rviz
roslaunch racecar_gazebo racecar_rviz.launch
roslaunch racecar_gazebo racecar_runway_navigation.launch
依次执行上述命令后:
2、设计行车轨迹
3、启动脚本
rosrun racecar_gazebo path_pursuit.py
小车在根据规划的路线前进:
4、到达目的地
六、基于自建的路线导航
创建并保存地图
通过floor plan绘制地图,导入图片文件生成地图
引入地图模型并添加障碍物,保存为world格式
新建launch文件
sudo gedit tgzq.launch
添加以下代码:
1、建图
roslaunch racecar_gazebo tgzq.launch
roslaunch racecar_gazebo slam_gmapping.launch
2、移动小车,得到地图,然后保存地图
rosrun map_server map_saver -f tgzq_map
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 设计行车轨迹
6、启动脚本:
rosrun racecar_gazebo path_pursuit.py
小车沿着规划的路线运动
最终运行结果: