【Ubuntu18.04安装px4+mavros(解决mavros报错问题)】

Ubuntu18.04安装px4+mavros(解决mavros报错问题)

  • 安装ros-melodic
  • 重新安装gazebo9.19
  • 安装mavros
  • 安装px4

我的电脑为联想R7000P2021款,之前已经安装好Ubuntu18.04双系统并且安装了ROS,现因实验室需要进行无人机的仿真,根据网上的相关教程安装好了mavros和px4,但在最后测试px4时候出现了以下错误
【Ubuntu18.04安装px4+mavros(解决mavros报错问题)】_第1张图片
尝试了一天最后发现原来是因为gazebo版本问题,ubuntu18.04安装ros-melodic时gazebo默认版本为9.0,升级到最新的gazebo9.19版本即可

安装ros-melodic

因为已安装,略。

重新安装gazebo9.19

1.卸载gazebo9.0

sudo apt-get remove gazebo9*

2.安装gazebo9.19

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#如果出现deb http://packages.osrfoundation.org/gazebo/ubuntu-stable xenial main表示没问题
wget https://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
sudo apt-get update
sudo apt-get install gazebo9=9.1*

3.安装过后输入gazebo,如果不能弹出gazebo窗口,且报错类似

error: gzserver: symbol lookup error: /usr/lib/x86_64-linux-gnu/libsdformat.so.4: undefined symbol: _ZN8ignition4math15SemanticVersionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE

执行

sudo apt upgrade libignition-math2

4.安装相关依赖项

sudo apt-get install gazebo9*
sudo apt-get install libgazebo9-dev
sudo apt-get install ros-melodic-gazebo-ros
sudo apt-get install ros-melodic-gazebo-ros-control
sudo apt-get install ros-melodic-gazebo-ros-pkgs

安装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配置

安装px4

这里使用gitee安装,加快安装速度
1.下载源码

cd ~
git clone https://gitee.com/robin_shaun/PX4_Firmware
cd PX4_Firmware
git checkout -b xtdrone/dev v1.11.0-beta1
bash ./Tools/setup/ubuntu.sh --no-nuttx --no-sim-tools

2.将.gitmodules替换为如下内容(在PX4_Firmware文件夹中ctrl+h查看隐藏文件)

[submodule "mavlink/include/mavlink/v2.0"]
	path = mavlink/include/mavlink/v2.0
	url = https://gitee.com/robin_shaun/c_library_v2.git
	branch = master
[submodule "src/drivers/uavcan/libuavcan"]
	path = src/drivers/uavcan/libuavcan
	url = https://gitee.com/robin_shaun/uavcan.git
	branch = px4
[submodule "Tools/jMAVSim"]
	path = Tools/jMAVSim
	url = https://gitee.com/robin_shaun/jMAVSim.git
	branch = master
[submodule "Tools/sitl_gazebo"]
	path = Tools/sitl_gazebo
	url = https://gitee.com/robin_shaun/sitl_gazebo.git
	branch = master
[submodule "src/lib/matrix"]
	path = src/lib/matrix
	url = https://gitee.com/robin_shaun/Matrix.git
	branch = master
[submodule "src/lib/ecl"]
	path = src/lib/ecl
	url = https://gitee.com/robin_shaun/ecl.git
	branch = master
[submodule "boards/atlflight/cmake_hexagon"]
	path = boards/atlflight/cmake_hexagon
	url = https://gitee.com/robin_shaun/cmake_hexagon.git
	branch = px4
[submodule "src/drivers/gps/devices"]
	path = src/drivers/gps/devices
	url = https://gitee.com/robin_shaun/GpsDrivers.git
	branch = master
[submodule "src/modules/micrortps_bridge/micro-CDR"]
	path = src/modules/micrortps_bridge/micro-CDR
	url = https://gitee.com/robin_shaun/micro-CDR.git
	branch = px4
[submodule "platforms/nuttx/NuttX/nuttx"]
	path = platforms/nuttx/NuttX/nuttx
	url = https://gitee.com/robin_shaun/NuttX.git
	branch = px4_firmware_nuttx-9.1.0+
[submodule "platforms/nuttx/NuttX/apps"]
	path = platforms/nuttx/NuttX/apps
	url = https://gitee.com/robin_shaun/NuttX-apps.git
	branch = px4_firmware_nuttx-9.1.0+
[submodule "platforms/qurt/dspal"]
	path = platforms/qurt/dspal
	url = https://gitee.com/robin_shaun/dspal.git
[submodule "Tools/flightgear_bridge"]
	path = Tools/flightgear_bridge
	url = https://gitee.com/robin_shaun/PX4-FlightGear-Bridge.git
	branch = master 
[submodule "Tools/jsbsim_bridge"]
	path = Tools/jsbsim_bridge
	url = https://gitee.com/robin_shaun/px4-jsbsim-bridge.git
[submodule "src/examples/gyro_fft/CMSIS_5"]
	path = src/examples/gyro_fft/CMSIS_5
	url = https://gitee.com/mirrors/CMSIS_5

3.再次执行子模块更新指令

git submodule update --init --recursive

4.编译

make px4_sitl_default gazebo

终端中不报错,gazebo中有无人机即测试成功。
gazebo黑屏卡住时可以ctrl+c关闭后重新打开即可。
5.配置环境变量,注意与自己的路径相对应

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

6.测试

cd ~/PX4_Firmware
roslaunch px4 mavros_posix_sitl.launch

此时gazebo中显示无人机,机翼不转则表示与mavros通讯成功,此时终端中显示大致如下。
【Ubuntu18.04安装px4+mavros(解决mavros报错问题)】_第2张图片

也可使用一下代码验证

rostopic echo /mavros/state

若显示connected: True,则通讯成功
【Ubuntu18.04安装px4+mavros(解决mavros报错问题)】_第3张图片

你可能感兴趣的:(无人机,ubuntu,人工智能,自动驾驶)