自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

shoufei403的博客

我是首飞,一个帮大家填坑的机器人开发攻城狮。

  • 博客(109)
  • 资源 (5)
  • 收藏
  • 关注

原创 【坑】这样用C指针可不行

最近有人问了我一个C语言中使用指针时遇到的问题。下面是一个简化后的代码示例。他的疑问是,为什么我修改了函数内的指针a,结果在函数外面指针a却并没有变化。这个其实是没有理解清楚变量的作用域。因为指针实际上也是一个变量。但我们常常把指针传入函数内部以便可以在函数内修改函数外面的某个变量值。从而被混淆地认为函数内也能改变传入的指针值。实际上,我们通常不会考虑通过函数的形参去改变函数外部的指针。

2023-07-19 22:46:14 154

原创 如何使用ChatGPT的API(七)一个客户服务助手

当有了产品信息,模型则根据产品信息回答用户的问题。最后,它将回答再次给到Moderation API,以确保可以安全地显示给用户。上面的示例代码中,我们正在按步骤回答用户问题。第一步是审核输入,第二步是提取产品列表。如果回答没有违规,我们可以把它返回给用户。在本篇文章中,我们将综合前面文章中所有知识,创建一个端到端的客户服务助理示例。首先,我们将通过Moderation API检查输入是否违规。第三,如果找到产品信息,我们将尝试查找它们。其次,如果没有,我们将提取产品列表。第四,我们用模型回答用户的问题。

2023-07-12 21:25:14 253

原创 如何使用ChatGPT的API(六)输出检测

正如你所看到的,模型可以对生成的内容质量提供反馈。你可以使用这个反馈来决定是否将输出呈现给用户或生成一个新的回答。你甚至可以尝试为每个用户查询生成多个模型回答,然后让模型选择最好的一个来展示给用户。一般来说,使用Moderation接口检查输出是很好的做法,但是要求模型评估它自己的输出可能对特定的场景反馈有用,以确保回答质量。实际上,在大多数情况下,检测模型回答质量可能是不必要的,尤其是当你使用像GPT-4这样更高级的模型时。检测模型回答质量会增加系统的延迟和成本,因为你必须对模型进行额外调用。

2023-07-11 20:52:01 303

原创 如何使用ChatGPT的API(五)链式提示

为什么我们不把所有的产品信息包括在提示词中呢?这样我们就不必为所有这些中间步骤而烦恼,而直接去查询产品信息。首先,包括所有的产品描述可能会使模型的上下文更加混乱,就像一个人试图一次处理大量的信息一样。其次,语言模型有上下文限制。只允许固定数量的Token作为输入和输出。因此,如果你有大量的产品信息,你甚至无法将其装入一个prompt。最后,包括所有的产品描述是昂贵的。处理那些不必要的信息也要算钱的。因此,通过有选择地加载信息,你可以减少生成式应用的成本。

2023-07-07 22:13:32 296

原创 如何使用ChatGPT的API(四)思维链推理

在回答一个具体问题之前,模型对问题进行详细的推理是很重要的。有时,模型可能会因为急于得出结论而犯推理错误,所以我们可以仔细设计prompt,要求在模型提供最终答案之前进行一系列相关的推理步骤,这样它就可以更长时间、更有条理地思考这个问题。而像这样要求模型分步骤推理一个问题的策略被称为。

2023-07-07 22:12:20 182

原创 如何使用ChatGPT的API(三)处理违规输入

当我们要构建一个对话机器人的时候,常常需要检测用户的输入是否有违规。用户是否输入了一些暴力,色情的内容,这对维护系统正规使用至关重要。下面将介绍一些方法来检测用户的输入是否违规。

2023-07-07 22:11:04 490

原创 如何使用ChatGPT的API(二)分类用户输入

比如用户要求关闭他们的账户和用户询问特定产品是不同类别的问题,需要不同的指令来处理。对于需要处理具有大量独立指令集的任务,首先对问题类型进行分类,然后根据分类结果确定使用哪些指令,这对整个问答系统是非常有益的。在这种情况下,我们可能会添加有关电视的附加信息,而不是给出关闭账户的链接之类的。为了更好的应对用户的提问,将用户的提问进行分类,然后根据不同的提问类别针对性地回答问题。我们可以将模型的回答数据轻松地读入某种对象中,例如Python中的字典,然后将其用于后续步骤的处理。让我们看看模型的回答。

2023-07-07 22:09:58 230

原创 免费可用的GPU

