前两篇文章是关于在关节空间中进行机械臂的运动控制:
通过对关节空间下的机器人6个轴进行控制,每个轴的变化都是通过插补进行完成运动,六个轴互相不会关心其他轴是如何运动的,机器人轴端在两个点之间走出的轨迹是任意的曲线。
但是对于一些任务重,要求机械臂终端轨迹的形状是直线或者圆弧等,即对轨迹的形状是有要求的,这个时候就要使用笛卡尔孔家,增加笛卡尔路径约束。
首先使用以下命令,看一下执行的效果:
roslaunch probot_anno_moveit_config demo.launch
走直线:
rosrun probot_demo moveit_cartesian_demo.py _cartesian:=True
自由曲线:
rosrun probot_demo moveit_cartesian_demo.py _cartesian:=False
效果:
![](https://s33.aconvert.com/convert/p3r68-cdx67/a395x-ymsxa.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/32325d77f5cb02eadb914a9d6ecc6f8a.gif)
为了更好的看一下机械臂末端的运动轨迹,将轨迹显示出来如图所以:
![](https://i-blog.csdnimg.cn/blog_migrate/9670829cc2efb495d68a017207722948.png)
![](https://i-blog.csdnimg.cn/blog_migrate/708711642c652df2cb8de8dc7be11866.png)
Python代码以及解析:
import rospy, sys
import moveit_commander
from moveit_commander import MoveGroupCommander
from geometry_msgs.msg import Pose
from copy import deepcopy
class MoveItCarte