vrep的bubbeRob仿真机器人制作教程

1. 构造基础模型

  • 添加bubbleRob的主体。点击 Menu bar --> Add --> Primititive shape --> Sphere,添加一个球体(以下称为bubbleRob),并将X-size设置为0.2。

  • 设置bubbleRob的动态属性。双击bubbleRob,打开动态属性设置对话框,勾选Body is respondableBody is dynamic。bubbleRob将对外界的碰撞作出动作和回应。同时在Common选项卡中,勾选CollidableMeasurable, Detecable, Renderable

    在这里插入图片描述

  • 移动bubbleRob位置。将bubbleRob沿Z轴上移动2cm(因为后面要安装轮子),打开position对话框,在translation选项卡的Z轴输入0.02(m)。注意要以world为参考系。
    position对话框 在z轴输入0.02

  • 加入距离传感器。点击Menu bar --> Add --> Proximity sensor --> Cone type,打开orientation对话框,在Around YAround Z上输入90。打开position对话框,选择position选项卡,在X-coordZ-coord上输入0.1和0.12。
    orientation对话框 在这里插入图片描述

  • 设置距离传感器的探测距离。双击添加的Proximity sensor(以下称为bubbleRob_sencingNose),点击Show volume parameters,修改Offset为0.005,Angle为30,Range为0.15。确定后返回上一级,点击Show detection parameters,取消勾选Don’t allow detections if distance smaller than
    在这里插入图片描述
    在这里插入图片描述

  • 将bubbleRob_sencingNose安装到bubbleRob上。先在Scene hierachy上点击bubbleRob_sencingNose,然后按住Ctrl,再点击bubbleRob,最后点击Menu bar --> Edit --> Make last selected object parent 。

  • 构建轮子。可以新开一个界面,Menu bar --> File --> New Scene,在这个界面上构建好轮子模型后,再复制回去。添加一个圆柱体(cylinder),设置尺寸为(0.08, 0.08, 0.02)。同时将轮子设置为Collidable, Measurable, Renderable, Detectable。最后设置轮子的position为(0.05, 0.1, 0.04),Orientation为(-90, 0, 0)。Ctrl+C, V复制粘贴轮子,设置第二个轮子的position为(0.05, -0.1, 0.04)。将两个轮子复制粘贴回前一个Scene。

  • 安装轮子。需要先给左(右)轮子安装传动轴(电机)。点击Menu bar --> Add --> Joint --> Revolute。需要将传动轴安转在轮子的中心点。首先选中轮子,然后按住Ctrl,再选中传动轴。
    (电机),打开position对话框,在position选项卡中,点击Apply to selection;在orientation对话框的orientation选项卡中,也点击Apply to selection。然后在Scene hierarchy中,双击传动轴,点击Show dynamic parameters,选中enable the motorLock motor when target velocity is zero。同样对另外一个轮子做同样的工作。最后就是将轮子固定在传动轴上,然后将两个传动轴固定到bubbleRob上。

  • 构建后轮。如果没有后轮,运行仿真的时候,机器人是往后倒的。同样在新建场景中,添加一个球体(以下称为bubbleRob_slider),设置半径为0.05,动态属性设置为Collidable, Measurable, Renderable, Detecable。然后将bubbleRob_silder的材料摩擦力设置为0。

    在这里插入图片描述

  • 固定后轮。为了将bubbleRob_silder固定在bubbleRob上,需要添加一个力传感器,点击Menu bar --> Add --> Force sencor,添加一个力传感器(以下称为bubbleRob_connection)。设置position为(-0.07, 0, 0.05),将bubbleRob_silder绑定在bubbleRob_connection上,然后复制回前一个场景,将bubbleRob_connection绑定在bubbleRob上。如果这时打开仿真,就会发现后轮迅速弹开,这是因为bubbleRob_silder和bubbleRob之间存在接触,仿真软件vrep认为它们之间存在碰撞。解决办法是在它们的动态属性对话框中,设置响应掩码。将bubbleRob_silder的掩码(local respondable mask)设置为00001111,将bubbleRob的掩码设置为11110000。这时再运行仿真就不会出现后轮弹开的现象了。但是还会有小幅度的滑动现象,这是由于仿真引擎和质量惯性的原因。在动态属性框中将三个轮子的质量和惯性因子设置成8倍,即点击三次M=M * 2(for selection)I=I * 2(for selection)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 运行仿真。设置两个传动轴的速度为50。

