我是靠谱客的博主 细心帆布鞋,最近开发中收集的这篇文章主要介绍Webots模拟RoboMaster S1Webots模拟RoboMaster S1摘要参考资料,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Webots模拟RoboMaster S1

摘要

用webots实现RobotMaster S1的模拟控制,物理模型是借鉴网上开源的,自己做了一定的转轴重合修改,水平有限,世界文件为:Robomaster S1.wbt。
GitHub地址:https://github.com/PeytomX/RoboMasterS1_Webots.git
只实现了以下功能:
1,云台的Yaw,Pitch控制
2,底盘只能前进后退(控制说明会打印出来)。
3,第一视角摄像头显示
目前没有实现的:
1,底盘的麦克纳姆轮模拟
2,发弹
3,鼠标控制
目前想参考kuka的机器人把麦轮做出来,但是没有研究出来,会搞的大神可以一起探讨。
Webots模拟RoboMaster S1世界文件

参考资料

webots-R2020a-rev1百度盘下载地址:
链接:https://pan.baidu.com/s/1xnVMNtDvNJinigwC0fYiXQ
提取码:v36h
官方下载地址:
https://www.cyberbotics.com/ 速度很慢,现在已经更新到2020b了
官方指导资料:
https://www.cyberbotics.com/doc/guide/index
速度比较慢,需要小飞机(ssr)加速,如果英文不好可以用chrome插件彩云小译
第三方参考资料:
https://www.guyuehome.com/6039

https://blog.csdn.net/qq_33816775/article/details/102941035?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1

第三方S1模型文件,包含catia和vrml97

链接:https://pan.baidu.com/s/1N_82wcwb8NRzdUosg8i1uw
提取码:lvxu

机器人控制器代码

用Python写的 代码片.

"""S1_controller controller."""
from controller import Robot, Motor, Camera, Keyboard, Mouse
# create the Robot instance.
robot = Robot()
# get the time step of the current world.
TIME_STEP = 64
print("请用键盘和鼠标控制RoboMaster S1:")
print("- 'W': 前进。")
print("- 'S': 后退。")
print("- 'D': 向右平移。")
print("- 'A': 向左平移。")
print("- '左': YAW逆时针旋转。")
print("- '右': YAW顺时针旋转。")
print("- '上': pitch轴抬高。")
print("- '下': pitch轴下降。")
keyboard = robot.getKeyboard()
keyboard.enable(10)
maincamera = robot.getCamera('camera') #获取相机
maincamera.enable(10) #开启相机,并定义刷新间隔为10ms
yawmotor = robot.getMotor('yaw_motor') #获取yaw轴电机
yawmotor.setPosition(float('inf')) #定义旋转位置为无穷远
yawmotor.setVelocity(0.0) #定义初始速度为0
pitchmotor = robot.getMotor('pitch_motor')
pitchmotor.setPosition(float('inf'))
pitchmotor.setVelocity(0.0)
wheels = []
wheelsNames = ['wheel_fl_motor', 'wheel_fr_motor', 'wheel_br_motor', 'wheel_bl_motor']
for i in range(4):
    wheels.append(robot.getMotor(wheelsNames[i]))
    wheels[i].setPosition(float('inf'))
    wheels[i].setVelocity(0.0)
# 定义ID
# 1-------0
#     |
#     |
#     |
# 2-------3
# y
# |
# |
# -------->X   w为逆时针
Vx=0
Vy=0
w=0  
def Mecanum(Vx,Vy,w,i):  #速度解算子函数
    motorVelocity=[0,0,0,0]
    motorVelocity[0]=Vy-Vx+w
    motorVelocity[1]=Vy+Vx-w
    motorVelocity[2]=Vy-Vx-w
    motorVelocity[3]=Vy+Vx+w
    return motorVelocity[i]
    
while robot.step(TIME_STEP) != -1:
      # yawmotor.setVelocity(1.0)
      # pitchmotor.setVelocity(1.0)
      
      key=keyboard.getKey()
      if (key==ord('W')):
        Vy=5
        print('前进')
      if (key==ord('S')):
        Vy=-5
        print('后退')
      if (key==ord('A')):
        Vx=-5
        print('前进')  
      if (key==ord('D')):
        Vx=5
        print('前进')
      if (key==Keyboard.UP):
        pitchmotor.setVelocity(-1.0)
        print('pitch轴抬高')
      if (key==Keyboard.DOWN):
        pitchmotor.setVelocity(1.0)
        print('pitch轴下降')  
      if (key==Keyboard.LEFT):
        yawmotor.setVelocity(1.0)
        print('YAW逆时针旋转')  
      if (key==Keyboard.RIGHT):
        yawmotor.setVelocity(-1.0)
        print('YAW顺时针旋转')  
      if (key==-1):
        Vx=0
        Vy=0
        w=0
        pitchmotor.setVelocity(0)
        yawmotor.setVelocity(0)
        print('停止')
      # print(key)
      wheels[0].setVelocity(Mecanum(Vx,Vy,w,0))
      wheels[1].setVelocity(Mecanum(Vx,Vy,w,1))
      wheels[2].setVelocity(Mecanum(Vx,Vy,w,2))
      wheels[3].setVelocity(Mecanum(Vx,Vy,w,3))

最后

以上就是细心帆布鞋为你收集整理的Webots模拟RoboMaster S1Webots模拟RoboMaster S1摘要参考资料的全部内容,希望文章能够帮你解决Webots模拟RoboMaster S1Webots模拟RoboMaster S1摘要参考资料所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(71)

评论列表共有 0 条评论

立即
投稿
返回
顶部