我想使用Erlang来实现机器人应用程序.在Erlang中实现的大多数当前实际应用程序都是基于Web的.由corrado教授实施的机器人没有利用 Erlang的并发性,这是Erlang的核心并且更多地集中在人工智能上(根据我对该项目的理解).
我想到的一些想法就像Soccor机器人,多个机器人清洁房间但在这样的系统中机器人可以用C语言(或任何其他编程语言)编程,可以使用MATLAB进行控制.MATLAB有助于图像处理(视觉系统)和解决复杂的数组计算,那么使用Erlang有什么意义呢?(如果我错了请纠正我)
有人可以向我推荐一些机器人应用程序,它可以利用Erlang的特性,特别是并发性,可以说Erlang最适合这种应用程序而不是其他语言.
一点点详细的答案对我很有帮助.
我正在研究Erlang机器人项目.我制作了一个wallfollower机器人程序,它有两个文件1.一个与硬件通信的C程序(我想我们不能直接使用Erlang)和2. Erlang程序来调用这些函数.我想知道我可以在哪里(平台)运行这个机器人.
是否可以通过基于微控制器(8051或ARM7)的硬件运行此机器人?
是否可以将Erlang程序转换为C代码或直接转换为.hex文件?
如果有任何人有任何想法请尽快帮助.
谢谢.
我正在通过互联网搜索Erlang的流程模型,并找到了一些图表
在Joe Armstrong的一次演讲中滑行3-4.它们显示了Erlang,java和C#之间的进程创建和消息传递时间之间的很多区别.谁能告诉我这么大的差异背后的原因 ?
我正在尝试使用Erlang/ets通过模式匹配接收数据来存储/更新各种信息.这是代码
start() ->
S = ets:new(test,[]),
register(proc,spawn(fun() -> receive_data(S) end)).
receive_data(S) ->
receive
{see,A} -> ets:insert(S,{cycle,A}) ;
[[f,c],Fcd,Fca,_,_] -> ets:insert(S,{flag_c,Fcd,Fca});
[[b],Bd,Ba,_,_] -> ets:insert(S,{ball,Bd,Ba})
end,
receive_data(S).
Run Code Online (Sandbox Code Playgroud)
这里A是循环数,[f,c]是中心标志,[b]是球和Fcd,Fca,Bd,Ba是来自玩家的标志和球的方向和角度.
发件人进程正在发送这些信息.这里,模式匹配正常工作,我通过打印A,Fcd,Fca ...等的值来检查.我相信使用Erlang/ets有问题.
当我运行此代码时,我得到这样的错误
Error in process <0.48.0> with exit value: {badarg,[{ets,insert,[16400,{cycle,7}]},{single,receive_data,1}]
Run Code Online (Sandbox Code Playgroud)
谁能告诉我这段代码有什么问题以及如何解决这个问题?
我必须为我们的移动客户端(基于聊天)执行"简单XMPP"与"XMPP over BOSH"的比较.我想使用相同的工具来比较两者.我在互联网上搜索并找到了一个名为tsung的工具,它支持HTTP和XMPP.我已经设置并能够使用给定的示例脚本为XMPP运行tsung.
现在问题是我无法为"XMPP over BOSH"编写Tsung xml脚本.我尝试在互联网上搜索但找不到任何东西.
有人可以指导我为"XMPP over BOSH"设置Tsung吗?
如果有一个除了Tsung之外的工具可以满足我的目的,请告诉我.
我正在实施robo-soccer,它使用gen_fsm来表示每个机器人的策略.我已经为攻击者制定了策略.现在,我想使用相同的策略来运行多个攻击者,比如5个攻击者.为此,我必须在5个不同的模块中复制相同的gen_fsm代码(200行),总共产生1000行代码.
有没有办法编写gen_fsm并在多个模块中重用它?示例代码段是
-module(planner).
-behaviour(gen_fsm).
start() ->
start_link().
start_link() ->
gen_fsm:start_link({local, ?SERVER}, ?MODULE, [], []).
init([]) ->
{ok, state1, ets:new(test,[public])}.
state1({test},State) ->
case ets:lookup(State,ball) of
[] ->
action!{turn,80},
{next_state,state1,State};
Data ->
% some code % %,
{next_state,state2,State}
end;
state2({test},State) ->
% --- some code ---%
Run Code Online (Sandbox Code Playgroud)