我得环境装的东西比较多,经常发生冲突的有一个anaconda基础环境,还是ubuntu18的,正常这套系统在20下比较适配,所以装起来麻烦,特此记录供参考
关于mid360的仿真配置和实际运行放在(二)
依赖安装
打开 .bashrc 文件
gedit ~/.bashrc
注释掉下面这行代码(需要用到 anaconda 时再取消注释)
# export PATH="/home/用户名/anaconda3/bin:$PATH" 刷新 bash 文件
source ~/.bashrc
-
在使用apt安装的过程中(包括之后ROS的安装),如果出现难以解决的依赖问题,可以使用aptitude install(没有aptitude的话,使用sudo apt install aptitude 安装),如sudo aptitude install ros-kinetic-desktop,它会依次推荐依赖解决方案,觉得可行就按y,不可行就按n。当然这个工具也不是万能的,如果它也解决不了依赖问题,还是需要靠自己分析解决。
-
有时候apt报错,提示"有几个软件包无法下载,要不运行 apt-get update 或者加上 --fix-missing 的选项再试试?",这时按照提示进行操作即可。
-
注意仔细检查依赖都装成功没有,之前有些开发者遇到的编译过程中出现'pthread_create'未定义的引用,就是因为少装了依赖。
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
pip3 install packaging numpy empy toml pyyaml jinja2 pyargparse kconfiglib jsonschema future
报错cerberus
Collecting pandas
Using cached https://pypi.tuna.tsinghua.edu.cn/packages/db/83/7d4008ffc2988066ff37f6a0bb6d7b60822367dcb36ba5e39aa7801fda54/pandas-0.24.2-cp27-cp27mu-manylinux1_x86_64.whl
Collecting jinja2
Using cached https://pypi.tuna.tsinghua.edu.cn/packages/7e/c2/1eece8c95ddbc9b1aeb64f5783a9e07a286de42191b7204d67b7496ddf35/Jinja2-2.11.3-py2.py3-none-any.whl
Collecting pyserial
Using cached https://pypi.tuna.tsinghua.edu.cn/packages/07/bc/587a445451b253b285629263eb51c2d8e9bcea4fc97826266d186f96f558/pyserial-3.5-py2.py3-none-any.whl
Collecting cerberus
Using cached https://pypi.tuna.tsinghua.edu.cn/packages/07/20/3ec65289ab0ccf5f41d38d103343f5b609263944238e299598aeba684a82/Cerberus-1.3.5.tar.gz
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
IOError: [Errno 2] No such file or directory: '/tmp/pip-build-Df_0GE/cerberus/setup.py'
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-Df_0GE/cerberus/
方案1:单独安装 Cerberus
bash
pip2 install cerberus==1.2 --no-cache-dir
如果上述命令不行,尝试:
bash
pip2 install cerberus==1.3.2 --no-cache-dir
pip2 uninstall cerberus
用了一个较为旧的版本1.3.2 要不然应该是1.3.5
# 先安装其他包(跳过 cerberus)
pip2 install pandas jinja2 pyserial pyulog==0.7.0 numpy toml pyquaternion empy pyyaml
# 然后单独安装 cerberus
pip2 install cerberus==1.3.2 --no-cache-dir

pip install --upgrade setuptools
#若未报错不需要输入这两行命令
python -m pip install --upgrade pip
安装gazebo
Gazebo包括Gazebo本身和ROS的插件,需要分别安装。首先卸载之前的Gazebo123
sudo apt-get remove gazebo*
sudo apt-get remove libgazebo*
sudo apt-get remove ros-melodic-gazebo*
鱼香ros里面,压根没有装


