当我们在调试程序时,通常很难一次就把程序正常跑起来。这是普遍现象。但我们会借助一些工具和手段,有步骤有流程地去调整程序,最终让程序按照我们想要的样子正常执行。
对于提示词来说也是一样的。当我们向ChatGPT提问时,一开始它给我们的答案可能并不理想。但是当我们逐步去调整提示词,慢慢地,它的回答就会接近我们想要的答案。
所以这里最重要的是我们如何去迭代提示词?
当我们在调试程序时,通常很难一次就把程序正常跑起来。这是普遍现象。但我们会借助一些工具和手段,有步骤有流程地去调整程序,最终让程序按照我们想要的样子正常执行。
对于提示词来说也是一样的。当我们向ChatGPT提问时,一开始它给我们的答案可能并不理想。但是当我们逐步去调整提示词,慢慢地,它的回答就会接近我们想要的答案。
所以这里最重要的是我们如何去迭代提示词?
这里使用C++语言来作为示例,但对其他语言的函数书写也有借鉴意义。
写函数的第一规则是要短小。第二条规则是还要更短小。
下面是两段功能一致的代码,分别展示了不同的实现方式:
第一段代码将所有的实现都写在了一个函数里,实现了一个简单的计算平均值的功能:
1 | include <iostream> |
第二段代码对第一段代码进行了抽象,将复用的代码抽取成了一个共用的函数sum
,然后在average
函数中调用sum
函数,实现了相同的功能。这样做的好处是可以减少代码量,提高代码的可读性和可维护性。
desmos
是一个网页工具。通过它,我们可以方便地查看复杂函数的图形,绘制数据表,解方程和进行函数动态分析等等。
工具网址:
机器人软件系统中使用的通讯框架多种多样。比如,百度Apollo
使用的Cyber RT
,ROS1中的TCPROS/UDPROS
通信机制,ROS2
中使用的DDS
等等。
下面介绍一种轻量,易用的通讯框架LCM(Lightweight Communications and Marshalling
)。
LCM
是一套用于消息传递和数据编码的库和工具,目标是构建高带宽和低延的实时通讯系统。它提供了一个发布/订阅消息传递模型和自动编码/解码代码的生成器。
LCM
为多种编程语言(C/C++,C#,Java,Lua,MATLAB,Python)的应用提供接口。
LCM
具有如下特性:
下面的安装过程是在ubuntu20.04
上进行的。
安装gnuplot
需要依赖lua5.2
。所以先安装lua5.2
。
安装lua5.2
下载安装包
1 | wget http://www.tecgraf.puc-rio.br/lua/ftp/lua-5.2.0.tar.gz |
编译安装lua5.2
解压后进入源码目录
1 | make linux |
byobu
的图标像是中国的风屏,颇有中国风。哈哈!
官方网址:
Ubuntu
下安装byobu
1 | sudo apt-get install byobu |
你的机器人安全吗?
ROS1中的通信数据基本是开放的。只要我们知道机器的IP。然后使用下面的命令在自己的笔记本电脑里声明一下机器人系统中ROS_MASTER
的地址。
1 | export ROS_MASTER_URI="http://192.7.8.48:11311" |
注意,这里的ip(192.7.8.48)需要设成实际机器的ip。
这样我们就可以获取机器人系统的所有通信数据。
并且很危险的是,我们可以在自己的电脑中向机器人系统发送任意速度指令或者其他指令来干扰机器人的正常运行。
想想就很不安全。
ROS2
中默认集成了SROS2
功能包。它可以将通信数据进行加密从而保证数据安全。下面来认识一下这个功能包。
SROS2
仓库地址:https://github.com/ros2/sros2