0x00 简要介绍

在stdr仿真这个系列教程中,前面已经有八篇文章了。到现在才开始正式的指导大家如何下载前面所有的测试代码,那是因为我希望大家可以自己动手来输入各篇文章中的代码来测试学习。如果我一开始就告诉大家如何下载的话,有可能大家只是下载了代码,直接一运行launch看看效果就不管了。这样就无法真正深刻理解下整个自动导航配置过程,而且也无法认识到stdr软件的好处了。这个stdr系列教程的网址如下:https://www.corvin.cn/stdr-simulator


0x01 下载代码

我已经将stdr的相关的测试代码上传至ROS小课堂的代码管理服务器上,该代码仓库我创建了master分支代码。该分支代码已经经过测试,下载代码的命令如下:

git clone https://code.corvin.cn/corvin_zhang/stdr_ws

完整的下载过程如下图所示(图中的下载代码仓库地址按照上面的,图中的仓库地址为旧代码仓库地址):

Screenshot from 2018-10-16 16:07:19.png

当执行完脚本后,就会自动安装好缺失的软件包,配置好环境变量。下面来看看软件包中的内容,如下图所示:

Screenshot from 2018-10-16 16:44:18.png

下面来仔细查看下README文档的内容,如下所示:

##########################################################################
# Copyright: www.corvin.cn ROS小课堂 2016-2018
##########################################################################
# Author: corvin
##########################################################################
# Description:
#     本代码仓库主要存储STDR仿真器相关测试代码,主要用于学习如何通过
#   代码来进行ROS实验,由于该仿真器是二维平面移动,因此主要用于仿真两
#   轮差速驱动的小车,当然自己建全向移动的小车也是可以的。
#     目前代码仓库中包含的软件包及其介绍如下,随着在STDR中的实验不断增
#   多,软件包也会逐渐增加:
#     (1).stdr_simulator:STDR仿真器软件的实现源码,可以根据需要来修改源
#        码增加额外功能。
#     (2).ultrasonic_obstacle_avoidance:用于利用自带的仿真小车上超声波
#        数据进行避障仿真实验。
#     (3).teleop_twist_keyboard:使用键盘可以遥控仿真小车四处移动。
#     (4).stdr_gmapping:在stdr中进行gmapping进行仿真建图的测试代码。
#     (5).stdr_move_base:在stdr中调用move_base软件包,配置相关参数。
#     (6).stdr_amcl:在stdr中进行amcl定位和自动导航的测试代码。
#     (7).stdr_hector_mapping:使用hector_mapping完成地图构建。
#     (8).stdr_navigation:最上层的代码,通过调用move_base,amcl等实现自动导航.
#############################################################################
# Usage:
#   0.在使用该仿真代码前,首先需要运行工作区根目录下的install.sh脚本,
#     该脚本只需要在刚下载代码时执行一次即可,后面就不用再执行了:
#     sudo ./install.sh
#     等待该命令执行完成即可.
#   1.需要测试各SLAM算法,可以查看如下各操作:
#     (1):需要测试gmapping建图,执行如下命令:
#         roslaunch stdr_gmapping stdr_gmapping.launch
#
#         需要使用键盘来遥控机器人四处走动,执行以下命令:
#         rosrun teleop_twist_keyboard teleop_twist_keyboard.py
#
#     (2):需要测试hector_mapping建图,执行如下命令:
#         roslaunch stdr_hector_mapping stdr_hector_mapping.launch
#
#         需要使用键盘来遥控机器人四处走动,执行以下命令:
#         rosrun teleop_twist_keyboard teleop_twist_keyboard.py
#
#     (3):需要测试amcl定位自动导航,执行如下命令:
#         roslaunch stdr_navigation amcl_movebase_nav.launch
#
#     (4):想要实现定点巡航仿真的话,执行如下命令:
#         roslaunch stdr_navigation patrol_nav.launch
#
#   2.需要测试超声波避障策略:
#     (1):最基础的根据前面三个超声波来进行避障移动,执行以下命令:
#         roslaunch ultrasonic_obstacle_avoidance ultrasonic_avoidance.launch
#
##############################################################################
# History:
#    20180523: init this code project.
#    20180601: add stdr_hector_mapping package to test hector.
#    20180806: 新增可以定点巡航的测试代码patrol_nav.launch,patrol_nav.py.
#    20180903: 新增install.sh,用于安装一些ros软件包,这样才能正常编译和使用该仿真.
##############################################################################

对于这个安装配置脚本install.sh基本上跟indigo分支下的是一样的,下面我们可以来看看该脚本内容:

#!/bin/bash
red="\e[31m"
normal="\e[0m"
# first install necessary packages
sudo apt update
while [ $? -ne 0 ]
do
    echo -e "{red}Can't update source list, will retry...{noraml}\n"
    sleep 3
    sudo apt update
done
sudo apt -y upgrade
sudo apt install -y ros-kinetic-move-base ros-kinetic-amcl
sudo apt install -y ros-kinetic-dwa-local-planner ros-kinetic-global-planner
sudo apt install -y ros-kinetic-gmapping ros-kinetic-hector-mapping
sudo apt install -y ros-kinetic-costmap-2d ros-kinetic-hector-nav-msgs
sudo apt install -y ros-kinetic-map-server ros-kinetic-nav-core
sudo apt-get -y autoremove
# second catkin_make worksapce
catkin_make
# third set workspace env to .bashrc
source devel/setup.bash
echo "#config stdr_ws env" >>~/.bashrc
STDR_WS_PATH=$(dirname $(readlink -f "$0"))
echo "source ${STDR_WS_PATH}/devel/setup.bash" >> ~/.bashrc
exit 0

0x02 更新分支代码

在后面我再发布新的stdr教程时,就会把代码提交到相应的分支上。当然也可能会不定时的来更新代码,大家只要在本地代码仓库中不断的拉取服务器上最新的代码即可。下面分别来介绍如何更新两个分支的代码:

  • 更新master分支代码

    首先要进入stdr_ws的工作区根目录下,要先看看自己当前代码仓库的状态。自己有没有修改过仓库中的代码,如果修改过可以根据自己需要来看看是否需要撤销修改,保持与服务器上代码同步。最后完整的更新代码命令如下:

    git pull origin master

    下面来看看一个更新代码的流程,如下图所示:

更新stdr仓库代码

0x03 feedback

大家在按照教程操作过程中有任何问题,可以直接在文章末尾给我留言,或者关注ROS小课堂的官方微信公众号,在公众号中给我发消息反馈问题也行。我基本上每天都会处理公众号中的留言!当然如果你要是顺便给ROS小课堂打个赏,我也会感激不尽的,打赏30块还会被邀请进ROS小课堂的微信群,与更多志同道合的小伙伴一起学习和交流!