python 机器人仿真系统

stYy2002 2004-12-24 09:09:21
公司要开发一个机器人仿真系统(LOGO语言编程的那种),初步的想法是用python解释logo语言,然后使机器人可以根据logo语言来走动,要求可以自定义背景图,背景有蜡烛、黑线、墙壁障碍物,保存为模板,可调用保存的模板,进行使用。
举一个例子:
系统分两部分,1、解析logo语义,传递给2 ; 2、然机器人在界面上走动,并传感回1
图上有各种障碍物,有蜡烛,解析logo语言让机器人走动,传递给2,如果是前进,2判断前面是否有障碍物,有的话传递回给1,让1执行其他条件,如果没有障碍物同样传递回给1,前进。
遇到蜡烛,同样也是这样传递,并最后灭火。

请各位高手帮我想想如何实现,我现在负责的是第2部分,既是图形部分。
我对python与cs架构的都不是很熟悉。以前一直是做bs架构的东东。
谢谢各位。
...全文
578 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
stYy2002 2004-12-31
  • 打赏
  • 举报
回复
谢谢大家.我先给分.还请大家继续帮忙.
Javpp 2004-12-30
  • 打赏
  • 举报
回复
up
xyzxyz1111 2004-12-30
  • 打赏
  • 举报
回复
采用数组是障碍物数组,同障碍物的形状木关系

算法如下

def overlaied(robot):
for obj in roadblock_list:
if obj.overlaied(robot):
return True
return False

每个障碍物需要重载overlaied函数来判断是否与robot相交。

地图法不一定是每个象素,可以把真个地图划分为若干cell,以cell为单位。如果cell里有障碍物存在,那么就记录下这个障碍物的引用。

算法如下
def overlaied(robot):
cel = getcell(robot)
for acel in getneighbours(cel):
if acel has reference obj and obj.overlaied(robot):
return True
return False

X叉树同地图法有一点类似,不过是把地图采用追踪式细分。这样如果地图比较大的话,可以节省存储空间。不是比较大的没有必要用。

你可以看看sdl 的python binding ,pygame, 里面有一些关于sprite碰撞检测例子。




stYy2002 2004-12-30
  • 打赏
  • 举报
回复
现在确定机器人有N个传感器,那么我会把机器人的属性保存为文件。定义传感器,比如机器人上左右各有3个红外线传感,前方有一个灭火传感,用来灭火的风扇传感。

根据xyzxyz1111(如是我闻)所说的两种做法,我想再详细了解一下,有可能会采用C++ builder来做这部分。python做解析Logo语言。

如果采用上述两种方法,我要如何把场景的信息保存成文件?
如果采用数组,那么弧形的跑道如何处理?
如果采用地图法,那么是否把障碍物、蜡烛等对象的XY座标信息保存在文件中?
采用象素点作为数组,保存成文件,再根据数组来判断的做法,是否可行,对比以上其他做法如何?

我还有很多问题想跟大家一起讨论,请加入我的QQ群:8042330
谢谢大家。
xiaonian_3654 2004-12-30
  • 打赏
  • 举报
回复
python 实现的 logo
stYy2002 2004-12-29
  • 打赏
  • 举报
回复
谢谢大家的回复,能否就这个专题再继续讨论呢?
stYy2002 2004-12-24
  • 打赏
  • 举报
回复
谢谢,请大家继续顶啊。
xyzxyz1111 2004-12-24
  • 打赏
  • 举报
回复
这个逻辑不是很复杂.

子系统1就是一个logo语言的解释器,发执行的命令给子系统2
子系统2判断是否同障碍物重合,然后执行动作,并返回给子系统2相应的值

系统之间的通讯有很多种,不用什么s也可以,tcp,udp,http等都可以. 二进制或者文本方式也都可以.b/s的也未尝不可.

你应该首先把遇到的问题细化,这样也许很多问题就不再是问题了.
kokblack 2004-12-24
  • 打赏
  • 举报
回复
我以前也是搞web的转到这方面来确实有难度!帮你UP
stYy2002 2004-12-24
  • 打赏
  • 举报
回复
pyLogo做什么的?
xiaonian_3654 2004-12-24
  • 打赏
  • 举报
回复
pyLogo已经有实现了,google之
xyzxyz1111 2004-12-24
  • 打赏
  • 举报
回复
要判断同障碍物是否相交,当然用x,y 坐标了

第一种方法,可以建立一个障碍物数组,然后对每个元素判断是不是相交

第二种方法,建立一个地图,就是一个矩阵了,在障碍物所占据的位置作标记。然后判断机器人的位置,如果该位置有标记,就相当于同障碍物相交了。野生动物如老虎狮子就是这样标记领地的。

还有别的数据结构,如4叉树也可以。不过比较复杂也。
stYy2002 2004-12-24
  • 打赏
  • 举报
回复
是要用数组还是图形的X,Y值来做,两种哪种好?
xyzxyz1111 2004-12-24
  • 打赏
  • 举报
回复
当然是判断机器人同障碍物是否有相交.
方法如

将机器人的位置同每个障碍物依次比较,得到相交与否

地图法,在一个地图上每个障碍物的的位置处标上标记,然后判断机器人在地图的位置上是否有标记,如果有,就是有障碍物

其他的如X叉树什么的就更复杂了.
stYy2002 2004-12-24
  • 打赏
  • 举报
回复
请问xyzxyz1111(如是我闻),子系统2要判断障碍物要用什么方法比较好?
并请详细的介绍一下,万分感谢你。

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