这里介绍两个可以免费使用GPU的地方。

2023-06-29 21:28:54 427

原创 如何使用ChatGPT的API(一)大语言模型如何工作

ChatGPT处理不了反转单词的任务。response = get_completion("Take the letters in lollipop and reverse them") #这里希望chatgpt反转输出单词lollipop print(response)很明显pillipol并不是正确答案。正确答案应该是popillol。为什么ChatGPT这么牛逼却处理不了这样一个简单的问题呢?这就要引入Token的概念了。

2023-06-29 21:10:44 665

原创 我用ChatGPT提高了工作效率

最近debug程序真是越来越离不开ChatGPT了。将问题直接抛给ChatGPT大大提高了我查找问题的速度。很多时候我已经无需另外使用搜索引擎来查找资料了。这个是我将一段Linux上运行的程序移植到Windows上运行时出现的问题。编译发现没有u_char这个类型。开始我以为是Linux和Windows上标准库不一致。向ChatGPT请教了一下,它直接告诉我这个类型是Linux的系统文件定义的。简单快速地解决了我的疑惑。编译程序出现报错信息,直接扔给ChatGPT。它直接给了我修改建议。相当丝滑。

2023-06-20 09:03:35 122

原创 OpenAI官方提示词课(七)制作一个聊天机器人

下面是一个消息列表的例子,首先是一个系统消息,它提供了整体指示。在这条消息之后,我们有用户和助手之间的多轮对话,这个对话会一直进行下去。如果你曾经使用过ChatGPT的网页界面,那么你的消息就是用户消息,ChatGPT的消息就是助手消息。系统消息有助于设定助手的行为和个性,并且它在对话中充当高级指令。你可以将其视为在助手耳边私下交流并引导其回复,而用户并不知道系统消息的存在。作为用户,如果你曾经使用过ChatGPT,你可能不知道ChatGPT的系统消息内容。

2023-06-17 15:06:04 575

原创 OpenAI官方提示词课(六)文本扩展

文字扩展是将较短的文本片段,例如一组指令或主题列表,交给大型语言模型生成更长的文本,例如基于已有的内容生成一封电子邮件或一篇关于某个主题的文章的任务。又或者你列出大纲,标题,让大模型填充对应的内容。另外,还有一些很好的用途,例如将大型语言模型用作头脑风暴的伙伴。但这里必须要提醒的是,ChatGPT生成的内容不一定准确,所以使用的时候要认真甄别。比如著名的stack overflow网站就曾被chatgpt的回答霸占,导致网站上充斥着不准确的回答。官方随即封禁了ChatGPT。

2023-06-16 09:05:26 199

原创 OpenAI官方提示词课(五)如何进行文本翻译校正修改

在本篇文章中,我们将探讨如何使用大语言模型进行文本转换任务,例如语言翻译、拼写和语法检查、语气调整和格式转换。

2023-06-14 20:52:17 401

原创 OpenAI官方提示词课(四)如何进行文字的情感分析

这节介绍大模型判断文字的语义,或者说对内容进行情感分析的能力。同时也演示了大模型如何提取出文字中的关键信息。在传统的机器学习方案中,要做到对文字内容的情感分析,需要先对一系列的文字内容(如评论)进行人工标注。把这些文字内容人工分类成“正向”和负向“,然后再喂给一个机器学习模型去训练,得到一组参数。模型训练好后再部署好,把需要判断的未标注文字内容给到训练好的模型,让它判断一下文字内容的情感倾向。可以看到,对于传统的机器学习方案,有很多工作需要做。而且这个训练出来的模型也只能干这一件事情。

2023-06-12 08:51:00 696

原创 OpenAI官方提示词课(三)如何总结文章

现在是信息爆炸时代,打开手机,各种文章扑面而来。我们的精力是有限的。我们也就可以阅读更多的文章了。总结文字中提到了The panda plush toy不值这个价,因为尺寸对不起这么高的价格。很明显,这里特地提到了The panda plush toy比期望的时间早一天到达。我也准备了一份提示词的文档。如果总结的时候,我们更关注快递方面的信息呢?如果总结的时候,我们更关注价格方面的信息呢?另外我们也可以从文本中抽取需要的关键信息。我是首飞,做有趣的事情,拿出来分享。这里提取了物流方面的信息。

2023-06-10 09:25:56 637

原创 OpenAI官方提示词课(二)迭代提示词

