周报–Franpin
-
测比赛
- 发现鲁东的带球特别的好,带球很快很灵活
- 我们的守门员不太行(扑球不准)
- 发现了一个bug就是球离我方球员很近的时候,我方球员会把球踢到自己球门
- 写了一个步态优化任务,主要是想让他kickball()的时候步态参数由sprint切换为approach。
SkillType OptimizationBehaviorWalkOmi::task_Sprint_turn_Approach(){
static int x = 1;
VecPosition target;
VecPosition myPosition = worldModel->getMyPositionGroundTruth();
VecPosition ballPosition = worldModel->getBallGroundTruth();
if(myPosition.getDistanceTo(ballPosition)<1){
x++;
}
switch (x%4)
{
case 1:
target=VecPosition(15,-10,0);
break;
case 2:
target=VecPosition(15,10,0);
break;
case 3:
target=VecPosition(-15,10,0);
break;
case 4:
target=VecPosition(-15,-10,0);
break;
default:
break;
}
SkillType ret=kickBall(KICK_FORWARD,target);
return ret;
}
- 看了看ut原始的优化底层,用ut原始的sample_start-optimization.sh写了一个优化的python脚本,虽然没有咱们实验室那样高级,但是能跑起来(亲测,培训的时候给他们讲讲)。
import cma
import os
std_list =[21.878452192908963,
-107.2655684773586,
-46.03084224893723,
122.50096005151583,
36.70802042526406,
74.34964372370875,
-23.35326324263892,
-1.411851711850464,
4.8436144712052585,
-12.878536016473056,
8.73474032972045,
-2.0087222938685585,
2.4649510821897755,
-0.19721363030046984,
-0.07855676227334851,
7.790202814460635,
5.980745105156915,
0.60539945683587]
#[11.6140517708,-4.9171027329,0.3251961719,-2.496460126,4.1228343724,4.8159507012,27.8958518161,34.1181422294,2.547294129,-3.247463629,-9.7463724405,-18.8513479245,0.2107818939,-2.8414504055,-0.6188735371,-8.6481949996,58.3129345744,58.8881654843,6.4995162332,14.6678754125,-0.2613845865,-0.0358574055]
#[-2.0087222938685585,2.4649510821897755,-10,-10,5,5,10,5,5,-10,-10,5,5,10,-10,5,-5,5,-0.223707187448,-0.0722786582128]
#[11.6140517708,-4.9171027329,0.3251961719,-2.496460126,4.1228343724,4.8159507012,27.8958518161,34.1181422294,2.547294129,-3.247463629,-9.7463724405,-18.8513479245,0.2107818939,-2.8414504055,-0.6188735371,-8.6481949996,58.3129345744,58.8881654843,6.4995162332,14.6678754125,-0.2613845865,-0.0358574055]
def writeToFile(paramList, filePath):
file = open(filePath, 'r+')
paramLines = file.readlines()
file.close()
paramNames = [i.split()[0] for i in paramLines]
newLines = []
for i in range(len(paramNames)):
newLines.append(paramNames[i] + '\t' + str(paramList[i]) + '\n')
file = open(filePath, 'w+')
file.writelines(newLines)
file.close()
def run(paramList, roboType, absPath):
writeToFile(paramList, '../paramfiles/optimizing.txt')
command1 = './sample_start-optimization.sh {0} {1} ./out'.format(roboType, absPath)
os.system(command1)
command2 = 'pkill -9 rcss'
os.system(command2)
file = open('./out')
lines = file.readlines()
file.close()
rst = lines[0]
print("rst: ",rst)
return float(rst)
def eva(ind):
paramList = []
for x in range(0, len(ind)):
paramList.append(ind[x] * std_list[x])
score = run(paramList, 1, '../paramfiles/optimizing.txt')
file = open('./out2', 'a')
newLines = []
for i in range(len(paramList)):
newLines.append(str(paramList[i]) + ',')
newLines.append(str(score) + '\n')
file.writelines(newLines)
file.close()
return 30-score
cma.fmin(eva, len(std_list)*[1.1], 0.3)
- 看了看setMonMessage()函数里发的消息
setMonMessage()发消息网址:
http://simspark.sourceforge.net/wiki/index.php/Network_Protocol#Moving_an_Agent
本来在写优化任务的时候用,结果发现setMonMessage()给server发消息有延迟!
setMonMessage( (ball (pos <x> <y> <z>) (vel <x> <y> <z>)))
- 在优化步态的时候发现有些步态优化任务里gototarget()函数里的内部被修改了,所以在kickball()过程中离球很近时步态参数没有转变为approach。