XTDrone是基于PX4、ROS与Gazebo的无人机通用仿真平台。支持多旋翼飞行器(包含四轴和六轴)、固定翼飞行器、复合翼飞行器(包含quadplane,tailsitter和tiltrotor)与其他无人系统(如无人车、无人船与机械臂)。在XTDrone上验证过的算法,可以方便地部署到真实无人机上。
但是XTDrone需要的环境比较严格,为了更好的帮助大家开发,我已经将其上传到了Dockerhub中.
第一步:拉取镜像文件。
docker pull bovinyuan/melodic:XTDrone
第二步:
在home下新建一个rocker文件夹
mkdir rocker && cd rocker && touch Dockerfile
编写Dockerfile的文件如下:
FROM bovinyuan/melodic:XTDrone
# nvidia-container-runtime
# ENV NVIDIA_VISIBLE_DEVICES \
# ${NVIDIA_VISIBLE_DEVICES:-all}
# ENV NVIDIA_DRIVER_CAPABILITIES \
# ${NVIDIA_DRIVER_CAPABILITIES:+$NVIDIA_DRIVER_CAPABILITIES,}graphics
RUN apt-get update && \
apt-get install -y \
build-essential \
libgl1-mesa-dev \
libglew-dev \
libsdl2-dev \
libsdl2-image-dev \
libglm-dev \
libfreetype6-dev \
libglfw3-dev \
libglfw3 \
libglu1-mesa-dev \
freeglut3-dev \
vim
这里如果没办法运行通过第三步的运行就把RUN下面的全部注释掉,在Docker中慢慢安装,不过镜像中的已经全部安装好了,应该不会有问题。
第三步:
返回到home中运行
docker build -f ./rocker/Dockerfile . -t rocker
第四步:
在终端运行
docker run -it --cap-add SYS_ADMIN --cap-add MKNOD --device=/dev/fuse:mrw --group-add video --volume=/tmp/.X11-unix:/tmp/.X11-unix --env="DISPLAY=$DISPLAY" --name=rocker_drone bovinyuan/melodic:XTDrone /bin/bash
输入gazebo
可以正常打开,说明没有大问题。
检验在Docker容器中输入:
cd ~/Drone_tools/PX4_Firmware/
roslaunch px4 indoor1.launch
等待gazebo启动后,另开一个终端进入容器
docker exec -it 6d3a89b654c5 bash
然后在容器中输入
cd ~/XTDrone/communication/
python multirotor_communication.py iris 0
重复上述操作另开一个终端,在终端中输入
cd ~/XTDrone/control/keyboard
python multirotor_keyboard_control.py iris 1 vel
然后可以通过键盘对无人机进行操作,按着i键让无人机的向上速度到0.3以上,然后按b键、t键。无人机可以正常起飞,说明成功了!。