环境:
vm17
ubuntu20
参考文章:
【XTDrone Ubuntu20.04】XTDrone+ Ubuntu20.04 + PX4安装-优快云博客
仿真平台基础配置(对应PX4 1.13版) (yuque.com)
https://blog.youkuaiyun.com/weixin_45291614/article/details/133657158
Ubuntu20.04安装ros noetic最简单教程。(换源下载只需2分钟+安装解压3min)-优快云博客
正文:
1、依赖
sudo apt install ninja-build exiftool ninja-build protobuf-compiler libeigen3-dev genromfs xmlstarlet libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev python3-pip gawk
pip2 install pandas jinja2 pyserial cerberus pyulog==0.7.0 numpy toml pyquaternion empy pyyaml
这里本人没有pip2 直接pip 即
pip install pandas jinja2 pyserial cerberus pyulog==0.7.0 numpy toml pyquaternion empy pyyaml
pip3 install packaging numpy empy toml pyyaml jinja2 pyargparse kconfiglib jsonschema future
2、ros安装
Ubuntu20.04安装ros noetic最简单教程。(换源下载只需2分钟+安装解压3min)-优快云博客
参考这个就可以了 无脑装
完成ros安装之后 进行
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--build之前需要进行一下操作
sudo apt install python3-catkin-tools
还有一个什么pip 需要安装的 忘了 基本上是 缺什么依赖补什么 即
pip install xxx
3、gazebo
需要把gazebo11卸载,再装gazebo9
sudo apt-get remove gazebo*
sudo apt-get remove libgazebo*
sudo apt-get remove ros-noetic-gazebo*
--卸载ga11a、添加软件仓库
sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'b、获取密钥
wget https://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -c、更新软件原
sudo apt-get updated、安装
sudo apt-get install gazebo9
sudo apt-get install libgazebo9-dev #一定要记得这个e、检查
gazebo #应该要能打开gazebof、升级
sudo apt-get upgrade
还没结束
接下来的依赖
sudo apt-get install ros-noetic-moveit-msgs ros-noetic-object-recognition-msgs ros-noetic-octomap-msgs ros-noetic-camera-info-manager ros-noetic-control-toolbox ros-noetic-polled-camera ros-noetic-controller-manager ros-noetic-transmission-interface ros-noetic-joint-limits-interface
cd ~/catkin_ws/src
git clone https://github.com/ros-simulation/gazebo_ros_pkgs.git
cd ~/catkin_ws
catkin build--这里会报错 错的问题是
AttributeError: module 'em' has no attribute 'RAW_OPT'
pip3 install --user empy==3.3.4 解决办法
判断是否安装成果
roscore
--另开终端
source ~/catkin_ws/devel/setup.bash
rosrun gazebo_ros gazebo需要把models放入gazebo中
--执行
sudo mv models ~/.gazebo
--查看是否放入成果 若有蓝色打印则ok
cp ~/.gazebo/models
ls
--检查
roscore
rosrun gazebo_ros gazebo #会打开gazebo
3、mavros安装
无脑用
sudo apt install ros-noetic-mavros ros-noetic-mavros-extras # for ros-noetic
wget https://gitee.com/robin_shaun/XTDrone/raw/master/sitl_config/mavros/install_geographiclib_datasets.shsudo chmod a+x ./install_geographiclib_datasets.sh
sudo ./install_geographiclib_datasets.sh #这步需要装一段时间
-
测试是否安装成功
roscd mavros
ubuntu@ubuntu:/opt/ros/melodic/share/mavros$ --成功将进入目录
-
查看版本
rosversion mavlink
--2021.5.5
rosversion mavros
--1.8.0
4、px4
使用雨雀文档中的PX4_Firmware.zip(1145.1 MB)【v1.13.2版本的】完成后解压
使用命令
rm -rf build
,删除build文件夹,然后使用命令mkdir build
cd build
cmake ..
make
--重编译cd ..
git checkout -b xtdrone/dev v1.13.2 --会显示已有该分支 是对的
git submodule update --init --recursive
make px4_sitl_default gazebo
--编译一般不出错了
若出错 即
make clean 再重编译
make px4_sitl_default gazebo
#配好好路径
gedit ~/.bashrc
在里面写入:
source ~/catkin_ws/devel/setup.bash
source ~/PX4_Firmware/Tools/setup_gazebo.bash ~/PX4_Firmware/ ~/PX4_Firmware/build/px4_sitl_default
#确保文件最底部是export,而不是source
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware/Tools/sitl_gazebo关闭文件,在终端执行
source ~/.bashrccd ~/PX4_Firmware
roslaunch px4 mavros_posix_sitl.launch
--,此时会启动Gazebo,
ps:官方文档里面会出现说
rostopic echo /mavros/state
若connected: True,则说明MAVROS与SITL通信成功。如果是false,一般是因为.bashrc里的路径写的不对,请仔细检查
这俩信息不予理会 后续随着XTDrone的编译会自动成功
5、QTGroundControl安装
无脑装
sudo usermod -a -G dialout $USER
sudo apt-get remove modemmanager -y
sudo apt install gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-gl -y
sudo apt install libqt5gui5 -y
sudo apt install libfuse2 -y
chmod +x QGroundControl.AppImage
双击打开就会出现地面站
6、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/--重编译
cd ~/PX4_Firmware
rm -r build/
make px4_sitl_default gazebo--注意这里会报错
ninja: build stopped: subcommand failed.
make clean 之后再重编译即可
注意,用ctrl+c关闭仿真进程,有可能没有把Gazebo的相关进程关干净,这样再启动仿真时可能会报错。如果出现这种情况,可以用killall -9 gzclient,killall -9 gzserver 这两个命令强行关闭gazebo所有进程。
解决之前遗留connected:false
cd ~/PX4_Firmware
roslaunch px4 mavros_posix_sitl.launch--另开一终端
rostopic echo /mavros/state
最终发现 connected: True
背后机理不懂,但不做深究 这不是我们的初衷
!!!
最后,你可以开始你的学习了
ps:
--ros版本查询
rosversion -d
--gazebo查询
gazebo -v
--mavlink查看版本
rosversion mavlink
--2021.5.5
rosversion mavros
--1.8.0