(一)环境:
虚拟机VM16pro,ubuntu20.04(8G / >=30G).
基本命令与XTDrone使用文档大致相同,部分操作因版本问题需要更改。
(二)参考教程:仿真平台基础配置(对应PX4 1.13版) · 语雀
如果觉得XTDrone对你有帮助,就请给它在gitee和github上各点一个star吧。
(三)安装过程:
a,依赖安装。
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 pandas jinja2 pyserial cerberus pyulog==0.7.0 numpy toml pyquaternion empy pyyaml
这里我用的是pip3而不是原来的pip2.
pip3 install packaging numpy empy toml pyyaml jinja2 pyargparse kconfiglib jsonschema future
我这里没出现教程里的错误,如果你发生问题,请参考教程。
b,ROS安装。
这里我用的鱼香ros的一键安装命令,1000%推荐,特别好用。
wget http://fishros.com/install -O fishros && . fishros
第一步选择第一个选项:【1】一键安装:ros(……)其余部分有提示,根据提示走就行。
最后用roscore验证是否安装成功。(最后的^[^A请忽略)。
新建工作空间:
mkdir -p ~/catkin_ws/src
mkdir -p ~/catkin_ws/scripts
cd catkin_ws && catkin init
我记得catkin init后会报error,但是貌似不用管,后面build就行。
catkin build
c,Gazebo安装。
我没有修改gazebo的版本,用的是gazebo11,安装ros时一起装了。
XTDrone使用文档该部分还有很多模型,请前往文档下载。
然后是gazebo的依赖项(原文:我们对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
原文是:sudo apt-get install ros-melodic-moveit-msgs ros-melodic-object-recognition-msgs ros-melodic-octomap-msgs ros-melodic-camera-info-manager ros-melodic-control-toolbox ros-melodic-polled-camera ros-melodic-controller-manager ros-melodic-transmission-interface ros-melodic-joint-limits-interface
因为我用的是Ubuntu20.04,所以要把所有melodic改为noetic。
然后克隆并编译Gazebo的插件gazebo_ros_pkgs,放在~/catkin_ws/src
下。
cd ~/catkin_ws/src
git clone -b melodic-devel https://github.com/ros-simulation/gazebo_ros_pkgs.git
cd ~/catkin_ws
catkin build
对,这里就是用的melodic。我觉得也应该改为noetic,不过用melodic没bug。经过测试,noetic也可以,但哪个更优无法确定(理论还是用noetic更好,毕竟版本是对应的)。
编译成功后执行如下两条指令,判断gazebo_ros是否安装成功。
roscore
新建一个终端,Ctrl+Alt+T
source ~/catkin_ws/devel/setup.bash
rosrun gazebo_ros gazebo
d,MAVROS安装。
sudo apt install ros-noetic-mavros ros-noetic-mavros-extras
wget https://gitee.com/robin_shaun/XTDrone/raw/master/sitl_config/mavros/install_geographiclib_datasets.sh
sudo chmod a+x ./install_geographiclib_datasets.sh
sudo ./install_geographiclib_datasets.sh
e,PX4配置。
git clone https://github.com/PX4/PX4-Autopilot.git
mv PX4-Autopilot PX4_Firmware
cd PX4_Firmware
git checkout -b xtdrone/dev v1.13.2
git submodule update --init --recursive
make px4_sitl_default gazebo
编译完成后,会弹出Gazebo界面,将其关闭即可。
这里不用科学上网,但也需要十几分钟左右(几百M大小,下载速度几百k,┭┮﹏┭┮)。
修改 ~/.bashrc,加入以下代码,注意路径匹配,前两个source顺序不能颠倒。
gedit ~/.bashrc
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
如果出现 RLException: [mavros_posix_sitl.launch] is neither a launch file in package [px4] nor is [px4] a launch file name
The traceback for the exception was written to the log file。
再运行一次
source ~/.bashrc
f,XTDrone配置
git clone https://gitee.com/robin_shaun/XTDrone.git
cd XTDrone
git checkout 1_13_2
git submodule update --init --recursive
cp sitl_config/init.d-posix/* ~/PX4_Firmware/ROMFS/px4fmu_common/init.d-posix/
cp -r sitl_config/launch/* ~/PX4_Firmware/launch/
cp sitl_config/worlds/* ~/PX4_Firmware/Tools/sitl_gazebo/worlds/
cp sitl_config/gazebo_plugin/gimbal_controller/gazebo_gimbal_controller_plugin.cpp ~/PX4_Firmware/Tools/sitl_gazebo/src
cp sitl_config/gazebo_plugin/gimbal_controller/gazebo_gimbal_controller_plugin.hh ~/PX4_Firmware/Tools/sitl_gazebo/include
cp sitl_config/gazebo_plugin/wind_plugin/gazebo_ros_wind_plugin_xtdrone.cpp ~/PX4_Firmware/Tools/sitl_gazebo/src
cp sitl_config/gazebo_plugin/wind_plugin/gazebo_ros_wind_plugin_xtdrone.h ~/PX4_Firmware/Tools/sitl_gazebo/include
cp sitl_config/CMakeLists.txt ~/PX4_Firmware/Tools/sitl_gazebo
cp -r sitl_config/models/* ~/PX4_Firmware/Tools/sitl_gazebo/models/
cd ~/.gazebo/models/
rm -r stereo_camera/ 3d_lidar/ 3d_gpu_lidar/ hokuyo_lidar/
具体命令的含义请参考 XTDrone文档。
重新编译PX4固件。
cd ~/PX4_Firmware
make px4_sitl_default gazebo
(四)用键盘控制无人机飞行。
新建三个终端。
第一个运行
cd ~/PX4_Firmware
roslaunch px4 indoor1.launch
第二个运行
cd ~/XTDrone/communication/
python multirotor_communication.py iris 0
第三个运行,操作在这个终端里进行。
cd ~/XTDrone/control/keyboard
python multirotor_keyboard_control.py iris 1 vel