# px4_sitl_docker **Repository Path**: bhswift/px4_sitl_docker ## Basic Information - **Project Name**: px4_sitl_docker - **Description**: 基于 docker macvlan,实现 sitl 集群化仿真。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-04-07 - **Last Updated**: 2025-05-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # px4_sitl_docker #### 介绍 基于 docker macvlan,实现 sitl 集群化仿真。 #### 软件架构 软件架构说明 #### 使用说明 需要提前安装 docker 与 docker-compose。建议宿主机中也安装 Gazebo-classic 仿真。 1. 下载 PX4 与 mavlink-router 源码用于制作镜像 ``` ./setup.sh ``` 克隆成功会有提示。 2. 制作仿真镜像。基础镜像 osrf/ros:noetic-desktop-full 需要从 dockhub 中拉取,然后编译 PX4 源码与 gazebo 仿真。 ``` ./build_image.sh ``` 3. 修改 use_macvlan.sh,使用 ip link show 查看自己电脑处于 UP 的网卡,enp 或 wlo 开头的都可以,修改 INTERFACE 值。注意如果 wifi 关闭,wlo 不处于 up 状态是不能使用的。 ``` ./use_macvlan.sh ``` 之后会创建虚拟网络,每个容器可以分配 192.168.60.0/255.255.255.0 中的 IP,宿主机使用 192.168.60.100 与容器通信。SITL 将运行在不同容器中,模拟宿主机与不同 IP 无人机通信的过程。 之后每次开机只需要 ``` ./shim.sh ``` 4. 启动多容器 SITL,按照规律,更改无人机数量即可 ``` docker-compose up ``` 5. 启动 Gazebo 仿真服务器,在宿主机和容器中启动都可以。方便调试,直接在宿主机中启动。 将以下内容加入 bashrc,路径改为宿主机中的 PX4 源码位置。 ``` # Define the common base path PX4_PATH="/home/lxk/PX4-Autopilot-v1.14.0/PX4-Autopilot" # Set up Gazebo and ROS package paths source $PX4_PATH/Tools/simulation/gazebo-classic/setup_gazebo.bash $PX4_PATH $PX4_PATH/build/px4_sitl_default > /dev/null 2>&1 export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$PX4_PATH > /dev/null 2>&1 export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$PX4_PATH/Tools/simulation/gazebo-classic/sitl_gazebo-classic > /dev/null 2>&1 ``` ``` ./run_gazebo.sh ``` 将启动一个 15 机仿真。无人机的 IP 分别是 192.168.60.201-215,使用 SITL 分配的默认端口。 #### 参与贡献