视频讲解:
Moveit2还真有python接口版本?带你使用关节位置控制(有小坑需要避免哦)!
最近一个视频中小伙伴评论说moveit2没有python的接口,翻了一下,还真有,如下,库封装的很简单,操作说明也很简单,来复现一下,等下会讲下过程中的小细节需要处理的,不然复现是不成功的。
仓库地址:git@github.com:AndrejOrsula/pymoveit2.git(别忘了给人家点星,也别忘了给我点个)
cd ~/ws_moveit2/src
git clone git@github.com:AndrejOrsula/pymoveit2.git
clone后的文件夹如下
colcon编译的方式改成我这个,不参考github上的
rosdep install -y -r -i --rosdistro ${ROS_DISTRO} --from-paths .
colcon build --packages-select pymoveit2
source下setup.bash,使用一下
先打开panda机械臂场景
source install/setup.bash
ros2 launch moveit2_tutorials demo.launch.py rviz_config:=panda_moveit_config_demo_empty.rviz
我们使用如下example中的例子
ws_moveit2/src/pymoveit2/examples/ex_joint_goal.py
ros2 run pymoveit2 ex_joint_goal.py --ros-args -p joint_positions:="[1.57, -1.57, 0.0, -1.57, 0.0, 1.57, 0.7854]"
但不动,panda的控制台报错了,找不到arm这个group,这里需要做一点修改,因为官方的group name不是panda的group规划组名
ws_moveit2/src/pymoveit2/pymoveit2/robots/panda.py
这里面定义的组名是"arm"
MOVE_GROUP_ARM: str = "arm"
MOVE_GROUP_GRIPPER: str = "gripper"
所以我们可以修改ws_moveit2/src/pymoveit2/examples/ex_joint_goal.py,将
# Create MoveIt 2 interface
moveit2 = MoveIt2(
node=node,
joint_names=robot.joint_names(),
base_link_name=robot.base_link_name(),
end_effector_name=robot.end_effector_name(),
group_name=robot.MOVE_GROUP_ARM,
callback_group=callback_group,
)
换成如下
# Create MoveIt 2 interface
moveit2 = MoveIt2(
node=node,
joint_names=robot.joint_names(),
base_link_name=robot.base_link_name(),
end_effector_name=robot.end_effector_name(),
group_name="panda_arm",
callback_group=callback_group,
)
再colcon build一下,运行,可以看到机械臂可以运动到固定位姿了