当我们在调试程序时,通常很难一次就把程序正常跑起来。这是普遍现象。但我们会借助一些工具和手段,有步骤有流程地去调整程序,最终让程序按照我们想要的样子正常执行。对于提示词来说也是一样的。当我们向ChatGPT提问时,一开始它给我们的答案可能并不理想。但是当我们逐步去调整提示词,慢慢地,它的回答就会接近我们想要的答案。所以这里最重要的是我们如何去迭代提示词?

2023-06-08 08:40:00 641

原创 OpenAI官方提示词课(一)书写提示词的基本原则

下面是调用openai的completion接口的函数。但在本文中并不是重点。了解一下就好。下面我们来说说,书写提示词的基本原则。

2023-06-04 11:59:17 1080 1

原创 如何把函数写的整洁?

函数都写不好,确实有些丢人。如何把函数写的整洁呢?看了会书深有启发。这里使用C++语言来作为示例,但对其他语言的函数书写也有借鉴意义。

2023-05-31 21:23:05 92

原创 对pure pursuit算法的理解和改进

在路径上任意取一个目标点计算出的曲率都是一样的。执行速度也有同样的需求,路径比较直的时候可以采用更大的速度,路径比较弯曲时则需减少速度。值设置的较小时,机器会更快的贴近参考路径。因为没有一个完美的圆弧可以直接让机器贴合到参考路径,所以会产生一些振荡。目标点在圆弧的任意一个位置都满足车的行走路径为一个以r为半径的圆弧。值可以得到一个唯一的圆弧半径,但给定一个圆弧半径则不能得到一个唯一的。事实上,我们希望针对参考路径的曲率来计算出一个合适的。值达到一种协调的关系,路径跟随的效果才会比较好。

2022-11-16 13:50:39 1767 2

原创 使用G2O解决优化问题的简单例子

假设一个机器人初始起点在0处,然后机器人向前移动,通过编码器测得它向前移动了1m,到达第二个地点x1。接着,又向后返回,编码器测得它向后移动了0.8米。但是,通过闭环检测,发现它回到了原始起点。可以看出,编码器误差导致计算的位姿和观测到有差异,那机器人这几个状态中的位姿到底是怎么样的才最好的满足这些条件呢?首先构建位姿之间的关系,即图的边:线性方程组中变量小于方程的个数,要计算出最优的结果,使出杀手锏最小二乘法。先构建残差平方和函数:为了使残差平方和最小,我们对上面的函数每个变量求偏导,并使得偏导数等于0.

2022-10-16 10:32:11 1781 3

原创 LCM库的简单使用

LCM库通过编写lcm文件来定义通讯数据结构。下面是一个针对C++的示例。新建文件,并拷贝下面的内容到文件中。{}执行下面的命令生成头文件同一个lcm文件里可以写多个数据结构。{}{}执行lcm-gen后会为每一个结构体生成一个头文件。...

2022-08-29 00:00:27 1443

原创 函数绘图工具

desmos是一个网页工具。通过它,我们可以方便地查看复杂函数的图形,绘制数据表,解方程和进行函数动态分析等等。

2022-08-28 23:59:05 4398

原创 利用Doxygen生成代码文档

Doxygen是一个代码文档生成工具。它从代码文件中提取注释并可生成多种文档形式。如:网页文档HTML,RTF (MS-Word),PDF等等。同时也可生成函数之间的调用和文件的依赖关系图表。Doxygen除了支持C++语言外还支持C, Objective-C, C#, PHP, Java, Python, IDL (Corba, Microsoft, and UNO/OpenOffice flavors),甚至它也支持硬件描述语言VHDL。

2022-08-21 11:18:50 1188

原创 绘图小能手gunplot

绘图小能手gunplot

2022-08-21 11:17:40 1832 1

原创 你的机器人安全吗之SROS介绍

众所周知,ROS2的通信体系是建立在DDS上的。而DDS本身是有一些安全机制的,即。SROS2就是那个可以让我们更方便使用特性的功能包。它提供了一些方便的工具。**通讯加密后,通讯延时会加长。**如下图所示:通过上图可以看到,加密传输的耗时要多于非加密传输。这也是不可避免的。毕竟加密后数据包也变大了。因为要包含加密数据。**跨设备间也可以加密通信。**我们的笔记本电脑和机器间也是可以加密通讯的。只要把机器内生成的加密文件拷贝到笔记本电脑,然后参考下面描述的步骤进行操作即可。...

2022-08-17 08:15:52 637

原创 有点中国风的命令行工具

