docker部署XTdrone
目录
一、前置准备
二、依赖安装
三、ros安装
四、gazebo安装
五、mavros安装
六、PX4的配置
七、Xtdrone源码下载
八、xtdrone与gazebo(实际上应该是第四步之后做这件事)
九、键盘控制
参考链接:仿真平台基础配置 · 语雀
一、前置准备
1.在docker创建ros-noetic环境,并实现gazebo和rviz可视化
参考:如何使用docker配置ros-noetic环境并使用rviz,gazebo_docker 获取 noetic-desktop-full-CSDN博客
二、依赖安装
sudo apt install ninja-build exiftool ninja-build protobuf-compiler libeigen3-dev genromfs xmlstarlet libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev python-pip python3-pip gawk
pip3 install packaging numpy empy toml pyyaml jinja2 pyargparse
三、ros安装
对于下载的docker,ros都是装好的,所以不用管
四、gazebo安装
Gazebo包括Gazebo本身和ROS的插件,需要分别安装。首先卸载之前的Gazebo
sudo apt-get remove gazebo*
sudo apt-get remove libgazebo*
sudo apt-get remove ros-noetic-gazebo* #kinetic noetic对应修改
安装gazebo
1. 添加仓库
sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
2. 加密钥
wget https://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
3.更新库
sudo apt-get update
4.安装
sudo apt-get install gazebo11
sudo apt-get install libgazebo11-dev
对Gazebo的ROS插件做了修改,因此需要源码编译。
sudo apt-get install ros-noetic-moveit-msgs ros-noetic-object-recognition-msgs ros-noetic-octomap-msgs ros-noetic-camera-info-manager ros-noetic-control-toolbox ros-noetic-polled-camera ros-noetic-controller-manager ros-noetic-transmission-interface ros-noetic-joint-limits-interface
模型文件的下载,通过前面的参考链接
将该附件解压缩后放在~/.gazebo
中,此时在~/.gazebo/models/
路径下可以看到很多模型。
五、mavros安装
sudo apt install ros-noetic-mavros ros-noetic-mavros-extras # for ros-noetic
sudo apt install ros-melodic-mavros ros-noetic-mavros-extras # for ros-noetic
wget https://gitee.com/robin_shaun/XTDrone/raw/master/sitl_config/mavros/install_geographiclib_datasets.shsudo chmod a+x ./install_geographiclib_datasets.sh
sudo ./install_geographiclib_datasets.sh #这步需要装一段时间
六、PX4的配置
下载上面参考链接给的PX4的压缩包,注意一定要把这个压缩包转移到docker里面再解压,否则会出奇怪的问题!!!
cd PX4_Firmware
make px4_sitl_default gazebo
编译完成后,会弹出Gazebo界面,将其关闭即可。
修改 ~/.bashrc,加入以下代码,注意路径匹配,前两个source顺序不能颠倒。
source ~/catkin_ws/devel/setup.bash
source ~/PX4_Firmware/Tools/setup_gazebo.bash ~/PX4_Firmware/ ~/PX4_Firmware/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware/Tools/sitl_gazebo
source ~/.bashrc
然后运行如下命令,此时会启动Gazebo,如下图所示。
cd ~/PX4_Firmware
roslaunch px4 mavros_posix_sitl.launch
七、Xtdrone源码下载
git clone https://gitee.com/robin_shaun/XTDrone.git
cd XTDrone
git submodule update --init --recursive
cp sensing/gimbal/gazebo_gimbal_controller_plugin.cpp ~/PX4_Firmware/Tools/sitl_gazebo/src/
cp sitl_config/init.d-posix/rcS ~/PX4_Firmware/ROMFS/px4fmu_common/init.d-posix/
cp sitl_config/worlds/* ~/PX4_Firmware/Tools/sitl_gazebo/worlds/
cp -r sitl_config/models/* ~/PX4_Firmware/Tools/sitl_gazebo/models/
cp -r sitl_config/launch/* ~/PX4_Firmware/launch/
cd ~/.gazebo/models/
rm -r stereo_camera/ 3d_lidar/ 3d_gpu_lidar/ hokuyo_lidar/
由于修改了PX4 sitl_gazebo中的gazebo_gimbal_controller_plugin.cpp(源代码不能控制多无人机的云台),要再编译一次。
cd ~/PX4_Firmware
make px4_sitl_default gazebo
八、xtdrone与gazebo(实际上应该是第四步之后做这件事)
在第四部安装gazebo的时候,实际上需要将xtdrone的gazebo_ros_pkgs放到一个工作空间中
创建工作空间
mkdir -p ~/catkin_ws/src
mkdir -p ~/catkin_ws/scriptscatkin build
将功能包放到工作空间后编译
cd ~/catkin_ws
cp -r ~/XTDrone/sitl_config/gazebo_ros_pkgs src/
catkin build #开发者测试使用catkin_make会出问题,因此建议使用catkin build
九、键盘控制
在一个终端运行
cd ~/PX4_Firmware
roslaunch px4 indoor1.launch
Gazebo启动后,在另一个终端运行(注意要等Gazebo完全启动完成,或者可能脚本会报错)
cd ~/XTDrone/communication/
python multirotor_communication.py iris 0
与0号iris建立通信后,在另一个终端运行
cd ~/XTDrone/control/keyboard
python multirotor_keyboard_control.py iris 1 vel
具体怎么控制飞行的,参考视频,或者自己按着试试
第4讲:键盘控制代码精讲_哔哩哔哩_bilibili