記事一覧

ROS Moveit commander pythonで3軸ロボットを動かす【備忘録】

ROS Moveit commander pythonで3軸ロボットを動かす【備忘録】



今日はRoboTakaoです。
前回、Moveit → gazebo で軌道生成しながら3軸ロボットを動かしてみました
Rvizでインタラクティブマーカを手で動かすことで軌道生成しました。


今回は、Pythonのコードでロボットを動かします。
この場合、Moveit commanderを使用します。


moveit22.jpg

基本は前回のコードを流用します。
今回の場合、ある平面内をランダムに移動させるコードになります。


Pythonのコード nx16_random.py


#!/usr/bin/env python
import sys, rospy, tf, moveit_commander, random
from geometry_msgs.msg import Pose, Point, Quaternion
from math import pi

orient = Quaternion(*tf.transformations.quaternion_from_euler(pi , -pi/2 , 0))
pose = Pose(Point( 0.08, 0, 0.08), orient)
moveit_commander.roscpp_initialize(sys.argv)
rospy.init_node('nx16_ramdom',anonymous=True)
group = moveit_commander.MoveGroupCommander("single")

while not rospy.is_shutdown():
pose.position.y = 0 + random.uniform(-0.04, 0.04)
pose.position.z = 0.06 + random.uniform(-0.04, 0.04)
group.set_pose_target(pose)
group.go(True)

moveit_commander.roscpp_shutdown()


Launchファイル nx16_moveit_commander_random.launch


<!-- Hand-made -->
<launch>
<include file="$(find nx16)/launch/nx16_simulation.launch"/>
<include file="$(find nx16_moveit_config)/launch/move_group.launch"/>
<node pkg="rosserial_python" type="serial_node.py" name="serial_node">
<param name="port" value="tcp"/>
</node>
<node pkg="nx16" name="nx16_random" type="nx16_random.py"/>
</launch>


動作確認



最初、上手くいきませんでしたが、コントロールしているリンクの回転角度が合っていなかったためのようで
Rvizで初期状態の4次元回転クォータニオンを調べて初期状態を設定したらうまくいきました


実機も動かしてうまくいきました


スポンサードリンク

コメント

コメントの投稿

非公開コメント

プロフィール

RoboTakao

Author:RoboTakao
みなさんご訪問ありがとうございます。ロボット作りたいけどお小遣いそんなにないし、簡単でローコストでロボットを作るための私のプロジェクトを紹介します。

ウェブサイトもありますのでそちらもよろしくお願いします。
http://robotakao.jp/

スポンサーリンク