步骤1:添加抓取器
一开始添加抓手有点让人困惑,所以我在上一篇文章中跳过了这一部分。事实证明,这毕竟不是那么困难。
您将需要修改urdf文件以添加抓手链接和关节。
为我的机器人修改的urdf文件已附加到此步骤。基本上,它遵循与手臂零件相同的逻辑,我只添加了三个新链接(claw_base,claw_r和claw_l)和三个新关节(joint5是固定的,joint6,joint7是旋转关节)。
修改urdf文件后,还需要使用moveit安装助手来更新moveit生成的软件包和xacro文件。
使用以下命令启动安装助手
roslaunch moveit_setup_assistant setup_assistant.launch
单击“编辑现有moveit配置”,然后选择包含moveit包的文件夹。
添加新的计划组夹持器(带有夹持器的链接和接头)以及末端执行器。我的设置在下面的屏幕截图中。注意,您没有为夹具选择运动学求解器,这不是必需的。生成软件包并覆盖文件。
在catkin工作区中运行
catkin make
命令。
好吧,现在我们有了一条带有抓爪的手臂!
步骤2:构建手臂
正如我在提到juergenlessner创建手臂3d模型之前提到的那样,感谢您所做的出色工作。如果您单击链接,则可以找到详细的组装说明。
我不得不修改控制系统。我使用带有传感器护罩的arduino uno来控制伺服器。传感器屏蔽层在简化布线方面有很大帮助,并且还易于为伺服器提供外部电源。我使用通过降压模块(6v)连接到sensor shield的12v 6a电源适配器。
关于伺服器的注释。我使用从淘宝购买的mg 996 hr伺服器,但是质量真的很差。绝对是便宜的中国仿冒品。用于肘关节的那个没有提供足够的扭矩,甚至在重载下也开始发烟。我不得不用质量更好的制造商的mg 946 hr替换肘关节伺服器。
长话短说-购买优质的伺服器。如果魔术烟雾从您的伺服器中冒出,请使用更好的伺服器。 6v是非常安全的电压,请不要增加它。不会增加扭矩,但会损坏伺服器。
伺服器接线如下:
基座2
shoulder2 4
shoulder1 3
肘部6
抓爪8
手腕11
随意更改它,只要您还记得要更改arduino草图即可。
使用完硬件后,让我们看一看!
步骤3:moveit robotcommander界面
那么,现在呢?为什么仍然需要moveit和ros?是不是可以直接通过arduino代码控制手臂?
是的。
好吧,现在如何使用gui或python/c ++代码提供机器人姿势至? arduino可以做到吗?
排序。为此,您将需要编写一个反向运动学求解器,它将采用机器人姿势(3d空间中的平移和旋转坐标)并将其转换为伺服的关节角度消息。
尽管您可以自己做,但要做的工作却很艰巨。因此,moveit和ros为ik(逆运动学)求解器提供了一个不错的接口,可以为您完成所有繁重的三角提升。
简短的回答:是的,您可以做一个简单的机械臂,它将执行一个硬编码的arduino草图,从一个姿势变为另一个姿势。但是,如果您想使机器人更加智能并增加计算机视觉功能,则必须使用moveit和ros。
我制作了一个非常简化的图表,说明moveit框架的工作原理。在我们的情况下,它将变得更加简单,因为我们没有来自伺服器的反馈,而是要使用/joint_states主题为机器人控制器提供伺服器的角度。我们只缺少一个组件,那就是机器人控制器。
我们还等什么呢?让我们写一些机器人控制器,以便我们的机器人可以……更加可控。
第4步:机器人控制器的arduino代码
在我们的情况下,使用rosserial运行ros节点的arduino uno将成为机器人控制器。 arduino草图代码已附加到此步骤,也可以在github上使用。从弧度到度,然后使用标准servo.h库将其传递给舵机。
该解决方案有点笨拙,而不是工业机器人的解决方案。理想情况下,应该在/followjointstate主题上发布运动轨迹,然后接收关于/jointstate主题的反馈。但是在我们的手臂上,业余伺服器无法提供反馈,因此我们将直接订阅由fakerobotcontroller节点发布的/jointstate主题。基本上,我们将假设传递给伺服器的任何角度都可以理想地执行。
有关rosserial如何工作的更多信息,请查阅以下教程
http://wiki .ros.org/rosserial_arduino/tutorials
将草图上传到arduino uno之后,您需要使用串行电缆将其连接到运行ros安装的计算机。
要启动整个系统,请执行以下命令
roslaunch my_arm_xacro demo.launch rviz_tutorial:=true sudo chmod -r 777 /dev/ttyusb0 rosrun rosserial_python serial_node.py _port:=/dev/ttyusb0 _baud:=115200
现在,您可以在rviz中使用交互式标记将机器人手臂移动到一个姿势,然后按计划并执行,使其实际移至该位置。
魔术!
现在,我们可以编写用于斜坡测试的python代码了。好吧,差不多。..
第5步:(可选)生成ikfast插件
默认情况下,moveit建议使用kdl运动学求解器,它不会少于6个自由度臂真的可以工作。如果您紧跟本教程,那么您会注意到rviz中的手臂模型无法达到某些手臂配置应支持的姿势。
推荐的解决方案是使用openrave创建自定义运动学求解器。并不是那么困难,但是您必须构建它,并且它是来自源的依赖项,或者使用docker容器(无论您喜欢哪个)。
该过程在本教程中有很好的记录。确认可以在运行ubuntu 16.04和ros kinetic的vm上运行。
我使用以下命令生成了求解器
openrave.py --database inversekinematics --robot=arm.xml --iktype=translation3d --iktests=1000
然后运行
rosrun moveit_kinematics create_ikfast_moveit_plugin.py test_robot arm my_arm_xacro ikfast0x1000004a.translation3d.0_1_2_f3.cpp
生成moveit ikfast插件。
整个过程比较耗时,但是如果您仔细阅读本教程,并不是很困难。如果您对此部分有疑问,请在评论或pm中与我联系。
第6步:斜坡测试!
现在我们可以尝试进行渐变测试了,我们将使用ros moveit python api执行该测试。
该步骤附带了python代码,该代码也可以在github存储库中找到。如果您没有坡道或想尝试其他测试,则需要在代码中更改机器人的姿势。为此,在已经运行rviz和moveit的情况下,首先在终端中执行
rostopic echo /rviz_moveit_motion_planning_display/robot_interaction_interactive_marker_topic/feedback
。然后将带有交互式标记的机器人移动到所需位置。位置和方向值将显示在终端中。只需将它们复制到python代码即可。
要在运行rviz和rosserial节点的情况下执行
rosrun my_arm_xacro pick/pick_2.py
进行斜坡测试。
家用带功放音响怎么加装蓝牙模块
在AI技术发展的热潮下,生物识别技术和行业结合将成为经济增长新引擎
山西临汾公司:220千伏壶口站增容改造
誓保安全第一,英特尔公司CEO科再奇致科技行业领袖的公开信
开源的串行SPI Flash通用驱动库SFUD的应用
机器人控制器的制作教程
如何在Linux的文件和文件夹中搜索文本?
!销售AGILENT E5100A网络分析仪E5100A 小
MacBook Pro恶评如潮!苹果紧急公关
荣耀路由2到底好不好用
冲压叠料检测方案:阿童木MDSC-8000S金属双张检测器助力安防门锁企业
你知道吗?2025年我国IPv6规模要达世界第一
smt贴片检验标准
如何排布LED灯可以实现三种基本色
全志R128平台SPI与DBI点屏性能大对比
思科将专注于垂直行业 提供管理服务和咨询服务
选择光纤线应该注意哪些问题-clan
华为2020年三季度收入6713亿元人民币同比增长9.9%
TrueTime工具箱模块内部结构及功能解析
走向技术发展的新的时代,真正实现教育的创新