所以安装gazebo9
step-by-step安装方式,以下逐步进行
sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
You can check to see if the file was written correctly.
cat /etc/apt/sources.list.d/gazebo-stable.list
setup keys
wget https://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
update the debian database
sudo apt-get update
Next install gazebo-9 by:
sudo apt-get install gazebo9
# For developers that work on top of Gazebo, one extra package
sudo apt-get install libgazebo9-dev
gazebo
原文链接:https://blog.csdn.net/weixin_43571647/article/details/134439630
安装xd源代码
mkdir -p ./xtdrone_ws/src
mkdir -p ./xtdrone_ws/scripts
cd xtdrone_ws && catkin init
# 使用catkin_make话,则为cd catkin_ws/src && catkin_init_workspace
catkin build # 使用catkin_make话,则为 cd .. && catkin_make
git clone https://gitee.com/robin_shaun/XTDrone.git
cd XTDrone
git submodule update --init --recursive
我们对Gazebo的ROS插件做了修改,因此需要源码编译。
首先装依赖
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
然后克隆并编译Gazebo的插件gazebo_ros_pkgs,放在~/catkin_ws/src下(如果编译时还缺其他的依赖,同上方法安装)。这里注意提前把XTDrone的源码下载下来(见后续的XTDrone源码下载)。
cd ~/catkin_ws
cp -r ~/XTDrone/sitl_config/gazebo_ros_pkgs src/
catkin build #开发者测试使用catkin_make会出问题,因此建议使用catkin build
报错AttributeError: 'module' object has no attribute 'RAW_OPT'
AttributeError: 'module' object has no attribute 'RAW_OPT'
make[2]: *** [/home/zeratul/proj/xtdrone_ws/devel/.private/gazebo_msgs/include/gazebo_msgs/ApplyBodyWrench.h] Error 1
make[2]: *** 正在删除文件"/home/zeratul/proj/xtdrone_ws/devel/.private/gazebo_msgs/include/gazebo_msgs/ApplyBodyWrench.h"
make[2]: *** [/home/zeratul/proj/xtdrone_ws/devel/.private/gazebo_msgs/include/gazebo_msgs/GetJointProperties.h] Error 1
make[2]: *** 正在删除文件"/home/zeratul/proj/xtdrone_ws/devel/.private/gazebo_msgs/include/gazebo_msgs/GetJointProperties.h"
make[2]: *** [/home/zeratul/proj/xtdrone_ws/devel/.private/gazebo_msgs/include/gazebo_msgs/DeleteModel.h] Error 1
make[2]: *** 正在删除文件"/home/zeratul/proj/xtdrone_ws/devel/.private/gazebo_msgs/include/gazebo_msgs/DeleteModel.h"
make[2]: *** [/home/zeratul/proj/xtdrone_ws/devel/.private/gazebo_msgs/include/gazebo_msgs/SpawnModel.h] Error 1
make[2]: *** 正在删除文件"/home/zeratul/proj/xtdrone_ws/devel/.private/gazebo_msgs/include/gazebo_msgs/SpawnModel.h"
Traceback (most recent call last):
File "/opt/ros/melodic/share/gencpp/cmake/../../../lib/gencpp/gen_cpp.py", line 50, in <module>
sys.argv, msg_template_map, srv_template_map)
File "/opt/ros/melodic/lib/python2.7/dist-packages/genmsg/template_tools.py", line 213, in generate_from_command_line_options
generate_from_file(argv[1], options.package, options.outdir, options.emdir, options.includepath, msg_template_dict, srv_template_dict)
File "/opt/ros/melodic/lib/python2.7/dist-packages/genmsg/template_tools.py", line 156, in generate_from_file
_generate_srv_from_file(input_file, output_dir, template_dir, search_path, package_name, srv_template_dict, msg_template_dict)
File "/opt/ros/melodic/lib/python2.7/dist-packages/genmsg/template_tools.py", line 115, in _generate_srv_from_file
search_path)
File "/opt/ros/melodic/lib/python2.7/dist-packages/genmsg/template_tools.py", line 77, in _generate_from_spec
interpreter = em.Interpreter(output=ofile, globals=g, options={em.RAW_OPT:True,em.BUFFERED_OPT:True})
AttributeError: 'module' object has no attribute 'RAW_OPT'
make[2]: *** [/home/zeratul/proj/xtdrone_ws/devel/.private/gazebo_msgs/include/gazebo_msgs/GetModelProperties.h] Error 1
make[2]: *** 正在删除文件"/home/zeratul/proj/xtdrone_ws/devel/.private/gazebo_msgs/include/gazebo_msgs/GetModelProperties.h"
make[1]: *** [CMakeFiles/gazebo_msgs_generate_messages_cpp.dir/all] Error 2
make: *** [all] Error 2
cd /home/zeratul/proj/xtdrone_ws/build/gazebo_msgs; catkin build --get-env gazebo_msgs | catkin env -si /usr/bin/make --jobserver-fds=6,7 -j; cd -
...........................................................................................................................................................................................................
Failed << gazebo_msgs:make [ Exited with code 2 ]
Failed <<< gazebo_msgs [ 0.2 seconds ]
Abandoned <<< gazebo_ros [ Unrelated job failed ]
Abandoned <<< gazebo_plugins [ Unrelated job failed ]
Abandoned <<< gazebo_ros_control [ Unrelated job failed ]
[build] Summary: 1 of 5 packages succeeded.
[build] Ignored: 1 packages were skipped or are blacklisted.
[build] Warnings: None.
[build] Abandoned: 3 packages were abandoned.
[build] Failed: 1 packages failed.
[build] Runtime: 0.2 seconds total.

