怎么免费创建个人网站,公司宣传片制作价格,销售型网站的建设流程及特点,怎么自己制作游戏无人机指南
首先安装一个双系统#xff0c;详细安装请看#xff0c;这里面自动配好了ros2和ubuntu 无人机的环境配置
一#xff1a;在 Gazebo 搭建 PX4 无人机仿真环境 需要经过以下步骤#xff1a;
模块作用PX4#xff08;SITL#xff09;飞控程序运行环境#xff0…无人机指南
首先安装一个双系统详细安装请看这里面自动配好了ros2和ubuntu 无人机的环境配置
一在 Gazebo 搭建 PX4 无人机仿真环境 需要经过以下步骤
模块作用PX4SITL飞控程序运行环境源码编译后作为核心控制器Gazebo仿真平台提供世界、物理模拟、传感器模拟QGroundControl图形界面管理飞控切模式、监控飞行状态ROS2运行你的算法导航/目标检测/规划等MAVLinkPX4 与 ROS/QGC 等通信协议MAVROSROS - MAVLink 的桥梁提供话题与服务RViz2可视化 ROS 信息轨迹、传感器数据、地图等
px4联动总览图 [ QGroundControl ]↑│ MAVLink over UDP↓[ ROS2 / MAVROS ] ←→ PX4 (SITL) ←→ Gazebo11 (世界 传感器 动力学)↑│ MAVLink↓控制命令源Python/Cpp/ROS2节点写控制逻辑
eg
你写了一个 ROS 2 节点控制无人机飞一个正方形轨迹
你发布位置目标 → ROS 2 topic比如 /mavros/setpoint_position/localDDS 把消息传给 MAVROSMAVROS 转为 MAVLink 消息发给 PX4PX4 的 MAVLink 接口接收指令发布到 uORB控制器读取目标 → 计算姿态输出 → 通过 mixer → PWM 输出电调控制电机旋转飞机移动同时 IMU/GPS 回传状态 → PX4 → MAVLink → MAVROS → ROS 2。
安装px4:
mkdir -p ~/px4_ws/src cd ~/px4_ws #创建工作空间
cd ~/px4_ws/src
git clone https://github.com/PX4/PX4-Autopilot.git --recursivecd PX4-Autopilot
bash ./Tools/setup/ubuntu.sh #这个脚本会自动帮你下载好ROS 2可选Gazebo仿真环境MAVLinkFastRTPSPX4依赖的Python模块检查是否安装完成
make px4_sitl_default如果能出现一个gazebo页面就说明安装成功。 建模部分
用solidworks构建stl文件打造物体,等建模好了之后如果是用本机的solidworks生成的stl文件如果要导入到虚拟机要提前在设置中开启共享文件夹.要在gazebo.models下创建一个存放仿真环境的文件比如fly_environment,然后创建meshes模型文件SDF 和 配置文件Config 来定义和加载模型
meshes/ 目录主要用于存放 模型的 3D 网格文件如 .STL、.DAE、.OBJ 等这些网格文件用于定义模型的 视觉外观Visual 和 碰撞检测Collision。
model.config 作用
作用定义 模型的基本信息让 Gazebo 识别该模型。主要包含 模型名称SDF 版本作者信息描述模型资源
model.config 示例
文件位置fly_environment/model.config
?xml version1.0 ?
modelnamefly_environment/name !-- 模型名称 --version1.0/version !-- 版本 --sdf version1.7model.sdf/sdf !-- 指定模型的 SDF 文件 --authornameFeng/name/authordescriptionThis is a custom flying environment with obstacles./description
/modelmodel.sdf 作用
作用定义 模型的几何形状、物理属性、视觉效果让 Gazebo 正确加载和模拟该模型。主要包含 模型名称STL 网格文件物理属性如碰撞、质量等视觉属性坐标位置
model.sdf 示例
文件位置fly_environment/model.sdf
?xml version1.0?
sdf version1.10model namefly_environmentstatictrue/static !-- 设置为true表示该模型不会移动 --!-- 地面 --link namegroundvisual nameground_visualgeometrymeshurimodel://fly_environment/meshes/ground1.STL/uri/mesh/geometry/visual/link/model
/sdf
简介版的讲解如下
如何打开stl文件加载出模型首先导出dae文件然后在终端nano model.config,nano model.sdf分别编写这两个文件注意的是scale是指缩放比例适用于自己建的模型size是直接定义物体的尺寸适用于gazebo自带的
your_model/
│── model.config
│── model.sdf
│── meshes/
│ └── your_model.dae
│── textures/ (可选存放纹理文件)所有零件准备就绪后开始盖房子打造世界文件。 主控板px4学习: 基础配置 烧录固件可以多选择几个固件版本观察哪个固件版本的效果最好因为有些固件版本可能不适配导致一些奇奇怪怪的问题出现比如电机无法正常驱动等注意烧录固件之后要重启 选择机架选择符合自己机型的机架然后重启 校准传感器校准罗盘加速度传感器地平线等注意校准之后要重启 校准遥控器要注意遥控器的传输协议有些老版本的飞控支持ppm协议不支持pwm遥控器要修改遥控器的配置如果支持pwm遥控器的话正常连接就行了跟随地面站的指示进行校准遥控器 飞行模式的选择根据需要来就行了如果不知道有哪些飞行模式可以选择这是连接但是要注意每种遥控器的设置会有所不同下面是我的配置大家需要注意遥控器的设置以免踩坑。对了提一嘴遥控器的校准打开遥控器然后用镊子戳遥控器接收器的一个小按钮等到遥控器的光不闪烁常亮之后就行了。 校准电源注意这个时候不要装桨下图是我的配置按自己的实际情况写好电池芯数空点电压一般是3.6满电电压一般是4.2然后用万用表测试电池的电压写入电压分压器然后重启飞控然后用电流计测量实际电流写入安培然后重启飞控。 校准电调本来主包也想省钱不买电流计的后面发现不行所以还是买了电流计不然根本没办法校准电调校准电调后基本所有的前提条件都已经满足了。 在所有前提条件都测试完毕后接上电源地面站会显示就绪状态如下图 然后就可以将油门摇杆往右下方解锁无人机调整油门控制无人机电机转速了。 无人机PID参数调试 可能出现的问题及解决办法
然后调pid的时候一次只调一个轴向控制变量要做好
快捷办法其实也不一定需要调参直接在地面站规划好航线上传任务然后让无人机自动起飞一般都可以飞的很稳不需要再继续调参了。 硬件组装
材料: 电调通过飞控板给定的pwm波对电机进行调速并且还具有给电机供电的作用电陶的最大电流一定要保证高于电机的最大电流不然会烧。 电机电机上标的类似2205的数字讲的就是直径22mm高5mm电机的kv值越高说明转速越快如果求速度选择高kv值的如果求稳定的选kv值低的像980kv。 桨叶 如果追求高效率、长续航、高速 → 二叶桨适合竞速无人机、巡航无人机。 如果追求稳定性、低噪音、载重 → 三叶桨适合摄影无人机、物流无人机。 出于稳定性的考虑在此处选择三叶桨 飞控无人机的控制系统相当于无人机的大脑。 分压板电池与其他需电设备的桥梁可以实现降压。 机架使用solidworks 3D建模然后打印出碳板 电池:一般用的是锂聚合电池先解释一下参数的意思s的意思是串联意思是多个电池电池的电流不变但是电压可以积累p的意思是并联5300mA/h的意思是电池每小时放电5300mA 常见的 S 数电芯数及对应电压 1S 3.7V小型微型无人机 2S 7.4V微型/入门级无人机 3S 11.1V普通航拍机、竞速无人机 4S 14.8V竞速无人机 6S 22.2V高性能竞速/工业无人机 12S 44.4V大型工业级无人机
C是放电倍率表示电池放电的最大电流能力最大放电电流C值×电池容量(Ah)比如4S 1500mAh 75C 电池 的最大电流就是75C×(1500mAh/1000)112.5A
小电脑此处使用rdk×5用于视觉方面的算法计算深度相机inter realsense t265舵机MG90s 无人机注意事项还有故障解决 在上电前最好检查电池的容量防止低压然后充电的话要用专业充电器一般采用普通模式充电用低压模式保养。 在上电的时候每个电机都是会定时转动一下的这个是正常的但是如果这个时候出现了电机无法正常转动的话可以从一下几个地方排错 电调供电虚焊高概率用万用表查看焊点的电压 **该通道 PWM 信号未输出软件配置或排线问题**打开qgc地面站 电调本身损坏小概率 PX4的使用
一px4和其他软件的联动使用控制逻辑Python/C→ 发布 ROS 话题 → MAVROS → MAVLink → PX4飞控 → Gazebo模型运动 启动仿真 cd ~/PX4-Autopilot
make px4_sitl_default gazebo_iris__your_world连接mavrosROS2 节点能通过 MAVROS 接收/发送无人机数据
source /opt/ros/humble/setup.bash
source ~/ros2_ws/install/setup.bash
ros2 launch mavros px4.launch.py fcu_url:udp://:14540localhost:14557启动qgroundcontrol这个要用用线连接电脑端还有px4.设置模式既可以在qgroundcontrol中切换模式不推荐也可以在终端中使用命令
ros2 service call /mavros/set_mode mavros_msgs/srv/SetMode {custom_mode: OFFBOARD}#注意这个要建立一个ros2_ws的新终端解锁电机 控制飞行发布话题
#发送位置
ros2 topic pub /mavros/setpoint_position/local geometry_msgs/msg/PoseStamped ...#发送速度
ros2 topic pub /mavros/setpoint_velocity/cmd_vel geometry_msgs/msg/TwistStamped ...或者也可以自己写一个文件实现无人机的自动起飞降落。
eg:
# offboard_square_flight.pyimport rclpy
from rclpy.node import Node
from geometry_msgs.msg import PoseStamped
from mavros_msgs.srv import CommandBool, SetMode
from mavros_msgs.msg import State
import timeclass SquareFlightNode(Node):def __init__(self):super().__init__(square_flight_node)# 当前状态变量self.state State()self.current_pose PoseStamped()# 发布位置指令self.local_pos_pub self.create_publisher(PoseStamped, /mavros/setpoint_position/local, 10)self.state_sub self.create_subscription(State, /mavros/state, self.state_cb, 10)self.pose_sub self.create_subscription(PoseStamped, /mavros/local_position/pose, self.pose_cb, 10)# 服务客户端切换模式 / 解锁self.arming_client self.create_client(CommandBool, /mavros/cmd/arming)self.set_mode_client self.create_client(SetMode, /mavros/set_mode)# 等待服务可用while not self.arming_client.wait_for_service(timeout_sec1.0):self.get_logger().info(等待 /cmd/arming 服务...)while not self.set_mode_client.wait_for_service(timeout_sec1.0):self.get_logger().info(等待 /set_mode 服务...)# 飞行目标点相对坐标系 NEDself.waypoints [(0.0, 0.0, 2.0),(2.0, 0.0, 2.0),(2.0, 2.0, 2.0),(0.0, 2.0, 2.0),(0.0, 0.0, 2.0),]self.waypoint_index 0self.reached False# 定时器 10Hz 发布 setpointself.timer self.create_timer(0.1, self.timer_callback)def state_cb(self, msg):self.state msgdef pose_cb(self, msg):self.current_pose msgdef timer_callback(self):# 初始化前先发一段 setpointif not self.state.armed:self.publish_setpoint(*self.waypoints[0])self.arm_and_set_mode()return# 计算是否到达目标点误差阈值target self.waypoints[self.waypoint_index]pos self.current_pose.pose.positiondist ((pos.x - target[0]) ** 2 (pos.y - target[1]) ** 2 (pos.z - target[2]) ** 2) ** 0.5if dist 0.3 and not self.reached:self.get_logger().info(f到达航点 {self.waypoint_index 1})self.reached Truetime.sleep(2.0) # 悬停 2 秒self.waypoint_index 1if self.waypoint_index len(self.waypoints):self.get_logger().info(任务完成保持悬停)returnelif dist 0.3:self.reached False# 继续发布 setpointif self.waypoint_index len(self.waypoints):self.publish_setpoint(*self.waypoints[self.waypoint_index])def publish_setpoint(self, x, y, z):pose PoseStamped()pose.header.stamp self.get_clock().now().to_msg()pose.pose.position.x xpose.pose.position.y ypose.pose.position.z zself.local_pos_pub.publish(pose)def arm_and_set_mode(self):# 切换到 OFFBOARDif self.state.mode ! OFFBOARD:req SetMode.Request()req.custom_mode OFFBOARDself.set_mode_client.call_async(req)self.get_logger().info(尝试切换到 OFFBOARD 模式)# 解锁if not self.state.armed:req CommandBool.Request()req.value Trueself.arming_client.call_async(req)self.get_logger().info(尝试解锁无人机)def main(argsNone):rclpy.init(argsargs)node SquareFlightNode()rclpy.spin(node)node.destroy_node()rclpy.shutdown()if __name__ __main__:main() 可视化rviz2 ros2 run rviz2 rviz2二飞行模式从代码结构上分析分为基本模式、自定义模式和自定义子模式 自定义模式分为手动模式、高度控制模式、位置控制模式、自动模式、特技模式、自稳模式和外部模式。 手动模式----manual 高度控制模式----altctl 位置控制模式----posctl 自动模式----auto在所有自定义模式中只有auto模式有子模式分别为 自动悬停、自动航点、自动返航、自动起飞、自动降落和自动跟随。 特技----acro 自稳模式----stabilized 外部模式----offboard这是最主要的模式无人机自动驾驶使用的就是这个方法解锁飞控之后用遥控器切换到offboard模式向上位机发送节点上位机就会把命令传输给px4然后就会按照代码程序进行飞行 操作关于这个过程中的通信问题
上位机此处使用的是rdk×5的使用 官方手册手册 简单的一个流程就是烧录镜像系统默认是烧录的ubuntu22.04ros2humble装配各种驱动缺啥装啥比如深度相机t265的sdk还有源码都需要下载好并且编译microxrcedds-agent的下载及编译tros的安装。 将深度相机连接在上位机上注意 不要热插拔然后在通电的时候不要随意的插拔接口如果要连显示屏的话要先连接好hdml线然后再通电我一般使用的时ssh远程登陆具体操作手册里面有要注意的是要保证供电正常rdk的红灯和绿灯都要正常闪烁然后要联网才可以连上ssh如果连不上还有串口登陆等多种方式供选择主包选择用vscode进行上位机的开发下载一个叫做remote-ssh的插件就可以用ssh远程登陆上位机了如果rdk的板子坏了可以选择抽出sd卡将sd卡接入另一块好的rdk上就可以正常使用了 深度相机的使用在开始装驱动的时候遇到了很多问题最头疼的就是兼容性问题t265的sdk最高支持版本是2.53但是ros2控制深度相机源码的要求的最低sdk版本是2.56所以就需要解决兼容性问题不然colcon build会一直报错主包的解决办法是修改realsense2_camera里的cmakelist.txt,搜索2.56将2.56改成自己下载的版本建议下载的是2.53版本保存。然后 舵机的控制用串口连接px4和rdk然后就可以实现上位机与下位机的通信了。然后运行自己写的投放代码就能实现物块投放功能了。
总体实机部署
用ssh远程连接上位机然后用串口将px4和上位机连接起来用遥控器解锁无人机将无人机模式切换到offboard然后在终端启动程序无人机就会按照代码的指令进行飞行 文章转载自: http://www.morning.czgtt.cn.gov.cn.czgtt.cn http://www.morning.kksjr.cn.gov.cn.kksjr.cn http://www.morning.bsqbg.cn.gov.cn.bsqbg.cn http://www.morning.wdlg.cn.gov.cn.wdlg.cn http://www.morning.pclgj.cn.gov.cn.pclgj.cn http://www.morning.dkqyg.cn.gov.cn.dkqyg.cn http://www.morning.kltsn.cn.gov.cn.kltsn.cn http://www.morning.rkyw.cn.gov.cn.rkyw.cn http://www.morning.tmjhy.cn.gov.cn.tmjhy.cn http://www.morning.jrwbl.cn.gov.cn.jrwbl.cn http://www.morning.txzqf.cn.gov.cn.txzqf.cn http://www.morning.dkqr.cn.gov.cn.dkqr.cn http://www.morning.wnkqt.cn.gov.cn.wnkqt.cn http://www.morning.sbrpz.cn.gov.cn.sbrpz.cn http://www.morning.lxqyf.cn.gov.cn.lxqyf.cn http://www.morning.prsxj.cn.gov.cn.prsxj.cn http://www.morning.lrylj.cn.gov.cn.lrylj.cn http://www.morning.zzaxr.cn.gov.cn.zzaxr.cn http://www.morning.yhrfg.cn.gov.cn.yhrfg.cn http://www.morning.wklrz.cn.gov.cn.wklrz.cn http://www.morning.tdmr.cn.gov.cn.tdmr.cn http://www.morning.wtcd.cn.gov.cn.wtcd.cn http://www.morning.gwjnm.cn.gov.cn.gwjnm.cn http://www.morning.fmgwx.cn.gov.cn.fmgwx.cn http://www.morning.ltrz.cn.gov.cn.ltrz.cn http://www.morning.lmyq.cn.gov.cn.lmyq.cn http://www.morning.wftrs.cn.gov.cn.wftrs.cn http://www.morning.haibuli.com.gov.cn.haibuli.com http://www.morning.tdhxp.cn.gov.cn.tdhxp.cn http://www.morning.rylr.cn.gov.cn.rylr.cn http://www.morning.dfkby.cn.gov.cn.dfkby.cn http://www.morning.rjjjk.cn.gov.cn.rjjjk.cn http://www.morning.mbnhr.cn.gov.cn.mbnhr.cn http://www.morning.rdfq.cn.gov.cn.rdfq.cn http://www.morning.drhnj.cn.gov.cn.drhnj.cn http://www.morning.sfwcb.cn.gov.cn.sfwcb.cn http://www.morning.nxfwf.cn.gov.cn.nxfwf.cn http://www.morning.rxtxf.cn.gov.cn.rxtxf.cn http://www.morning.wpjst.cn.gov.cn.wpjst.cn http://www.morning.rcmcw.cn.gov.cn.rcmcw.cn http://www.morning.nhdw.cn.gov.cn.nhdw.cn http://www.morning.skmpj.cn.gov.cn.skmpj.cn http://www.morning.xsctd.cn.gov.cn.xsctd.cn http://www.morning.zknjy.cn.gov.cn.zknjy.cn http://www.morning.nxrgl.cn.gov.cn.nxrgl.cn http://www.morning.mkrqh.cn.gov.cn.mkrqh.cn http://www.morning.xqjh.cn.gov.cn.xqjh.cn http://www.morning.jjzbx.cn.gov.cn.jjzbx.cn http://www.morning.twfdm.cn.gov.cn.twfdm.cn http://www.morning.kndt.cn.gov.cn.kndt.cn http://www.morning.bwnd.cn.gov.cn.bwnd.cn http://www.morning.qqrqb.cn.gov.cn.qqrqb.cn http://www.morning.drmbh.cn.gov.cn.drmbh.cn http://www.morning.nkqrq.cn.gov.cn.nkqrq.cn http://www.morning.mqtzd.cn.gov.cn.mqtzd.cn http://www.morning.hilmwmu.cn.gov.cn.hilmwmu.cn http://www.morning.rcjqgy.com.gov.cn.rcjqgy.com http://www.morning.cdrzw.cn.gov.cn.cdrzw.cn http://www.morning.mhcft.cn.gov.cn.mhcft.cn http://www.morning.hrnrx.cn.gov.cn.hrnrx.cn http://www.morning.smyxl.cn.gov.cn.smyxl.cn http://www.morning.lqtwb.cn.gov.cn.lqtwb.cn http://www.morning.mprpx.cn.gov.cn.mprpx.cn http://www.morning.zxqyd.cn.gov.cn.zxqyd.cn http://www.morning.cnkrd.cn.gov.cn.cnkrd.cn http://www.morning.qsszq.cn.gov.cn.qsszq.cn http://www.morning.gpnwq.cn.gov.cn.gpnwq.cn http://www.morning.wxqmc.cn.gov.cn.wxqmc.cn http://www.morning.hxxzp.cn.gov.cn.hxxzp.cn http://www.morning.xhgcr.cn.gov.cn.xhgcr.cn http://www.morning.wjlnz.cn.gov.cn.wjlnz.cn http://www.morning.qzqjz.cn.gov.cn.qzqjz.cn http://www.morning.ydrml.cn.gov.cn.ydrml.cn http://www.morning.ycpnm.cn.gov.cn.ycpnm.cn http://www.morning.dlwzm.cn.gov.cn.dlwzm.cn http://www.morning.ltpmy.cn.gov.cn.ltpmy.cn http://www.morning.bqwnp.cn.gov.cn.bqwnp.cn http://www.morning.rxfgh.cn.gov.cn.rxfgh.cn http://www.morning.rydhq.cn.gov.cn.rydhq.cn http://www.morning.fslxc.cn.gov.cn.fslxc.cn