增加了record_odometry这个包,这个包可以用来记录指定odom topic的消息,并存在指定位置,通过下述方法配置即可!!!
在编译的过程,会遇到yaml-cpp中的.os文件或者.a文件找不到的情况,需要自己
sudo updatedb
locate yaml-cpp
上述两行指令可以找到对应的路径地址,将其替换到
ego-planner-swarm/src/planner/yaml_utils/CMakeLists.txt中的链接位置即可。 如果还有问题,可以直接进行源码安装,步骤如下: 克隆yaml-cpp的仓库:
git clone https://github.com/jbeder/yaml-cpp.git cd yaml-cpp 编译并安装:
mkdir build cd build cmake .. make sudo make install
采集点位:(记住话题前面的"_"!!!!)
rosrun record_odometry odom_listener.py _odom_topic:="/drone1/odom" _file_path:="/home/henry/waypoints.yaml"
然后根据终端输出内容进行操作!!!
关于ego_swarm中读取文件的设置,请仔细阅读这三个文件中的改动内容。
ego-planner-swarm/src/planner/plan_manage/launch/swarm_large.launch ego-planner-swarm/src/planner/plan_manage/launch/run_in_sim.launch ego-planner-swarm/src/planner/plan_manage/launch/advanced_param.xml
正常情况下,启动
roslaunch ego_planner swarm_large.launch 可以看到如下的点位输出。
Compiling tests passed on ubuntu 16.04, 18.04, and 20.04 with ros installed. You can just execute the following commands one by one.
sudo apt-get install libarmadillo-dev
git clone https://github.com/ZJU-FAST-Lab/ego-planner-swarm.git
cd ego-planner-swarm
catkin_make -j1
source devel/setup.bash
roslaunch ego_planner simple_run.launch
If you find this work useful or interesting, please kindly give us a star ⭐, thanks!😀
- This work extends EGO-Planner to swarm navigation.
EGO-Swarm: A Fully Autonomous and Decentralized Quadrotor Swarm System in Cluttered Environments
EGO-Swarm is a decentralized and asynchronous systematic solution for multi-robot autonomous navigation in unknown obstacle-rich scenes using merely onboard resources.
Video Links: YouTube, bilibili (for Mainland China)
EGO-Swarm: A Fully Autonomous and Decentralized Quadrotor Swarm System in Cluttered Environments, Xin Zhou, Jiangchao Zhu, Hongyu Zhou, Chao Xu, and Fei Gao (Published in ICRA2021). Paper link and Science report.
Requirements: ubuntu 16.04, 18.04 or 20.04 with ros-desktop-full installation.
Step 1. Install Armadillo, which is required by uav_simulator.
sudo apt-get install libarmadillo-dev
Step 2. Clone the code from github or gitee. These two repositories synchronize automatically.
From github,
git clone https://github.com/ZJU-FAST-Lab/ego-planner-swarm.git
Step 3. Compile,
cd ego-planner
catkin_make -DCMAKE_BUILD_TYPE=Release -j1
Step 4. Run.
In a terminal at the ego-planner-swarm/ folder, open the rviz for visualization and interactions
source devel/setup.bash
roslaunch ego_planner rviz.launch
In another terminal at the ego-planner-swarm/, run the planner in simulation by
source devel/setup.bash
roslaunch ego_planner swarm.launch
Then you can follow the gif below to control the drone.
We recommend using vscode, the project file has been included in the code you have cloned, which is the .vscode folder. This folder is hidden by default. Follow the steps below to configure the IDE for auto code completion & jump. It will take 3 minutes.
Step 1. Install C++ and CMake extentions in vscode.
Step 2. Re-compile the code using the command
catkin_make -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=Yes
It will export a compile commands file, which can help vscode to determine the code architecture.
Step 3. Launch vscode and select the ego-planner folder to open.
code ~/<......>/ego-planner-swarm/
Press Ctrl+Shift+B in vscode to compile the code. This command is defined in .vscode/tasks.json. You can add customized arguments after "args". The default is "-DCMAKE_BUILD_TYPE=Release".
Step 4. Close and re-launch vscode, you will see the vscode has already understood the code architecture and can perform auto completion & jump.
Packages in this repo, local_sensing have GPU, CPU two different versions. By default, they are in CPU version for better compatibility. By changing
set(ENABLE_CUDA false)
in the CMakeList.txt in local_sensing packages, to
set(ENABLE_CUDA true)
CUDA will be turned-on to generate depth images as a real depth camera does.
Please remember to also change the 'arch' and 'code' flags in the line of
set(CUDA_NVCC_FLAGS
-gencode arch=compute_61,code=sm_61;
)
in CMakeList.txt. If you encounter compiling error due to different Nvidia graphics card you use or you can not see proper depth images as expected, you can check the right code via link1 or link2.
Don't forget to re-compile the code!
local_sensing is the simulated sensors. If ENABLE_CUDA
true, it mimics the depth measured by stereo cameras and renders a depth image by GPU. If ENABLE_CUDA
false, it will publish pointclouds with no ray-casting. Our local mapping module automatically selects whether depth images or pointclouds as its input.
For installation of CUDA, please go to CUDA ToolKit
Typical simulations use a dynamic model to calculate the motion of the drone under given commands. However, it requires continuous iterations to solve a differential equation, which consumes quite a lot computation. When launching a swarm of drones, this computation burden may cause significant lag. On an i7 9700KF CPU I use, 15 drones are the upper limit. Therefore, for compatibility and scalability purposes, I use a "fake_drone" package to convert commands to drone odometry directly by default.
If you want to use a more realistic quadrotor model, you can un-comment the node quadrotor_simulator_so3
and so3_control/SO3ControlNodelet
in simulator.xml to enable quadrotor simulation considering dynamics.
Please don't forget to comment the package poscmd_2_odom
right after the above two nodes.
The computation time of our planner is too short for the OS to increase CPU frequency, which makes the computation time tend to be longer and unstable.
Therefore, we recommend you to manually set the CPU frequency to the maximum. Firstly, install a tool by
sudo apt install cpufrequtils
Then you can set the CPU frequency to the maximum allowed by
sudo cpufreq-set -g performance
More information can be found in http://www.thinkwiki.org/wiki/How_to_use_cpufrequtils.
Note that CPU frequency may still decrease due to high temperature in high load.
The source code is released under GPLv3 license.
We are still working on extending the proposed system and improving code reliability.
For any technical issues, please contact Xin Zhou ([email protected]) or Fei GAO ([email protected]).
For commercial inquiries, please contact Fei GAO ([email protected]).