chore: add 5 5.1 5.2 5.3
This commit is contained in:
FallenYing
2023-08-13 22:38:33 +08:00
parent 97c245875a
commit 2d9163bc19
4 changed files with 28 additions and 29 deletions

View File

@@ -6,7 +6,7 @@
而在此栏目中,我们将讲述相关操作系统在嵌入式上的应用,让你的嵌入式产品更加的智慧!(当然裸机并不一定就比带操作系统的嵌入式产品差,只是应用方向不同或者说有时候需要考虑产品的成本问题)
Ps本栏目只例举几个目前开发工程中常见的操作系统的学习与开发<strong>具体的移植过程可 web 或者自行探索-相信我,出色的移植能力是嵌入式开发者必不可少的。</strong>
Ps本栏目只例举几个目前开发工程中常见的操作系统的学习与开发<strong>具体的移植过程可 web 或者自行探索 - 相信我,出色的移植能力是嵌入式开发者必不可少的。</strong>
## RTOS
@@ -51,7 +51,6 @@ int main{
1、b 站正点原子官方 FreeRTOS 教学(在今年有做全面的更新,比之前讲的更为清晰,难得的优秀入门视频)
<Bilibili bvid='BV19g411p7UT'/>
2、FreeRTOS 官网(官网往往是最适合学习的地方)[www.freertos.org](http://www.freertos.org)
@@ -74,13 +73,13 @@ int main{
此时应用层则有个很重要的概念-Master管理者其负责管理整个系统的正常运行。如果我们需要获得比较成熟的相关领域开源机器人包按以往的操作必将是进行一次比较复杂的移植你需要考虑各种因素比如硬件支持、与其他移植包是否冲突等等。<strong>但是在 ROS 系统中引入了功能包的概念,你可以在 ROS 社区中下载相关版本(与你的 ROS 版本相匹配的机器人应用功能包完成一次非常简单的移植过程CV你不需要关注其内部的具体运行机制只需关注接口的定义与使用规则便可进行相应的二次开发在 ROS 中你需要关注的是相关节点之间的关系,可以通过 rqt_graph 获取清晰的节点图),相当于给你做好了一个跟机器人开发有关的高集成度</strong><strong>SDK</strong><strong>平台。</strong>(当然如果你感兴趣的话可以做一定的了解,但这将牵扯到相关内容的庞大体系,比如如果你想了解自主导航是如何运行的,你首先需要了解 SLAM 算法的运行机制以及激光雷达或者相关深度摄像机的运用,然后你需要了解什么是深度信息什么是里程计信息,为什么可以表示机器人的位置信息,要如何进行一些相关的位置信息修正,然后 bulabula。<strong>以笔者自身的学习经历而言,学习相关的理论基础体系,将对你的二次开发有极大的帮助,而不会造成盲目使用接口的情况</strong>
根据以上我讲述的相关内容可知:<strong>ROS 系统的优点在于,你能将社区里的有关机器人的开发模块集大成于一身,并且通过 ROS 与控制板通讯(此时类似于 STM32 的裸机主控便变成了控制板-用于接收 ROS 的调控完成相应电机、舵机的控制,或者完成一定的例如 oled 显示的简单任务),从而完成 ROS 系统内部开源算法对整个机器人的控制。</strong>
根据以上我讲述的相关内容可知:<strong>ROS 系统的优点在于,你能将社区里的有关机器人的开发模块集大成于一身,并且通过 ROS 与控制板通讯(此时类似于 STM32 的裸机主控便变成了控制板 - 用于接收 ROS 的调控完成相应电机、舵机的控制,或者完成一定的例如 oled 显示的简单任务),从而完成 ROS 系统内部开源算法对整个机器人的控制。</strong>
以下我简单介绍一下 ROS 的基础通讯方式:
在裸机开发中我们的通讯不论是蓝牙、WiFi 还是最基础的串口通讯)本质上都来自于串口中断,也就是说裸机开发引入了 ISR 来处理相应的数据接收。ROS 通讯中同样需要这样的函数来完成对目标数据的处理,而在 ROS 中我们称之为回调函数。
我们以话题通讯机制来做简要介绍,在此通讯中需要有两个节点,一个 Publisher发布者以及一个 Listener订阅者他们将发布和订阅同一个来完成相应的通讯-将发布和订阅的内容交给 ROS Master整体流程类似于 WiFi 中的 mqtt 协议通信,将发布和订阅的内容交给公共服务器,形成一个转接的效果)。
我们以话题通讯机制来做简要介绍,在此通讯中需要有两个节点,一个 Publisher发布者以及一个 Listener订阅者他们将发布和订阅同一个来完成相应的通讯 - 将发布和订阅的内容交给 ROS Master整体流程类似于 WiFi 中的 mqtt 协议通信,将发布和订阅的内容交给公共服务器,形成一个转接的效果)。
所以通过这样的一个流程,具体的代码如下(以 C++ 为例):
@@ -92,14 +91,14 @@ int main(int argc, char **argv)
ros::init(argc, argv, "talker");
//其次,为了对这个类更好地进行处理,我们需要创建节点句柄
ros::NodeHandle n;
//创建一个Publisher=> pub发布名为chattopic消息类型为std_msgs::String
//创建一个 Publisher=> pub发布名为 chattopic消息类型为 std_msgs::String
ros::Publisher pub = n.advertise<std_msgs::String>("chat", 1000);
//设置循环的频率对应着sleep延时
//设置循环的频率,对应着 sleep 延时
ros::Rate loop_rate(10);
while (ros::ok())
{
// 初始化std_msgs::String类型的消息
// 初始化 std_msgs::String 类型的消息
std_msgs::String msg;
/*
@@ -125,7 +124,7 @@ int main(int argc, char **argv)
//节点与节点句柄是必不可缺的
ros::init(argc, argv, "listener");
ros::NodeHandle n;
// 创建一个Subscriber订阅名为chattertopic注册回调函数chatCallback
// 创建一个 Subscriber订阅名为 chattertopic注册回调函数 chatCallback
ros::Subscriber sub = n.subscribe("chat", 1000, chatCallback);
// 循环等待回调函数
ros::spin();
@@ -133,7 +132,7 @@ int main(int argc, char **argv)
}
```
而其中,在 Listener 中出现了回调函数,其功能类似于裸机中的中断控制-当接收到对应的订阅消息后,进行对应的数据、逻辑处理,例如如果我只是想把接收到的数据打印出来的话,我可以这么写回调函数 chatCallback
而其中,在 Listener 中出现了回调函数,其功能类似于裸机中的中断控制 - 当接收到对应的订阅消息后,进行对应的数据、逻辑处理,例如如果我只是想把接收到的数据打印出来的话,我可以这么写回调函数 chatCallback
```cpp
void chatterCallback(const std_msgs::String::ConstPtr& msg)
@@ -148,7 +147,7 @@ void chatterCallback(const std_msgs::String::ConstPtr& msg)
<Bilibili bvid='BV1zt411G7Vn'/>
<strong>提一嘴:很多人学 ROS 就学一个开头-比如就学了古月居的 21 讲,就认为自己已经了解到了 ROS 的大部分内容了</strong><strong>(不会有人现在还是纯看视频学习吧)</strong><strong>,实际上这是非常错误的想法。当你学完了视频的内容后,你甚至可能不会移植 wiki 上的功能包x_x甚至不知道如何去开发一个真实的机器人因为此 21 讲只是理论上的讲解,去做一个虚拟机器人在 gazebo 上运行。ROS 的学习上需要我们花大量的心思去学会接触新的东西,你们并不能只局限于我提供的推荐学习资料,因为相应的功能包不是一成不变的,而且也不是只有那么几个功能包,当你感受了 ROS 的自主建图、自主导航、机械臂控制、机器学习开发等等等等等等后,你才会发现 ROS 的世界是如此美妙!</strong>
<strong>提一嘴:很多人学 ROS 就学一个开头 - 比如就学了古月居的 21 讲,就认为自己已经了解到了 ROS 的大部分内容了</strong><strong>(不会有人现在还是纯看视频学习吧)</strong><strong>,实际上这是非常错误的想法。当你学完了视频的内容后,你甚至可能不会移植 wiki 上的功能包x_x甚至不知道如何去开发一个真实的机器人因为此 21 讲只是理论上的讲解,去做一个虚拟机器人在 gazebo 上运行。ROS 的学习上需要我们花大量的心思去学会接触新的东西,你们并不能只局限于我提供的推荐学习资料,因为相应的功能包不是一成不变的,而且也不是只有那么几个功能包,当你感受了 ROS 的自主建图、自主导航、机械臂控制、机器学习开发等等等等等等后,你才会发现 ROS 的世界是如此美妙!</strong>
2、b 站赵虚左 ROS 课程(讲得细致多了,需要耐心看下去,要是我入门 ROS 的时候有这个视频就好了)