2.创建距离传感器、视觉传感器

  • 创建集合(collection)。为了将整个bubbleRob机器人当成一个整体,需要将bubbleRob全部零件设置为一个集合。点击 Menu bar --> Tools --> Collections打开对话框。或者单击下列图标:
    在这里插入图片描述
  • 将bubbleRob设置为集合。点击Add new collection,然后在左侧列表中选中bubbleRob,点击Add。点击Visualize selected collection可以查看集合中的元素。 在这里插入图片描述
  • 添加距离传感器。点击 Menu bar --> Tools --> Calculation module properties,也可以点击下列图标:
    在这里插入图片描述
    在对话框中,点击Add new distance object,然后选择检测目标(bubbleRob_collection是上面的colleciton,已改名)和被检查目标(其他所有物体)。点击OK后,将这个对象重命名为bubbleRob_distance,对于后面的绘图有帮助。
    在这里插入图片描述
  • 添加绘图对象。点击Menu bar --> Add --> Graph,然后将绘图对象重命名为bubbleRob_graph。将绘图对象绑定在bubbleRob上。
    在这里插入图片描述
    接着调整graph的坐标为(0, 0, 0.005),双击graph设置属性,取消Display XYZ-planes,然后点击 Add new data stream to record,Data stream type选择Object absolute x-position,Object / items to record选择bubbleRob_graph。这样我们便可以记录bubbleRob实时的x坐标值。同理也对Y轴和Z轴进行同样的设置。另外,为了显示bubbleRob到其他物体的距离,点击 Add new data stream to record,Data stream type选择Distance: segment length,Object / items to record选择bubbleRob_distance。最后重新命名这些数据流(双击重命名)。如下图。
    在这里插入图片描述
    可以在Time graph properties属性框中改变数据流线条的颜色和是否显示(取消勾选Visible则不显示)。
  • 设置bubbleRob的3D运动轨迹。同样在graph的属性框中,点击Edit 3D curves,打开轨迹对话框,点击Add new curve,XYZ值分别对应bubbleRob_x_pos, bubbleRob_y_pos, bubbleRob_z_pos,勾选Relative to world,设置参考系为世界坐标系,然后输入Curve width为4。
    在这里插入图片描述
  • 添加障碍物。加入半径为0.1m, 高度为0.2m的圆柱体,然后可以使用Ctrl+CCtrl+V进行批量复制。可以按住Shift,再按住鼠标左键进行多选。先按住鼠标左键,再按住Shift可以进行微小调整。先按住鼠标左键,再按住Ctrl可以在Z轴进行调整。
  • 定义模块。如果我们想点击某个零件时,选中的是整个bubbleRob,或者是复制bubbleRob主体时,粘贴出来的bubbleRob也包含全部零件,或者防止不小心拖动某个零件导致错位,可以将bubbleRob的整体定义为一个模块。首先打开bubbleRob主体的属性框,在common属性项中,勾选Object is model baseObject/model can transfer or accept DNA
    在这里插入图片描述
    第一项的作用是保存或复制某个对象时,会同时保存或复制它的所有子对象。第二项的作用是修改某个对象时,可以通过DNA transfer toolbar button将所有修改复制到该对象的所有副本。该按钮如下所示。
    在这里插入图片描述
    然后将两个转动轴(关节)和距离传感器还有绘图对象不要显示在模块的框框中。同样是在属性框的common属性项中,勾选Ignored by model bounding box,对比图如下所示,左侧是没有勾选之前的,右侧是勾选之后的。
    在这里插入图片描述为了隐藏在转动轴和连接器这些小零件,可以两个转动轴和连接器的camera visibility layer勾选第10层,取消第2层。默认情况下第9-16层是不显示的,因此设置之后它们会在场景中隐藏起来。
    在这里插入图片描述
    在这里插入图片描述为了单击小零件时,自动选中bubbleRob主体,将两个轮子、滑块、传感器和绘图对象勾选上Select base of model instead。如果确实想只选中小零件,可以按住Ctrl+Shift,再点击小零件。也可以在左侧列表中选中。
  • 增加视觉传感器。点击 Menu bar --> Add --> Vision sensor --> Perspective type,然后将视觉传感器绑定在距离传感器上,将位置坐标为relative(0,0,0),同理将旋转角度也设置为relative(0, 0, 0)。同时隐藏视觉传感器,通过勾选Select base of model insteadIgnored by model bounding box。最后,在视觉传感器的属性框中,将Far clipping plane设置为1,Resolution xResolution y都设置为256。前者是设置最远检测距离,后者是设置分辨率。
    在这里插入图片描述
  • 添加滤波器。打开Show filter dialog,在下拉框中选择Edge detection on work image,然后点击Add filter。成功添加Edge detection on work imagel滤波器后,点击上移图标,将滤波器移动至第二个位置。最后双击滤波器将阈值修改为0.2。在这里插入图片描述

