使用docker部署仿真环境
使用docker进行仿真环境的部署可以有效得与本机环境隔离,通常适用于不同环境变量下的多种仿真环境。
注意事项:新手小白不建议入门就开始使用docker,建议有一定的安装环境以及linux基础后,再考虑使用docker。建议初学者一定要自己从头安装一遍仿真环境,熟悉完整流程。
1 网络代理
docker中的网络代理可以参考此处链接
2 dockerfile修改
1.提供的dockerfile的第8 9行,需要自行修改代理:
ENV HTTPS_PROXY=http://127.0.0.1:your port
ENV HTTPS_PROXY=http://127.0.0.1:your port
2.默认下载PX4 1.15.0版本,如有需要,在dockerfile第64行可以指定PX4版本:
RUN git clone https://github.com/PX4/PX4-Autopilot.git -b v1.15.0 --recursive
xx修改为你指定的版本
RUN git clone https://github.com/PX4/PX4-Autopilot.git -b v1.xx.0 --recursive
3 docker build
将docker_files文件夹放到,与提供的dockerfile文件同目录下:
在该目录下新建终端窗口,使用以下命令进行build。"--network=host"为共享主机网络,"-f dockfile-swiftwing"指定本地dockerfile文件,"-t swiftwing_simulation:latest"为镜像命名且添加tag
sudo docker build --network=host -f dockfile-swiftwing -t swiftwing_simulation:latest .
如果卡在第一步,无法拉取"px4io/px4-dev-simulation-focal:2024-05-18"镜像,建议在build之前先拉取镜:
sudo docker pull px4io/px4-dev-simulation-focal:2024-05-18
4 docker run
首先在主机终端执行以下命令,开启docker的x权限:
xhost +local:docker
使用以下命令开启docker,可以进行图形化显示gazebo。
sudo docker run -it --device=/dev/dri --group-add video --network=host --volume=/tmp/.X11-unix:/tmp/.X11-unix --env="DISPLAY=$DISPLAY" swiftwing_simulation:latest /bin/bash
如果使用了"--network=host"参数,docker中启动飞机后,宿主机打开qgc地面站,可以自动连接飞机;
如果不使用"--network=host"参数,可以将px4的launch文件中的gcs_url从
<arg name="gcs_url" value=""/>
改为udp广播:
<arg name="gcs_url" value="udp-b://@"/>
如果不使用广播自动连接,可以在启动的rolaunch终端中新建一个mavlink链接,"192.168.x.xxx"为宿主机的ip地址:
pxh> mavlink start -p -u 14556 -t 192.168.x.xxx-o 14550