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"><originxyz="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不再侧翻 。
ROS笔记(二) SolidWorks to URDF 并实现可视化相关推荐
- ROS笔记(14) URDF
ROS笔记(14) URDF 1. URDF简介 2. link 3. joint 4. robot 5. gazebo 6. 解析 7. 显示 1. URDF简介 统一机器人描述格式,Unified ...
- ROS学习笔记13 —— SolidWorks、urdf、xacro及sdf间的转换
SolidWorks转urdf 预处理工作: 将close loop joint拆成open loop joint 使用sw2urdf生成相应的urdf 检查生成的urdf 利用urdf_tutori ...
- SolidWorks转.urdf格式机器人模型导入Matlab
SolidWorks转.urdf格式机器人模型导入Matlab 本文讲述了利用solidworks将机器人模型转换为urdf格式导入Matlab中,以便后续法开发等操作.同时针对测试时遇到模型导出不完 ...
- ROS学习笔记二:探索ROS文件系统
ROS学习笔记二:探索ROS文件系统 ROS针对自己文件的特性,具有一些自己的工具命令,当针对ROS文件进行操作的时候是非常方便的.这些命令和ubuntu系统原有的命令相似但却不同,单独针对ROS文件 ...
- solidworks导出urdf文件并在ROS中显示
01 solidworks导出urdf文件 官网下载插件:http://wiki.ros.org/sw_urdf_exporter 然后到github上下载插件,虽然我是solidworks2022, ...
- solidworks转urdf文件及遇到的一些问题
一.solidworks的插件下载 http://wiki.ros.org/sw_urdf_exporte 二.打开:在工具--tools--Export as URDF 三.设置关节 根据插入的基准 ...
- ROS笔记(30) Movelt!配置文件
ROS笔记(30) Movelt!配置文件 1. SRDF 2. 控制器参数 3. 关节限位 4. 运动学求解器 5. 运动规划库 1. SRDF Setup Assistant配置的 机械臂参数.夹 ...
- ROS笔记(28) Setup Assistant
ROS笔记(28) Setup Assistant 1. Setup Assistant 2. 加载机器人URDF模型 3. 配置自碰撞矩阵 4. 配置虚拟关节 5. 创建规划组 6. 定义机器人位姿 ...
- ROS笔记(27) 机械臂的组装
ROS笔记(27) 机械臂的组装 1. 机械臂模型 2. 声明模型的宏 3. 创建机械臂模型 4. 加入Gazebo属性 5. 显示机械臂模型 1. 机械臂模型 这里就是用模拟的一个六轴机械臂--HH ...
最新文章
- C++智能指针:unique_ptr详解
- 使用PhoneGap开启移动开发之旅
- C语言字符串相关一级指针内存模型
- varchar2(100 char)是什么意思
- springboot 监听所有异常_SpringBoot 全局异常配置及返回自定义页面
- 我的天哪我有博客了!
- mysql 序列 语句_MySQL 序列使用
- 博客“评论王”评选活动开始啦!
- 给控件做数字签名之二:生成证书文件
- 善用佳软:高效能人士的软件应用之道
- 图书租赁管理系统 图书馆借书还书 计算机毕设项目
- 科学计算matlab尔雅答案,科学计算与MATLAB语言超星尔雅最新答案大全
- Hybrid APP混合开发
- http://nianjian.xiaze.com/tags.php?/%E5%B9%BF%E5%B7%9E%E7%BB%8F%E6%B5%8E%E5%B9%B4%E9%89%B4/1/1360241
- 用c语言编写计算器计划报告书,用c语言编写计算器计划报告书.docx
- 使用蒙特卡罗法解决道填图题目
- multisim中pwl_在Multisim中创建任意函数信号源
- 大数据实时计算流程介绍
- 【智能制造】当数据智能遇上工业制造
- mysql中实现分类统计查询的步骤_在MySQL中如何进行分组统计查询