文章目录
上节借助moveit把机械臂动了起来,这节我们通过编程来实现Motion Planning,即运动规划。
先在 xiaok_ws/src/xiaok_moveit_config 文件夹下新建 scripts 文件夹存放Python代码。
我们利用出厂预置好的实例代码,代码位于( /home/jetson/dofbot_ws/src/dofbot_moveit/scripts)
我们将 01_set_move.py 复制到上面的scripts文件夹下。
编译代码
01_set_move.py 复制到上面的scripts文件夹后,检查一下是否开启运行权限(py文件右键properties→permission→Execute打勾)。
回工作空间目录catkin_make一下就可以待运行了(melodic版本下python程序的编译运行不需要其它步骤)。
关于ROS melodic的Python3兼容问题
这问题真卡了我好久,出厂系统和melodic的锅。
这里我们会回到ROS程序的普通的编译运行方式,在py代码头上加上#!/usr/bin/env python以指定python2环境,不使用上节的JupyterLab。这是因为当前melodic版本的ROS对Python3的支持还不完美,使用moveit_commander和tf等python2库时兼容不好,放在JupyterLab下运行有问题(比如报错:ImportError: dynamic module does not define module export function)。为了暂不修改出厂系统原生配置就暂不折腾别的方法了。
给Python2环境安装Arm_Lib库
Arm_Lib库默认装在Python3环境下,我们给Python2环境也装上。
打开库文件所在的目录:/home/jetson/Dofbot/0.py_install/ 打开终端输入:
sudo python2 setup.py install
1 设置目标移动
第一个小例子 01_set_move.py 是一个顺向运动学的例子
需要将源码中初始化机械臂时传入的“dofbot”改成我们在之前moveit规划时设置的规划组“xiaok”
代码和运行效果
#!/usr/bin/env python
# coding: utf-8
from time import sleep
import rospy
from moveit_commander.move_group import MoveGroupCommander
if __name__ == '__main__':
# 初始化节点
rospy.init_node("dofbot_set_move")
# 初始化机械臂
dofbot = MoveGroupCommander("xiaok")
# 当运动规划失败后,允许重新规划
dofbot.allow_replanning(True)
dofbot.set_planning_time(5)
# 尝试规划的次数
dofbot.set_num_planning_attempts(10)
# 设置允许目标位置误差
dofbot.set_goal_position_tolerance(0.01)

本文详细介绍了在ROS Melodic环境中使用Python2编程实现机械臂顺向运动学(随机目标点运动)和逆向运动学(目标定位通过坐标与朝向角)。涉及代码编译、Arm_Lib库安装、运动规划设置和实机同步运动的步骤。
——ROS之Moveit下实现顺向运动学规划+实机同步运动&spm=1001.2101.3001.5002&articleId=123071024&d=1&t=3&u=fb8e317b45ec46bc8f5d8619df1b5e10)
1707

被折叠的 条评论
为什么被折叠?



