前提说明:本教程的所有应用前提是需要一个科学上网环境!!!

1.px4 1.13源码下载与编译

sudo apt get-install git 
git clone -b v1.13.0-beta1 https://github.com/PX4/PX4-Autopilot.git --recursive
cd PX4-Autopilot/
#克隆子模块路径
git submodule update --init --recursive
cd..
//执行.sh文件
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh

报错与警告1:配置环境不兼容的原因

解决办法:

sudo pip install --upgrade python-dateutil

报错与警告2:配置环境不兼容的原因

解决办法:

#新建终端打开环境变量
  gedit ~/.bashrc
#添加环境变量
  export PATH=/root/.local/bin:$PATH
#刷新环境变量
  source ~/.bashrc 

 成功界面:

压缩 PX4-Autopilot以防后续编译出现问题重新克隆代码:

PX4固件编译:

cd PX4-Autopilot/
make px4_sitl
make px4_sitl_default gazebo

 成功界面: 

 

弹出的gezebo界面在终端使用ctrl+c进行关闭(防止意外关闭导致后续报错) 

2.ROS noetic安装

鱼香ROS一键安装(安装过程中不需要换源,选择桌面版)

wget http://fishros.com/install -O fishros && . fishros

  成功界面(输入roscore): 

3.Mavros安装

sudo apt install ros-noetic-mavros ros-noetic-mavros-extras
wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh
sudo chmod a+x ./install_geographiclib_datasets.sh
#最后一步耗时较长
sudo ./install_geographiclib_datasets.sh 

 成功界面:

4.Mavros与SITL进行通信

新建通信桥接工作区间

#推荐使用catkin_build取代catkin_build
#因为多个功能包编译的过程中catkin_builu会进行逐个编译,而catkin_make则是整体编译,相比之下使用catkin_build能大幅度提高编译的容错率
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 

成功界面: 

添加环境变量:

gedit ~/.bashrc
source ~/catkin_ws/devel/setup.bash
source ~/PX4-Autopilot/Tools/setup_gazebo.bash ~/PX4-Autopilot/ ~/PX4-Autopilot/build/px4_sitl_default

export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4-Autopilot
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4-Autopilot/Tools/sitl_gazebo
source ~/.bashrc

 成功界面:

测试Mavros与SITL的通信情况:

cd PX4-Autopilot/
roslaunch px4 mavros_posix_sitl.launch

#新开一终端
rostopic echo /mavros/state

#若connected: True,则说明MAVROS与SITL通信成功。connected:false,bashrc里的路径写的不对,如果确认排除以上情况,请重新编译PX4-Autopilot文件夹
make px4_sitl_default gazebo

成功界面:

5.XTdrone源码下载和配置

git clone https://gitee.com/robin_shaun/XTDrone.git
cd XTDrone
#子模块更新
git submodule update --init --recursive
#仿真模块的复制
cp sitl_config/worlds/* ~/PX4-Autopilot/Tools/sitl_gazebo/worlds/
cp sitl_config/launch/* ~/PX4-Autopilot/launch/

成功界面: (cp: 未指定 -r;略过目录'sitl_config/launch/px4' 为正常输出)

再次编译PX4-Autopilot文件夹

make px4_sitl_default gazebo

可能遇到的报错与警告(概率不大):

报错与警告3:(根据日志信息我们发现缺少iris.sd文件,可能原因:这是由于git仓库的模型丢失导致的,) 

解决办法1:关闭所有终端进行二次尝试,若失败则尝试方法2

解决办法2:克隆最新版的PX4代码进行编译,根据报错路径进行文件补充,俗称缺啥补啥

git clone https://github.com/PX4/Firmware.git --recursive
cd Firmware
bash ./Tools/setup/ubuntu.sh
make px4_sitl_default gazebo

克隆完毕后进行压缩备份,用于后续开发 

再次编译后:

解决办法2:根据语雀文档进行相应模型的增删减添,暂时没试过,后面博客会对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/
# 添加launch文件
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
# 修改CMakeLists.txt
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/

成功界面:

6.仿真launch文件执行:

cd PX4-Autopilot/
roslaunch px4 indoor1.launch

报错与警告4: 这个错误是由于缺少xmlstarlet工具或者没有执行权限导致的

解决办法:

sudo apt-get install xmlstarlet

如果已经安装了xmlstarlet,但仍然出现权限错误,可能是因为xmlstarlet没有执行权限。你可以使用以下命令来添加执行权限:

sudo chmod +x /usr/bin/xmlstarlet

如果上述步骤都没有解决问题,你可以尝试重新安装xmlstarlet工具

重新执行仿真launch文件:

cd PX4-Autopilot/
roslaunch px4 indoor1.launch

 报错与警告5: 打开gazebo后卡死或黑屏无法加载模型,这是因为gazebo缺少本地模型库导致的

解决办法:

可以按照教程进行gazebo模型的下载(十分耗时,但可以获取到最新的模型文件),也可以使用打包好的模型文件(新的旧的也差不了多少)移动到隐藏目录 .gazebo文件夹

重新执行仿真launch文件: 运行成功

cd PX4-Autopilot/
roslaunch px4 indoor1.launch

成功界面: 

注:

1.本教程仅是针对XTdrone的联合配置进行整理说明,针对所有功能的测试并不完善,如有开发需要,请结合语雀文档进行适当修整

2. XTdrone本身就是一个模型的集成库,仅仅是对gazebo功能的一种拓展,所以不存在只能装在哪个Ubuntu版本上的问题,如有需要可以对照进行自己移植,推荐装在Ubuntu18.04的原因只是开发时在该版本系统上开发,配置步骤简单一些,环境及功能“兼容”一些仅此而已

3.提示:之前如果你按照其他教程搭建失败了是因为PX4版本问题

4.不需要gazebo版本降级成9,若测试过程中无硬性问题请不要照搬语雀文档的步骤,笔者有一定开发经验,可以进行一定的操作,如果是新手建议按照你所在的开发环境进行问题的解决,避免造成ubuntu ros版本不兼容带来的问题

5.如果在配置过程中出现其他报错可以在评论区下方留言,但是除上述之外的报错多半是外网隔离的原因,大家可以参照我上述的方法进行新旧版本PX4的互相补充

6.本年度到下一年度(2023-2024)我会尝试针对该仿真环境进行其他飞控的移植,以及其他飞控、ROS、控制、视觉的知识与技巧,感兴趣或者愿意合作的伙伴可以私聊加关注

7.最后感谢chatgpt、国防科技大学XTdrone开发者肖昆,谭劭昌老师、鱼香ROS博客、CSDN码友CH3213

8.参考链接,一键直达

https://blog.csdn.net/weixin_42301220/article/details/117845212

https://www.yuque.com/xtdrone/manual_cn/basic_config_13

https://www.bilibili.com/read/cv25865179/

https://fishros.org.cn/forum/topic/20/%E5%B0%8F%E9%B1%BC%E7%9A%84%E4%B8%80%E9%94%AE%E5%AE%89%E8%A3%85%E7%B3%BB%E5%88%97?lang=zh-CN

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