Skip to content

Commit

Permalink
refactor docker.sh
Browse files Browse the repository at this point in the history
  • Loading branch information
PonomarevDA committed Mar 17, 2024
1 parent cc421b5 commit f82bd80
Show file tree
Hide file tree
Showing 2 changed files with 86 additions and 128 deletions.
18 changes: 9 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -123,17 +123,17 @@ Well, here is the output of the command:

```bash
Primary supported modes (with aliases):
px4_v1_14_0_cyphal_quadcopter,cq | Cyphal PX4 v1.14-beta Quadrotor x (4001)
px4_v1_14_0_cyphal_quadplane_vtol,csv | Cyphal PX4 v1.14-beta Standard VTOL (13000)
dronecan_quadrotor,dq | DroneCAN PX4 v1.14-beta Quadrotor (4001)
dronecan_vtol_v1_14_0,dv | DroneCAN PX4 v1.14-beta Standard VTOL (13000)
dronecan_vtol_v1_12_1,dvo | DroneCAN PX4 v1.12 vtol 13070
px4_v1_14_0_cyphal_quadcopter,cq | Cyphal PX4 v1.14-beta Quadrotor x (4001)
px4_v1_14_0_cyphal_quadplane_vtol,csv | Cyphal PX4 v1.14-beta Standard VTOL (13000)
px4_v1_14_0_dronecan_quadrotor,dq | DroneCAN PX4 v1.14-beta Quadrotor (4001)
px4_v1_14_0_beta_dronecan_vtol,dv | DroneCAN PX4 v1.14-beta Standard VTOL (13000)
px4_v1_12_1_dronecan_vtol,dvo | DroneCAN PX4 v1.12 vtol 13070

Other modes:
sitl_inno_vtol | MAVLink PX4 v1.12 vtol 13070
sitl_flight_goggles | MAVLink PX4 v1.12 Quadrotor (4001)
cyphal_and_dronecan | 2 CAN AP v4.4.0 Copter
px4_v1_14_0_cyphal_octorotor,co | Cyphal PX4 v1.14-beta Octorotor Coaxial (12001)
sitl_inno_vtol | MAVLink PX4 v1.12 vtol 13070
sitl_flight_goggles | MAVLink PX4 v1.12 Quadrotor (4001)
cyphal_and_dronecan | 2 CAN AP v4.4.0 Copter
px4_v1_14_0_cyphal_octorotor,co | Cyphal PX4 v1.14-beta Octorotor Coaxial (12001)

```

Expand Down
196 changes: 77 additions & 119 deletions scripts/docker.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,19 +13,19 @@ Options:
Supported modes (with aliases):
-------------------------------------------------------------------------------
Command | Protocol Autopilot SW Airframe
Command | Protocol Autopilot SW Airframe
-------------------------------------------------------------------------------
px4_v1_14_0_cyphal_quadcopter,cq | Cyphal PX4 v1.14-beta Quadrotor x (4001)
px4_v1_14_0_cyphal_quadcopter,cq | Cyphal PX4 v1.14-beta Quadrotor x (4001)
px4_v1_14_0_cyphal_quadplane_vtol,csv | Cyphal PX4 v1.14-beta Standard VTOL (13000)
px4_v1_14_0_cyphal_octoplane_vtol,cv8 | Cyphal PX4 v1.14-beta VTOL 8 motors (13050)
dronecan_quadrotor,dq | DroneCAN PX4 v1.14-beta Quadrotor (4001)
dronecan_vtol_v1_14_0,dv | DroneCAN PX4 v1.14-beta Standard VTOL (13000)
dronecan_vtol_v1_12_1,dvo | DroneCAN PX4 v1.12 vtol 13070
px4_v1_14_0_dronecan_quadrotor,dq | DroneCAN PX4 v1.14-beta Quadrotor (4001)
px4_v1_14_0_beta_dronecan_vtol,dv | DroneCAN PX4 v1.14-beta Standard VTOL (13000)
px4_v1_12_1_dronecan_vtol,dvo | DroneCAN PX4 v1.12 vtol 13070
-------------------------------------------------------------------------------
px4_v1_14_0_cyphal_octorotor,co | Cyphal PX4 v1.14-beta Octorotor Coaxial (12001)
sitl_inno_vtol | MAVLink PX4 v1.12 vtol 13070
sitl_flight_goggles | MAVLink PX4 v1.12 Quadrotor (4001)
cyphal_and_dronecan | 2 CAN AP v4.4.0 Copter
px4_v1_14_0_cyphal_octorotor,co | Cyphal PX4 v1.14-beta Octorotor Coaxial (12001)
sitl_inno_vtol | MAVLink PX4 v1.12 vtol 13070
sitl_flight_goggles | MAVLink PX4 v1.12 Quadrotor (4001)
cyphal_and_dronecan | 2 CAN AP v4.4.0 Copter
-------------------------------------------------------------------------------
Commands (with aliases):
Expand Down Expand Up @@ -138,173 +138,131 @@ setup_cyphal_and_dronecan_hitl_config() {
echo "- CYPHAL_DEV_PATH_SYMLINK is" $CYPHAL_DEV_PATH_SYMLINK
}

