第一节:感谢
---------首先,该项目由中国科学院海西研究院泉州装备制造研究所的机器视觉与模式识别课题组赞助。感谢郭杰龙和魏宪老师的大力帮助。
--------该课题使用的机械臂是一个六轴机械臂,具体信息参考:小强社区,在这里应该能了解到具体的机械臂信息。

第二节:设备与配置需求
首先看机械手臂照片:

在这里插入图片描述

看到没,这货就长这样。由于我不是卖这个机械手的,所以就不给购买链接了。我同事昆山龙哥买这个机械手的时候时候1800元。作为入门玩具是可以用用的。

2.1 软件和资料
--------关于小强机械臂的所有资料,大家可以参考这个网页。里面有一个百度云盘的链接,下载这个可以看到机械臂的所有信息。另一个github链接是小强机械臂厂家给的唯一一个技术支持。
百度云盘里面的资料大概如下:有些是我解压出来的

在这里插入图片描述

2.2 电脑配置
我建议大家用虚拟机,在win10下面装一个虚拟机,这样很方便。小强机械臂推荐的是ubuntu16.04+ROS-kinect。大家可以在虚拟机上自己安装ubuntu16.04,然后配置相应的环境,关于自己配置环境可能遇到的一些问题,参考这里。也可以直接安装小强镜像(小强镜像就是一个ubuntu16.04,只不过他把一些ROS,之类的东西都集成进来了,很方便),我建议大家直接安装小强镜像,这样方便很多。反正是在虚拟机下安装,大家随便造,就是新首页不要害怕。我现在搞双系统了,有时候比较担心。

在这里插入图片描述

关于小强镜像,我是下载第一个的。大家按照小强镜像教程安装就可以了。然后安装好后据不需要配置环境了,直接可以运行。

第三节,解读小强ROS机械臂教程move.py

首先,我们看一下这个demo的教程。如下图所示:

在这里插入图片描述

我们可以看到中间被我们选中的蓝色字。这个时候很容易被忽略的文字。
其意思就是,这个基于move.py的demo是执行提前保存在机械臂控制板中的动作,而不是执行机械手的正和逆运动学来实现对机械臂的控制的,也就是说,这一部分,我们只是为了让大家明白初步明白如下几点:
1)熟悉ROS的工作空间的建立和功能包的建立。如果你是ROS的初学者,我建议你首先看看古月居的ROS教程,真的可以很快地入门。需要指出的是,ROS有基于C++和python两个版本。C++是需要编译的,而python是不需要编译的,直接运行即可。
2)初步了解机械臂的控制规则
3)处不学习launch文件的书写步骤

3.1 在windows下面需要完成的工作
由于我们该部分的教程是完成一个简单的demo 也就是上文提到的move.py文件。该教程中提到了move.py执行的是提前保存在机械臂控制板中的动作,因此我们需要在windows下面将这些动作保存在机械臂的控制板中。
由于我实现不没注意到这点,可能是之前在玩LSC-6 control.exe这个软件时把里面保存的动作都擦除了,导致我在执行move这个demo时,机械臂显示通信,但是就不动作(因为机械臂里面没有动作了,所以即使通讯成功也不动作)。

在这里插入图片描述

首先,我们用一个USB数据线连接电脑和机械臂的控制板,然后打开LSC-6 Control.exe这个软件,再打开控制板的开关,此时,如果你的数据线是好的,此时红色按钮会变成绿色,表示通讯成功。
在这里插入图片描述

该图是打开LSC-6 Control.exe软件,但是没有通信的结果,此时红色信号灯表示没有通信。
在这里插入图片描述

该图表示这个软件和机械臂控制板已经通信成功。信号灯变绿。
PS:由于之前我点击了全部擦除这个按钮,导致机械臂控制板中不再保存动作,导致后来不管怎么输入控制命令,机械臂都不动作。

这个时候,我们可以点击“全部擦除”按钮,把控制板中的现存动作都擦除,然后重新保存,动作组编号是从0开始的。我们只要点击“动作组 0”那边,然后可以发现:
在这里插入图片描述

然后我们再看机械臂教程中的文件存在一个文件“6自由度机械臂动作LSC-6 Control版本”,这个文件中预先存了一些动作组。
在这里插入图片描述

这是,我们点击“LSC-6 Control.exe”界面上的打开动作组,然后选择动作,
在这里插入图片描述

