参考了这篇博客,成功!

最新PX4xROS2保姆级仿真部署教程来了!_ros2 px4-CSDN博客

安装Ubuntu22.04.5 desktop版 的详细教程:

安装Ubuntu22.04.5 desktop版 的详细教程_ubuntu-22.04.5-desktop-amd64.iso-CSDN博客

记录学习过程,内容如有问题,还请各位大佬指教。

一、完整打开流程

(1)打开gazebo

cd ~/PX4-Autopilot
LIBGL_ALWAYS_SOFTWARE=1 GALLIUM_DRIVER=llvmpipe make px4_sitl gz_x500

(2)打开地面站

(3)新建终端运行XRCE_DDS,输入下述命令:

MicroXRCEAgent udp4 -p 8888

(4)新建终端,输入下述命令,即可列出当前ROS2环境下的全部话题

ros2 topic list

(5)确保PX4仿真,包含地面站和XRCE_DDS连接均已启动。新开终端,运行如下命令:

ros2 run px4_ros_com offboard_control

        执行后,无人机将自动解锁,旋转 90° 并上升至 5 米高度悬停。

二、 建立共享文件夹

(1)虚拟机设置-启用共享文件夹

(2)进入终端挂载共享文件夹(临时)

vmware-hgfsclient # 运行这个命令查看VMware共享的文件夹名
sudo mkdir -p /mnt/shared_data  # 创建挂载点
sudo mount -t fuse.vmhgfs-fuse .host:/shared_data /mnt/shared_data -o allow_other,uid=1000,gid=1000  # 挂载共享文件夹
sudo chmod 777 /mnt/shared_data  # 设置权限
ln -sf /mnt/shared_data ~/Desktop/Shared_From_Windows  # 创建用户目录下的链接
ln -sf /mnt/shared_data ~/共享文件夹
cd ~/共享文件夹
ls -la

(3)打开home就能看到建立的共享文件夹

补充:

上面是建立共享文件夹,但是关机后打开就不能共享了。可以使用 /etc/fstab 自动挂载。

# 首先手动挂载一次(确保共享文件夹正常工作)
sudo mkdir -p /mnt/shared_data
sudo mount -t fuse.vmhgfs-fuse .host:/shared_data /mnt/shared_data -o allow_other,uid=1000,gid=1000

# 编辑 /etc/fstab 文件
sudo nano /etc/fstab

# 在文件末尾添加一行
.host:/shared_data  /mnt/shared_data  fuse.vmhgfs-fuse  allow_other,uid=1000,gid=1000,defaults  0  0

# 保存并退出(按 Ctrl+X,然后按 Y,再按 Enter)

# 测试配置是否正确
sudo mount -a

# 重启验证
sudo reboot

现在再次尝试,关机重启后也能共享文件了。

三、使用 ulog2csv.py(PX4/pyulog)将 .ulg 转为 CSV

我的日志位置:/home/xiaoma/PX4-Autopilot/build/px4_sitl_default/rootfs/log/

pip install pyulog # 安装

ulog2csv <input.ulg> -o <输出目录>
示例:ulog2csv log_001.ulg -o ./csv_output

如果提取特定的数据:
ulog2csv log_file.ulg -o ./ekf_csv \
-t sensor_combined \
-t vehicle_air_data \
-t vehicle_magnetometer \
-t vehicle_gps_position \
-t optical_flow \
-t distance_sensor \
-t vehicle_attitude_groundtruth \
-t vehicle_local_position_groundtruth

四、安装过程中遇到的问题

1、运行bash ./PX4-Autopilot/Tools/setup/ubuntu.sh,进行到fetching xtensa compilers时卡住,下载很慢很慢。

  • 解决方法:注释掉ubuntu.h中的以下几行,跳过下载。

#		echo
#		echo "Fetching Xtensa compilers"
#		wget -q -P $DIR https://github.com/espressif/crosstool-NG/releases/download/esp-13.2.0_20240530/xtensa-esp-elf-13.2.0_20240530-x86_64-linux-gnu.tar.xz
#		sudo tar -xf $DIR/xtensa-esp-elf-13.2.0_20240530-x86_64-linux-gnu.tar.xz -C /opt
#		echo 'export PATH=$PATH:/opt/xtensa-esp-elf/bin/' >> /home/$USER/.bashrc
2、加载gz_x500时报错
# 问题:
xiaoma@xiaoma-virtual-machine:~/PX4-Autopilot$ make px4_sitl gz_x500
ninja: error: unknown target 'gz_x500'
make: *** [Makefile:227:px4_sitl] 错误 1

