前提说明:本教程的所有应用前提是需要一个科学上网环境!!!
1.px4 1.13源码下载与编译
sudo apt get-install git git clone -b v1.13.0-beta1 https://github.com/PX4/PX4-Autopilot.git --recursivecd PX4-Autopilot/#克隆子模块路径git submodule update --init --recursivecd..//执行.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_sitlmake 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-extraswget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.shsudo 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/srcmkdir -p ~/catkin_ws/scriptscd catkin_ws && catkin init # 使用catkin_make话,则为cd catkin_ws/src && catkin_init_workspacecatkin build # 使用catkin_make话,则为 cd .. && catkin_make
成功界面:
添加环境变量:
gedit ~/.bashrcsource ~/catkin_ws/devel/setup.bashsource ~/PX4-Autopilot/Tools/setup_gazebo.bash ~/PX4-Autopilot/ ~/PX4-Autopilot/build/px4_sitl_defaultexport ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4-Autopilotexport ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4-Autopilot/Tools/sitl_gazebosource ~/.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.gitcd 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 --recursivecd Firmwarebash ./Tools/setup/ubuntu.shmake px4_sitl_default gazebo
克隆完毕后进行压缩备份,用于后续开发
再次编译后:
解决办法2:根据语雀文档进行相应模型的增删减添,暂时没试过,后面博客会对xtdrone进行其他飞控的移植,到时候再做具体解释,对此感兴趣的朋友可以点一个关注
git clone https://gitee.com/robin_shaun/XTDrone.gitcd XTDronegit checkout 1_13_2git 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/srccp sitl_config/gazebo_plugin/gimbal_controller/gazebo_gimbal_controller_plugin.hh ~/PX4_Firmware/Tools/sitl_gazebo/includecp sitl_config/gazebo_plugin/wind_plugin/gazebo_ros_wind_plugin_xtdrone.cpp ~/PX4_Firmware/Tools/sitl_gazebo/srccp sitl_config/gazebo_plugin/wind_plugin/gazebo_ros_wind_plugin_xtdrone.h ~/PX4_Firmware/Tools/sitl_gazebo/include# 修改CMakeLists.txtcp 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