参考:
不需要卸载原来的gazebo,语雀对gazebo的插件做了修改,才需要那些步骤
"我们对Gazebo的ROS插件做了修改,因此需要源码编译。"
mkdir -p ~/catkin_ws/src
mkdir -p ~/catkin_ws/scripts
cd catkin_ws && catkin init # 使用catkin_make话,则为cd catkin_ws/src && catkin_init_workspace
catkin build # 使用catkin_make话,则为 cd .. && catkin_make
cd
Gazebo有很多开源的模型文件,我们将一些需要的模型文件上传到附件中,供大家下载:
--> 请点击📎models.zip
将该附件解压缩后放在~/.gazebo
中,此时在~/.gazebo/models/
路径下可以看到很多模型。如果不做这一步,之后运行Gazebo仿真,可能会缺模型,这时会自动下载,Gazebo模型服务器在国外,自动下载会比较久。
一.MAVROS安装
sudo apt install ros-noetic-mavros ros-noetic-mavros-extras # for ros-noetic
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 #这步需要装一段时间
1. 安装mavros
sudo apt-get install ros-noetic-mavros ros-noetic-mavros-extras
2. 安装GeographicLib
参考:
MAVROS安装教程_安装mavros时间太长-CSDN博客
【mavros安装】GeographicLib踩坑及解决-CSDN博客
①安装GeographicLib(官网方法,报错了就用下一个我用的方法)
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 #这步需要装一段时间
②安装GeographicLib(我用的)
- 直接去GeographicLib 官网下载(好像要挂梯子)对应的三个包,下载得到三个文件夹。
1.GeographicLib geoids egm96-5 官网下载链接:
https://sourceforge.net/projects/geographiclib/files/geoids-distrib/egm96-5.tar.bz2/download
2.GeographicLib gravity egm 96官网下载链接
https://sourceforge.net/projects/geographiclib/files/gravity-distrib/egm96.zip/download
3.GeographicLib magnetic emm2015 官网下载链接:
https://sourceforge.net/projects/geographiclib/files/magnetic-distrib/emm2015.zip/download
- 下载完后得到三个压缩包,解压后放到一个名为 GeographicLib的文件夹里。(文件名必须这样)
- 把那个文件夹放到Ubuntu 路径: /usr/share
- ok
二. 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
运行 make px4_sitl_default gazebo的时候,报错
此时要运行:
注意,要startxfce4把GUI打开,运行pip3才有反应
pip3 install packaging numpy empy toml pyyaml jinja2 pyargparse kconfiglib jsonschema future pyserial cerberus pyulog==0.7.0 pyquaternion
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
再次运行 make px4_sitl_default gazebo的时候,报错
-- Checking for module 'gstreamer-1.0 >= 1.0'
-- No package 'gstreamer-1.0' found
-- Checking for module 'gstreamer-base-1.0 >= 1.0'
-- No package 'gstreamer-base-1.0' found
-- Checking for module 'gstreamer-app-1.0 >= 1.0'
-- No package 'gstreamer-app-1.0' found
查gpt
按照gpt输入:
sudo apt-get remove libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
再次运行 make px4_sitl_default gazebo,可打开gazebo
VcXsrv中可打开gazebo
注意,要startxfce4把GUI打开
修改 ~/.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
####用于测试是否安装成功#####
roslaunch px4 mavros_posix_sitl.launch
运行roslaunch px4 mavros_posix_sitl.launch的时候,报错
因为 install_geographiclib_dataset 没装好,目录名称错了,重新把它放入 /usr/share
再次运行roslaunch px4 mavros_posix_sitl.launch,注意,运行它的时候,不能同时运行着make px4_sitl_default gazebo,要把gazebo先关掉
成功
运行
rostopic echo /mavros/state
若connected: True,则说明MAVROS与SITL通信成功。如果是false,一般是因为.bashrc里的路径写的不对,请仔细检查。
三.QGroundControl安装
然后需要安装地面站QGroundControl,点此安装链接。启动后,将出现下图 所示画面。注意Ubuntu16.04没法直接使用QGroundcontrol 版本4系列(可以使用版本3系列),Ubuntu16.04需要源码编译版本4系列,请仔细查看安装链接。
sudo usermod -a -G dialout $USER
sudo apt-get remove modemmanager -y
sudo apt install gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-gl -y
sudo apt install libfuse2 -y
sudo apt install libxcb-xinerama0 libxkbcommon-x11-0 libxcb-cursor-dev -y
wget https://d176tv9ibo4jno.cloudfront.net/latest/QGroundControl.AppImage
chmod +x ./QGroundControl.AppImage
./QGroundControl.AppImage
运行./QGroundControl.AppImage的时候成功启动地面站