内回复“机器人”获取精心推荐的C/C++,Python,Docker,Qt,ROS1/2等机器人行业常用技术资料。的图标像是中国的风屏,颇有中国风。安装好后在命令窗口中输入。我是首飞,一个帮大家。的机器人开发攻城狮。...

2022-08-17 08:13:50 1660

原创 C++静态代码分析

这里记录一下使用`cppcheck`进行`C++`代码静态检测的方法和步骤。

2022-07-31 20:18:55 1060

原创 ROS2获取当前系统时间的方法

ROS2中获取系统时间的方法

2022-07-24 08:38:11 5720

原创 ROS2节点通信实现零拷贝

内回复“机器人”获取精心推荐的C/C++,Python,Docker,Qt,ROS1/2等机器人行业常用技术资料。,发送端数据的地址和接收端数据地址是一致的。所以发送端只是把数据存放的地址发送给了接收端并没有发生数据拷贝。零拷贝的特性对于传输图像数据尤为有用。关于图像传输的例子请参看。下面的一个例子演示了两个节点之间如何实现零拷贝通讯。编译好代码后使用下面的命令启动示例程序。注意,下面测试例子的。我是首飞,一个帮大家。的机器人开发攻城狮。...

2022-07-24 08:36:13 1056

原创 详细分析一个ROS2 CMakeLists.txt文件

ROS2的构建系统是基于CMake改进而来的。本篇文章我们详细介绍一下常用的语句。

2022-07-17 14:27:00 2347 2

原创 ROS2多线程节点

下面介绍一下如何在节点中使用多线程。使用多线程就涉及到回调组()了。创建回调组的函数如下:可以看到,创建回调组时是可以选择使用哪种类型的回调组()的。回调组的类型如下:表示此组的回调函数是互斥的,不能在同一时间被执行。表示回调函数是可重入的,允许同一时刻被多次执行。通常使用的还是类型。创建回调组回调组的另外一个参数是。它的默认值是。这个参数决定了回调组绑定的方式。当为时,采用在节点外部使用的方式绑定。可查看下面的示例程序。当一个节点中有多个线程时,需要用到。上面示例程序中,是有两个线程的。这两个线程中

2022-07-10 20:38:57 2603

原创 在云服务器上基于docker安装jenkins

是老牌的工具。下面记录一下在云服务器上的安装过程。下面记录了如何在云服务器上安装。新建一个文件夹,在文件夹里新建一个文件夹。并给文件夹读写权限。新建一个文件。添加下面的内容:注意,这里是将目录映射到了环境里。启动容器在文件夹内运行停止容器更改插件下载源打开,替换下面的的内容。查看运行可以看到登录密钥在浏览器中访问就可以看到的登录页面。总是用云服务器的公网IP加端口号去访问,有些不方便了。我们可以使用的方向代理来对应一个域名。当然域名得先买一个了。安装 (云服务器里安装的ubuntu20.04)

2022-07-10 20:37:43 777

原创 使用GDB调试ROS2程序

我们使用功能包来快速实现用调试程序。功能包是对包的封装,以便可以简单快速地使用工具。包的介绍可以查看其仓库:https://github.com/bombela/backward-cpp使用功能包实现调试程序只需下面三个步骤:添加到文件中。使用或者 选项编译程序。功能包的地址(程序使用分支):https://github.com/pal-robotics/backward_ros.git获取示例程序:编译时选择或编译类型时可以看到是代码的哪一行出了问题运行测试程序可以看到下面的堆栈信

2022-07-03 20:54:59 1233

原创 ROS2中CMake编译选项的设置

编译选项有很多,这里列出一些常用的编译选项设置,并说明作用。可以根据需求设置11, 14, 17, 20等等版本。告警选项:我们加上了告警都转成错误后常常会看到下面的错误信息。有地方设置了变量但没有使用,可以加上下面的代码消除这个类型的错误。代码生成选项:代码优化选项:注意: -O1打开-fomit-frame-pointer选项注意: 无特别需求,优化选项也可不单独设置,直接设置后面提到的编译类型即可选项:注意: 无特别需求,选项也可不单独设置,直接设置后面提到的编译类型即可设置编译类型在编译命

2022-07-03 20:54:05 1054

原创 ROS2中的行为树 BehaviorTree

