ROS笔记(二) SolidWorks to URDF 并实现可视化

尝试过写urdf和xacro,没有试过使用SolidWorks导出模型。
使用SolidWorks 2016
使用SolidWorks to URDF Exporter工具:点这里
SolidWorks_2016帮助文档:点这里

使用SolidWorks画出各个零件,再在新建装配图将各个零件配合起来。
在这里插入图片描述
插入基准轴后使用URDF Exporter工具。(通过后续的感受和理解,此处还应插入坐标系,软件自动计算的坐标系有的会反转方向)
如何使用这个工具网上教程很多:点这里
将导出的文件放入ubuntu工作空间下,运行launch文件 夹中的display.launch,选定坐标系,再添加机器人模型,就可将模型显示在rviz中。模型倾倒,和坐标系有关。
在这里插入图片描述
在urdf代码中添加一个base_link和base_link_joint用于修正模型位置。

<link name="base_link">
    </link>
  <joint name="base_link_joint" type="fixed">

    <origin

      xyz="x x x"

      rpy="x x x" />

    <parent link="base_link"/>

    <child link="body_link"/>

  </joint>

再次运行display.launch,拖动GUI按钮就可以改变各个关节的角度。
在这里插入图片描述

至此SolidWorks导出URDF并显示完成。
xacro比URDF更方便,将URDF修改为xacro。

在工作空间/src下新建功能包:

// catkin_create_pkg mydog_description urdf xacro

在这里插入图片描述
meshes:放置SolidWorks导出的模型渲染文件
urdf:存放机器人模型的URDF。
重命名导出的URDF为xacro。
在这里插入图片描述
在robot name 后加上:

// xacro="http://www.ros.org/wiki/xacro"

在这里插入图片描述
在xacro模型下可以定义常量,于是定义了两个常量,代码相应位置做常量使用的替换即可。
例如:
在这里插入图片描述

编辑launch启动文件

主要是加载xacro并在rviz中显示。
下面launch文件是在rviz中显示机器人的一种固定形态,只需修改对应文件夹名字。
在launch文件夹下创建display.launch

<launch>

    <param name="robot_description" command="$(find xacro)/xacro --inorder $(find mydog_description)/urdf/mydog_description.xacro"/>

    <param name="use_gui" value="true"/>
  
    <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />

    <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
    
    <node name="rviz" pkg="rviz" type="rviz" args="-d $(find mydog_description)/launch/urdf.rviz"/>

</launch>

配置好坐标系,添加机器人模型就可以在rviz中看到模型并通过GUI改变关节角度了。
接着再来修改模型姿态(重新定义关节角度)使得模型初始状态更规范:
打开xacro模型代码,修改<joint <orgin 下的rpy
简单说origin表示的是child link坐标系相对于parent link坐标系的距离和旋转, xyz和rpy
比如:

<origin rpy="0 1.57075 0"/> (y轴旋转90度) 

这个角度产生于SolidWorks装配图零件配合时的姿态还和产生的坐标系有关。由于SolidWorks使用不熟悉,并没有在软件里规范,只是拖到了大概的位子,于是在xacro代码中修改,可以通过一边修改一边通过rviz来查看。一共修改了4条腿,共12个关节的rpy。
在这里插入图片描述
检查URDF模型整体结构:
在urdf文件夹下执行 urdf_to_graphiz+要检查的urdf文件

urdf_to_graphiz mydog_description.xacro 

会在当前路径下创建一个pdf文件
在这里插入图片描述

将模型导入gazebo

在urdf文件添加link惯性碰撞属性,gazebo标签,为joint添加传动装置,添加gazebo控制插件后。
同样的在工作空间/src下新建功能包名为:mydog_gazebo
创建launch文件夹和world文件夹。
launch文件夹下新建文本mydog_world.launch