# 解决方法:
cd ~/PX4-Autopilot # 确保在正确的目录下
make clean # 清理之前的构建
make distclean # 重新配置
make px4_sitl gz_x500_vision
3、安装QGC地面站
# 问题:
xiaoma@xiaoma-virtual-machine:~$ chmod +x ./QGroundControl-x86_64.AppImage
chmod: 无法访问 './QGroundControl-x86_64.AppImage': 没有那个文件或目录

# 解决方法:
ls ~/Desktop/QGroundControl*.AppImage # 检查桌面上的文件
chmod +x ~/Desktop/QGroundControl*.AppImage # 设置执行权限

# 启动方法:
cd ~/Desktop # 先进入桌面目录
./QGroundControl-x86_64.AppImage # 然后执行
4、创建PX4_msgs_ROS2空间,下载时很慢
# 问题:下载两个官方源代码很慢
git clone https://github.com/PX4/px4_msgs.git
git clone https://github.com/PX4/px4_ros_com.git

# 解决方法:中国用户建议使用 Gitee 镜像:
git clone https://gitee.com/mirrors_PX4/px4_msgs.git # px4_msgs 的 Gitee 镜像
git clone https://gitee.com/mirrors_PX4/px4_ros_com.git # px4_ros_com 的 Gitee 镜像
5、PX4仿真运行时有IMU时间戳错误
INFO [tone_alarm] arming warning
INFO [commander] Takeoff detected
NodeShared::Publish() Error: Interrupted system call
ERROR [vehicle_imu] 0 - gyro 1310988 timestamp error timestamp_sample: 292852000, previous timestamp_sampleERROR [vehicle_imu] 0 - accel 1310988 timestamp error timestamp_sample: 292852000, previous timestamp_sampl
pxh> mavlink start -x
INFO [mavlink] mode: Normal, data rate: 2880 B/s on /dev/ttyS1 @ 57600B
ERROR [mavlink] ERR GET CONF /dev/ttyS1: -1
ERROR [mavlink] could not open /dev/ttyS1, retrying
pxh> ERROR [mavlink] ERR GET CONF /dev/ttyS1: -1
ERROR [mavlink] could not open /dev/ttyS1, retrying
ERROR [mavlink] ERR GET CONF /dev/ttyS1: -1
ERROR [mavlink] failed to open /dev/ttyS1 after 3 attempts, exiting!

# PX4正在尝试打开串口设备/dev/ttyS1,但在SITL仿真环境中这个设备不存在。
# 解决方法:
mavlink stop-all # 停止当前失败的MAVLink实例
mavlink start -x -u 14556 -r 4000000 # 使用UDP启动MAVLink(关键参数:-x 表示UDP)
mavlink status # 查看状态
6、 连接到PX4的MAVLink Shell(param 命令只能在 PX4的MAVLink Shell 中使用。)

(1)打开新终端,执行:

cd ~/PX4-Autopilot
./Tools/mavlink_shell.py localhost:14550

(2)查看所有SDLOG参数:param show SDLOG_*,看到以下信息:

pxh> param show SDLOG_*
Symbols: x = used, + = saved, * = unsaved
x SDLOG_BACKEND [804,1335] : 3
x SDLOG_BOOT_BAT [805,1336] : 0
x SDLOG_DIRS_MAX [806,1337] : 7
x SDLOG_MISSION [807,1338] : 0
x SDLOG_MODE [808,1339] : 1
x + SDLOG_PROFILE [809,1340] : 3
x SDLOG_UTC_OFFSET [810,1341] : 0
x SDLOG_UUID [811,1342] : 1
 999/1922 parameters used.

执行测试飞行:

commander arm # 解锁无人机
commander takeoff -m 5 # 起飞到5米
sleep 30 # 飞行30秒(执行各种机动)
commander land # 降落
commander disarm # 上锁

检查生成的日志:/home/xiaoma/PX4-Autopilot/build/px4_sitl_default/rootfs/log/

Logo

立足具身智能前沿赛道,致力于搭建全球化、开源化、全栈式技术交流与实践共创平台。

更多推荐