【FreeRTOS浅尝01】ESP32上执行多任务
01 Why FreeRTOS?02 基础代码2.1 Task2.1.1 创建Task在ESP32上使用FreeRTOS很简单,只需要引入FreeRTOS 库即可。
Task 的基本结构是一个返回值为void,带一个 void* 指针的函数。
12345678void myTask(void *pt) { //setup task pass for(;;){ // loop task pass }}
并使用以下语句,创建任务(类似于示例化):
1xTaskCreate(task1,"Blink 23",1024,NULL,1,NULL);
可以使用以下语句,进行delay,从而调整loop的周期:
1vTaskDelay(1000);
2.1.2 点灯代码示例1234567891011121314151617181920212223242526272829303132333435363738394041424344void task1(void *pt) { pinMode(23, OUTPU ...
【ROS2笔记02】ROS2功能包构建工具colcon
01 功能包构建工具colcon安装colcon。colcon其实是一个功能包构建工具,这个工具用来做什么的呢?简单点说就是用来编译代码的。ROS2默认是没有安装colcon的,所以需要执行以下命令:
1sudo apt-get install python3-colcon-common-extensions
安装完成后,打开终端输入colcon即可看到其使用方法。
1colcon -h
02 如何使用 colconROS2与ROS1一样,编写程序都依赖工作空间(worksapce,简写ws)。
12345mkdir -p ws_helloworld/srccd ws_helloworld# 编译colcon build
上述命令执行完毕,在 ws_helloworld 目录下包含 build install log src 四个子级目录。
03 创建节点 Helloworld
[!note] ROS2编写程序流程亘古不变的5步:
创建功能包
编辑源文件
编辑配置文件
编译
执行
3.1 Helloworld C++3.1.1 创建功能包123cd ./ws_hellowo ...
【ROS2笔记01】ROS2安装和环境搭建
01 手动安装ROS2-humble本文参考”鱼香ROS”的安装文档:
链接:鱼香ROS-动手学ROS2 文档
安装环境建议:
Ubuntu 22.04
1.1 添加源1echo "deb [arch=$(dpkg --print-architecture)] https://repo.huaweicloud.com/ros2/ubuntu/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
1.2 添加源对应的密钥12sudo apt install curl gnupg2 -ycurl -s https://gitee.com/ohhuo/rosdistro/raw/master/ros.asc | sudo apt-key add -
1.3 更新并安装ROS21sudo apt update
上面步骤完成后,安装就变得非常的简单了,一行指令搞定:
1sudo apt install ros-humble-desktop
安 ...
【ROS2笔记00】总结
01 Why ROS2机器人是一个高度复杂的系统性实现,模块化分工是提高开发效率的最合适的策略。如何将各模块结合,那就需要一套通用的框架,即 Robot Operating System,以提升“可插拔”的功能模块的复用性。
ROS1 和 ROS2 的对比如下:
对比如上,如果觉得ROS2可以继续用。那么还有一个选择 ROS2 的理由:ROS1 都要被淘汰了,即将在2025年后停止维护。不用 ROS2 用什么?
另外需要注意的是,ROS虽然字面意思是机器人操作系统,但是它并非经典意义上的操作系统,更准确地讲ROS是一个 SDK (Software Development Kit),即软件开发工具包。
ROS2的精髓:
ROS2 系统架构:
02 框架1.1 环境搭建
ROS2安装与开发环境搭建(版本为humble,基于Ubuntu22.04):
功能包构建工具 colcon 的安装与使用:
1.2 通信机制1.3 Launch1.4 坐标变换1.5 可视化03 项目官方 Tutorial:https://github.com/ros/ros_tutorials
1git cl ...
【FastAPI-05】请求与响应2
上传文件是一个常见的需求
01 通过 File1.1 示例1.2 缺点上面的方法仅仅适合小文件上传,因为所有的数据会直接进入内存。这样子容易服务崩溃。
如果需要处理大文件,那么需要通过文件句柄处理。
02 通过 UploadFile
【FastAPI-04】请求与响应1
所谓的“请求与响应”是就是考虑 http 协议的请求与响应过程。HTTP报文本身是由多行数据构成的字文本,构成十分复杂,但是逻辑十分简单。
我们使用框架的原因就是简化封包的过程,而将精力放在如何处理数据的逻辑上。在框架下的“请求”就是如何通过框架获取请求的参数;在框架下的“响应”就是如何将要返回的数据交给框架处理。
01 路径参数路径参数一般用于 get 请求。
123http://example.com/xxy/p/110119120# 其中,`110119120`就是路径参数
1.1 示例123456789# 通过`{}`来标注变量@app01.get("articles/{id}")def get_article(id): print("id", id, type(id)) return{ "article_id": id }
1.2 注意顺序对比下列两个代码,代码的结果:
12345678910111213@app01.get("article ...
【FastAPI-02】路径操作修饰器
01 路径操作修饰器1.1 介绍1.2 操作get
post
put
delete
02 参数2.1 简单示例123@app.post()
2.2 修饰器参数
【FastAPI-01】Quick Start
01 QuickStart1.1 介绍1.2 实操编辑一个python文件 fastapiQuickStart.py
123456789101112from fastapi import FastAPIimport uvicornapp = FastAPI()@app.get("/")async def root(): return {"message": "Hello World"}if __name__ == "__main__": uvicorn.run("fastapiquickstart:app", host="127.0.0.1", port=8000, reload=True)
直接运行 .py 文件即可。
02 Tips永久挂起
1nohup uvicorn xxxx:app --host 127.0.0.1 --port 8012 &
查看nohup
1cat nohup.out
停止永久挂起服务
123 ...
【虚拟机】Ubuntu22.04的terminal打不开的Bug,修改语言设置可修复
01 Bug 背景Host: 联想小新16Pro 2023 (Ryzen 7 7735HS)
Host OS: Windows 11
VirtualBox: 7.0
Guest OS: Ubuntu22.04
(第一次使用AMD的处理器,且核显,简单记录一下配置;但是大概率问题出在virtualbox 7.0上)
起初安装的VM配置:CPU 8core,MEM 16GB,显存1MB。但是,安装虚拟机后,我发现虚拟机运行十分卡顿。于是,我调整配置为 CPU 6core,MEM 8GB,显存128MB,同时开启3D加速。(详见Part3)但是,最让人头疼的是进入桌面后,我发现系统自带的terminal打不开,其他常用应用都可以正常打开运行。尝试更新terminal无果后(好像不能更新),这成了个“玄学”问题。
02 解决方案打开设置,找到语言和区域(Region&Language),将语言设置为“汉语”(Chinese),将formats设置为“中国”(China),即可解决问题。很神奇,具体如下图。
更神奇的是,如果将语言和format都改成English(united sta ...

