引言
最近想做一下灵巧手的仿真,由于是刚入门,因此想先从简单一些的机械臂入手学习仿真,正好稚晖君的机械臂的外观和功能让我很喜欢,因此就决定先通过仿真它来学习仿真的流程以及轨迹规划的相关知识。下面是一些我踩过的坑,包括了文件名称含有原本稚晖君命名时的空格以及"."而报错,以及因为step没有转成sldprt导致无法保存,以及没有取消零件之间的链接导致转出URDF/mesh中的stl文件出错。
前置所需要的软件:
1、solidworks22.04(下方链接有下载教程)
https://zhuanlan.zhihu.com/p/18718826953https://zhuanlan.zhihu.com/p/18718826953
2、新手按照下面链接的教程装一个已经配好ros环境的虚拟机,老手的话就自己配吧。
ROS Noetic and ROS 2 Humble and Gazebo - MATLAB & Simulink
3、最后装solidworks的一个插件,用于将模型转成urdf文件
进入这个链接:
点击页面中间最大的图标,下载以后,点击exe文件进行安装,安装完毕后即可。
安装以后,再次打开solidworks后,发现solidworks中如下位置出现Tools---Expot as URDF即可
下面我们正式开始将dummy模型导入gazebo的工作。
第一步:导入开源文件
1、稚晖君帮我们把文件都整理到了下面github库中,先点击下方链接,进入对应的库。
GitHub - peng-zhihui/Dummy-Robot: 我的超迷你机械臂机器人项目。
2、进入库以后,通过点击绿色的code,然后点击显示下方红色方框中框好的选项,来下载对应的压缩包。
3、解压以后,得到这个文件
4、打开该文件,如下,其中只有Model部分是我们需要的
第二步:在solidworks中打开模型
1、打开Model,用solidworks打开下面Model中的这个step文件
2、在solidworks中将这个step文件另存存为sldprt文件,按照如下操作(我打开的是另一个step文件,所以不要管名字对不对的上,这样操作就可以了)。之所以要变成sldprt文件是因为我发现在step中,进行转URDF的操作每次保存都会出错,在sldprt中就不会。
另存为的时候,名字尽量由字母数字下划线组成,不要像原来一样包含"."或者空格,否则后续在仿真中会出错。
3、另存后打开刚才得到的sldprt文件,在slprt文件中,我们先要将零部件的链接断开,不然后续生成stl文件会出很多问题,会导致urdf文件通过gazebo打开时卡死或者报错。操作如下
4、这些操作进行完,就可以对dummy机械臂进行旋转轴和坐标系的建立了,可以参考下面的博客,说的很详细:
特别章节-0.1 SolidWorks导出机械臂的URDF模型各个关节坐标系设置_sw2urdf导入模型如何正确设置坐标系-CSDN博客
5、上述的操作进行完以后,就可以开始导出URDF的工作了!
打开在一开始提到的solidworks的插件,点击Export as URDF,开始配置。
6、配置关节和连接的刚体部分,这些在刚才那篇博客中都有提到,上下限不清楚可以都先设置-3.14~3.14,力矩设置为100,速度设置为1,后续在仿真中可以调整。然后导出URDF文件
点击导出URDF和meshes,就成功了。
第三步:在虚拟机中的gazebo中导入URDF
1、打开ubuntu终端,先在终端中运行下面代码,建立文件夹,也可以手动创建:
$ mkdir -p ~/catkin_myrobot/src
2、将从solidworks中导出的urdf文件夹,用U盘拷贝到刚才建的src文件夹中
3、然后我们打开目录,并且编译工作空间
cd catkin_myrobot
catkin_make
4、最后设置环境变量并且打开gazebo
source devel/setup.bash
roslaunch dummy_sldasm gazebo.launch
也可以打开rviz,通过:
roslaunch dummy_sldasm display.launch
2024.10.8补充
如果在gazebo中发现dummy机械臂没有固定在地面上,在urdf中加入如下代码:
<link name="world"/>
<joint name="fixed" type="fixed">
<parent link="world"/>
<child link="base_link"/>
</joint>