当前位置:   article > 正文

保证成功!Ubuntu20.04 环境搭建 XTdrone +px4 (v1.13)_ubuntu20.04安装xtdrone

ubuntu20.04安装xtdrone

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

1.px4 1.13源码下载与编译

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

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

解决办法:

sudo pip install --upgrade python-dateutil

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

解决办法:

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

 成功界面:

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

PX4固件编译:

  1. cd PX4-Autopilot/
  2. make px4_sitl
  3. make px4_sitl_default gazebo

 成功界面: 

 

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

2.ROS noetic安装

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

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

  成功界面(输入roscore): 

3.Mavros安装

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

 成功界面:

4.Mavros与SITL进行通信

新建通信桥接工作区间

  1. #推荐使用catkin_build取代catkin_build
  2. #因为多个功能包编译的过程中catkin_builu会进行逐个编译,而catkin_make则是整体编译,相比之下使用catkin_build能大幅度提高编译的容错率
  3. mkdir -p ~/catkin_ws/src
  4. mkdir -p ~/catkin_ws/scripts
  5. cd catkin_ws && catkin init # 使用catkin_make话,则为cd catkin_ws/src && catkin_init_workspace
  6. catkin build # 使用catkin_make话,则为 cd .. && catkin_make

成功界面: 

添加环境变量:

  1. gedit ~/.bashrc
  2. source ~/catkin_ws/devel/setup.bash
  3. source ~/PX4-Autopilot/Tools/setup_gazebo.bash ~/PX4-Autopilot/ ~/PX4-Autopilot/build/px4_sitl_default
  4. export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4-Autopilot
  5. export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4-Autopilot/Tools/sitl_gazebo
  6. source ~/.bashrc

 成功界面:

测试Mavros与SITL的通信情况:

  1. cd PX4-Autopilot/
  2. roslaunch px4 mavros_posix_sitl.launch
  3. #新开一终端
  4. rostopic echo /mavros/state
  5. #若connected: True,则说明MAVROS与SITL通信成功。connected:false,bashrc里的路径写的不对,如果确认排除以上情况,请重新编译PX4-Autopilot文件夹
  6. make px4_sitl_default gazebo

成功界面:

5.XTdrone源码下载和配置

  1. git clone https://gitee.com/robin_shaun/XTDrone.git
  2. cd XTDrone
  3. #子模块更新
  4. git submodule update --init --recursive
  5. #仿真模块的复制
  6. cp sitl_config/worlds/* ~/PX4-Autopilot/Tools/sitl_gazebo/worlds/
  7. 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代码进行编译,根据报错路径进行文件补充,俗称缺啥补啥

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

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

再次编译后:

解决办法2:根据语雀文档进行相应模型的增删减添,暂时没试过,后面博客会对xtdrone进行其他飞控的移植,到时候再做具体解释,对此感兴趣的朋友可以点一个关注

  1. git clone https://gitee.com/robin_shaun/XTDrone.git
  2. cd XTDrone
  3. git checkout 1_13_2
  4. git submodule update --init --recursive
  5. # 修改启动脚本文件
  6. cp sitl_config/init.d-posix/* ~/PX4_Firmware/ROMFS/px4fmu_common/init.d-posix/
  7. # 添加launch文件
  8. cp -r sitl_config/launch/* ~/PX4_Firmware/launch/
  9. # 添加世界文件
  10. cp sitl_config/worlds/* ~/PX4_Firmware/Tools/sitl_gazebo/worlds/
  11. # 修改部分插件
  12. cp sitl_config/gazebo_plugin/gimbal_controller/gazebo_gimbal_controller_plugin.cpp ~/PX4_Firmware/Tools/sitl_gazebo/src
  13. cp sitl_config/gazebo_plugin/gimbal_controller/gazebo_gimbal_controller_plugin.hh ~/PX4_Firmware/Tools/sitl_gazebo/include
  14. cp sitl_config/gazebo_plugin/wind_plugin/gazebo_ros_wind_plugin_xtdrone.cpp ~/PX4_Firmware/Tools/sitl_gazebo/src
  15. cp sitl_config/gazebo_plugin/wind_plugin/gazebo_ros_wind_plugin_xtdrone.h ~/PX4_Firmware/Tools/sitl_gazebo/include
  16. # 修改CMakeLists.txt
  17. cp sitl_config/CMakeLists.txt ~/PX4_Firmware/Tools/sitl_gazebo
  18. # 修改部分模型文件
  19. cp -r sitl_config/models/* ~/PX4_Firmware/Tools/sitl_gazebo/models/
  20. # 替换同名文件
  21. cd ~/.gazebo/models/
  22. rm -r stereo_camera/ 3d_lidar/ 3d_gpu_lidar/ hokuyo_lidar/

成功界面:

6.仿真launch文件执行:

  1. cd PX4-Autopilot/
  2. roslaunch px4 indoor1.launch

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

解决办法:

sudo apt-get install xmlstarlet

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

sudo chmod +x /usr/bin/xmlstarlet

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

重新执行仿真launch文件:

  1. cd PX4-Autopilot/
  2. roslaunch px4 indoor1.launch

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

解决办法:

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

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

  1. cd PX4-Autopilot/
  2. 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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/979593
推荐阅读
相关标签
  

闽ICP备14008679号