matlab机械臂工作空间代码|matlab机械臂工作空间代码_【ROS-Moveit!】机械臂控制探索(3)——基于python的API示例代码分析...


matlab机械臂工作空间代码|matlab机械臂工作空间代码_【ROS-Moveit!】机械臂控制探索(3)——基于python的API示例代码分析...
文章图片

本文参考Moveit!官方文档。
系统:ubuntu 18.04 / 16.04
ROS:Melodic / Kinetic
概述 基于python的运动组API是最简单的MoveIt!用户接口。其中提供了用户常用的大量功能封装,例如:
  • 设置目标关节控制或笛卡尔空间位置
  • 创建运动规划
  • 移动机器人
  • 在环境中添加对象
  • 将对象与机器人连接或断开
下载示例功能包 我们通过官方的示例功能包来分析该API的用法。首先将两个官方的示例下载到工作空间的src目录并编译:
对Kinetic版本的ROS:
sudo apt-get install ros-kinetic-franka-description cd ~/catkin_ws/src git clone -b kinetic-devel https://github.com/ros-planning/moveit_tutorials.git git clone -b kinetic-devel https://github.com/ros-planning/panda_moveit_config.git cd ~/catkin_ws/ catkin_make

对Melodic版本的ROS:
sudo apt-get install ros-melodic-franka-description cd ~/catkin_ws/src git clone https://github.com/ros-planning/moveit_tutorials.git -b melodic-devel git clone https://github.com/ros-planning/panda_moveit_config.git -b melodic-devel cd ~/catkin_ws/ catkin_make

分别是机器人模型、官方教程功能包和panda机械臂的配置功能包。
运行rviz和MoveGroup节点 ctrl+alt+T 打开两个终端,依次运行下列两行命令。第一行命令在终端中加载完毕后,再运行第二行:
roslaunch panda_moveit_config demo.launch rosrun moveit_tutorials move_group_python_interface_tutorial.py

在第二个终端中依次敲击回车键,在rviz界面中可以看到机器人执行如下动作:
  1. 机器人规划并运动到关节目标位姿
  2. 机器人向目标位姿规划一条路径
  3. 机器人规划了一条笛卡尔空间的路径
  4. 机器人再次规划了一条笛卡尔空间路径
  5. 机器人执行了该笛卡尔空间路径
  6. 在Panda机械臂的末端出现了一个小箱子
  7. 小箱子改变了颜色,表示它现在已经附加在了机械臂上
  8. 机械臂附带着小箱子规划并执行了一条笛卡尔空间路径
  9. 小箱子再次改变颜色,说明它现在已经脱离了机械臂
  10. 小箱子消失
代码与注释 下面为 move_group_python_interface_tutorial.py 的代码,已将所有注释和打印语句翻译,可直接替换 ~/catkin_ws/src/moveit_tutorials/doc/move_group_python_interface/scripts/ 路径下的同名文件。
友情提示:
要充分理解本章的代码,除了要懂得基本的python语法和面向对象的编程结构以外,还需要有基本的机器人运动学知识,包括但不限于:
  • 理解关节空间位置与笛卡尔空间位姿的区别
  • 什么是路径规划,关节空间与笛卡尔空间路径规划的区别
#!/usr/bin/env python

上一篇文章的遗留问题:公差检测函数 all_close()决定动作是否执行
在上一篇文章的最后,我提到了rviz规划界面的不稳定性。这是因为函数all_close()多次用来检测规划状态与当前状态是否相符。在纯粹做运动规划的理想状态下,即使公差很小也不会有什么影响。但实际环境或仿真环境会影响机器人的当前状态。例如由于基座运动、刚度过小导致的位置误差,会使得公差检测不通过,进而导致运动规划失败。这种情况下,应当适当加大允许的公差范围。
值得研究的一个问题
在实验过程中,发现机械臂位姿偶尔会发生跳变,应该是求逆解时的多解造成的。难道 Moveit! 默认求解器无法处理多解情况?这个问题值得研究一下。
演示效果 matlab机械臂工作空间代码|matlab机械臂工作空间代码_【ROS-Moveit!】机械臂控制探索(3)——基于python的API示例代码分析...
文章图片
ROS机械臂的控制API示例https://www.zhihu.com/video/1104515064329170944 参考文献 【matlab机械臂工作空间代码|matlab机械臂工作空间代码_【ROS-Moveit!】机械臂控制探索(3)——基于python的API示例代码分析...】[1] Move Group Python Interface

    推荐阅读