选择完成后,然后点击在线运行,此时机械臂变回执行该动作组。然后我们点击“下载”按钮,此时便可以将该动作保存到机械臂的控制板中。
PS,在保存动作组的时候,需要选择动作组的序号,如果序号被重复选择,那么将会自动擦除原来的动作,然后保存现在的动作组。

然后,我们需要看一下小强机械臂控制资料中的一个关于二次开发的串口通信协议的教程。
在这里插入图片描述

说实话,这个文件我一开始没有在意,没有仔细看,导致我后来走了好多弯路。在这里,我们只需要看一个地方。就是这个PDF中的第二个指令:
在这里插入图片描述

在这里插入图片描述

首先,关于帧头和数据长度我们就不要看了。这里面的数据编码都是16进制的。我们看指令编码是0x06,而第二个用于控制动作组运行的指令CMD _ACTION_GROUP_RUN的指令值就是6…。然后我们看参数栏,第一个参数是要运行的动作组编号,第二个和第三个是运行次数的低高位和高八位,这个我们就不需要了解了。
为什么介绍这个东西呢?因为move.py教程给的pub指令就是控制动作组运行的,如下图:

在这里插入图片描述

到这里,我们再windows下面要做的事情就差不多了。总的来讲就是两件事
1)在LSC-6 Control.exe中给机械手的控制板中保存动作组。
2)明白仔细阅读二次开发机械臂控制板的通信协议

3.2 在ubuntu下面要做的事情
首先,我们需要建立一个工作空间,并且在该工作空间下创建一个功能包。
·
如果在虚拟机下运行,需要保证机械臂与虚拟机中间已经连接。
一般,当开启虚拟机电源后会出现如下提示:


在这里插入图片描述

选择连接到虚拟机

这是在终端输入

lsusb

会出现如下情况

在这里插入图片描述

其中,Bus 003 Device 005: ID 0483:5750 STMicroelectronics 表示机械臂。

如果在小强镜像下输入启动roscore会出现如下警告
在这里插入图片描述

这是只需要输入

killall -9 rosmaster

便可以解决。

这时候,我们按照ROS建立工作空间和功能包的方法建立工作空间和功能包,步骤如下:

mkdir catkin_ws
cd catkin_ws
mkdir src
cd src
catkin_init_workspace
cd ..
catkin_make
catkin_make install

catkin_ws这个名字你自己定义,也可以用这个名字。
进入src文件,使用catkin_init_workspace命令对工作空间进行初始化
然后进入catkin_ws文件,使用catkin_make命令对工作空间进行编译。
同时,在catkin_ws文件下,使用catkin_make install命令建立install文件。

下面我们就能在这样的工作空间中开发代码了,也就是建立功能包。

我们在github那个文件夹下面下载的文件名是robot_arm,这个也就是我们要创建的功能包的名字。
在这里插入图片描述
在这里插入图片描述

为了规范,我们创建功能包robot_arm之后,在这个功能包的src文件下放C文件,在scripts文件下放python文件。
创建功能包需要进入src文件

cd src
catkin_create_pkg robot_arm std_msgs rospy roscpp
mkdir scripts

这时,把下载的robot_arm文件下的move.py文件放到scrpts文件中,
然后把robot_arm中的CmakeList.txt文件和package.xml文件替换到我们自己创建的robot_arm功能包中。
在这里插入图片描述

在这里插入图片描述
这时,进入catkin_ws空间编译一下:

catkin_make
source devel/setup.bash

然后,这时,在catkin_ws文件夹中进入终端
输入

roscore

然后在catkin_ws文件夹中打开个新的终端,输入

rosrun robot_arm move.py

不出意外,终端会显示如下信息:
在这里插入图片描述

此时,小强机械臂的控制板上的蓝色led灯也会闪烁一下,表示成功通信,且此时机械臂会成功执行0号动作。
这时,在catkin_ws打开一个新的终端,
依次输入如下命令:

 rostopic pub robot_arm/cmdstring std_msgs/String '\x55\x55\x05\x06\x01\x01\x00' 
 rostopic pub robot_arm/cmdstring std_msgs/String '\x55\x55\x05\x06\x02\x01\x00' 
 rostopic pub robot_arm/cmdstring std_msgs/String '\x55\x55\x05\x06\x03\x01\x00'

不出意外,机械臂都会动作。

下次的博客我们将介绍luanch文件的使用方法,当然还是基于这个机械手和这个move的demo的。