【从零开始的ROS四轴机械臂控制】(一)- 实际模型制作、Solidworks文件转urdf与rviz仿真
前记:
之前学习了很多关于ROS的知识,现在想自己制作一个四轴器械臂来练练手。所以就定为arm0.1版本,使用MG90s舵机来搭建一个四轴机械臂。arm0.1版本的目标是对不同颜色的方块进行分类并在Gazebo中模拟出来。
在未来计划的arm1.0版本中,计划使用步进电机来搭建六轴机械臂,使用上RL,实现人机交互,希望能在下个学期完成它。
一、模型制作
1.实际模型制作
首先是实际模型的制作,就使用3d打印机制作了。我使用的是ANYCUBIC的一款打印机,主要是因为价格便宜,性价比比较高,而且安装也不用太花时间,使用下来稳定性还不错。
四轴机械手网上的模型挺多的,我这里采用https://www.thingiverse.com/thing:34829提供的模型,这个模型设计中有考虑误差,所以打印基本一次成型。
以下是网站中提供的图片。
实际模型打印出如下图。比较需要注意的夹爪部分的齿轮,打印出来的尺寸和模型给出来的尺寸还是有区别的。因为是齿轮结构,对精准度要求比较高,需要打印几次才能成功。
舵机我采用MG90s,毕竟我手头只有这个版本的舵机。舵机控制使用16路舵机驱动控制模块PCA9685:
用arduino UNO控制,接线如图所示:
图片来源见水印,关于PCA9685模块的使用可以参考相关博客:Arduino uno使用PCA9685模块实现16路舵机控制。
以上是这个项目目前的框图,有很多细节没有标清楚,只标出了硬件部分,其它的在未来会慢慢补全。
全程使用VM虚拟机,在未来arm1.0版本中可能使用Raspberry pi来控制,只把图像处理和模拟部分放在PC上。
然后测试了我所使用的这个USB摄像头,发现其好像无法接到虚拟机中。然后考虑到价格问题,还是觉得没有必要买个新的摄像头,要实现对不同颜色的方块进行分类,完全可以在gazebo中模拟出来。arduino和虚拟机的连接是没有问题的,可以正常使用虚拟机进行下载程序。关于arduino如何与ros进行连接,将在以后的博文中进行说明。
2.Solidworks模型制作
Solidworks使用的是2017版本。因为之前提供模型的网站只提供stl文件,stl导入solidworks中的文件基本无法使用,所以就决定自己画了。因为是模拟,所以精度不是太高。只是简单的制作了其结构,夹爪部分感觉比较麻烦,也没有制作。最后使用了Solidworks自带的渲染工具,其效果如下图。
模型建好了就可以使用相关插件导出到urdf了。
二、Solidworks文件转urdf
URDF(Universal Robot Description Format)——通用机器人描述格式,它是ROS里边使用的一种机器人的描述文件,包含的内容有:连杆、关节,运动学和动力学参数、可视化模型、碰撞检测模型等。
1.sw_urdf_exporter插件
要将arm.SLDASM文件导出为urdf文件,sw_urdf_exporter插件是必不可少的。
1.5.1版本中提供了exe文件,下载完成后直接安装就可以了。之后就可以在插件栏找到它。
我的2017版本的solidworks的导出urdf选项在:工具–>File -->Export as urdf。
我当时一度以为该选项在文件选项栏,试了各种方法找不到导出选项,最后发现它在工具选项栏…真的是白白浪费了我几个小时的时间
2. 添加坐标系和转轴
导出urdf文件的插件没有问题后,接下来就要为导出urdf文件做准备了,首先是为我们的模型添加坐标系和转轴。
转轴添加比较简单,有很多添加方法。我使用的是选择某一个圆柱面添加。
坐标系是需要确定坐标系原点,在选择x,y,z的方向。
所以一个建议是首先确定axis0-3,再确定coordinate0-4。
3.导出urdf文件
在主界面打开,工具–>File -->Export as urdf,按照我图片中给出的顺序进行操作。注意不要选到别的地方,在点击Export之前,所有操作都不会保存。我尝试了几次才正确的导出的。
点击Rreview and Export之后,出现以下窗口,记得填写limit部分。
导出后,生成文件如下:
其中文件作用如下:
• scripts (python 可执行文件)
• src (C++ source files)
• msg (for custom message definitions)
• srv (for service message definitions)
• include -> 需要作为依赖项的头/库
• config -> 配置文件
• launch -> 提供更自动化的启动节点方式
• urdf (通用机器人描述文件)
• meshes (CAD文件.dae (Collada)或.stl (STereoLithography)格式)
• worlds (用于Gazebo模拟环境的类似XML的文件)
4.参考博客
导出urdf文件我参考了以下博客,
1.【ROS学习】Solidworks模型转化为URDF文件格式+三连杆机械臂示例+逆运动学
2. ROS Wiki sw_urdf_exporter
三、rivz仿真
1.rivz仿真
将导出的文件复制到~/catkin_ws/src
目录下.
修改display.launch文件,其在launch文件夹下。
将default的值从False改为True,否则无法打开Joint State Publish工具。
<argname="gui"default="False" />//将False改为True
...
运行命令打开文件
cd ~/catkin_ws
source devel/setup.bash
catkin_make
roslaunch arm0 display.launch
之后我们就可以打开RViz了,但是现在没有任何模型加载。
解决方法是,首先在Fixed Frame栏中选中自己定义的链接名称。
之后点击左下角的“Add”来添加我们的模型。
选择RobotModel,然后点击‘OK’。
之后模型就可以加载出来了,然后移动鼠标经行缩放移动,或者可以使用Joint State Publish来调整关节角度。
注意Joint State Publish的调整范围是根据之前设定的limit。
2.借助MoveIt!在rviz中进行逆运动学测试
使用Moveit!提供的setup_assistant来配置机械臂的package文件,需要使用到上一部分生成的URDF文件。
使用命令
roslaunch moveit_setup_assistant setup_assistant.launch
打开assistant后点击Create New Moveit Configuration Package 导入URDF文件,我的urdf文件路径如图片所示
设置Self-Collision,点击Generate Collsion Matrix :
设置Virtual Joints,Parent Frame Name设为world_frame,save完成后如下图所示。相关名称可以参考图片中的名称。
设置Planning Groups名称
选择运动学求解器,然后点击Add Kin. Chain。然后把base_link设置为Base Link,把link4设置为Tip Link:
设置Robot Pose,和作者邮箱。
然后设置保存路径,如下图所示。点击Generate Package。
文件如下图所示:
运行命令
cd ~/catkin_ws/src/config/launch/
roslaunch demo.launch
运行如下图所示。
例如,我们可以通过调整红框中的部分来进行逆运动学模拟。
【从零开始的ROS四轴机械臂控制】(一)- 实际模型制作、Solidworks文件转urdf与rviz仿真相关推荐
- 从零开始的ROS四轴机械臂控制-目录
[从零开始的ROS四轴机械臂控制](一)- 实际模型制作.Solidworks文件转urdf与rviz仿真 一.模型制作 1.实际模型制作 2.Solidworks模型制作 二.Solidworks文 ...
- 【从零开始的ROS四轴机械臂控制】(七)- ROS与arduino连接
从零开始的ROS四轴机械臂控制(七) 十.ROS与arduino连接 1.虚拟机与arduino的连接 (1)arduino连接与IDE (2)PCA9685模块支持与测试 2.ROS与arduino ...
- 【从零开始的ROS四轴机械臂控制】(六)- 逻辑控制节点
[从零开始的ROS四轴机械臂控制(六)] 九.逻辑控制节点 1.运动控制方法 (1)逆向运动学 (2)反馈控制 2.各节点之间的联系 3.相关程序 (1)img_process节点 (2)arm_co ...
- 【从零开始的ROS四轴机械臂控制】(五)- 构建运动控制服务
[从零开始的ROS四轴机械臂控制(五)] 八.运动控制节点 1.定义服务GoToPosition.srv 2.修改CMakeLists.txt 3.修改package.xml 4.构建包 5.arm_ ...
- 【从零开始的ROS四轴机械臂控制】(四)- ros、gazebo与opencv,图像处理节点
[从零开始的ROS四轴机械臂控制(四)] 七.图像处理节点 1.节点功能与实现方法 2.iamge_process 相关程序 部分程序解释 3.节点运行与测试 七.图像处理节点 1.节点功能与实现方法 ...
- 【从零开始的ROS四轴机械臂控制】(三) - 为机械臂添加摄像头和夹爪、解决gazebo模型抖动、使用gazebo建立sdf模型
[从零开始的ROS四轴机械臂控制(三)] 五.在gazebo中添加摄像头 1.修改arm1.gazebo.xacro文件 2.修改arm1.urdf.xacro文件 3.查看摄像头图像 六.为模型添加 ...
- 【从零开始的ROS四轴机械臂控制】(二) - ROS与Gazebo连接,Gazebo仿真及urdf文件修改
[从零开始的ROS四轴机械臂控制(二)] 四.urdf文件及gazebo仿真 1.simple_arm示例 (1)config文件夹 (2)launch文件夹 (3)meshes文件夹 (4)urdf ...
- python 机械臂控制_从零开始的ROS四轴机械臂控制-gazebo仿真控制
这是一个四轴器械臂练手项目,定为arm0.1版本,使用MG90s舵机来搭建一个四轴机械臂.arm0.1版本的目标是对带颜色的方块进行识别并在Gazebo中模拟出来. 以下是这个ROS四轴机械臂控制的目 ...
- ROS中阶笔记(九):Movelt!机械臂控制
ROS中阶笔记(九):Movelt!机械臂控制 文章目录 1 Movelt!系统架构 1.1 Movelt!是什么 1.2 系统架构 1.3 Movelt!使用步骤 2 创建机械臂模型与配置文件 2. ...
最新文章
- javaScript事件(二)事件处理程序
- go语言笔记——数组长度不可变,但是元素值是可变的!!!
- 一篇特别长的总结(C专家编程)
- [BUUCTF-pwn]——picoctf_2018_can_you_gets_me
- 我看你还能坚持多久?!
- LintCode-73.前序遍历和中序遍历树构造二叉树
- python输出语句格式 f_Python基础之输出格式和If判断
- python scipy stats学习笔记
- 即刻起,加速您的前端构建
- 5个超实用抠图方法,哪个适用用哪个
- PCIE知识点-002:PCIE协议中的几种bridge
- illustrator插件-拼版功能开发-印前角线-js脚本开发-ai插件
- 【MisakaHookFinder使用方法】关于如何提取一个文字游戏的文本钩子以供翻译的方法
- Angular - FormGroup 踩坑合辑之:setValue,patchValue,reset
- 粗虚线和细虚线_高速虚线两侧是粗虚线 高速公路虚线两边加斜线什么意思?...
- python+mysql实现个人论文管理系统
- MATLAB删除图例中的多余线条
- 浮点型数据的输入和输出(C语言)
- html密码框ml表单文本框,表单组件 PasswordInput 密码输入框 - 闪电教程JSRUN
- 为什么HashMap中链表转红黑树的阀值是8?
热门文章
- centOS7 LNMP+phpmyadmin环境搭建 第三篇phpmyadmin安装
- c语言连接数据库例子,c语言操作mysql数据库小例子_互帮互助(C language MySQL database operation example _ mutual help).doc...
- Redis 入门安装(Linux)
- 服务注册发现consul之四: 分布式锁之四:基于Consul的KV存储和分布式信号量实现分布式锁...
- 看了极光推送技术原理的几点思考
- 新的小游戏发布啦。Pop Jungle
- poj 1523(无向联通图的割点)
- 读取 android的内存、cpu、流量等 信息
- python读文件的解码方式_跳过Python文件读取中的不可解码字符
- kafka 批量 回写mysql_kafka往mysql写数据操作笔记