# 卸载当前版本
pip uninstall empy
# 安装兼容版本
pip install empy==3.3.2
# 或者
pip install "empy<4.0"
测试编译
source ./devel/setup.bash
rosrun gazebo_ros gazebo
Gazebo有很多开源的模型文件,我们将一些需要的模型文件上传到附件中,供大家下载:
--> 请点击📎models.zip
将该附件解压缩后放在/.gazebo中,此时在/.gazebo/models/路径下可以看到很多模型。如果不做这一步,之后运行Gazebo仿真,可能会缺模型,这时会自动下载,Gazebo模型服务器在国外,自动下载会比较久。
MAVROS安装
注意,mavros-extras一定别忘记装,否则视觉定位将无法完成
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仿真配置,见PX4仿真文档
由于国内的github下载速度较慢,我们把固件和submodule打包上传到了语雀上,直接编译即可。
注意,对于ubuntu18这下面的px4版本有错误,这段是重现踩坑流程
git clone https://github.com/PX4/PX4-Autopilot.git
mv PX4-Autopilot PX4_Firmware
cd PX4_Firmware
git checkout -b xtdrone/dev v1.13.2
git submodule update --init --recursive
bash ./Tools/setup/ubuntu.sh
make px4_sitl_default gazebo
在make编译px4的过程中,可能会出现编译失败的情况,大概率是因为缺少某些依赖。此时查询报错信息,使用sudo apt install命令安装相应的库(后面报错说明,某些情况不应该这么装,见后)。
zeratul@zeratul-Dell-G15-5530:~/proj/PX4_Firmware$ bash ./Tools/setup/ubuntu.sh
Ubuntu 18.04
Installing PX4 general dependencies
[sudo] zeratul 的密码:
获取:1 file:/var/cudnn-local-repo-ubuntu1804-8.6.0.163 InRelease
pip3 install kconfiglib
pip3 install --user toml
pip3 install --user jinja2
pip3 install --user empy
pip3 install --user jsonschema
pip3 install --user packaging
pip3 install --user numpy
报错ModuleNotFoundError: No module named 'menuconfig'
git clone https://github.com/PX4/PX4-Autopilot.git
mv PX4-Autopilot PX4_Firmware
cd PX4_Firmware
git checkout -b xtdrone/dev v1.13.2
git submodule update --init --recursive
make px4_sitl_default gazebo
zeratul@zeratul-Dell-G15-5530:~/proj/PX4_Firmware$ make px4_sitl_default gazebo
[0/852] Generating Mavlink development: src/modules/mavlink/mavlink/message_definitions/v1.0/development.xml
Traceback (most recent call last):
File "/home/zeratul/proj/PX4_Firmware/src/modules/mavlink/mavlink/pymavlink/tools/mavgen.py", line 16, in <module>
from pymavlink.generator import mavgen
File "/home/zeratul/proj/PX4_Firmware/src/modules/mavlink/mavlink/pymavlink/generator/mavgen.py", line 26, in <module>
from future import standard_library
ModuleNotFoundError: No module named 'future'
[6/852] Generating mixer_multirotor_normalized.generated.h
FAILED: src/lib/mixer/MultirotorMixer/mixer_multirotor_normalized.generated.h /home/zeratul/proj/PX4_Firmware/build/px4_sitl_default/src/lib/mixer/MultirotorMixer/mixer_multirotor_normalized.generated.h
cd /home/zeratul/proj/PX4_Firmware/build/px4_sitl_default/src/lib/mixer/Multiroto。。。orMixer/geometries/tri_y.toml /home/zeratul/proj/PX4_Firmware/src/lib/mixer/MultirotorMixer/geometries/twin_engine.toml -o mixer_multirotor_normalized.generated.h
Failed to import numpy: No module named 'numpy'
You may need to install it using:
pip3 install --user numpy
这里的核心问题,在于ubuntu18不支持px4的1.13用python混合编译
所以换一个px4版本编译


