陈大方(上海市金山区青少年活动中心,上海,200000)
数字指南针的数学建模应用研究
陈大方
(上海市金山区青少年活动中心,上海,200000)
机器人的应用离不开传感器,传感器应用成为青少年机器人教育中的一个重要内容。其中,电子指南针的应用非常广泛,但是电子指南针的应用有一定难度,使得广大青少年在使用过程中束手无策。我经过研究发现主要存在以下问题:机器人在需要转向时的方向问题——逆时针转动还是顺时针转动?机器人在转动过程中的速度如何,速度快的话则在目标角度有可能由于机器人控制器来不及处理角度数据而失败(转过头),速度慢的话则大大降低了机器人的运行效率。鉴于以上两个问题,本文就通过建立数学模型,把数字指南针的应用和高中阶段的数学三角函数结合起来,巧妙的解决以上两个问题。
机器人;数字指南针;传感器应用;三角函数
青少年机器人教育中常用到的传感器有:测距传感器、寻迹传感器、角度传感器、测温传感器、触碰传感器、测速传感器等。这么多传感器按照信号分类,又可以分为模拟传感器和数字传感器,其中,数字传感器又可细分为字节型数字传感器和开关型数字传感器。模拟传感器应用时只需用模拟数字转换器(Analogto-digital converter)把模拟电压转换成数字电压即可,开关型数字传感器应用简单、编程方便,但是字节型数字传感器应用起来就有一定的难度了。因为这类传感器输出的数据是一个或多个字节的二进制数,通常用到IIC、USART或SPI接口和单片机连接,运行时数据流或单向或双向,处理时有一定的难度,但是单片机得到的数据精确,便于处理。比如,一个量程为5000mm的超声波测距传感器是把所测的距离以数字形式通过IIC接口直接输出,那么“0-5000”就需要16个bit,即2个byte,这两个byte的数据合成一个16bit的数据,来表示超声波传感器的测试结果。这样听起来很复杂,但是对使用者来说,只需接收IIC发来的数据即可,不需要自己编写运算程序,这样既方便了使用者,又减轻了处理器的负荷。
还有一类字节型数字传感器就是本文要讲的传感器——数字指南针。数字指南针也叫电子罗盘,是通过测量环境的磁场,从而运算得出模块当前所指的方向角度。实际上,我们的常用的数字指南针能够精确的检测出当前角度(0-359°),也就是数字指南针要输出“0-359”的数字,那么需要至少9个bit,通常用到两个字节,我所用到的指南针是串口型(USART)的,和单片机的串口连接,每次通信都有两个字节的数据传输。指南针一般有两个按键:校正键和定位键。校正键可以使指南针适应当地的地磁环境,减小误差;定位键则可以使指南针以当前角度作为零度,方便应用。
在指南针的实际应用中,我们一般用它来确定机器人的的方向。如图1所示。
图1
假设机器人在原点且面向北,那么可以触发指南针的定位键使得当前角度为0°。在机器人运行过程中,可能会出现以下三种转向任务:向西、向东和向南。这三个转向任务看似简单,但是在现场应用中会出现以下两个问题,就以转到向东为例说明。第一,机器人转向的方向问题。如果程序里规定机器人永远向左转动,那么机器人要转到向南(90°)的话就要转270°而不是90°,这大大影响机器人的效率。第二、机器人转向速度和单片机处理角度数据的矛盾。如果机器人速度稍快的话,即使指南针检测到了90°,但是由于机器人转向速度很快,单片机不一定就能接收到90°,导致机器人转过头;速度稍慢的话可能耗时太多,也影响机器人的效率。
通过以上分析,我便提出了应用中常常遇到的两个问题:(1)转向问题:机器人在转向时,能否根据当前方向和目标方向自动判断转弯方向,使得转弯角度最小;(2)速度问题:机器人在转弯时既要保证速度又要准确的判断当前角度。
下面我们先来研究第一个问题:机器人的转向问题。方便起见,我假设机器人的当前角度为α,机器人要转向的目标角度为β,令γ=(α-β)。其中,α∈[-180,0]∪[0,180],β∈[-180,0]∪[0,180],γ∈[-180,0]∪[0,180]。机器人在转向时,最理想的动作是当γ∈[-180,0]时,机器人顺时针转;当γ∈[0,180]时,机器人逆时针转。这样转动,不管是往哪个方向转动,机器人都的转动都不超过180°就会到达目标角度。也就是说,如果把γ作为自变量,γ的函数F(γ),定义域是[-180,0]∪[0,180],且定义域关于Y轴对称。经过研究,函数F(γ)在定义域[-180,0]和 [0,180]上的函数值要互为相反数,我们才能正确判断机器人往哪个方向转动。通过定义域和函数值的观察,我发现该函数F(γ)必须为一个奇函数。在常用的三角函数中研究,发现很难找到满足要求的函数。经过分析对比,把函数F(γ)变换成F(η),η= 0.5γ,那么函数F(η)的定义域就变成[-90,0]∪[0,90]。很容易,就找到了满足要求的函数——正切函数F(η)=tanη。如图2所示:
图2
为此,我们可以轻松的写出程序,当F(η)<0时机器人顺时针转动,当F(η)>0时机器人逆时针转动。
if(tan(((double) α-(double) β)*3.14/360)<0)
{
motor(a,-a);//顺时针转动
}
if(tan(((double) α-(double) β)*3.14/360)>=0)
在校园生活中,班主任是学生成长的主要精神关怀者,是引导学生职业核心技能和职业核心素养全面发展的人生导师。班主任对学生的家庭背景了解,对学生行为举止的了解,远胜于任课老师。任课教师负责上好每堂课,布置作业,跟踪学生的学习效果,并将作业完成情况及时反映给班主任。而班主任从旁协助,从生活上了解学生在学习过程中遇到的困难,及时给予排解。同时,在班级里营造“积极向上,你追我赶,争当优秀”的学习氛围,充分利用课余时间加强理论知识点的学习与巩固,提高学生学习的兴趣,调动学生学习的动力,转变学生学习态度,化被动为主动。任课教师与班主任结对子,多方面关怀学生的成长。
{
motor(-a,a); //逆时针转动
};
其中,motor(a,a)为马达的子程序。(a,a)中第一个a是左边马达的速度值,第二个a是右边马达的速度值。a>0时向前进,a<0时向后退,a=0时向停止。a∈(-1000,1000),数据越大速度越快。
解决了转向的问题,我们再来研究第二个问题:机器人的速度问题。上面我已经假设机器人的当前角度为α,机器人要转向的目标角度为β,令γ=(α-β)。根据第一个问题的结论,我们得出:α∈[-180,0]∪[0,180],β∈[-180,0]∪[0,180],γ∈[-180,0]∪[0,180]。机器人在转向时,最理想的速度是机器人一开始转弯速度很快(可以是一个常量),当到达到目标角度越小,转弯速度应该越小,直至为零。同样的,如果把γ作为自变量,γ的函数G(γ)定义域是[-180,0]∪[0,180],定义域关于y轴对称。机器人在逆时针转和顺时针转的时候完全对称,所以要求函数G(γ)在定义域[-180,0]和 [0,180]上的函数值也要相等。通过定义域和函数值的研究,我发现该函数必须为一个偶函数。在常用的三角函数中深入研究,我找到了满足要求的函数——余弦函数G(γ)=cosγ。如图3所示。
图3
当-180<γ=(α-β)<-45时,即-π<γ=(α-β机器人以恒定速度a转向;
当45<γ=(α-β)<180时,即-<γ=(α-β)<π时,机器人以恒定速度a转向;
if(cos(((double)de-(double)degree)*3.14/180)<0.71)
{
a=360;
}
if(cos(((double)de-(double)degree)*3.14/180)>=0.71)
{
a=270/cos(((double)de-(double)
degree)*3.14/180);
};
其中,a的数值就是motor(a,a)中的参数。
至此,我利用数学建模的思想,把数字指南针和高中阶段三角函数结合,解决了文章一开始提出的两个问题。经过实践证明,以上两个方法科学可行,并有非常好的效果。
[1]马潮. 《AVR单片机嵌入式系统原理与应用实践》.
[2]张茂青. 《AVR单片机高级语言BASCOM程序设计与应用》 .
[3]2009年度. 玩转单片机[J].《无线电》.
[4]2008版.《微积分》.上海交通大学数系微积分课程组
Research on mathematical modeling of digital compass
Chen Defang
(Jinshan District Shanghai Youth Activity Center,Shanghai,200000)
The application of robot can not be separated from sensors, and the application of sensors has become an important part of the education of young robots. Among them, the application of electronic compass is very extensive, but the application of electronic compass is difficult, which makes the vast numbers of teenagers in the process of doing nothing. I have studied and found the following main problems: when does the robot need to turn, does it turn counterclockwise or clockwise? How to speed the robot in the process of rotation, speed of words in the target angle may fail due to the robot controller to handle the data is less than the angle (turned), slow it will greatly reduce the operating efficiency of the robot. In view of the above two questions, this article through the establishment mathematics model, the digital compass application and the high school stage mathematics trigonometric function unifies, ingeniously solves these two questions.
robot; digital compass; sensor application; trigonometric function