build_docker_image() {
docker_build_image() {
docker build -t $IMAGE_NAME ..
}

pull_docker_image() {
docker_pull_image() {
docker pull $IMAGE_NAME
}

push_docker_image() {
docker_push_image() {
docker push $IMAGE_NAME
}

dronecan_vtol_v1_12_1() {
kill_all_related_containers
setup_dronecan_hitl_config
slcan_checker&
vehicle="px4_v1_12_1_dronecan_vtol"
if [[ $OPTIONS == "--force" ]]; then
${REPOSITORY_DIR}/scripts/configurator.py ${REPOSITORY_DIR}/configs/vehicles/${vehicle}.yaml
fi
docker container run --rm $DOCKER_FLAGS $IMAGE_NAME ./scripts/run_sim.sh ${vehicle}
}

dronecan_vtol_v1_14_0() {
kill_all_related_containers
setup_dronecan_hitl_config
slcan_checker&
vehicle="px4_v1_14_0_beta_dronecan_vtol"
if [[ $OPTIONS == "--force" ]]; then
${REPOSITORY_DIR}/scripts/configurator.py ${REPOSITORY_DIR}/configs/vehicles/${vehicle}.yaml
fi
docker container run --rm $DOCKER_FLAGS $IMAGE_NAME ./scripts/run_sim.sh ${vehicle}
}

px4_v1_14_0_dronecan_quadrotor() {
kill_all_related_containers
setup_dronecan_hitl_config
slcan_checker&
vehicle="px4_v1_14_0_dronecan_quadrotor"
if [[ $OPTIONS == "--force" ]]; then
${REPOSITORY_DIR}/scripts/configurator.py ${REPOSITORY_DIR}/configs/vehicles/${vehicle}.yaml
fi
docker container run --rm $DOCKER_FLAGS $IMAGE_NAME ./scripts/run_sim.sh ${vehicle}
}

sitl_inno_vtol() {
kill_all_related_containers
setup_mavlink_sitl_config
docker container run --rm $DOCKER_FLAGS $IMAGE_NAME ./scripts/run_sim.sh sitl_inno_vtol
docker_countainer_run_interactive() {
setup_cyphal_hitl_config
docker container run --rm -it $DOCKER_FLAGS $IMAGE_NAME /bin/bash
}

sitl_flight_goggles() {
kill_all_related_containers
docker_container_run_test() {
setup_mavlink_sitl_config
docker container run --rm $DOCKER_FLAGS $IMAGE_NAME ./scripts/run_sim.sh sitl_flight_goggles
docker container run --rm $DOCKER_FLAGS $IMAGE_NAME ./uav_dynamics/uav_hitl_dynamics/catkin_test.sh --docker
}

px4_v1_14_0_cyphal_quadcopter() {
kill_all_related_containers
setup_cyphal_hitl_config
slcan_checker&
vehicle="px4_v1_14_0_cyphal_quadcopter"
if [[ $OPTIONS == "--force" ]]; then
${REPOSITORY_DIR}/scripts/configurator.py ${REPOSITORY_DIR}/configs/vehicles/${vehicle}.yaml
docker_kill_all_related_containers() {
containers=$(docker ps -q --filter ancestor=$IMAGE_NAME)
if [ ! -z "${containers}" ]; then
printf "Killing the following containers: "
docker kill $containers
fi
docker container run --rm $DOCKER_FLAGS $IMAGE_NAME ./scripts/run_sim.sh ${vehicle}
}

px4_v1_14_0_cyphal_octorotor() {
kill_all_related_containers
setup_cyphal_hitl_config

docker_container_run_dronecan() {
docker_kill_all_related_containers
setup_dronecan_hitl_config
slcan_checker&
vehicle="px4_v1_14_0_cyphal_octorotor"
if [[ $OPTIONS == "--force" ]]; then
${REPOSITORY_DIR}/scripts/configurator.py ${REPOSITORY_DIR}/configs/vehicles/${vehicle}.yaml
fi
docker container run --rm $DOCKER_FLAGS $IMAGE_NAME ./scripts/run_sim.sh ${vehicle}
}

px4_v1_14_0_cyphal_quadplane_vtol() {
kill_all_related_containers
docker_container_run_cyphal() {
docker_kill_all_related_containers
setup_cyphal_hitl_config
slcan_checker&
vehicle="px4_v1_14_0_cyphal_quadplane_vtol"
if [[ $OPTIONS == "--force" ]]; then
${REPOSITORY_DIR}/scripts/configurator.py ${REPOSITORY_DIR}/configs/vehicles/${vehicle}.yaml
fi
docker container run --rm $DOCKER_FLAGS $IMAGE_NAME ./scripts/run_sim.sh ${vehicle}
}

px4_v1_14_0_cyphal_octoplane_vtol() {
kill_all_related_containers
setup_cyphal_hitl_config
slcan_checker&
vehicle="px4_v1_14_0_cyphal_octoplane_vtol"
if [[ $OPTIONS == "--force" ]]; then
${REPOSITORY_DIR}/scripts/configurator.py ${REPOSITORY_DIR}/configs/vehicles/${vehicle}.yaml
fi
docker_container_run_mavlink() {
docker_kill_all_related_containers
setup_mavlink_sitl_config
docker container run --rm $DOCKER_FLAGS $IMAGE_NAME ./scripts/run_sim.sh ${vehicle}
}

cyphal_and_dronecan_inno_vtol() {
docker_container_run_cyphal_and_dronecan_inno_vtol() {
echo "Cyphal and DroneCAN mode is a special mode that uses:"
echo "- slcan0 based on the 1-st sniffer for DroneCAN communication (sensors)"
echo "- slcan1 based on the 2-nd sniffer for Cyphal communication (Actuators only)"
kill_all_related_containers
docker_kill_all_related_containers
setup_cyphal_and_dronecan_hitl_config
slcan_checker&
docker container run --rm $DOCKER_FLAGS $IMAGE_NAME ./scripts/run_sim.sh cyphal_and_dronecan_inno_vtol
}

run_interactive() {
setup_cyphal_hitl_config
docker container run --rm -it $DOCKER_FLAGS $IMAGE_NAME /bin/bash
}

kill_all_related_containers() {
containers=$(docker ps -q --filter ancestor=$IMAGE_NAME)
if [ ! -z "${containers}" ]; then
printf "Killing the following containers: "
docker kill $containers
fi
}

test() {
setup_mavlink_sitl_config
docker container run --rm $DOCKER_FLAGS $IMAGE_NAME ./uav_dynamics/uav_hitl_dynamics/catkin_test.sh --docker
}

## Start from here
set -e
cd "$(dirname "$0")"
setup_image_name_and_version
OPTIONS=$2

# Common commands:
if [ "$1" = "build" ] || [ "$1" = "b" ]; then
build_docker_image
docker_build_image
elif [ "$1" = "pull" ]; then
pull_docker_image
docker_pull_image
elif [ "$1" = "push" ]; then
push_docker_image
elif [ "$1" = "dronecan_vtol_v1_12_1" ] || [ "$1" = "dvo" ]; then
dronecan_vtol_v1_12_1
elif [ "$1" = "dronecan_vtol_v1_14_0" ] || [ "$1" = "dv" ]; then
dronecan_vtol_v1_14_0
elif [ "$1" = "dronecan_quadrotor" ] || [ "$1" = "dq" ]; then
px4_v1_14_0_dronecan_quadrotor
elif [ "$1" = "sitl_inno_vtol" ]; then
sitl_inno_vtol
elif [ "$1" = "sitl_flight_goggles" ]; then
sitl_flight_goggles
docker_push_image
elif [ "$1" = "interactive" ] || [ "$1" = "i" ]; then
docker_countainer_run_interactive
elif [ "$1" = "test" ]; then
docker_container_run_test
elif [ "$1" = "kill" ]; then
docker_kill_all_related_containers

# DroneCAN commands:
elif [ "$1" = "px4_v1_12_1_dronecan_vtol" ] || [ "$1" = "dvo" ]; then
vehicle="px4_v1_12_1_dronecan_vtol"
docker_container_run_dronecan
elif [ "$1" = "px4_v1_14_0_beta_dronecan_vtol" ] || [ "$1" = "dv" ]; then
vehicle="px4_v1_14_0_beta_dronecan_vtol"
docker_container_run_dronecan
elif [ "$1" = "px4_v1_14_0_dronecan_quadrotor" ] || [ "$1" = "dq" ]; then
vehicle="px4_v1_14_0_dronecan_quadrotor"
docker_container_run_dronecan

# Cyphal commands:
elif [ "$1" = "px4_v1_14_0_cyphal_quadcopter" ] || [ "$1" = "cq" ]; then
px4_v1_14_0_cyphal_quadcopter
vehicle="px4_v1_14_0_cyphal_quadcopter"
docker_container_run_cyphal
elif [ "$1" = "px4_v1_14_0_cyphal_octorotor" ] || [ "$1" = "co" ]; then
px4_v1_14_0_cyphal_octorotor
vehicle="px4_v1_14_0_cyphal_octorotor"
docker_container_run_cyphal
elif [ "$1" = "px4_v1_14_0_cyphal_quadplane_vtol" ] || [ "$1" = "csv" ]; then
px4_v1_14_0_cyphal_quadplane_vtol
vehicle="px4_v1_14_0_cyphal_quadplane_vtol"
docker_container_run_cyphal
elif [ "$1" = "px4_v1_14_0_cyphal_octoplane_vtol" ] || [ "$1" = "cv8" ]; then
px4_v1_14_0_cyphal_octoplane_vtol
vehicle="px4_v1_14_0_cyphal_octoplane_vtol"
docker_container_run_cyphal

# MAVLink commands:
elif [ "$1" = "sitl_inno_vtol" ]; then
vehicle="sitl_inno_vtol"
docker_container_run_mavlink
elif [ "$1" = "sitl_flight_goggles" ]; then
vehicle="sitl_flight_goggles"
docker_container_run_mavlink

# DroneCAN + Cyphal commands:
elif [ "$1" = "cyphal_and_dronecan" ]; then
cyphal_and_dronecan_inno_vtol
elif [ "$1" = "interactive" ] || [ "$1" = "i" ]; then
run_interactive
elif [ "$1" = "test" ]; then
test
elif [ "$1" = "kill" ]; then
kill_all_related_containers
docker_container_run_cyphal_and_dronecan_inno_vtol

# Help:
else
print_help
fi

0 comments on commit f82bd80

Please sign in to comment.