ROS Moveit commander pythonで3軸ロボットを動かす【備忘録】
- 2021/02/14
- 16:20
ROS Moveit commander pythonで3軸ロボットを動かす【備忘録】
今日はRoboTakaoです。
前回、Moveit → gazebo で軌道生成しながら3軸ロボットを動かしてみました。
Rvizでインタラクティブマーカを手で動かすことで軌道生成しました。
今回は、Pythonのコードでロボットを動かします。
この場合、Moveit commanderを使用します。

基本は前回のコードを流用します。
今回の場合、ある平面内をランダムに移動させるコードになります。
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次元回転クォータニオンを調べて初期状態を設定したらうまくいきました
実機も動かしてうまくいきました
スポンサードリンク