Ubuntu22.04+Gazebo+PX4开发环境搭建

Ubuntu22.04+Gazebo+PX4开发环境搭建

参考了这篇博客,成功!

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

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

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

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

一、完整打开流程

(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 # 查看状态

(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/

Read more

AI 时代,为什么 “人人都是产品经理” 的时代才真正到来?

AI 时代,为什么 “人人都是产品经理” 的时代才真正到来?

从“口号”到“现实”:AI 如何重构产品经理的能力边界 传统“人人都是产品经理”的矛盾 “人人都是产品经理”的提法由来已久,但在传统产品开发模式中,这更像是一种理念倡导,而非可落地的实践,核心矛盾集中在三个维度: * 能力门槛高:产品经理需要同时掌握用户调研、需求分析、原型设计、跨部门协调等多维度技能,普通员工或用户难以系统掌握。 * 资源壁垒强:产品需求的落地需要依赖开发、设计、测试等团队的资源支持,非专业产品角色无法推动资源协调。 * 试错成本高:传统产品迭代周期以月为单位,需求验证成本极高,非专业人员的创意难以快速得到市场反馈。 这些矛盾导致“人人都是产品经理”始终停留在口号层面,真正能参与产品决策的依然是专业岗位人员。 AI 对产品能力的“平民化”重构 AI 技术的成熟,尤其是大语言模型(LLM)和生成式 AI的普及,正在从根本上打破传统产品开发的能力和资源壁垒,让非专业人员也能完成从创意到落地的全流程产品设计。以下是 AI 带来的核心改变: 1.

By Ne0inhk
OpenClaw插件开发指南:30分钟学会为AI数字员工添加新技能

OpenClaw插件开发指南:30分钟学会为AI数字员工添加新技能

文章目录 * 前言 * 一、先搞懂:OpenClaw到底是啥?(小白秒懂版) * 二、开发前必看:环境准备(5分钟搞定) * 1. 系统要求 * 2. 一键安装OpenClaw * 3. 验证环境 * 三、核心原理:OpenClaw插件为啥叫“技能乐高”? * 四、实战开始:30分钟写第一个插件(查天气技能) * 第一步:创建插件文件夹 * 第二步:写插件“身份证”——SKILL.md * 第三步:写功能实现脚本(index.js) * 第四步:配置环境变量 * 第五步:加载插件并测试 * 五、进阶技巧:让你的插件更专业(新手必学) * 1. 插件安全规范(官方强制要求) * 2. 插件优化小技巧 * 3. 插件发布(

By Ne0inhk
人工智能:深度学习中的卷积神经网络(CNN)实战应用

人工智能:深度学习中的卷积神经网络(CNN)实战应用

人工智能:深度学习中的卷积神经网络(CNN)实战应用 1.1 本章学习目标与重点 💡 学习目标:掌握卷积神经网络的核心原理、经典网络架构,以及在图像分类任务中的实战开发流程。 💡 学习重点:理解卷积层、池化层的工作机制,学会使用 TensorFlow 搭建 CNN 模型并完成训练与评估。 1.2 卷积神经网络核心原理 1.2.1 卷积层:提取图像局部特征 💡 卷积层是 CNN 的核心组件,其作用是通过卷积核对输入图像进行局部特征提取。 卷积核本质是一个小型的权重矩阵。它会按照设定的步长在图像上滑动。每滑动一次,卷积核就会与对应区域的像素值做内积运算,输出一个特征值。 这个过程可以捕捉图像的边缘、纹理等基础特征。 ⚠️ 注意:卷积核的数量决定了输出特征图的通道数,数量越多,提取的特征维度越丰富。 ① 定义一个 3×3 大小的卷积核,步长设为 1,填充方式为 SAME

By Ne0inhk
AutoGPT+Python:让AI智能体自动完成复杂任务的终极指南

AutoGPT+Python:让AI智能体自动完成复杂任务的终极指南

AutoGPT+Python:让AI智能体自动完成复杂任务的终极指南 引言:在人工智能迈向自主化的新阶段,AutoGPT作为基于大语言模型(LLM)的自主智能体代表,正掀起一场让AI自己思考、自主执行的技术革命。当它遇上Python的全栈生态与极致灵活性,开发者不再只是调用AI接口,而是能深度定制专属智能体——让AI听懂自然语言、拆解复杂目标、调用外部工具、联网检索信息、迭代优化结果,独立完成从市场调研、内容创作、代码开发到自动化运维的全流程任务。 本文从核心原理、本地部署、Python实战、插件扩展、生产优化五大维度,手把手带你从0到1搭建可落地、可监控、可进化的AI智能体系统,不管是AI爱好者、全栈开发者还是创业者,都能靠这份指南,掌握下一代人机协作的核心生产力。 一、先搞懂:AutoGPT到底是什么? 传统ChatGPT类模型是被动应答,你问一句它答一句,需要人工一步步引导;而AutoGPT是自主智能体,你只给它一个最终目标,它就能自己完成: * 任务拆解:把复杂目标拆成可执行子步骤 * 自主决策:判断下一步该做什么、调用什么工具 * 记忆管理:短期记忆存上下文

By Ne0inhk