Unity+ML-Agents训练机械臂到达目标点

更新时间:2023-06-17 11:41:12 阅读:25 评论:0

Unity+ML-Agents训练机械臂到达⽬标点
Unity+ML-Agents训练机械臂到达⽬标点
⾸先你需要从Unity官⽅Github下载 ,然后进⾏安装。然后还需要在你的电脑上配置Tensorflow,因为以前跑过⼀些深度学习的东
霍金的宇宙西,Tensorflow已经配置好了,还没有装的⼩伙伴可以参考 ,推荐使⽤Anaconda进⾏安装,安全快捷⽆痛苦。
环境搭建:
⾸先最基础的,按照流程创建Academy和Brain。新建⼀个空物体,命名随意,最好具有辨识度;然后添加⼀个C#脚本,同样命名随意,然后把继承类改为Academy,其他不⽤修改。
然后点击Add component,输⼊brain,添加Brain组件:
然后开始设置智能体,其创建流程跟Academy⼀样,然后将继承类改为Agent。补充⼀点,Academy
和agent脚本中都要添加using MLAgents。因为设计多智能体并⾏训练,所以我将机械臂模型放在agent组件下作为它的⼦物体
机械臂⼀定要按层级关系设置好⽗⼦关系:
考研政治答案然后在Agent脚本中设置机械臂各关节和⽬标物体然后再agent组件指定各关节。
上⾯东西设置好后就可以开始训练了,agent训练代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
balance是什么意思using MLAgents;comparewith
public class all_baxter_agent : Agent {
public GameObject S0;
public GameObject S1;
public GameObject E0;
public GameObject E1;
北京华尔街英语
public GameObject E1;
public GameObject W0;
public GameObject W1;
public GameObject endJoint;
public GameObject target;
private float previousDistance = float.MaxValue;
public bool goal = fal;
public void Start()
{
Done();
}
public override void AgentRet()发明家英文
{
previousDistance = float.MaxValue;
if (goal)
{
}
el
{
}
}
declinedpublic override void CollectObrvations()
{
Vector3 relativePosition = ansform.position - ansform.position;
float distanceToTarget = Vector3.ansform.position, ansform.position);//计算机械臂末端和⽬标点的距离
ation.y);
ation.x);
ation.z);
ation.x);
ation.z);
ation.x);
AddVectorObs(relativePosition.x);
AddVectorObs(relativePosition.y);
AddVectorObs(relativePosition.z);money什么意思
AddVectorObs(distanceToTarget); //获取的状态观察量,作为PPO⽹络的输⼊
}
public override void AgentAction(float[] vectorAction, string textAction)
{
float distanceToTarget = Vector3.ansform.position, ansform.position);
var action_s0 = Mathf.Clamp(vectorAction[0], -1f, 1f);
var action_s1 = Mathf.Clamp(vectorAction[1], -1f, 1f);
var action_e0 = Mathf.Clamp(vectorAction[2], -1f, 1f);
var action_e1 = Mathf.Clamp(vectorAction[3], -1f, 1f);
var action_w0 = Mathf.Clamp(vectorAction[4], -1f, 1f);
avn
var action_w1 = Mathf.Clamp(vectorAction[5], -1f, 1f);  //取[-1,1]之间的随机动作,是PPO⽹络的输出
if(Mathf.ansform.localRotation.y)>0.5f|| S1.transform.localRotation.x > 0.85f ||
{
AddReward(-5.0f);
英语四级总分Done();
}
if (ansform.position.y < 3.2 || ansform.position.y > 9)
if (ansform.position.y < 3.2 || ansform.position.y > 9)        {
AddReward(-5.0F);
Done();
}
if (distanceToTarget < previousDistance)//靠近⽬标点,给予奖励
{
AddReward(0.5f);
}
el
{
AddReward(-0.5f);
}
if(distanceToTarget<0.2f)//机械臂末端与⽬标物体距离⼩于阈值时,给予奖励        {
goal = true;
AddReward(25.0f);
Done();
}
previousDistance = distanceToTarget;
}
}
训练效果:
训练初期,机械臂在状态空间中乱窜:
⼤概经过了4个⼩时训练,发现效果还不错:
另外,我还使⽤了多智能体并⾏训练来提⾼训练效果,发现很有⽤:

本文发布于:2023-06-17 11:41:12,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/148162.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:机械   训练   设置   关节   物体   需要   标点
相关文章
留言与评论(共有 0 条评论)
昵称:
匿名发表 登录账号
         
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图