创建脚本控制bubbleRob

  • 只有在编写脚本后,bubbleRob才等于有了生命。在左侧列表中右键bubbleRob,点击Menu bar --> Add --> Associated child script --> Non threaded,创建一个脚本,这是bubbleRob图标的旁边会出现一个“小纸张”的图案,
    在这里插入图片描述
    双击进去即可编写Lua脚本。下面是一个实例脚本:
function speedChange_callback(ui,id,newVal)
    speed=minMaxSpeed[1]+(minMaxSpeed[2]-minMaxSpeed[1])*newVal/100
end

function sysCall_init()
    -- This is executed exactly once, the first time this script is executed
    bubbleRobBase=sim.getObjectAssociatedWithScript(sim.handle_self) -- this is bubbleRob's handle
    leftMotor=sim.getObjectHandle("bubbleRob_leftMotor") -- Handle of the left motor
    rightMotor=sim.getObjectHandle("bubbleRob_rightMotor") -- Handle of the right motor
    noseSensor=sim.getObjectHandle("bubbleRob_sensingNose") -- Handle of the proximity sensor
    minMaxSpeed={50*math.pi/180,300*math.pi/180} -- Min and max speeds for each motor
    backUntilTime=-1 -- Tells whether bubbleRob is in forward or backward mode
    -- Create the custom UI:
        xml = '<ui title="'..sim.getObjectName(bubbleRobBase)..' speed" closeable="false" resizeable="false" activate="false">'..[[
        <hslider minimum="0" maximum="100" onchange="speedChange_callback" id="1"/>
        <label text="" style="* {margin-left: 300px;}"/>
        </ui>
        ]]
    ui=simUI.create(xml)
    speed=(minMaxSpeed[1]+minMaxSpeed[2])*0.5
    simUI.setSliderValue(ui,1,100*(speed-minMaxSpeed[1])/(minMaxSpeed[2]-minMaxSpeed[1]))
end

function sysCall_actuation()
    result=sim.readProximitySensor(noseSensor) -- Read the proximity sensor
    -- If we detected something, we set the backward mode:
    if (result>0) then backUntilTime=sim.getSimulationTime()+4 end 

    if (backUntilTime<sim.getSimulationTime()) then
        -- When in forward mode, we simply move forward at the desired speed
        sim.setJointTargetVelocity(leftMotor,speed)
        sim.setJointTargetVelocity(rightMotor,speed)
    else
        -- When in backward mode, we simply backup in a curve at reduced speed
        sim.setJointTargetVelocity(leftMotor,-speed/2)
        sim.setJointTargetVelocity(rightMotor,-speed/8)
    end
end

function sysCall_cleanup()
	simUI.destroy(ui)
end

