6.1.2 无人机集群协同探索
6.1.2 无人机集群协同探索
参考教程:
SYSU-STAR/RACER: Rapid Exploration with Multiple Unmanned Aerial Vehicles (UAV) (github.com)
1. 查看系统环境
要运行本仿真程序,需要保证当前环境为ubuntu18.04+ros-melodic-desktop-full
查看ubuntu
版本:
rosnoetic@rosnoetic-VirtualBox:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.6 LTS
Release: 18.04
Codename: bionic
可知,当前ubuntu
版本满足18.04
查看ros
版本:
rosnoetic@rosnoetic-VirtualBox:~$ rosversion -d
melodic
可知,当前ros
版本满足melodic
2. 安装依赖
ctrl+alt+T
打开终端,执行如下指令下载相关依赖
:
rosnoetic@rosnoetic-VirtualBox:~$ sudo apt-get install libarmadillo-dev ros-melodic-nlopt libelf-dev libdw-dev
-
如果出现错误:E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用)
我们在使用
Ubuntu
系统时经常性使用sudo apt install
命令安装所需要的软件库,偶尔会出现如下问题:解决方法
首先我们需要检测进程都有哪些:
rosnoetic@rosnoetic-VirtualBox:~$ ps -e | grep apt
我这里显示
接下来杀死这些进程(需要根据你自己的进程
ID
更改命令)rosnoetic@rosnoetic-VirtualBox:~$ sudo kill 2746 rosnoetic@rosnoetic-VirtualBox:~$ sudo kill 2750
根据实际操作,一般只用执行第一句话就可以了,第二个进行会跟着一起被杀死。
接下来非常重要:
rosnoetic@rosnoetic-VirtualBox:~$ sudo rm /var/lib/dpkg/lock-frontend rosnoetic@rosnoetic-VirtualBox:~$ sudo rm /var/cache/apt/archives/lock rosnoetic@rosnoetic-VirtualBox:~$ sudo rm /var/lib/dpkg/lock rosnoetic@rosnoetic-VirtualBox:~$ sudo rm /var/cache/apt/archives/lock
执行完一般都会解决问题
如果还提示错误,先更新:
rosnoetic@rosnoetic-VirtualBox:~$ sudo apt-get update
之后,需要使用以下命令安装 LKH-3
(推荐使用 LKH-3.0.6
版本)。请确保可执行文件正确放置在 。LKH/usr/local/bin
rosnoetic@rosnoetic-VirtualBox:~$ wget http://akira.ruc.dk/~keld/research/LKH-3/LKH-3.0.6.tgz
解压文件LKH-3.0.6.tgz
rosnoetic@rosnoetic-VirtualBox:~$ tar xvfz LKH-3.0.6.tgz
-
解压过程
编译LKH-3.0.6
rosnoetic@rosnoetic-VirtualBox:~$ cd LKH-3.0.6/
rosnoetic@rosnoetic-VirtualBox:~/LKH-3.0.6$ make
-
编译过程
将LKH
文件复制到/usr/local/bin
文件夹下:
rosnoetic@rosnoetic-VirtualBox:~/LKH-3.0.6$ sudo cp LKH /usr/local/bin
3. 下载源码并编译
ctrl+alt+T
打开终端,并执行如下指令创建工作空间
:
rosnoetic@rosnoetic-VirtualBox:~$ mkdir -p multi_uav_explore/src
进入multi_uav_explore/src
文件夹下载源码:
rosnoetic@rosnoetic-VirtualBox:~$ cd multi_uav_explore/src/
rosnoetic@rosnoetic-VirtualBox:~/multi_uav_explore/src$ git clone https://github.com/SYSU-STAR/RACER.git
编译源码:
rosnoetic@rosnoetic-VirtualBox:~$ cd multi_uav_explore/
rosnoetic@rosnoetic-VirtualBox:~/multi_uav_explore$ catkin_make
此处编译的时候很容易出现msg
或者srv
没有转换为头文件.h
,而导致编译那些引用这个头文件的cpp
程序报错。
例如在编译multi_map_manager.h
文件时,由于此前还没有生成ChunkStamps.h
,所以导致此处引用的时候报错。
ctrl+alt+T
打开终端,执行如下指令打开vscode
rosnoetic@rosnoetic-VirtualBox:~$ cd multi_uav_explore/
rosnoetic@rosnoetic-VirtualBox:~/multi_uav_explore$ code .
勾选”信任父文件夹”rosnoetic“中所有文件的作者
“,点击”是,我信任此作者
“
打开multi_uav_explore/src/RACER/swarm_exploration/plan_env/CMakeLists.txt
,将调用multi_map_manager.cpp
库、sdf_map.cpp
、map_ros.cpp
的代码注释,先不去编译报错的cpp
程序,保证msg
和srv
头文件完整生成。
接着重新进行编译
rosnoetic@rosnoetic-VirtualBox:~$ cd multi_uav_explore/
rosnoetic@rosnoetic-VirtualBox:~/multi_uav_explore$ catkin_make
接着就可以发现devel/include
文件下生成了相应的头文件
-
头文件列表
头文件生成后,重新将multi_map_manager.cpp
库、sdf_map.cpp
、map_ros.cpp
的代码重新释放注释:
接着再次进行编译
rosnoetic@rosnoetic-VirtualBox:~$ cd multi_uav_explore/
rosnoetic@rosnoetic-VirtualBox:~/multi_uav_explore$ catkin_make
接着就能将剩余的内容编译完成:
-
编译过程
4. 运行
4.1 扩大内存
首先关闭交换分区
rosnoetic@rosnoetic-VirtualBox:~$ sudo swapoff /swapfile
接着创建分区, 4 * 1024 = 4096
创建 4 G
的内存分区
rosnoetic@rosnoetic-VirtualBox:~$ sudo dd if=/dev/zero of=/swapfile bs=1M count=4096
继续执行如下指令:
rosnoetic@rosnoetic-VirtualBox:~$ sudo mkswap /swapfile
rosnoetic@rosnoetic-VirtualBox:~$ sudo swapon /swapfile
创建完交换分区之后就可以继续编译。
也可以查看分区的大小
rosnoetic@rosnoetic-VirtualBox:~$ free -m
-
如果不需要用交换内存,则执行如下指令进行关闭
rosnoetic@rosnoetic-VirtualBox:~$ sudo swapoff /swapfile rosnoetic@rosnoetic-VirtualBox:~$ sudo rm /swapfile
4.2 启动仿真
ctrl+alt+T
打开终端,执行如下指令启动可视化
rosnoetic@rosnoetic-VirtualBox:~$ cd multi_uav_explore/
rosnoetic@rosnoetic-VirtualBox:~/multi_uav_explore$ source ./devel/setup.bash
rosnoetic@rosnoetic-VirtualBox:~/multi_uav_explore$ roslaunch exploration_manager rviz.launch
ctrl+alt+T
打开终端,执行如下指令启动协同仿真
:
rosnoetic@rosnoetic-VirtualBox:~$ cd multi_uav_explore/
rosnoetic@rosnoetic-VirtualBox:~/multi_uav_explore$ source ./devel/setup.bash
rosnoetic@rosnoetic-VirtualBox:~/multi_uav_explore$ roslaunch exploration_manager swarm_exploration.launch
点击Rviz
软件的2D Nav Goal
设置目标,启动无人机运动:
接着就可以看到无人机开始协同搜索,完成对地图的探索功能