重新安装对应的老版本1.11
git clone https://github.com/PX4/PX4-Autopilot.git
mv PX4-Autopilot PX4_Firmware
cd PX4_Firmware
git checkout -b xtdrone/dev v1.11.0-beta1
git submodule update --init --recursive
make px4_sitl_default gazebo
上面网速慢,直接编译 PX4_Firmware.zip(875.6 MB)
cd PX4_Firmware
make px4_sitl_default gazebo
产生报错recipe for target 'px4_sitl_default' failed
zeratul@zeratul-Dell-G15-5530:~/proj/PX4_Firmware$ make px4_sitl_default gazebo
-- PX4 version: v1.11.0-beta1
-- PX4 config file: /home/zeratul/proj/PX4_Firmware/boards/px4/sitl/default.cmake
-- PX4 config: px4_sitl_default
-- PX4 platform: posix
-- PX4 lockstep: enabled
。。。
-- Configuring incomplete, errors occurred!
See also "/home/zeratul/proj/PX4_Firmware/build/px4_sitl_default/build_gazebo/CMakeFiles/CMakeOutput.log".
See also "/home/zeratul/proj/PX4_Firmware/build/px4_sitl_default/build_gazebo/CMakeFiles/CMakeError.log".
[302/740] Building CXX object platforms/posix/src/px4/common/px4_daemon/CMakeFiles/px4_daemon.dir/server_io.cpp.o
FAILED: external/Stamp/sitl_gazebo/sitl_gazebo-configure /home/zeratul/proj/PX4_Firmware/build/px4_sitl_default/external/Stamp/sitl_gazebo/sitl_gazebo-configure
cd /home/zeratul/proj/PX4_Firmware/build/px4_sitl_default/build_gazebo && /opt/cmake-3.21.4/bin/cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DSEND_VISION_ESTIMATION_DATA=ON -GNinja /home/zeratul/proj/PX4_Firmware/Tools/sitl_gazebo && /opt/cmake-3.21.4/bin/cmake -E touch /home/zeratul/proj/PX4_Firmware/build/px4_sitl_default/external/Stamp/sitl_gazebo/sitl_gazebo-configure
[324/740] Building CXX object src/lib/ecl/EKF/CMakeFiles/ecl_EKF.dir/covariance.cpp.o
ninja: build stopped: subcommand failed.
Makefile:198: recipe for target 'px4_sitl_default' failed
make: *** [px4_sitl_default] Error 1


