pixhawk 整体架构的认识

2023-05-16

此篇blog的目的是对px4工程有一个整体认识,对各个信号的流向有个了解,以及控制算法采用的控制框架。

PX4自动驾驶仪软件可分为三大部分:实时操作系统、中间件和飞行控制栈。

1.NuttX实时操作系统
提供POSIX-style的用户操作环境(如printf(), pthreads,/dev/ttyS1,open(),write(),poll(),ioctl()),进行底层的任务调度。
2.PX4中间件
PX4中间件运行于操作系统之上,提供设备驱动和一个微对象请求代理(micro object request broker,uORB)用于驾驶仪上运行的单个任务之间的异步通信。Px4被3DR开源后,整个代码结构被⼤改,原先的系统被摒弃,进而采用Nuttx,但是核心思想没变-为了简化开发而采用牺牲部分效率的消息传递机制,这是Px4 与ArduPilot 最本质的差别。
3.PX4飞行控制栈
飞行控制栈可以使用PX4的控制软件栈,也可以使用其他的控制软件,如APM:Plane、APM:Copter,但必须运行于PX4中间件之上。

此部分又可分为

决策导航部分:根据飞行器自身安全状态和接收到的命令,决定工作于什么模式,下一步应该怎么做。

位置姿态估计部分:根据传感器得到自身的位置和姿态信息,此部分算法含金量最高,算法也相当多。

位置姿态控制部分:根据期望位置和姿态设计控制结构,尽可能快、稳的达到期望位置和姿态。

控制器输出部分:mixer和执行器,pwm限幅。





算法在Firmware/src/modules,驱动在Firmware/src/drivers

px4原生固件模块列表:

系统命令程序

mavlink –通过串口发送和接收mavlink信息

sdlog2 –保存系统日志/飞行数据到SD卡

tests –测试系统中的测试程序

top –列出当前的进程和CPU负载

uORB – 微对象请求代理器-分发其他应用程序之间的信息

驱动

mkblctrl–blctrl电子模块驱动

esc_calib –ESC的校准工具

fmu –FMU引脚输入输出定义

gpio_led –GPIO LED驱动

gps –GPS接收器驱动

pwm –PWM的更新速率命令

sensors –传感器应用

px4io –px4io驱动

uavcan –uavcan驱动

飞行控制的程序

飞行安全和导航

commander –主要飞行安全状态机

navigator –任务,失效保护和RTL导航仪

估计姿态和位置

attitude_estimator_ekf –基于EKF的姿态估计

ekf_att_pos_estimator –基于EKF的姿态和位置估计

position_estimator_inav–惯性导航的位置估计

multirotor姿态和位置控制器

mc_att_control–multirotor姿态控制器

mc_pos_control –multirotor位置控制器

fixedwing姿态和位置控制器

fw_att_control –固定翼飞机的姿态控制

fw_pos_control_l1 –固定翼位置控制器

垂直起降姿态控制器

vtol_att_control –垂直起降姿态控制器

3.1决策

3.1.1 任务决策。以任务为导向,任务决策主要决定多旋翼下一步“去哪儿”,进一步,需要规划路径,使得整个过程能满足诸如:飞向航路点并沿航线飞,以及飞向航路点并避障等要求。
3.1.2 健康管理和失效保护。以安全为导向, 失效保护主要决定多旋翼下一步“去哪儿”。多旋翼飞行器在飞行前或飞行中,可能会发生通信故障、传感器失效和动力系统异常等,这些意外会直接导致控制任务无法完成。这一部分包括安全问题的介绍、机载设备的健康评估、机载设备的健康监测、失效后的保护建议。

传感器校正在commander里面

对应的程序在Firmware/src/modules/commander和Firmware/src/modules/navigator

完成任务模式切换,同时考虑电池电量、GPS等传感器是否正常工作等信息。


commander

orb_publish(ORB_ID(home_position), homePub, &home);
orb_publish(ORB_ID(offboard_mission), mission_pub, &mission);
orb_publish(ORB_ID(vehicle_control_mode), control_mode_pub, &control_mode);
orb_publish(ORB_ID(vehicle_status), status_pub, &status);
orb_publish(ORB_ID(actuator_armed), armed_pub, &armed);
orb_publish(ORB_ID(vehicle_command_ack), command_ack_pub, &command_ack);