是一个开源的行为树库。在游戏领域,行为树已经比较流行了。主要用于维护游戏角色的各种动作和状态。但在机器人领域还很少使用的。中引入了行为树来组织机器人的工作流程和动作执行。行为树是树状的结构,它的逻辑流程是由文件描述的。我们可以用其配套的工具来可视化行为树。如下图所示:行为树本身并不具体实现机器人的执行内容,它只负责将执行内容进行编排。以为例,具体的执行内容实现是放在各个中的。行为树上的节点与进行通信,请求具体的执行内容,然后获得反馈。根据反馈结果又可以请求另外的执行内容。这些不同执行内容间的跳转就是由行为树

2022-06-26 19:52:16 2540 2

原创 是使用local_setup.bash 还是 setup.bash

编译完程序后,我们会发现目录下有两个脚本 和 。执行程序前,通常需要一下目录下的脚本,以便环境变量准备就绪。这样和就能找到对应的执行文件和依赖。下面的内容是从中截取出来的一段。可以发现它会先一下目录再一下目录,最后再一下当前目录。这样就会把外部的多个工作空间囊括进来。如果多个工作空间中有相同名字的功能包可能就会互相冲突。而只会脚本所在目录。这样只会查找当前目录下的执行文件和依赖。所以如果系统里有多个工作空间,谨慎一点的方法是:1、先一下2、在一下某个用户的工作空间。如果系统里就一个自己建的用户工作空间。那

2022-06-26 19:51:13 1722 1

原创 使用Hexo+Github+腾讯云+Netlify搭建个人博客

要使用必须先安装和。本文是在环境下进行操作的。使用其它系统也可以将下面的操作作为参考。安装Node.js推荐安装当前最新版。不同的版本依赖不同版本的。下面是版本对照表。这里建议安装最新稳定版。官方下载网址:https://nodejs.org/en/download/这里以二进制安装方式进行,也可使用源码编译安装。按图示下载好二进制文件包。按照下面的方式操作即可安装好。安装Hexo创建博客新建博客目录安装node依赖本地启动博客服务器如果有出现下面的报错信息,可更改一下端口号。在博客目录内

2022-06-19 22:16:30 546

原创 [ROS2 基础] Navigation2 导航系统介绍

注意:下面的解释说明是以来进行的。其对应的版本为。​Nav2具有下列工具:● 加载、提供和存储地图的工具(地图服务器Map Server)● 在地图上定位机器人的工具 (AMCL)● 避开障碍物从A点移动到B点的路径规划工具(Nav2 Planner)● 跟随路径过程中控制机器人的工具(Nav2 Controller)● 将传感器数据转换为机器人世界中的成本地图表达的工具(Nav2 Costmap 2D)● 使用行为树构建复杂机器人行为的工具(Nav2 行为树和BT Navigator)● 发生故障时计算恢

2022-06-19 22:14:55 2756

原创 下载TurtleBot4源码来学习

新一代的终于来了。[撒花撒花]是开源的低成本移动机器人平台,希望以低成本的方式帮助更多的开发者学习实践机器人技术。这次发布的共有两个版本:和。它们是以作为移动底盘,配备了摄像头和激光雷达。计算平台是,并运行。软件运行在上,目前只支持版本。它是目前第一个支持的。开发的公司叫,下面是它在上的主页:https://github.com/clearpathrobotics项目介绍网址:https://clearpathrobotics.com/turtlebot-4/https://clearpathrobotic

2022-06-12 19:43:27 505 1

原创 [ROS2 基础] 仿真系统和搭建方法

机器人的开发需要很多的测试。而测试就需要搭建场地。测试项目一多,需要的场地的形式也会更多。搭建这样的场地不仅成本高,耗费的人力和物力都相当可观。有些场景在真实环境中不容易出现,但却可以在仿真环境中制造出来。通过对静态环境的模拟和动态环境的模拟,仿真系统可以帮助开发人员和测试人员触及到很多长尾的情况。而做到这些的代价要比在真实环境中的测试低很多,效率也更高。不管是服务机器人领域还是自动驾驶,仿真技术已经成为一项不可或缺的关键技术。这里对仿真系统做如下简单的定义以方便大家有个整体的概念。1)仿真系统是通过计算机

2022-06-12 19:42:40 4197

一个国外的ROS教程ppt

这是一个讲解很清晰的ROS入门教程。其网址:https://www.cs.princeton.edu/courses/archive/fall11/cos495/

2018-07-17

智能车制造教程

智能车制造教程

2014-04-29

二阶互补滤波

二阶互补滤波

2014-04-29

PID参数整定方法

PID参数整定

2014-04-29

卡尔曼原理说明

讲解卡尔曼原理

2014-04-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除