make clean
rm -rf build/px4_sitl_default
make px4_sitl_default
根本原因在于我系统有两个版本cmake,应该用3.10而我是用的3.21
cmake版本的指定
不删除,临时切换 CMake(推荐)
在当前终端执行:
export PATH=/usr/bin:$PATH
确认:
which cmake
cmake --version
如果显示 3.10,则重新编译:
make clean
rm -rf build/px4_sitl_default
make px4_sitl_default gazebo
echo $PATH
which cmake
cmake --version
zeratul@zeratul-Dell-G15-5530:~$ echo $PATH
/usr/local/cuda-11.6/bin:/opt/ros/melodic/bin:/home/zeratul/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/cmake-3.21.4/bin0:/home/zeratul/TensorRT-8.5.3.1/bin
zeratul@zeratul-Dell-G15-5530:~$ which cmake
/usr/bin/cmake
zeratul@zeratul-Dell-G15-5530:~$ cmake --version
cmake version 3.21.4
CMake suite maintained and supported by Kitware (kitware.com/cmake).
① 检查 alias
alias cmake
② 检查函数覆盖
type cmake
③ 查找系统中是否有多个 cmake
which -a cmake
④ 全局搜索 cmake 可执行文件
sudo updatedb
locate bin/cmake
alias cmake
type cmake
which -a cmake
sudo updatedb
locate bin/cmake
zeratul@zeratul-Dell-G15-5530:~$ alias cmake
bash: alias: cmake: 未找到
zeratul@zeratul-Dell-G15-5530:~$ type cmake
cmake 已被录入哈希表 (/usr/bin/cmake)
zeratul@zeratul-Dell-G15-5530:~$ which -a cmake
/usr/bin/cmake
你只需要强制使用 3.10 的 cmake(系统自带):
/usr/bin/cmake --version
如果输出仍然是 3.21,那么说明 /usr/bin/cmake 本身已被替换。
🤯 很可能你把系统的 cmake 覆盖成 3.21 了!
让我们验证:
验证 /usr/bin/cmake 真实文件:
ls -l /usr/bin/cmake
file /usr/bin/cmake
如果它不是 3.10,则说明被覆盖了。
/usr/bin/cmake --version
ls -l /usr/bin/cmake
file /usr/bin/cmake
方法 A:重新安装系统 cmake(推荐)
sudo apt install --reinstall cmake
完成后验证:
cmake --version
应该变成:
cmake version 3.10.2
尝试干净编译一次:
make clean
rm -rf build/px4_sitl_default
make px4_sitl_default
再执行:
make px4_sitl_default gazebo
其他可行(没使用)临时切换cmake版本
方法二:手动创建符号链接(快速但不够灵活)
这个方法会直接覆盖 /usr/bin/cmake,使其指向新版本。
备份原来的cmake(可选但建议):
bash
sudo mv /usr/bin/cmake /usr/bin/cmake.old
创建新的符号链接:
bash
sudo ln -sf /opt/cmake-3.21.4/bin/cmake /usr/bin/cmake
-sf 参数表示强制创建符号链接,如果已有同名链接则覆盖。
验证切换结果:
bash
cmake --version
确认输出为 3.21.4。
这个方法虽然简单,但如果你想换回原来的版本,需要手动处理。
方法三:设置环境变量(临时或用户级切换)
如果只是希望在当前终端或当前用户下使用新版本,可以修改 PATH 环境变量。
临时修改(仅当前终端有效):
在当前终端中执行:
bash
export PATH=/opt/cmake-3.21.4/bin:$PATH
然后验证:
bash
cmake --version
永久修改(针对当前用户):
将上面的 export 命令添加到你的 shell 配置文件中(例如 ~/.bashrc 或 ~/.zshrc),然后执行 source ~/.bashrc(或对应的配置文件)使其生效。
这种方法最安全,因为它只影响你当前的环境
。
编译完成,效果

