![cover](https://img-blog.csdnimg.cn/e0a532aa6c1c4a69bfe5db201b913cd1.png)
保证成功!Ubuntu20.04 环境搭建 XTdrone +px4 (v1.13)
2. XTdrone本身就是一个模型的集成库,仅仅是对gazebo功能的一种拓展,所以不存在只能装在哪个Ubuntu版本上的问题,如有需要可以对照进行自己移植,推荐装在Ubuntu18.04的原因只是开发时在该版本系统上开发,配置步骤简单一些,环境及功能“兼容”一些仅此而已。3.不需要gazebo版本降级成9,若测试过程中无硬性问题请不要照搬语雀文档的步骤,笔者有一定开发经验,可以进行一定的操作,
前提说明:本教程的所有应用前提是需要一个科学上网环境!!!
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
![Logo](https://devpress.csdnimg.cn/79de2bf0b7994defa4242ef90d5513fa.jpg)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)