This repository contains the implementation, tools, and processes that have been used by the ARL Swarm Team for control of UAV swarms.
The core control nodes are:
swarm-nodes/hrl_controlswarm-nodes/state_providerswarm-nodes/estimator
Prior to installing this project, it is necessary to first install the software requirements listed below. Note that these requirements must also be met on the respective agents.
Once these software requirements have been met, it is now necessary to clone the project repository. Performing this step will provide access to the project's docker-compose.yml scripts and helper scripts.
git clone https://github.com/unl-nimbus-lab/hrl_control.git
After cloning the project repository, it is now possible to install and deploy the Docker images provided within this project. The provided Docker images contain all code and the respective environments so that Users may continue to develop and deploy this project.
The hrl_control reposiotry is designed to be developed, tested and deployed using Docker containers. The development conatiner is to be used by mounting the swarm-nodes directory as a volume a runtime. This allows developers to re-compile code without haveing to rebuild the container. The testing container is to be used for simulation, and deployment container is to be run on the drone's companion computer (the only difference between the two is the base image)
# Navigate to the correct directory
cd hrl_control/docker/development
# Build the image
docker build -t swarm_devel .
docker run -it --net=host \
--mount type=bind,source="${HOME}/hrl_control/swarm-nodes/custom_libs",target=/home/catkin_ws/src/custom_libs/ \
--mount type=bind,source="${HOME}/hrl_control/swarm-nodes/swarm_msgs",target=/home/catkin_ws/src/swarm_msgs/ \
--mount type=bind,source="${HOME}/hrl_control/swarm-nodes/command_xform",target=/home/catkin_ws/src/command_xform/ \
--mount type=bind,source="${HOME}/hrl_control/swarm-nodes/state_provider",target=/home/catkin_ws/src/state_provider/ \
--mount type=bind,source="${HOME}/hrl_control/swarm-nodes/lqr_control",target=/home/catkin_ws/src/lqr_control/ \
--mount type=bind,source="${HOME}/hrl_control/swarm-nodes/hrl_command_interpret",target=/home/catkin_ws/src/hrl_command_interpret/ \
--mount type=bind,source="${HOME}/hrl_control/swarm-nodes/hrl_control",target=/home/catkin_ws/src/hrl_control/ \
--mount type=bind,source="${HOME}/hrl_control/swarm-nodes/bag_handler",target=/home/catkin_ws/src/bag_handler/ \
swarm_devel
Prior to launching the hrl_control/drone container, it is first necessary to modify the environment variables provided within the .env file and to source this environment file:
# Navigate to the proper directory
cd path/to/hrl_control
# build the image
docker build -f DroneDockerfile -t hrl_docker_droneAfter setting the desired environment variable values and sourcing the environment, the docker-compose.yml script may be used to launch the container.
# Navigate to the proper directory
cd path/to/hrl_control/docker/drone/
# Run the docker services
docker-compose up