设置环境变量
修改 ~/.bashrc,加入以下代码,注意路径匹配,前两个source顺序不能颠倒。
sudo gedit ~/.bashrc
source /home/zeratul/proj/xtdrone_ws/devel/setup.bash
source /home/zeratul/proj/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
zeratul@zeratul-Dell-G15-5530:~$ source ~/.bashrc
GAZEBO_PLUGIN_PATH :/home/zeratul/proj/PX4_Firmware/build/px4_sitl_default/build_gazebo
GAZEBO_MODEL_PATH :/home/zeratul/proj/PX4_Firmware//Tools/sitl_gazebo/models
LD_LIBRARY_PATH /home/zeratul/proj/xtdrone_ws/devel/lib:/opt/ros/melodic/lib:/usr/local/cuda-11.6/lib64:/usr/local/cuda-11.6/lib64:/usr/local/cuda-11.6/lib64:/home/zeratul/TensorRT-8.5.3.1/lib:/home/zeratul/TensorRT-8.5.3.1/lib:/home/zeratul/TensorRT-8.5.3.1/lib:/home/zeratul/proj/PX4_Firmware/build/px4_sitl_default/build_gazebo
然后运行如下命令,此时会启动Gazebo,如下图所示。
cd ~/PX4_Firmware
roslaunch px4 mavros_posix_sitl.launch

