首页 > 【从零开始的ROS四轴机械臂控制】(一)- 实际模型制作、Solidworks文件转urdf与rviz仿真

【从零开始的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工具。

  //将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

运行如下图所示。

例如,我们可以通过调整红框中的部分来进行逆运动学模拟。

在这里插入图片描述

更多相关:

  • 本文来自 运维人生 ,作者:fly是个稻草人链接:http://www.ywadmin.com/?id=76误删除linux系统文件了?不用急,本文将给你一个恢复linux文件的方法,让你轻松应对运维中的各风险问题。方法总比问题多~说在前面的话针对日常维护操作,难免会出现文件误删除的操作。大家熟知linux文件系统不同win有回收...

  • 原文来自SecIN社区—作者:WiHat0x00 什么是WebShell渗透测试工作的一个阶段性目标就是获取目标服务器的操作控制权限,于是WebShell便应运而生。Webshell中的WEB就是web服务,shell就是管理攻击者与操作系统之间的交互。Webshell被称为攻击者通过Web服务器端口对Web服务器有一定的操作权限,而...

  • 断电时文件系统发生了什么?硬盘又发生了什么?下一次开机时写到一半的文件在系统层面还在吗?在底层还在吗?更进一步的, 文件系统如何保证事务性, 会不会存在某种极端情况导致例如最后几个bit还没写完, 文件系统却认为它成功了的情况?回答不限任何文件系统,谢谢!下面是「北极」的回复分享断电的一瞬间,很多事情是无法确定的:1. 你无法确定...

  • 接到项目需求。需要搭建一个页面进行交互,慢慢来b (2).jpg使用python django框架进行页面的搭建在项目文件下打开窗口,输入命令;django-admin startproject helloword#在文件helloword/helloword/创建view.py在view.py文件中输入以代码from django....

  • 常见的错误集合解决方案(一)No.1提示错误'Microsoft.VC90.CRT,version="9.0.21022.8"把Microsoft.NET Framework 3.5.1下面的全部勾选上。No.2解决Qt Designer设计的图标但是VS生成不显示问题描述:在Qt designer中为菜单栏和工具栏设计的图标,但是...

  • nan 是not a number ,inf是无穷大 numpy.nan_to_num(x): 使用0代替数组x中的nan元素,使用有限的数字代替inf元素...

  • 简介 Simple Reference  基础CUDA示例,适用于初学者, 反映了运用CUDA和CUDA runtime APIs的一些基本概念.Utilities Reference  演示如何查询设备能力和衡量GPU/CPU 带宽的实例程序。Graphics Reference  图形化示例展现的是 CUDA, OpenGL,...

  • 在做开发的过程中难免需要给内核及下载的一些源码打补丁,所以我们先学习下Linux下使用如如何使用diff制作补丁以及如何使用patch打补丁。...

  • 我在调研ATS 4.2.3挂载SSD的过程中,遇到很多坑,特此详细记录我摸索的主要过程,以便大家以后避免之。 基本思路可以完全照搬参考文献[2][3] 下面的安装假定是以root用户身份进行的,Linux服务器已经安装好系统,磁盘已经做好分区。 首先需要认识我们的Linux服务器的硬件配置和软件情况 硬件配置: DELL...

  • 该博文整理一些在使用stl编程过程中遇到的小经验: 1.在多线程环境下面打印调试,如何使用cout及时刷新到屏幕上? 在C中我们经常这样使用: printf("Hello World "); fflush(stdout); 如果使用stl,我们可以这样使用: cout << "Hello World" << endl <...

  • 一.xgboost前奏1,介绍一下啥是xgboostXGBoost全称是eXtreme Gradient Boosting,即极限梯度提升算法。它由陈天奇所设计,致力于让提升树突破自身的计算极限,以实现运算快速,性能优秀的工程目标。2,XGBoost的三大构件XGBoost本身的核心是基于梯度提升树实现的集成算法,整体来说可以有三...

  • ​这是3D 点云的深度学习框架,提供常见的点云分析方法的一种通用深度学习模型。它主要依赖Pytorch Geometric和Facebook Hydra。该框架能够以最小的代价和极大的可重复性来构建精简而复杂的模型。目标是建立一个工具,用于对SOTA模型进行基准测试,同时允许研究者们有效地研究点云分析,最终目标是建立可应用于实际应用的...

  • 【从零开始的ROS四轴机械臂控制(三)】五、在gazebo中添加摄像头1.修改arm1.gazebo.xacro文件2.修改arm1.urdf.xacro文件3.查看摄像头图像六、为模型添加夹爪(Gripper)1.通过solidworks建立模型2.将夹爪添加进gazebo(1)模型导入(2)更改urdf文件夹3.gazebo模型抖...

  • 使用Keras训练自动驾驶(使用Udacity自动驾驶模拟器) 1.完成项目所需要的资源 (1)模拟器下载 • Linux • macOS • Windows (2)Unity 下载 运行Udacity模拟器需要Unity,这是下载链接。 https://unity.cn/releases (3)Behavioral Cl...

  • maxtree–工厂模型第74卷 大小解压后:2.34G 信息: 植物模型第74卷是高质量的三维植物模型的集合。包括12个物种,共72个单一模式。 获取地址:三维植物树木模型 Maxtree – Plant Models Vol 74-云桥网 种类 三角枫 槭树 复叶槭 鸡爪槭 白桦 Chitalpa tashkente...