kakepro’s blog

プログラムとかPC周りのことを書いていきます

MoveIt!によるmyCobot280の制御

はじめに

【環境】
Windows10+WSL2+Ubuntu18.04+ROS melodic

myCobot280をROSから動かす
今回はMoveItでrviz上のmyCobotを動かしてみる

下準備

ROS melodicのインストールや必要なパッケージのインストールは下記を参照
kakepro.hatenablog.com

逆運動学的にmyCobotを動かす

ゴールとなるロボットの姿勢を入力として、各関節の角度の計算や経路生成をMoveIt!に行ってもらう
以下のソースコードは下記記事を参考にした
"mycobot_arm"を"arm_group"に変えるだけである
note.com

なおワークスペースの名前はmycobot_wsとした
~/mycobot_ws/src/myCobotROS/mycobot_280/scriptsに下記コードを新たに作成する
$ vim ./src/myCobotROS/mycobot_280/scripts/pose_planner.py

#!/usr/bin/env python
# coding: UTF-8
import geometry_msgs.msg
import moveit_commander
import rospy
import sys
from math import pi


def main():
    # Initialize moveit_commander
    moveit_commander.roscpp_initialize(sys.argv)

    # Initialize node
    rospy.init_node('hello_moveit')

    # make the instance of MoveGroupCommander
    move_group = moveit_commander.MoveGroupCommander("arm_group")

    # output the geometry msg
    # pose_goal = geometry_msgs.msg.Pose()

    # get current pose
    pose_goal = move_group.get_current_pose().pose

    # set goal pose
    pose_goal.position.x += 0.01
    pose_goal.position.y += 0.0
    pose_goal.position.z -= 0.03
    pose_goal.orientation.x += 0.0
    pose_goal.orientation.y += 0.0
    pose_goal.orientation.z += 0.0
    pose_goal.orientation.w += 0.0

    # plan and execute of the motion planning by pose
    move_group.set_pose_target(pose_goal)
    move_group.go(wait=True)

    # stop
    move_group.stop()

    # clear goal pose
    move_group.clear_pose_targets()


if __name__ == "__main__":
    main()

実行してみる

各Terminal共通*1
$ cd ~/mycobot_ws
$ source devel/setup.bash
・Terminal1
$ roslaunch mycobot_280_moveit mycobot_moveit.launch
・Terminal2*2
$ sudo chmod 666 /dev/ttyUSB0
$ rosrun mycobot_280 slider_control.py
・Terminal3
$ python ./src/myCobotROS/mycobot_280/scripts/pose_planner.py
youtu.be

*1:WSL2の場合はこの他XWindowの設定とusbipdによるmyCobotへのアタッチをしておくこと

*2:実機を動かさない場合は不要