配置环境
OS: Ubuntu 18
ROS: Melodic
Gazebo: 9
ROS 安装
推荐使用小鱼的一键安装系列,可以快速安装ros.
wget http://fishros.com/install -O fishros && . fishros
MAVROS 安装
sudo apt-get install ros-melodic-mavros ros-melodic-mavros-extras
wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh
sudo ./install_geographiclib_datasets.sh
PX4 安装
- 选择px4的版本:进入官方的Github,下载源码并编译。
git clone -b v1.13.0-beta1 https://github.com/PX4/PX4-Autopilot.git
(测试多个版本,这个版本v1.13.0-beta1的力矩控制可以用且不会出现问题,其他稳定版都出问题)
更新子模块
cd PX4-Autopilot
git submodule update --init --recursive
安装相关依赖环境
bash ./Tools/setup/ubuntu.sh
注意:不要要添加sudo,使用sudo会导致后面编译找不到依赖
编译
make px4_sitlgazebo
修改 ~/.bashrc
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
以上代码处于github中,下载速度过慢。gitee上有国内镜像https://gitcode.net/mirrors/px4/firmware.git
,能下载源码,但子模块还是在github上,依旧很慢。
这里推荐使用XTDrone打包好的固件,可以下载下来直接使用https://www.yuque.com/xtdrone/manual_cn/basic_config
(备注:此版本仿真有时出现传感器错误,)
#问题汇总
1.在ubuntu里安装多个px4版本,roslaunch px4 mavros_posix_sitl.launch
,出现无法解锁/无法进入位置模式;
QGC报错如下:
[ WARN] [1665899025.446590008, 19.284000000]: CMD: Unexpected command 176, result 1
WARN [PreFlightCheck] Preflight Fail: Gyro #0 uncalibrated
WARN [PreFlightCheck] Primary gyro not found
WARN [PreFlightCheck] system power unavailable
解决办法:
仿真中出现初始化传感器的错误,应该是之前的px4仿真留下的参数有错,删除掉即可
rm ~/.ros/eeprom/parameters*
rm -rf ~/.ros/sitl*
2.无法使用offboard模式控制,出现如下错误
ERROR [mavlink] SET_ACTUATOR_CONTROL_TARGET not supported with lockstep enabled
ERROR [mavlink] Please disable lockstep for actuator offboard control:
ERROR [mavlink] https://dev.px4.io/master/en/simulation/#disable-lockstep-simulation
解决方法:
进入PX4固件目录,找到文件default.cmake
cd Firmware/boards/px4/sitl
gedit default.cmake
文本模式打开default.cmake,将 ENABLE_LOCKSTEP_SCHEDULER 修改为 no
修改前:
修改后:
重新编译一次:
cd PX4_Firmware
make px4_sitl_default gazebo
其中 PX4 lockstep: disabled
代表修改成功
同时还需要修改无人机的sdf模型文件,默认使用的iris模型
cd ~/Firmware/Tools/sitl_gazebo/models/iris
gedit iris.sdf
修改 enable_lockstep 修改为false:<enable_lockstep>0</enable_lockstep>
- 启动仿真
roslaunch px4 ...
,localposition/pose
无位置信息
解决:重装ros