最后可以通过点击 Menu bar --> Tools --> Scripts或者下面的图标来对当前场景全部脚本进行管理。
在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要进行仿真机器人足球5v5,您需要使用RoboCup Soccer Simulation 2D软件进行仿真。以下是一些基本的步骤: 1. 下载和安装RoboCup Soccer Simulation 2D软件 2. 学习仿真机器人足球5v5的基本规则和策略 3. 编写仿真机器人足球5v5的控制算法,并使用Java或Python语言编写代码 4. 运行仿真机器人足球5v5比赛,并进行测试和优化 以下是一些有用的资源和教程,可以帮助您入门: 1. RoboCup Soccer Simulation 2D官方网站:http://www.robocup2d.org/ 2. RoboCup Soccer Simulation 2D GitHub页面:https://github.com/rcsoccersim/rcssserver 3. RoboCup Soccer Simulation 2D教程:https://rcsoccersim.github.io/rcsoccersim_tutorial/ 4. RoboCup Soccer Simulation 2D控制算法示例:https://github.com/rcsoccersim/rcsoccersim/blob/master/src/rcs/examples/BasicAgent.java 希望这些资源和教程能够帮助您入门仿真机器人足球5v5。 ### 回答2: 仿真机器人足球5v5是一种以机器人为参赛选手的足球竞赛项目。它通过虚拟仿真环境,模拟真实足球比赛中的场地、球员动作和策略。下面是一个简单的教程,介绍如何玩转仿真机器人足球5v5。 首先,你需要下载并安装相关的仿真机器人足球软件,例如RoboCup Soccer Simulator。这个软件可以在官方网站上获取到,并且有着丰富的资源和教程。安装完成后,你可以开始进行编程和控制机器人的训练了。 接下来,你需要了解仿真机器人足球的规则和场地布局。仿真足球赛场大多呈长方形,由两个半场组成,并且有着标准的足球比赛规则。你需要了解每个位置的职责,如前锋、中场、后卫和守门员,并根据比赛需要合理安排机器人的位置和战术。 然后,你需要在编程方面熟悉机器人的控制。你可以使用各种编程语言,如Python或C++,编写机器人的行为代码。你需要编写机器人的决策逻辑,包括寻找球、移动、传球、射门等操作。要根据比赛情况和团队战术进行编程,并且注意编写高效的代码,以确保机器人能够灵活且快速地响应比赛需求。 最后,你需要进行实际的训练和比赛。你可以使用软件提供的仿真环境来进行单人训练或与其他机器人进行对战。在比赛中,你需要运用你的策略和编程技巧,与对手进行攻防并争取进球。 总结起来,要玩转仿真机器人足球5v5,你需要下载安装相关软件,学习规则和战术,掌握编程技巧,并进行实际训练和比赛。这个过程需要不断的练习和实践,希望你能享受这个有趣且具有挑战性的足球竞赛项目! ### 回答3: 仿真机器人足球是一种虚拟足球比赛,参与者可以通过操纵机器人控制球员,并与其他团队进行比赛。以下是一个关于仿真机器人足球5v5教程的简要说明: 1. 创建团队:首先,你需要组建一个团队。通常一个团队由五名球员组成。确保每个团队成员拥有一定的足球技能和战术理解。 2. 下载和安装仿真软件:在开始比赛之前,你需要下载和安装仿真机器人足球的软件。可以在相关网站上找到最新版本的软件,并根据指示进行安装。 3. 学习游戏规则:熟悉游戏规则是非常重要的。了解比赛的时间限制以及得分的方式。还需了解球队如何得到球、如何移动球员和如何得分。 4. 控制机器人:使用仿真机器人足球软件,控制你的机器人球员。学习如何控制机器人前进、后退、转向和射门。确保你能够迅速而准确地控制机器人球员的移动。 5. 分配角色:在团队中分配不同的角色给每个球员。通常有前锋、中场、后卫和门将。确保每个球员都清楚自己在比赛中的职责和位置。 6. 学习战术:研究不同的战术,例如进攻和防守策略。了解如何与队友合作,制定战术计划,并学习如何适应不同比赛情况。 7. 练习和比赛:练习是提高技能的关键。与你的团队一起进行训练和友谊赛。通过反复练习和错误的分析,不断改进你的技能和战术。 8. 参加比赛:一旦你和你的团队准备好了,可以参加仿真机器人足球比赛。可以参加本地比赛、区域比赛或国际比赛,与其他球队一决高下。 总之,仿真机器人足球5v5教程主要包括创建团队、安装软件、学习游戏规则、控制机器人、分配角色、学习战术、进行练习和参加比赛。通过不断的练习和实践,你将能够提高自己的足球技能,并在仿真机器人足球比赛中取得成功。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值