假设你已经有了自己的机械臂模型。关于模型我建议你有几部分关节就做成几部分装配体。
准备工作
1.给Solidwork安装sw2urdf插件。
https://github.com/ros/solidworks_urdf_exporter/releases
2.安装一个Python模块,urdf2webots。
https://pypi.org/project/urdf2webots/#files
或者在python环境中直接安装pip install urdf2webots
坐标系
在你的活动关节处设置坐标系,我这里只在旋转轴上找到一个点,直接安装世界坐标轴建立的坐标系。
导出URDF文件会让你选一个文件夹,可能会带上装配体的后缀,建议删除后缀,建议用英文名字。
生成URDF模型之后,进入python环境中,运行以下命令,python -m urdf2webots.importer --input=D:\Desktop\Solidworks*文件夹*\urdf*文件夹*.urdf
自己根据自己的路径进行修改
生成的proto文件默认会在用户目录下,C:\Users\你的用户名
打开proto编辑,替换全部,将所有的\替换为/
在Webots中导入你的模型。
导入后右键转换为基础节点。Convert to Base Node。
再新增一个Robot节点,把你的机械臂模型转换后的节点剪切进这个的children节点。
位置不对的话自己点击机械臂后显示三维坐标轴,拖动调整方向和位置。
创建个控制器,我这里用的python控制的,要在你机械臂的节点里把默认的控制器更改成你新建的。
代码如下:
"""my_controller controller."""from controller import Robot,Motorrobot = Robot()timestep = int(robot.getBasicTimeStep())joint1 = robot.getDevice('joint1')
joint2 = robot.getDevice('joint2')
joint3 = robot.getDevice('joint3')
joint4 = robot.getDevice('joint4')
joint5 = robot.getDevice('joint5')# 设置电机为速度控制模式
joint1.setPosition(float('inf'))
joint2.setPosition(float('inf'))
joint3.setPosition(float('inf'))
joint4.setPosition(float('inf'))
joint5.setPosition(float('inf'))while robot.step(timestep) != -1:joint1.setVelocity(2)joint2.setVelocity(2)joint3.setVelocity(2)joint4.setVelocity(2)joint5.setVelocity(2)pass
展示一下节目效果
webots