- 博客(11)
- 收藏
- 关注
原创 Ardupilot启动流程简述以及主程序流程分析
从上述的流程来看,APM的启动流程是较为繁琐的,但是本质上仍然是不断调用调度器的loop函数,只不过是为了适配各种硬件,适配各种载具类型,不得不添加的为了方便移植和拓展的代码。总体来说,Ardupilot的开发团队还是十分专业强大的,个人认为在工程总体文件管理以及代码风格上要比PX4好很多,适合作为飞控软件学习以及硬件抽象层以及C++的学习的参考案例。
2025-01-15 22:45:17
858
原创 香橙派Zero3 全志H618 GPIO子系统
首先使用函数of_property_count_strings获取"pins"属性含有多少个字符串,也就是获取这一个pins含有多少个引脚,对于这个UART0,有"PH0" "PH1"两个引脚, 所以count=2。上面的pinctrl-sun50iw9.c是对于各个芯片的引脚的功能定义,而pinctrl-sunxi.c是对于总体的一个控制接口,是和平台无关的。gpio: 要申请的GPIO编号,一般是首先从设备树中通过of_get_named_gpio获取,此函数会返回这个GPIO的编号。
2024-09-16 12:21:34
1760
原创 香橙派Zero3 全志H618设备树插件编译
PS:对于orangepi config 命令实现对于系统的配置也是通过修改这个文件实现的,也就是对于很多外设例如IIC SPI等等,很多并不是默认加载的,在设置中开启之后于是在这个文件中“使能”对应的设备树插件,从而实现外设的加载控制。一个是对于原始版本的设备树很多人都去修改过,但是修改的部分无论如何都是无法正常加载,还有就是很多时候都是不建议修改原始设备树的,而且使用插件还是更为方便的。的设备树插件,可见对于overlays文件夹中的设备树插件并不是全部加载的,这里有一个进一步筛选的流程。
2024-09-15 17:21:28
2049
3
原创 gazebo导入STL文件
同时注意,对于导入的stl文件一般作为静止模型,若模型不是静止的,则应该去掉static属性或者将其设置为false。同时建模时的坐标系和实际Gazebo识别的坐标系一般也是一致的。主要包含对于模型的描述,这个文件相对来说不是很重要。model.stl(这个文件名称随意)所以如果尺寸不一致就缩放一千倍。对于输出stl时以m为单位即可。可见这里指定了stl文件的路径。这个边长大概是500m?
2024-09-10 22:05:50
1128
原创 Gazebo中自定义Protobuf Msg的发送与接收
本demo定义了一个简单的图像msg:建立文件:my_image.proto包含数据类型: uint32 bytes。
2024-09-10 15:33:48
494
原创 一文搞懂什么是 序列凸优化 SCP
序列凸优化(Sequential Convex Programming) SCP一种用于解决非线性优化问题的迭代方法。在这一方法中,原始的非线性问题被近似为一系列更易处理的凸优化子问题,每个子问题都相对原始问题有一个凸近似。SCP的基本思想是通过迭代求解这些凸子问题来逼近原始非线性问题的最优解。很多实际问题的目标函数和约束条件都是非线性的,而非线性函数往往带来非凸性,若将非线性函数在某个点进行近似,则可将问题转换为线性约束和线性目标函数的凸优化问题,从而更容易求解。
2024-08-04 12:34:17
2849
原创 GLOG(Google Logging Library) 基本使用
由于LOG等函数仅提供使用<<输出的方式,很多应用场景需要格式化输出。// 使用自定义函数进行日志记录return 0;例如这里通过log_info函数实现了和LOG(INFO)函数同样的功能并提供了格式化输出。// 使用 sprintf 格式化字符串// 使用 fmt::format (如果你使用了 fmt 库)return 0;
2024-07-22 10:23:53
1943
原创 ESP32实现类似Linux的终端进行快速调试开发
主要包含三个部分:1.命令定义2.命令参数解析3.命令回调函数// 定义命令的参数//arg_str1表示这个参数是必须的 用户必须提供//arg_str0表示这个参数是可选参数 用户可以不提供//使用srg_end表示参数表结束 里面的2表示前面的参数的个数// 组合参数和结束符 按照实际输入顺序// ESP-IDF注册命令.command = "my_command",//命令名称(到时候输入的命令)
2024-07-21 20:37:03
875
1
空空如也
ESP8266开发方式
2022-10-26
TA创建的收藏夹 TA关注的收藏夹
TA关注的人