系统:Ubuntu18.04
进入xtdrone的yuque文档,参考第一个仿真平台基础配置(不是第二个对应px4的那个)
一:依赖安装
sudo apt install ninja-build exiftool ninja-build protobuf-compiler libeigen3-dev genromfs xmlstarlet libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev python-pip python3-pip gawk
此处不会报错,要是定位不到请添加其他地方的源
pip2 install pandas jinja2 pyserial cerberus pyulog==0.7.0 numpy toml pyquaternion empy pyyaml
此处会有一处报错
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-1_Rz8c/cerberus/
显而易见,使用pip2安装cerberus失败,我们使用pip3安装
所有pip/pip2不行的,都换成pip3安装即可
pip3 install cerberus
安装刚刚剩下的
pip2 install pyulog==0.7.0 numpy toml pyquaternion empy pyyaml
进一步配置依赖
pip3 install packaging numpy empy toml pyyaml jinja2 pyargparse
二:ROS-melodic安装
小鱼一键安装
wget http://fishros.com/install -O fishros && . fishros
1 选择melodic 3:rosdep 4:ros环境都是需要安装的
检验ros是否安装完成
roscore
三:工作环境配置
安装cakin-tools
sudo apt install python3-catkin-tools
建立工作环境
mkdir -p ~/catkin_ws/src
mkdir -p ~/catkin_ws/scripts
cd catkin_ws && catkin init #
catkin build
倘若后续有cakin make指令,一律换成cakin build,因为我们只需要编译单个功能包
倘若你在此处报错(一般不会),请把catkin_ws中的build文件夹下所有文件全部删去,再次回到catkin_ws下重新build,不行多尝试几次,应该没问题
四:gazebo安装
我们不使用gazebo9,只用gazebo9,因为px4 部分固件在gazebo上不适用
具体安装按照提供的pdf文件:
为了节省时间,代码如下,请一步一步执行,不要全部复制一块执行,所有的都是这样
sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
cat /etc/apt/sources.list.d/gazebo-stable.list
wget https://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
sudo apt-get update
sudo apt-get install gazebo9
sudo apt-get install libgazebo9-dev
sudo apt upgrade
验证是否安装成功
gazebo
之后需要补充依赖:
sudo apt-get install ros-melodic-moveit-msgs ros-melodic-object-recognition-msgs ros-melodic-octomap-msgs ros-melodic-camera-info-manager ros-melodic-control-toolbox ros-melodic-polled-camera ros-melodic-controller-manager ros-melodic-transmission-interface ros-melodic-joint-limits-interface
由于后续编译需要XTdrone的源码,我们进入XTDrone的配置
可以先下载gazebo的世界模型,防止后续加载世界花费大量时间,下载请在XTdrone的仿真平台基础配置的gazebo配置中有下载,点击即可下载,该附件解压缩后放在~/.gazebo
中
五:XTDrone配置
先安装git
sudo apt install git
接着
cd ~
git clone https://gitee.com/robin_shaun/XTDrone.git
cd XTDrone
git submodule update --init --recursive
Xtdrone的后续配置还需要px4,所以我们暂且只需要他的文件,不对其进行编译
ok,此时我们需要完成gazebo剩下的编译
cd ~/catkin_ws
cp -r ~/XTDrone/sitl_config/gazebo_ros_pkgs src/
sudo pip uninstall em
sudo pip uninstall empy
sudo pip install empy==3.3.2
catkin build
若没有3,4,5步骤,build会报错,原因是empy或者em的版本过高导致的
此时XTdrone还未配置完成,请完成七:PX4配置 后,再回来编译
无论是catkin build还是make ,若是其失败,请把其对应的主文件夹下的build文件夹中的东西删去,这可能是你build/make失败的原因,别忘了清空回收站,不然会在后续的配置中埋下伏笔
六:MAVROS安装
同样是一步一步执行
sudo apt install ros-melodic-mavros ros-melodic-mavros-extras
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
这个同样需要一段时间,请耐心等待
七:PX4配置
git clone仓库可能会失去连接,可以将github.com换成githubfast.com(如下)
cd ~
git clone https://githubfast.com/PX4/PX4-Autopilot.git
mv PX4-Autopilot PX4_Firmware
cd PX4_Firmware
git checkout -b xtdrone/dev v1.11.0-beta1
接下来的这一步非常重要,配置的80%都卡在了这里
进入主目录下,按住ctrl+h,显示隐藏文件,右上角进行搜索所有 .gitmodules,应该会有两个,请选择PX4目录下的那个.gitmodules文件,打开,点击右上角三条横线的东西选择find and replace,将所有的github.com代替为githubfast.com,更改完毕后,save(保存)
接着
git submodule sync
git submodule update --init --recursive
此处需要花费很长时间,根据每个人的网络而定,热点应该最快,这样应该就不会报错了,倘若报错 ,大概率远程连接失败,尝试多执行几次指令3,应该没问题
直到再次输入指令3后,终端无返回值为止,才算成功
开始编译:
先装几个工具
pip3 install kconfiglib
pip3 install --user jsonschema
pip3 install future
pip3 install ninja
pip3 uninstall empy
pip3 install empy==3.3.2
make px4_sitl_default gazebo
这一步我也出了各种各样的错
包括,不限于
ninja: build stopped: subcommand failed. Makefile:225: recipe for target
Cannot find source file: heatshrink/heatshrink_decoder.c - Search‘
...
这一步是最重要的一步,也是报错最难解决的一步,虽然我目前也不清楚原理,但是这样的操作似乎可行
make px4_sitl_default
make px4_sitl_default gazebo
通过将这两句分开执行,应该就能成功,如果再次执行指令2仍不报错,说明已经make完成了
至此,px4已经成功编译完成
修改环境变量
cd ~
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
此处PX4尚未完成配置,有很多launch文件都没有,进行xtdrone的配置:
八:Xtdrone的配置
cd ~
cd XTDrone
cp sensing/gimbal/gazebo_gimbal_controller_plugin.cpp ~/PX4_Firmware/Tools/sitl_gazebo/src/
cp sitl_config/init.d-posix/rcS ~/PX4_Firmware/ROMFS/px4fmu_common/init.d-posix/
cp sitl_config/worlds/* ~/PX4_Firmware/Tools/sitl_gazebo/worlds/
cp -r sitl_config/models/* ~/PX4_Firmware/Tools/sitl_gazebo/models/
cp -r sitl_config/launch/* ~/PX4_Firmware/launch/
cd ~/.gazebo/models/
手动把XTDrone下的stereo_camera/ 3d_lidar/ 3d_gpu_lidar/ hokuyo_lidar/这几个文件夹下的东西删掉
接着
cd ~/PX4_Firmware
make px4_sitl_default gazebo
只要按照我的步骤,一步一步进行,我相信你的XTDrone配置100%成功!
__________________________________________________________________
倘若你遇到了这个问题ERROR [px4] Startup script returned with return value: 256,我的建议是将gazebo,px4,xtdrone全部删除重新安装
『gazebo的卸载
sudo apt-get remove gazebo*
sudo apt-get remove libgazebo*
sudo apt-get remove ros-melodic-gazebo*
在按照我上面提到的安装gazebo即可
启动gazebo
gazebo
如过没有反映
请运行以下指令,看是否有gz开头的进程,如果有,记住他的名称
sudo killall 名称
再次运行gazebo,应该可以正常启动了
px4的卸载与安装
直接将PX4_Firmfare这个文件夹删去即可
安装同前面的步骤,但是在修改.gitmodules文件这一步,一点要等待所有的.gitmodules等文件显示出来,再进行修改,最好在整个计算机内搜索.gitmodules文件(在某个文件夹下搜索会局限于该文件夹下)
当然,如果无论怎样都无法同步子模块,你可以手动将所需的文件git下来放到所要的文件夹下
我的方法是不断尝试,如果长时间clone不下来,终止进程,再次重复指令,重复了5次左右,我就ok了
验证是否成功便是再次输入该指令git submodule update --init --recursive
命令行无返回值