orb_copy(ORB_ID(vehicle_status), state_sub, &state);
orb_copy(ORB_ID(parameter_update), param_changed_sub,&param_update;
orb_copy(ORB_ID(manual_control_setpoint), sp_man_sub, &sp_man);
orb_copy(ORB_ID(offboard_control_mode), offboard_control_mode_sub, &offboard_control_mode);
orb_copy(ORB_ID(telemetry_status), telemetry_subs[i], &telemetry);
orb_copy(ORB_ID(sensor_combined), sensor_sub, &sensors);
orb_copy(ORB_ID(differential_pressure), diff_pres_sub, &diff_pres);
orb_copy(ORB_ID(system_power), system_power_sub, &system_power);
orb_copy(ORB_ID(safety), safety_sub, &safety);
orb_copy(ORB_ID(vtol_vehicle_status), vtol_vehicle_status_sub, &vtol_status);
orb_copy(ORB_ID(vehicle_global_position), global_position_sub, &gpos);
orb_copy(ORB_ID(vehicle_local_position), local_position_sub, &local_position);
orb_copy(ORB_ID(vehicle_attitude), attitude_sub, &attitude);
orb_copy(ORB_ID(vehicle_land_detected), land_detector_sub, &land_detector);
orb_copy(ORB_ID(battery_status), battery_sub, &battery);
orb_copy(ORB_ID_VEHICLE_ATTITUDE_CONTROLS, actuator_controls_sub, &actuator_controls);
orb_copy(ORB_ID(subsystem_info), subsys_sub, &info);
orb_copy(ORB_ID(position_setpoint_triplet), pos_sp_triplet_sub, &pos_sp_triplet);
orb_copy(ORB_ID(vehicle_gps_position), gps_sub, &gps_position);
orb_copy(ORB_ID(mission_result), mission_result_sub, &mission_result);
orb_copy(ORB_ID(geofence_result), geofence_result_sub, &geofence_result);
orb_copy(ORB_ID(vehicle_command), cmd_sub, &cmd);
navigator

orb_publish(ORB_ID(position_setpoint_triplet), _pos_sp_triplet_pub, &_pos_sp_triplet);
orb_publish(ORB_ID(mission_result), _mission_result_pub, &_mission_result);
orb_publish(ORB_ID(geofence_result), _geofence_result_pub, &_geofence_result);
orb_publish(ORB_ID(vehicle_attitude_setpoint), _att_sp_pub, &_att_sp);

orb_copy(ORB_ID(vehicle_global_position), _global_pos_sub, &_global_pos);
orb_copy(ORB_ID(vehicle_gps_position), _gps_pos_sub, &_gps_pos);
orb_copy(ORB_ID(sensor_combined), _sensor_combined_sub, &_sensor_combined);
orb_copy(ORB_ID(home_position), _home_pos_sub, &_home_pos);
orb_copy(ORB_ID(navigation_capabilities), _capabilities_sub, &_nav_caps);
orb_copy(ORB_ID(vehicle_status), _vstatus_sub, &_vstatus)
orb_copy(ORB_ID(vehicle_control_mode), _control_mode_sub, &_control_mode) 
orb_copy(ORB_ID(parameter_update), _param_update_sub, &param_update);
orb_copy(ORB_ID(vehicle_command), _vehicle_command_sub, &cmd);

3.2位置估计和姿态估计

此部分需要大量理论知识,暂时还比较欠缺。

sensors是对陀螺仪、加速度计地磁计的一个处理

sensors

orb_publish(ORB_ID(airspeed), _airspeed_pub, &_airspeed);
orb_publish(ORB_ID(differential_pressure), _diff_pres_pub, &_diff_pres);
orb_publish(ORB_ID(battery_status), _battery_pub, &_battery_status);
orb_publish(ORB_ID(rc_channels), _rc_pub, &_rc);
orb_publish(ORB_ID(manual_control_setpoint), _manual_control_pub, &manual);
orb_publish(ORB_ID(actuator_controls_3), _actuator_group_3_pub, &actuator_group_3);
orb_publish(ORB_ID(sensor_combined), _sensor_pub, &raw);

orb_copy(ORB_ID(sensor_accel), _accel_sub[i], &accel_report);
orb_copy(ORB_ID(sensor_gyro), _gyro_sub[i], &gyro_report);
orb_copy(ORB_ID(sensor_mag), _mag_sub[i], &mag_report);
orb_copy(ORB_ID(sensor_baro), _baro_sub[i], &_barometer);
orb_copy(ORB_ID(differential_pressure), _diff_pres_sub, &_diff_pres);
orb_copy(ORB_ID(vehicle_control_mode), _vcontrol_mode_sub, &vcontrol_mode);
orb_copy(ORB_ID(parameter_update), _params_sub, &update);
orb_copy(ORB_ID(rc_parameter_map), _rc_parameter_map_sub, &_rc_parameter_map);
orb_copy(ORB_ID(input_rc), _rc_sub, &rc_input);

ardrone_interface
orb_publish(ORB_ID(actuator_outputs), pub, &outputs);
orb_copy(ORB_ID_VEHICLE_ATTITUDE_CONTROLS, actuator_controls_sub, &actuator_controls);
#define ORB_ID_VEHICLE_ATTITUDE_CONTROLS    ORB_ID(actuator_controls_0)
orb_copy(ORB_ID(actuator_armed), armed_sub, &armed);

batt_smbus
orb_publish(_batt_orb_id, _batt_topic, &new_report);
orb_copy(ORB_ID(battery_status), sub, &status)

bma180
orb_publish(ORB_ID(sensor_accel), _accel_topic, &report);

GPS
orb_publish(ORB_ID(vehicle_gps_position), _report_gps_pos_pub, &_report_gps_pos);
orb_publish(ORB_ID(satellite_info), _report_sat_info_pub, _p_report_sat_info);

hmc5883
orb_publish(ORB_ID(sensor_mag), _mag_topic, &new_report);

hott
orb_publish(ORB_ID(esc_status), _esc_pub, &esc);
orb_copy(ORB_ID(sensor_combined), _sensor_sub, &raw);
orb_copy(ORB_ID(battery_status), _battery_sub, &battery);
orb_copy(ORB_ID(airspeed), _airspeed_sub, &airspeed);
orb_copy(ORB_ID(esc_status), _esc_sub, &esc);

l3gd20
orb_publish(ORB_ID(sensor_gyro), _gyro_topic, &report);

lsm303d
orb_publish(ORB_ID(sensor_accel), _accel_topic, &accel_report);
orb_publish(ORB_ID(sensor_mag), _mag->_mag_topic, &mag_report);

mpu6000
orb_publish(ORB_ID(sensor_accel), _accel_topic, &arb);
orb_publish(ORB_ID(sensor_gyro), _gyro->_gyro_topic, &grb);

mpu9250
orb_publish(ORB_ID(sensor_accel), _accel_topic, &arb);
orb_publish(ORB_ID(sensor_gyro), _gyro->_gyro_topic, &grb);

ms5611
orb_publish(ORB_ID(sensor_baro), _baro_topic, &report);

pwm_out_sim
orb_publish(ORB_ID(actuator_outputs), _outputs_pub, &outputs);
orb_copy(_control_topics[i], _control_subs[i], &_controls[i]);
actuator_controls_s _controls[actuator_controls_s::NUM_ACTUATOR_CONTROL_GROUPS];
orb_copy(ORB_ID(actuator_armed), _armed_sub, &aa);

px4flow
orb_publish(ORB_ID(optical_flow), _px4flow_topic, &report);
orb_publish(ORB_ID(distance_sensor), _distance_sensor_topic, &distance_report);
orb_publish(ORB_ID(subsystem_info), pub, &info);

px4fmu
orb_publish(ORB_ID(actuator_outputs), _outputs_pub, &outputs);
orb_publish(ORB_ID(safety), _to_safety, &safety);
orb_publish(ORB_ID(input_rc), _to_input_rc, &_rc_in);
orb_copy(_control_topics[i], _control_subs[i], &_controls[i]);
orb_copy(ORB_ID(actuator_armed), _armed_sub, &_armed);
orb_copy(ORB_ID(parameter_update), _param_sub, &pupdate);

px4io
orb_publish(ORB_ID(vehicle_command), pub, &cmd);
orb_publish(ORB_ID(safety), _to_safety, &safety);
orb_publish(ORB_ID(battery_status), _to_battery, &battery_status);
orb_publish(ORB_ID(servorail_status), _to_servorail, &_servorail_status);
orb_publish(ORB_ID(input_rc), _to_input_rc, &rc_val);
orb_publish(ORB_ID(actuator_outputs), _to_outputs, &outputs);
orb_publish(ORB_ID(multirotor_motor_limits), _to_mixer_status, &motor_limits);
orb_copy(ORB_ID(actuator_armed), safety_sub, &safety);
orb_copy(ORB_ID(vehicle_command), _t_vehicle_command, &cmd);
orb_copy(ORB_ID(parameter_update), _t_param, &pupdate);
orb_copy(ORB_ID(actuator_controls_0), _t_actuator_controls_0, &controls);
orb_copy(ORB_ID(actuator_controls_x), _t_actuator_controls_0, &controls);
orb_copy(ORB_ID(vehicle_control_mode), _t_vehicle_control_mode, &control_mode);

stm32(adc)
orb_publish(ORB_ID(system_power), _to_system_power, &system_power);

3.3位置控制和姿态控制





3.4pwm输出

3.4.1mixer

官方地址(已失效)对应的内容

混合器输出定义控制器的输出是如何映射到电机和伺服输出。所有内置mixer文件位于ROM文件系统的/etc/mixers目录,并编译成固件。Mixer是一组独立的映射器,从控制读入写入,写入执行器输出。一个模块,结合一组根据预先定义的规则和参数的输入,产生一组输出。


(1)语法:
Mixer的定义是文本文件,用一个大写字母后跟一个冒号开头的行。所有其他的行都会被忽略,这意味着解释性文本可与定义相混合。每个文件可以定义多个Mixer。由一个Mixer产生的执行器输出的数量是特定的。
起始形式如下:
<tag>:<mixer arguments>
标签选择Mixer的类型,“M”为一种简单求和Mixer,“R”为多转子(多旋翼)Mixer等。
一个空的Mixer不消耗控制,并产生一个执行机构的输出,其值始终为零。通常一个空的Mixer被用作占位符Mixer的集合中,以实现制动器输出的特定模式。
空的Mixer定义形式:
Z:
 
(2)简单的Mixer
一个简单的Mixer的开始:
M: <control count>
O: <-ve scale> <+ve scale> <offset> <lower limit> <upper limit>

如果为零,则输出就为零,Mixer输出的固定值是受限制的。
第二行定义了输出输出定标器和标量参数。虽然计算作为浮点运算进行的,存储在所述定义文件中的值是由10000倍缩放,-0.5偏移被编码为-5000.
 
该定义继续描述控制输入和缩放项:
S: <group> <index> <-ve scale> <+ve scale> <offset> <lower limit> <upper limit>
这些值定义了控制组从那些定标器中读取数据,和该组内的值的偏移。是特定于设备读取Mixer的定义。
 
当用于混合车辆的控制,混合器组0是车辆姿态控制组,索引值从0到3通常分别是:roll,pitch,yaw,thrust。
 
具体详解见:https://pixhawk.org/dev/mixing?s[]=mixer
 
(3)多旋翼Mixer
在多旋翼混合器结合四个控制输入(roll,pitch,yaw,thrust)为一组用于驱动电机速度控制器制动输出。
Mixer定义的形式:
R: <geometry> <roll scale> <pitch scale> <yaw scale> <deadband>
参数解释:
    机械:包括quad(4x,4+),hex(6x,6+),octo(8x,8+)
    单独的roll,pitch和yaw控制因子
    电机输出死区  



如果您觉得此文对您的发展有用,请随意打赏。 
您的鼓励将是笔者书写高质量文章的最大动力^_^!!


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pixhawk 整体架构的认识 的相关文章

  • Pixhawk之姿态解算篇(4)_补充篇

    一 开篇 大家期待已久的第四篇来了 xff0c 但是本篇可能比较水啊 见谅 首先 xff0c 上一周没有什么收获 xff0c 虽然看了不少的论文 xff0c 但是却没有什么质的飞越 看的论文都是关于姿态解算的 xff0c 用的算法大部分也都
  • pixhawk飞控接口含义

    官方文档 xff1a https docs px4 io v1 9 0 en flight controller pixhawk html 1 spektrum DSM receiver2 xff0c 3 远程通信口 xff0c 接数传4
  • Pixhawk ulog飞行日志分析

    在python下安装pyulog xff0c 在 ulog文件目录下输入ulog2csv即可将ulog转化为csv形式输出 ulog文件的保存时间 43 8即为飞行实际的时间 timestamp为时间戳 xff0c 除以10 6后单位为秒
  • pixhawk似乎也是用的四环串级

    pixhawk似乎也是用的四环串级 https blog csdn net sinat 16643223 article details 106973618 阿木社区的pixhawk的课里 https bbs amovlab com plu
  • PIXHAWK机架类型的的设置选择与电机通道顺序设置

    1 共轴直升机 main1 左侧斜盘电机 xff0c 控制俯仰 main2 xff1a 左侧斜盘电机 xff0c 控制滚转 main3 xff1a 上面旋翼 xff0c 逆时针旋转 main4 xff1a 下面旋翼 xff0c 顺时针旋转
  • 在PX4下更换pixhawk的IMU

    写在前面 出于一些原因 xff0c 这篇文章不给出具体的源码 xff0c 因此博主试着将这篇写成了一篇科普性质的文章 xff0c 如果你认真读的话 xff0c 应该会有收获的 为什么要更换pixhawk的传感器 xff1f 大多数的玩家拿到
  • apm、pixhawk、pixhack飞控航拍后pos数据提取流程

    apm pixhawk pixhack飞控pos数据提取流程 下载日志 打开log分析 区域omap地图验证 验证之前将log文件使用mission planner进行kml验证 筛选相机pos坐标 xff08 选择CAM xff09 很重
  • PIXHAWK添加自定义消息存储到SD卡

    四旋翼调试阶段总会出现很多难以预见的现象 xff0c 这时为了找到所出问题的原因 xff0c 就需要获得原始相关数据进行分析 xff0c pixhawk代码提供了记录飞行日志的功能 xff0c 能够将飞行中的重要数据存入SD卡中 xff0c
  • Pixhawk-开篇

    Pixhawk 开篇 互联网上关于介绍Pixhawk的文章特别多 有心人自己去网上查看吧 本篇文章未完 可能会有更新 不足请指出 QQ 4862879 说重点 Pixhawk指的是一款开源的硬件 下图的那个 是把原来的PX4FMU 43 P
  • pixhawk飞控小车倒车_Pixhawk 系列

    Pixhawk 系列 Pixhawk opens new window is an independent open hardware project providing readily available low cost and hig
  • PX4/Pixhawk---高速成为开发人员(Windows)

    1 高速成为开发人员新手教程 xff08 翻译 xff09 官方 1 1 编译环境之版本号控制系统 xff08 1 xff09 安装 MSysGIT 安装完毕后 xff0c 配置GIT 安装注意 安装过程中除了以下一步外 xff0c 其它的
  • pixhawk PX4FMU和PX4IO最底层启动过程分析

    首先 xff0c 大体了解PX4IO 与PX4FMU各自的任务 PX4IO STM32F100 为PIXHAWK 中专用于处理输入输出的部分 输入为支持的各类遥控器 PPM SPKT DSM SBUS 输出为电调的PWM 驱动信号 它与PX
  • pixhawk mc_pos_control.cpp源码解读

    好久没跟新blog了 xff0c 这段时期边调试边看程序 xff0c 所以有点慢 要开始着手调试了 这篇blog是顺着上一篇pixhawk 整体架构的认识写的 xff0c 接下来看程序的话 xff0c 打算把各个功能模块理解一遍 xff0c
  • pixhawk position_estimator_inav.cpp思路整理及数据流

    写在前面 xff1a 这篇blog主要参考pixhawk的高度解算算法解读 xff0c 并且加以扩展 xff0c 扩展到其他传感器 xff0c 其实里面处理好多只是记录了流程 xff0c 至于里面实际物理意义并不是很清楚 xff0c 也希望
  • pixhawk: px4代码初学分析:追溯电机控制--pwm输出

    追溯电机控制 pwm输出 正常工作状态下pwm输出过程简述 xff1a 其他状态下pwm输出 xff1a 正常工作状态下pwm输出过程简述 xff1a 姿态解算部分得出姿态控制量通过px4io cpp把姿态控制量发送给IOIO串口读取姿态控
  • PX4/Pixhawk---uORB深入理解和应用

    The Instructions of uORB PX4 Pixhawk 软件体系结构 uORB 主题发布 主题订阅 1 简介 1 1 PX4 Pixhawk的软件体系结构 PX4 Pixhawk的软件体系结构主要被分为四个层次 xff0c
  • pixhawk源码下载与编译

    今天和同学在一起讨论发现自己还在看的pixhawk源码的版本好低啊 xff0c 就下个最新的吧 想起有些人还不会下载源码 xff0c 以及用什么工具查看 源码的下载我用的是git shell工具下的 xff0c px4的github网址是h
  • [pixhawk笔记]6-uORB流程及关键函数解析

    本文中将结合代码 文档及注释 xff0c 给出uORB执行流程及关键函数的解析 xff0c 由于uORB的机制实现较为复杂 xff0c 所以本文主要学习如何使用uORB的接口来实现通信 回到上一篇笔记中的代码 xff1a include l
  • 我设计了一款开源飞控,性能远超Pixhawk,运行APM固件-怒飞垂云

    从2009年到现在 xff0c 我从事无人机研发将近11年了 xff0c 中途设计过很多飞控 xff0c 有闭源的无人飞艇飞控 大型固定翼无人机飞控 xff0c 也有在开源飞控Pixhawk基础上修改的飞控 xff0c 如今 xff0c 基
  • DroneKit教程(二):控制Pixhawk示例

    DroneKit教程 xff08 二 xff09 xff1a 控制Pixhawk示例 本篇提供了一个简单的示例 xff0c 配以详细的注释说明不同语句的功能 xff0c 希望能给各位一个总体的框架和印象 该示例文件改写自DroneKit的官

随机推荐

  • 初识ESP8266(二)————搭建网络服务器实现远程控制

    一 实验介绍 8266搭建网络服务器 xff0c 通过同一wifi信号下的终端访问ESP8266IP地址 xff0c 对开发板进行控制 二 代码 1 esp8266 server begin 作用 xff1a 启动网络服务 xff0c 搭建
  • 关于舵机的漂移与不听指挥乱动的问题

    在电赛E题中控制二维云台中出现了两个问题 xff0c 也是好不容易才发现原因然后解决的 一 舵机不听指挥乱动 没有与单片机共地 舵机有三条线 xff0c 分别是正负极和信号线 用来输入PWM信号 xff0c 因为舵机所需要的驱动电压比较大
  • 蓝桥杯嵌入式(STM32F103RBT6)备赛手册(一)

    文章目录 一 基础篇一 点亮LED二 驱动蜂鸣器三 Systick定时器四 定时器五 独立按键 三行代码消抖六 IIC协议七 LCD显示八 串口接收与发送九 ADC采样十 RTC时钟十一 PWM输出及输入捕获 一 基础篇 一 点亮LED 由
  • Asahi Linux的Alpha 版本已匹配Mac 设备

    导读Asahi Linux 是一个旨在将 Linux 移植到配备 Apple Silicon 芯片 Mac 设备上的项目 xff0c 项目的目标不仅仅是让 Linux 能够在这些设备上运行 xff0c 而是要将它打磨到可以用作日常操作系统的
  • Linux的优缺点

    导读Linux 是一个流行词 xff0c 你到处都能听到与 Linux 相关的内容 人们在技术论坛上讨论它 Linux 是课程中的一部分 xff1b 你最喜欢的 YouTube 技术主播在兴奋地展示构建他们的 Linux 内核 xff1b
  • 不敢想象!Vim使用者的“大脑”竟是这样

    原始状态 我曾经观看过小提琴家非常有激情地拉弦演奏 xff0c 我有了这种想法 xff1a 也许我投入到文本编辑器中的脑细胞数量和他为投入所喜好的乐器的演奏中差不多吧 我还有种奇异的想象 xff0c 当他独奏的时候 xff0c 脑中的核磁共
  • Windows 10的子系统不是非Ubuntu不可

    Ubuntu 的制造商 Canonical 早已和微软进行合作 xff0c 让我们体验了极具争议的 Bash on Windows 外界对此也是褒贬不一 xff0c 许多 Linux 重度用户则是质疑其是否有用 xff0c 以及更进一步认为
  • 绝对空前!!!互联网史上的最大ddos攻击惊艳登场

    美国遭遇史上最大黑客攻击 xff0c 知名网站全部瘫痪 全世界一半的网络被黑客攻陷 xff0c 大网站无一幸免 就在 xff08 10月22日 xff09 xff0c 美国早上我们见证了互联网建立以来的最大ddos攻击 xff0c twit
  • snprintf()函数探讨

    printf sprintf snprintf 区别 先贴上其函数原型 printf const char format 格式化输出字符串 xff0c 默认输出到终端 stdout sprintf char dest const char
  • 3D创作元素将入住下一代Windows 10和HoloLens中

    新 Windows 10 将会带来崭新的 3D 特性 xff0c 任何用户都可以通过内置的工具来制作发布有关 3D 增强现实 AR 和混合现实 mixed reality 的游戏和素材 北京时间 10 月 26 号晚 10 点 xff0c
  • Chrome 又不支持 HTTP/2 网站的原因

    导读昨晚偶尔清理 Chrome 插件时发现我的 HTTP 2 and SPDY indicator 插件好像好久没亮了 这个插件在你访问到一个支持 HTTP 2 xff08 或之前的 SPDY 协议 xff09 的网站时会点亮 xff0c
  • Win10/11后:Linux启动AMD处理器fTPM出现同款间歇性卡顿

    导读早在2022年3月 xff0c AMD就曾确认 xff0c 在Win10与Win11系统下 xff0c 开启锐龙处理器的fTPM xff0c 将可能导致系统出现间歇性的卡顿 死机等情况 xff0c 并发布BIOS更新进行了修复 但出乎预
  • 12 个好用且不花钱的网络监控工具

    导读要让一个多级机构运行良好而且平稳的话 xff0c 一个非常艰巨重大的任务就是做好网络管理 每个机构都配备专门的人员 xff0c 即网络分析师 xff0c 来进行网络管理 他们 使用了 许多工具来监视网络的运行状况 xff0c 并查看网络
  • Solus Linux 改变发展方向

    导读Solus 是一个独立开发的 Linux 发行版 xff0c 它的一大特色就是 Solus 自创的 Budgie 桌面环境 xff08 最新的 Fedora 也已经新增了这个桌面环境 xff09 xff0c 当然用户也可以选择其他常见的
  • 虚拟机与主机互传文件方法分享

    现在虚拟机的使用已经非常普及 xff0c 无论新手学习 xff0c 还是运维工程师搭建虚拟化平台 xff0c 都会使用到虚拟机 对个人用户来说 xff0c 非常方便就能搭建很多操作系统进行学习 xff1b 对企业用户来说更是降低了服务器的硬
  • RethinkDB成为Linux基金会的一员

    导读日前 xff0c RethinkDB项目有了新的动态 Cloud Native Computing基金会 xff08 CNCF xff09 宣布它购买了NoSQL分布式文件存储数据库RethinkDB的源代码版权 xff0c 将授权协议
  • STM32 汇编程序——串口输出 Hello world

    STM32 汇编程序 串口输出 Hello world 一 USART介绍二 Keil项目 xff08 一 xff09 新建项目 xff08 二 xff09 Hello s代码 xff08 三 xff09 编译生成hex文件 三 电路接法四
  • C语言笔记-头文件

    复习 xff1a 1 输出缓冲区 程序输出的数据并没有立即写入 文件 xff0c 而是先存储到输出缓冲区 xff0c 当满足一定条件时才写入文件中 xff1a 1 遇到 39 n 39 2 遇到输入语句 3 缓冲区满4k 4 程序结束 5
  • 不使用strcat()的字符串连接

    问题描述 在不使用strcat 的前提下 xff0c 实现两个字符串的连接 输入形式 以 39 39 为结束符的两行字符串 输出形式 将第一行字符串连接到第二行字符串 xff0c 然后打印输出 样例输入 abc def 样例输出 defab
  • pixhawk 整体架构的认识

    此篇blog的目的是对px4工程有一个整体认识 xff0c 对各个信号的流向有个了解 xff0c 以及控制算法采用的控制框架 PX4自动驾驶仪软件 可分为三大部分 xff1a 实时操作系统 中间件和飞行控制栈 1 NuttX实时操作系统 提