文章图片
本文参考Moveit!官方文档。概述 基于python的运动组API是最简单的MoveIt!用户接口。其中提供了用户常用的大量功能封装,例如:
系统:ubuntu 18.04 / 16.04
ROS:Melodic / Kinetic
- 设置目标关节控制或笛卡尔空间位置
- 创建运动规划
- 移动机器人
- 在环境中添加对象
- 将对象与机器人连接或断开
对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界面中可以看到机器人执行如下动作:
- 机器人规划并运动到关节目标位姿
- 机器人向目标位姿规划一条路径
- 机器人规划了一条笛卡尔空间的路径
- 机器人再次规划了一条笛卡尔空间路径
- 机器人执行了该笛卡尔空间路径
- 在Panda机械臂的末端出现了一个小箱子
- 小箱子改变了颜色,表示它现在已经附加在了机械臂上
- 机械臂附带着小箱子规划并执行了一条笛卡尔空间路径
- 小箱子再次改变颜色,说明它现在已经脱离了机械臂
- 小箱子消失
友情提示:
要充分理解本章的代码,除了要懂得基本的python语法和面向对象的编程结构以外,还需要有基本的机器人运动学知识,包括但不限于:
- 理解关节空间位置与笛卡尔空间位姿的区别
- 什么是路径规划,关节空间与笛卡尔空间路径规划的区别
#!/usr/bin/env python
上一篇文章的遗留问题:公差检测函数 all_close()决定动作是否执行
在上一篇文章的最后,我提到了rviz规划界面的不稳定性。这是因为函数all_close()多次用来检测规划状态与当前状态是否相符。在纯粹做运动规划的理想状态下,即使公差很小也不会有什么影响。但实际环境或仿真环境会影响机器人的当前状态。例如由于基座运动、刚度过小导致的位置误差,会使得公差检测不通过,进而导致运动规划失败。这种情况下,应当适当加大允许的公差范围。
值得研究的一个问题
在实验过程中,发现机械臂位姿偶尔会发生跳变,应该是求逆解时的多解造成的。难道 Moveit! 默认求解器无法处理多解情况?这个问题值得研究一下。
演示效果
文章图片
ROS机械臂的控制API示例https://www.zhihu.com/video/1104515064329170944 参考文献 【matlab机械臂工作空间代码|matlab机械臂工作空间代码_【ROS-Moveit!】机械臂控制探索(3)——基于python的API示例代码分析...】[1] Move Group Python Interface
推荐阅读
- opencv|opencv学习笔记(二) 图像腐蚀和膨胀
- opencv|opencv学习笔记(四) 绘制几何图形
- opencv|opencv 学习笔记(五) findContours() 函数与drawContours() 函数
- opencv|opencv 学习笔记(六) 一周总结
- opencv|opencv学习笔记(三)颜色转换 cvtColor
- opencv|opencv 图片上画一条线
- opencv|opencv 学习笔记(一) 矩阵构造之输出
- 《C++要笑着学》|【C++要笑着学】从零开始实现日期类 | 体会代码的复用 | 提供完整代码
- 《C语言杂俎》|【C++】几道关于this指针的面试题