现在的位置: 首页 > 综合 > 正文

Humaniod开发小结

2013年09月04日 ⁄ 综合 ⁄ 共 1108字 ⁄ 字号 评论关闭

去年和rukia,robin和futou在实验室准备预选赛,做了一些  3D humaniod的一些工作。记得当时服务器做得还很不好,agent 稍微一跳就跳到天上去了,到地上时还重重弹了好几下。我们最后调出了一个 能够走三十几步的agent, 害得我们乐了好久。 

还是从跑比赛开始吧。 在安装服务器中configure的时候记得加上 -enabled-kerosin 即 ./configure –enabled-kerosin 
   
     服务器安装完成之后可以这么来跑比赛。 

       1. ./app/simspark/simpark                   加载 server 
       2. ./app/monitorspark/monitorspark    加载 Monitor 
       3. ./app/agentspark/agentspark          加载 agent 
       这三个命令都是在 rcssserver3D 目录下运行的 

这样子做完了,就可以在monitor中看到有一个humaniod站在球场中央。很是壮观。值得一提的是,当时的monitor做得还挺不错的,感觉很柔和。用方向键可以移动视角,放开键的时候视角还小移了一段距离。这种类似惯性的处理,让人感觉很真实。 

接下来的事就是开发agent,最简单最快的方法当然是从 agentspark 入手。agentspark 提供了消息的接收解析发送,同时也提供了一些动作,这些看看源代码就可以很清楚了。源码在 ./app/agentspark 中。 

agent 的动作控制,我们当时是这样做的。设置一系列中间状态,然后通过比例控制使agent的状态依次达到这些预定的中间状态。我们当时用的是最简单的方法,大家应该去尝试一些新的方法,比如PID。3D类人组的核心就在这里。 

还有一些文件需要注意,app/simspark/rsg 这个目录下存储了比赛用的物体 的结构信息。比如现在用的 agent/soccerbot.rsg . 这个可能是今年国际比赛用的机器人模型。我是从  SoccerbotBehavior::Init() 函数找到这边的。从这里可以得到不少有用的信息,比如可以从 Effector 知道某个关节的 控制命令. 

从下可以看出 larm_eff_1_2 是一个控制命令 
        (node UniversalJointEffector 
           (setName larm_eff_1_2) 
        ) 

我也就记得这么多了,等想到了再补充吧。^_^

 

抱歉!评论已关闭.