<launch>

  <!-- these are the arguments you can pass this launch file, for example paused:=true -->
 
  <arg name="paused" default="true"/>
  <arg name="use_sim_time" default="true"/>
  <arg name="gui" default="true"/>
  <arg name="headless" default="false"/>
  <arg name="debug" default="false"/>

  <!-- We resume the logic in empty_world.launch, changing only the name of the world to be launched -->
  <include file="$(find gazebo_ros)/launch/empty_world.launch">

    <arg name="debug" value="$(arg debug)" />
    <arg name="gui" value="$(arg gui)" />
    <arg name="paused" value="$(arg paused)"/>
    <arg name="use_sim_time" value="$(arg use_sim_time)"/>
    <arg name="headless" value="$(arg headless)"/>
  </include>

  <!-- Load the URDF into the ROS Parameter Server -->
  <param name="robot_description"
    command="$(find xacro)/xacro --inorder '$(find mydog_description)/urdf/mydog_description.xacro'" />

  <!-- Run a python script to the send a service call to gazebo_ros to spawn a URDF robot -->
  <node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen"
    args="-urdf -model mydog -param robot_description"/>

</launch>


即把模型加入gazebo中。
在这里插入图片描述
遇到的一些问题:
1.之前也使用过SolidWorks2018,rviz出现过很多零件漂浮,是URDF Exporter插件和2018有不兼容的问题存在。
2.生成过程中都遇到过零件散落问题。
在这里插入图片描述
在这里插入图片描述
在bilibili中SUES木鸢机甲工作室 转发古月居视频 还提到:“在SolidWorks中装配体基座,也就是第一个零件的坐标系应该是Z轴朝上,其他都是y轴朝上,这个非常重要。古月居老师在这个视频里的SW2URDF的插件版本是比较老的了,新的版本就会出现这个坐标系问题。”
我之前使用的是自动生成坐标系和基准轴或许是电脑配置问题导致坐标系没有计算好,可能出现零件散落。
我在实际操作中还感觉到,有时需要重复操作,比如上一步设置了参数,到下一步再切回去参数就没有了,有时候计算不出惯性参数,有时候插件的设置会重置到初始状态,感觉是兼容性问题。

在手动插入基准轴和坐标系后,导出URDF没有再出现过零件散落。
3.gazebo模型点击运行后,模型出现侧翻。
可能是和SolidWorks原点位子有关。
找资料,说的是要让重心和原点重合。使用“配合”,首先找到你模型的重心,然后找到你坐标系的原点位置,将两个“配合”就行,将你小车的重心和坐标原点的重心设置重合就行。
我的版本实际操作不行,报错过定义。我是通过装配第一个固定件的时候放置零件,使原点大致接近到重心位子。更好的解决方法还没找到,但是这样设定后导出的urdf模型到gazebo不再侧翻 。

  • 4
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ROS(机器人操作系统)和SolidWorks是两个常用于机器人设计和控制的软件平台。ROS是一个开源的软件框架,提供了广泛的工具和库,用于开发和控制机器人系统。而SolidWorks是一个常用的计算机辅助设计(CAD)软件,用于创建和模拟3D模型。 URDF(Unified Robot Description Format)是ROS中用于描述机器人模型的一种文件格式。它通过XML语法描述机器人的整体结构、关节、传感器、链接等信息,并能与ROS中其他工具和算法进行集成。 在将SolidWorks模型转化为URDF格式之前,首先需要对SolidWorks模型进行导出。可以使用SolidWorks的插件将模型导出为Collada文件格式(.dae)。Collada是一种通用的3D模型文件格式,可以在不同的软件平台之间进行数据交换。 一旦从SolidWorks导出了Collada文件,可以使用ROS中的工具将其转化为URDF格式。ROS提供了一个命令行工具,可以将Collada文件转换为URDF文件。可以使用以下命令将Collada文件转换为URDF: ``` rosrun collada_urdf urdf_from_collada my_robot.dae -o my_robot.urdf ``` 其中,`my_robot.dae`是导出的Collada文件路径,`my_robot.urdf`是输出的URDF文件路径。 在转换过程中,需要注意调整URDF文件中的参数和属性,以确保模型的正确性和精确性。特别是在描述机器人的链接、关节、传感器等元素时需要小心。 转换完成后,URDF文件可以被ROS中的其他工具和算法使用。可以将URDF文件加载到机器人控制器中,使用ROS提供的库实现运动规划、碰撞检测、仿真等功能。同时,可以使用RViz等可视化工具,对URDF文件进行可视化和调试。 总之,将SolidWorks模型转化为URDF格式是将两个不同软件平台集成的重要步骤。通过这种转换,可以在ROS中利用SolidWorks创建的3D模型,并通过ROS提供的工具和算法实现更复杂的机器人控制和仿真任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值