嵌入式综合性实验

    技术2023-04-13  111

    ROS机器人定位导航仿真

    一、配置运行环境

    二、创建工作区域

    1.先创建ros的工作区域racecar_ws

    mkdir -p ~/racecar_ws/src

    2.转换到工作区域目录

    cd ~/racecar_ws/src

    3、把当前目录初始化为一个ROS工作空间

    catkin_init_workspace

    4.下载Gazebo搭建赛道功能包racecar

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

    5.下载完成,效果图如下: 6.安装本次运行所需的控件

    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 sudo apt-get install ros-melodic-ackermann-msgs sudo apt-get install ros-melodic-global-planner sudo apt-get install ros-melodic-teb-local-planner

    7.racecar功能包编译

    cd ~/racecar_ws catkin_make

    三、启动仿真编译

    1.设置环境变量,程序注册

    echo "source ~/racecar_ws/devel/setup.bash" >> ~/.bashrc source ~/.bashrc

    2.启动gazebo,运行打开小车模型

    roslaunch racecar_gazebo racecar.launch

    运行成功后可看到小车模型:

    四、搭建小车赛道

    在终端打开Gazebo,点击Edit->Build Editor,创建模型,保存该模型。如下图: 将小车拖入赛道适当位置: 而后添加障碍物: 创建launch文件,配置赛道参数,代码如下:

    cd ~/racecar_ws/src/racecar/racecar_gazebo/launch sudo gedit mango.launch

    而后在文件中加入如下代码:

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

    而后运行自己创建的地图,代码如下:

    source ./devel/setup.bash roslaunch racecar_gazebo mango.launch

    而后通过建立的赛道进行gmapping建图

    roslaunch racecar_gazebo slam_gmapping.launch

    而后保存gmapping创建的地图

    cd ~/racecar_ws rosrun map_server map_saver -f mango_car_map

    五、小车自主定位导航

    打开终端,执行如下命令:

    cd ~/racecar_ws/src/racecar/racecar_gazebo/launch sudo gedit mango_auto.launch

    而后在mango_auto.launch编辑如下代码:

    <?xml version="1.0"?> <launch> <!-- Launch the racecar --> <include file="$(find racecar_gazebo)/launch/racecar.launch"> <arg name="world_name" value="mango"/> </include> <!-- Launch the built-map --> <node name="map_server" pkg="map_server" type="map_server" args="$(find racecar_gazebo)/map/mango_car_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>

    而后保存退出! 运行自己创建的赛道

    cd ~/racecar_ws source ./devel/setup.bash roslaunch racecar_gazebo mango_auto.launch

    再继续打开另一个终端,启动rviz

    roslaunch racecar_gazebo racecar_rviz.launch

    再打开另一个终端,启动path_pursuit.py脚本文件

    rosrun racecar_gazebo path_pursuit.py

    小车运行时效果如下图: 最后本次实验到此完成!

    Processed: 0.011, SQL: 9