步调1:增添抓取器
一起头增添抓手有点让人迷惑,以是我正在上一篇文章中跳过了那一部分。事实证明,那究竟结果不是那么难题。
为我的机器人点窜的URDF文件已附加到此步调。基本上,它遵守与手臂整机不异的逻辑,我只增添了三个新链接(claw_base,claw_r跟claw_l)跟三个新枢纽(joint5是流动的,joint6,joint7是旋转关节)。
点窜URDF文件后,借须要利用MoveIt装置助手去更新MoveIt天生的软件包跟xacro文件。
利用以下下令启动装置助手
roslaunchmoveit_setup_assistantsetup_
单击“
增添新的筹划组夹持器和末尾执行器。我的设置正在上面的屏幕截图中。留神,你不为夹具取舍运动学求解器,那不是必须的。天生软件包并覆盖文件。
正在catkin事情区中运转
catkinmake
下令。
好吧,此刻咱们有了一条带有抓爪的手臂!
步调2:构建手臂
正如我正在提到Juergenlessner创立手臂3D模子之前提到的那样,感谢您所做的精彩事情。若是你单击链接,则可以找到具体的组装解释。
我不能不点窜控制系统。我利用带有传感器护罩的ArduinoUno去节制伺服器。传感器屏障层正在简化布线方面有很大资助,而且借容易为伺服器供给内部电源。我利用经由过程降压模块毗邻到SensorShield的12V6A电源适配器。
对于伺服器的正文。我利用从淘宝采办的MG996HR伺服器,可是质量真的很差。相对是自制的中国仿冒品。用于肘关节的阿谁不供给充足的扭矩,以至正在重载下也起头发烟。我不能不用质量更好的制造商的MG946HR替代肘关节伺服器。
长话短说-采办优良的伺服器。若是魔术烟雾从你的伺服器中冒出,请利用更好的伺服器。6V是十分平安的电压,请不要增长它。不会增长扭矩,但会损坏伺服器。
伺服器接线以下:
基座2
shoulder24
shoulder13
肘部6
抓爪8
伎俩11
随便变动它,只有你借记得要变动Arduino草图便可。
利用完硬件后,让咱们看一看!
步调3:MoveItRobotCommander界面
闪兔分拣机应用那么,此刻呢?为何依然须要MoveIt跟ROS?是否是可以间接经由过程Arduino代码节制手臂?
是的。
好吧,此刻若何利用GUI或Python/C++代码供给机器人姿式至?Arduino可以做到吗?
排序。为此,你将须要编写一个反向运动学求解器,它将采取机器人姿式并将其转换为伺服的枢纽角度动静。
只管你可以本人做,但要做的事情却很艰难。是以,MoveIt跟ROS为IK求解器供给了一个不错的接口,可以为你实现一切沉重的三角晋升。
冗长的回覆:是的,你可以做一个简略的机器臂,它将履行一个硬编码的Arduino草图,从一个姿式变成另一个姿式。可是,若是你念使机器人加倍智能并增长计算机视觉功用,则必需利用MoveIt跟ROS。
我建造了一个十分简化的图表,解释MoveIt框架的事情原理。正在咱们的环境下,它将变得加倍简略,由于咱们不来自伺服器的反应,而是要利用/joint_states主题为机器人控制器供给伺服器的角度。咱们只短少一个组件,那就是机器人控制器。
咱们借等甚么呢?让咱们写一些机器人控制器,以便咱们的机器人可以……加倍可控。
第4步:机器人控制器的Arduino代码
正在咱们的环境下,利用rosserial运转ROS节点的ArduinoUno将成为机器人控制器。Arduino草图代码已附加到此步调,也可以正在GitHub上利用。从弧度到度,然后利用尺度库将其传送给舵机。
该解决方案有点拙笨,而不是工业机器人的解决方案。幻想环境下,该当正在/FollowJointState主题上宣布运动轨迹,然后吸收对于/JointState主题的反应。可是正在咱们的手臂上,专业伺服器没法供给反应,是以咱们将间接定阅由FakeRobotController节点宣布的/JointState主题。基本上,咱们将假定传送给伺服器的任何角度皆可以幻想天履行。
有关rosserial若何事情的更多信息,请查阅以下教程
将草图上传到ArduinoUno之后,你须要利用串行电缆将其毗邻到运转ROS装置的计算机。
要启动全部体系,请履行以下下令
roslaunchmy_arm_xacrorviz_tutorial:=truesudochmod-R777/dev/ttyUSB0rosrunrosserial_pythonserial__port:=/dev/ttyUSB0_baud:=115200
此刻,你可以正在RVIZ中利用交互式标识表记标帜将机器人手臂挪动到一个姿式,然后按计划并履行,使其实际移至该地位。
魔术!
此刻,咱们可以编写用于斜坡测试的Python代码了。好吧,差不多。..
第5步:天生IKfast插件
高速分拣机器人默许环境下,MoveIt发起利用KDL运动学求解器,它不会少于6个自由度臂真的可以事情。若是你紧跟本教程,那么你会留神到RVIZ中的手臂模子没法到达某些手臂设置应撑持的姿式。
推举的解决方案是利用OpenRave创立自定义运动学求解器。并不是那么难题,可是你必需构建它,而且它是来自源的依附项,或许利用docker容器。
该进程正在本教程中有很好的纪录。确认可以正在运转Ubuntu16.04跟ROSKinetic的VM上运转。
我利用以下下令天生了求解器
--databaseinversekinematics--robot=--iktype=translation3d--iktests=1000
然后运转
rosrunmoveit_kinematicscreate_ikfast_moveit_test_robotarmmy_arm_xacro_1_2_
天生MoveItIKfast插件。
全部进程比力耗时,可是若是你仔细阅读本教程,并不是很难题。若是你对此部门有疑难,请正在评论或PM中与我接洽。
第6步:斜坡测试!
医药行业高速分拣机器人此刻咱们可以测验考试停止突变测试了,咱们将利用ROSMoveItPythonAPI履行该测试。
该步调附带了Python代码,该代码也可以正在github存储库中找到。若是你不坡道或念测验考试其他测试,则须要正在代码中变动机器人的姿式。为此,正在曾经运转RVIZ跟MoveIt的环境下,起首正在终端中履行
rostopicecho/rviz_moveit_motion_planning_display/robot_interaction_interactive_marker_topic/feedback
。然后将带有交互式标识表记标帜的机器人挪动到所需地位。地位跟标的目的值将显现正在终端中。只需将它们复制到Python代码便可。
要正在运转RVIZ跟rosserial节点的环境下履行
rosrunmy_arm_xacropick/pick_2.py
停止斜坡测试。
分拣机器人哪家正规快递分拣机器人缺点物流分拣机器人结构