机器人仿真软件 V-REP学习记录(二) -- BubbleRob代码分析

0.实现功能

  1. 功能:
  • 小球边向前运动并将探测到与障碍的距离反馈到graph显示
  • 当与障碍的距离小于阈值时,差速像后右方倒车
  • 同时视觉传感器始终将识别到的图像回传至浮动窗口
    在这里插入图片描述

1. sysCall_init() 初始化函数

  • 初始化想要控制的Handle
  • 设置基本参数
  • 创建UI --存疑
function sysCall_init()
    [将项目和脚本链接]
    bubbleRobBase=sim.getObjectAssociatedWithScript(sim.handle_self) 
    
    [得到电机的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
    
    [设置速度区间,180/3.14=57,以后直接用这个转换一下,注意这里转化为弧度]
    minMaxSpeed={50*math.pi/180,300*math.pi/180} -- Min and max speeds for each motor
    
    [切换前进后退的标志位]
    backUntilTime=-1 
    
    [创建UI--这里没明白]
    xml = '<ui title="'..sim.getObjectName(bubbleRobBase)..' speed" closeable="false" resizeable="false" activate="false">'..[[
                <hslider minimum="0" maximum="100" on-change="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

2. sysCall_actuation() 动作函数

  • 检测与物体的距离
  • 正常工作在前进状态
  • 更换右后退状态
function sysCall_actuation() 

    [检测距离传感器, 快碰到return 1,else is 0;一般输出为0]
    result=sim.readProximitySensor(noseSensor) 
  
   [如果碰到物体,设置倒退模式(大可更换其他方法)]
    if (result>0) 
    then backUntilTime=sim.getSimulationTime()+4 
    end 

	
	[前进模式]
    if (backUntilTime<sim.getSimulationTime()) then
      
        sim.setJointTargetVelocity(leftMotor,speed)
        sim.setJointTargetVelocity(rightMotor,speed)

    else
        [后退模式]
        sim.setJointTargetVelocity(leftMotor,-speed/2)
        sim.setJointTargetVelocity(rightMotor,-speed/8)
        
    end
end

3.function sysCall_cleanup() 清除

  • 停止运行时执行一次
  • 一般用来清除窗口
function sysCall_cleanup() 
    simUI.destroy(ui)
end 

4.子函数

  • 改变速度
  • 只在UI中用了一下不知道干了啥
function speedChange_callback(ui,id,newVal)
   speed=minMaxSpeed[1]+(minMaxSpeed[2]-minMaxSpeed[1])*newVal/100
end

5.问题

  1. UI窗口建立没明白咋回事,我注释掉不影响graph,摄像头窗口
  2. 子函数改变速度也没用
  3. 总体还行,再多看一些吧
  4. UI的函数文档中没有,就很气
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值