概述
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摘要参考资料所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复