睿抗足球机器人Day 1
下载完之后去到下载目录,开始安装Sublime Text3(可能此时没有可以选择的安装路径,但是可以根据它显示的安装路径去找到下载的安装包)
一、下载软件Sbulime Text 3
第一步:去官网下载Sbulime Text 3


第二步:找到安装Sublime Text3的文件
下载完之后去到下载目录,开始安装Sublime Text3(可能此时没有可以选择的安装路径,但是可以根据它显示的安装路径去找到下载的安装包)

第三步:后续的配置
后续的配置可以在B站上找视频观看,我之前配置好了,所以不需要了
http://【如何更好的利用Sublime Text3】https://www.bilibili.com/video/BV11h41197mM?vd_source=70e3aaa6cbfe13f5858272f48dacf336(这个网站的Sublime安装是根据官网来的,可以看看)
二、在ilook中我遇到的问题
1.可以成功导入脚本,但是启动不了程序
我因此重新下了好几遍Sublime Text软件,但都没有解决问题,所以问题可能出现在仿真软件ilook上面
解决方法一:重启电脑
解决方法二:查看文件的路径是否有中文,查看仿真软件的路径是否有中文
解决方法三:我发现我重启电脑也没有用,我的仿真软件ilook或者我的Sublime Text3的路径都是英文,所以我去看了一下我ilook的管理员权限,我打开管理员权限之后,就解决了问题,而且需要每次打开仿真软件ilook之前都需要打开管理员权限才可以
三、注意事项
1.文件的路径、软件的路径一定要是英文路径,不能有中文
四、C++软件环境配置
第一步:创建文件


第二步:添加官方给的utils文件
这个是机器人编程手册里面C++环境配置的教程,最开始我是没有看懂的,现在我来具体配置一下上面的配置步骤
(1)在文件资源管理c++文件夹里面创建utils文件夹



(2)复制官方给的utils的文件
(3)粘贴到自己创建的C++文件src里面的utils
(4)在VS2013里面添加文件




第三步:添加官方给的worldmodel文件

(1)首先要去复制官方文件里面的worldmodel
(2)再粘贴到自己创建的worldmodel_lib里面
(3)在vs2013里面添加worldmodel(这一步很容易出错)





注意:后面的.lib一定要有,不然在生成文件的时候显示查找不到worldmodel文件
第四步:创建写C++的文件

五、我在写C++文件中遇到的问题

我最开始以为是我没有创建zhaoqiu.h文件,我创建了之后发现还是报错,于是问了群里面


如果此时选择的是utils那么头文件包含中则不需要写utils
最后就成功解决了

六、编写C++程序
1.C++大体框架
extern "C"_declspec(dllexport) PlayerTask player_plan(const WorldModel* model, int
robot_id);
//此部分为声明函数
player_plan PlayerTask player_plan(const WorldModel* model, int robot_id)
//此部分为定义函数体 player_plan
{
PlayerTask task;
return task;
//此部分为生成一个 PlayerTask 对象,通过对象实现 skill 功能,
//并将其返回给调用者
}
//注意:用户必须严格按照框架中的方法声明 player_plan 函数,并定义函数。
2.C++找球代码
#include "ball.h"
#include "basevision.h"
#include "constants.h"
#include "FilteredObject.h"
#include "game_state.h"
#include "historylogger.h"
#include "matchstate.h"
#include "maths.h"
#include "PlayerTask.h"
#include "referee_commands.h"
#include "robot.h"
#include "singleton.h"
#include "util.h"
#include "vector.h"
#include "worldmodel.h"
extern "C"_declspec(dllexport) PlayerTask player_plan(const WorldModel* model, int robot_id);
PlayerTask player_plan(const WorldModel* model, int robot_id)
{
PlayerTask task;
//获取我方机器人的向量坐标
const point2f& player_pos = model->get_our_player_pos(robot_id);
//获取我方球员的朝向
const float&dir = model->get_our_player_dir(robot_id);
//获取球的向量坐标
const point2f&ball_pos=model ->get_ball_pos();
//敌方球门正中心坐标
const point2f&opp_goal = -FieldPoint::Goal_Center_Point;
//向量朝向1-2得到的朝向是2->1,与教学上(1,2)-(0,0)得到的方向向量是(1,2)大同小异
//这里设定face_dir是球朝向球门的方向
const float&face_dir = (opp_goal - ball_pos).angle();
//到达目标点朝向:队员正对球
task.orientate = face_dir;
//需要到达目标点的坐标=球的位置+向量偏移距离
task.target_pos = ball_pos - Maths::vector2polar(13,face_dir);
return task;
}
七、把C++的程序调用到lua脚本里面的配置
1.更改VS的输出目录

这是没有更改vs2013生成的文件

这是更改后vs2013生成的文件

更改方法

2.把C++文件调用到lua脚本里面的配置
(1)复制C++文件Debug里面的dll文件
(2)把C++里面的dll文件粘贴到som->team->user_skills里面
八、在lua脚本里面调用C++函数
gPlayTable.CreatePlay{
firstState = "PassBall",
["PassBall"] = {
switch = function()
if CIsGetBall("Kicker")then
return "Finish"
end
end,
Kicker = task.KickerTask("zhaoqiu"),
},
name = "zhaoqiu"
}
注意:
1.另存为lua脚本时,下面的文件名要加.lua
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)