并运行
rostopic echo /mavros/state
若connected: True,则说明MAVROS与SITL通信成功。如果是false,一般是因为.bashrc里的路径写的不对,请仔细检查。
xd源码处理和px4-gazebo修改编译
在/home/zeratul/proj/XTDrone目录下执行:
cp ./sensing/gimbal/gazebo_gimbal_controller_plugin.cpp /home/zeratul/proj/PX4_Firmware/Tools/sitl_gazebo/src/
cp ./sitl_config/init.d-posix/rcS /home/zeratul/proj/PX4_Firmware/ROMFS/px4fmu_common/init.d-posix/
cp ./sitl_config/worlds/* /home/zeratul/proj/PX4_Firmware/Tools/sitl_gazebo/worlds/
cp -r ./sitl_config/models/* /home/zeratul/proj/PX4_Firmware/Tools/sitl_gazebo/models/
cp -r ./sitl_config/launch/* /home/zeratul/proj/PX4_Firmware/launch/
cd ~/.gazebo/models/
rm -r ./stereo_camera/ ./3d_lidar/ ./3d_gpu_lidar/ ./hokuyo_lidar/
因为Gazebo寻找模型的顺序,是先在.gazebo/models/下寻找,然后在其他路径寻找,所以在往PX4 SITL复制models时,要注意.gazebo/models/下有没有同名文件(比如.gazebo/models/下默认有stereo_camera),有的话要么将该同名文件删去,要么替换该同名文件。
由于修改了PX4 sitl_gazebo中的gazebo_gimbal_controller_plugin.cpp(源代码不能控制多无人机的云台),要再编译一次。
cd ~/PX4_Firmware
make px4_sitl_default gazebo

px4 starting.
INFO [px4] Calling startup script: /bin/sh etc/init.d-posix/rcS 0
INFO [param] selected parameter default file eeprom/parameters_10016
[param] Loaded: eeprom/parameters_10016
ERROR [param] Parameter COM_CPU_MAX not found.
INFO [dataman] Unknown restart, data manager file './dataman' size is 11798680 bytes
INFO [simulator] Waiting for simulator to accept connection on TCP port 4560
INFO [simulator] Simulator connected on TCP port 4560.
INFO [commander] LED: open /dev/led0 failed (22)
INFO [init] Mixer: etc/mixers/quad_w.main.mix on /dev/pwm_output0
Gazebo multi-robot simulator, version 9.19.0
Copyright (C) 2012 Open Source Robotics Foundation.
Released under the Apache 2 License.
http://gazebosim.org
[Msg] Waiting for master.
INFO [mavlink] mode: Normal, data rate: 4000000 B/s on udp port 18570 remote port 14550
[Msg] Connected to gazebo master @ http://127.0.0.1:11345
[Msg] Publicized address: 10.168.1.109
INFO [mavlink] mode: Onboard, data rate: 4000000 B/s on udp port 34580 remote port 24540
INFO [mavlink] mode: Onboard, data rate: 4000 B/s on udp port 14280 remote port 14030
INFO [logger] logger started (mode=all)
INFO [logger] Start file log (type: full)
INFO [logger] Opened full log file: ./log/2025-11-18/02_22_03.ulg
INFO [mavlink] MAVLink only on localhost (set param MAV_BROADCAST = 1 to enable network)
INFO [px4] Startup script returned successfully
pxh> [Err] [InsertModelWidget.cc:426] Missing model.config for model "/home/zeratul/proj/PX4_Firmware//Tools/sitl_gazebo/models/livox_mid40"
[Err] [InsertModelWidget.cc:426] Missing model.config for model "/home/zeratul/proj/PX4_Firmware/Tools/sitl_gazebo/models/livox_mid40"
[Wrn] [Event.cc:61] Warning: Deleting a connection right after creation. Make sure to save the ConnectionPtr from a Connect call
INFO [ecl/EKF] 516000: GPS checks passed (WGS-84 origin set)
INFO [ecl/EKF] 1768000: EKF aligned, (baro height, IMU buf: 22, OBS buf: 14)
INFO [ecl/EKF] 1768000: reset position to last known position
INFO [ecl/EKF] 1768000: reset velocity to zero
INFO [ecl/EKF] 5064000: reset position to GPS
INFO [ecl/EKF] 5064000: reset velocity to GPS
INFO [ecl/EKF] 5064000: commencing GPS fusion
安装地面站QGroundControl

https://docs.qgroundcontrol.com/master/en/qgc-user-guide/getting_started/download_and_install.html
下面这些是安装链接
https://blog.csdn.net/m0_65127978/article/details/144583825
https://github.com/mavlink/qgroundcontrol/tags?after=v4.4.0rc2
https://github.com/mavlink/qgroundcontrol/releases/tag/v4.2.6
sudo usermod -aG dialout "$(id -un)"
首次安装 QGroundControl 之前
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 libfuse2 -y
sudo apt install libxcb-xinerama0 libxkbcommon-x11-0 libxcb-cursor-dev -y
随后下载前言中的v4.2.6版本的QGroundControl.AppImage
chmod +x ./QGroundControl.AppImage
./QGroundControl.AppImage (or double click)

用键盘控制无人机飞行
在一个终端运行
cd ~/PX4_Firmware
roslaunch px4 indoor1.launch
-
注意,用ctrl+c关闭仿真进程,有可能没有把Gazebo的相关进程关干净,这样再启动仿真时可能会报错。如果出现这种情况,可以用
killall -9 gzclient
killall -9 gzserver -
这两个命令强行关闭gazebo所有进程。
Gazebo启动后,在另一个终端运行(注意要等Gazebo完全启动完成,或者可能脚本会报错)
cd ~/XTDrone/communication/
python multirotor_communication.py iris 0
与0号iris建立通信后,在另一个终端运行
cd ~/XTDrone/control/keyboard
python multirotor_keyboard_control.py iris 1 vel
便可以通过键盘控制1架iris的解锁/上锁(arm/disarm),修改飞行模式,飞机速度等。
使用v起飞利用的是takeoff飞行模式,相关参数(起飞速度、高度)要在rcS中设置。
一般可以使用offboard模式起飞,这时起飞速度要大于0.3m/s才能起飞(即:upward velocity 需要大于0.3)。
注意,飞机要先解锁才能起飞!飞到一定高度后可以切换为'hover'模式悬停,再运行自己的飞行脚本,或利用键盘控制飞机。
推荐起飞流程,按i把向上速度加到0.3以上,再按b切offboard模式,最后按t解锁。


参考资料: