有没有一种方法可以使路径记忆机器人?怎么样?

问题描述 投票:0回答:2

[2年前,我制作了一个Arduino 4WD,可以通过蓝牙对其进行控制。我还使用App Inventor制作了一个应用。

我想修改我的应用程序或arduino代码,因此当我按下应用程序上的按钮时,它会开始存储说明(前进,后退等),直到我单击停止按钮为止。

然后,当我按下第三个按钮时,汽车将追踪路径(或说明)。

希望大家都了解我。大家都可以帮我吗?你们都不必给出代码,仅是一个主意。.预先感谢..

android arduino bluetooth robot
2个回答
0
投票

我认为您可以按照自己的方式使用字符。这既不容易,也不是直截了当,这是我考虑的一种可能方式。

[根据您的设置和描述,我相信您在初始项目中使用了switch case条件语句,因此首先您必须创建替代字符,该替代字符与机器人当前可以执行的每个操作相反。 (back_right,back_left,back等)。您必须了解,最初的后背将是此修改部件的新前进方向。

[尝试与存储在特定字符串或字符集中的任何操作相反。 (back_right返回X,back_left返回Y,back返回Z等)。因此,当您想回溯零件时,您可以接收存储的字符,并允许它们在LIFO中运行,即“后进先出”。

FOR EXAMPLE: if you made a movement 
forward-F 
right-R

Char stored = BX
where B= backward
and X= back_right

轻按应用程序上的按钮,将X作为第一种情况发送,将B作为第二种情况发送。


0
投票

要在Arduino上记录命令,您可以使用所有可能的命令创建一个enum,例如:

enum Command
{
    Forward,
    Backward,
    Left,
    Right,
    //...
    Stop
};

然后使用命令和经过时间创建一个结构:

struct CommandList
{
    unsigned long TimeOffset;
    Command cmd;
};

然后十个创建CommandList结构的向量。

[每次Arduino在录制时接收到一条命令,都可以将一个项目添加到包含时间偏移和要执行的命令的矢量中。

要重放,只需再次遍历向量并在正确的时间偏移处触发每个命令(使用delay()timer interrupt)。

如果要返回相同的路径,只需以相反的顺序播放列表,并且列表中的每个项目都使用相反的命令。

您甚至可以通过更改单个位来给出相反的命令的方式来创建命令,例如:

00000001    left
10000001    right

00000010    forward
10000010    backward

要获得相反的命令,只需翻转最左边的位。

© www.soinside.com 2019 - 2024. All rights reserved.