All Projects → mikeferguson → moveit_python

mikeferguson / moveit_python

Licence: other
Pure Python Bindings to ROS MoveIt!

Programming Languages

python
139335 projects - #7 most used programming language
CMake
9771 projects

Projects that are alternatives of or similar to moveit python

smacha
SMACHA is a meta-scripting, templating, and code generation engine for rapid prototyping of ROS SMACH state machines.
Stars: ✭ 15 (-85.98%)
Mutual labels:  robot, ros
magni robot
Starting point for Magni Robots. Includes launch files and configuration.
Stars: ✭ 33 (-69.16%)
Mutual labels:  robot, ros
mycobot ros
A ros package for myCobot.
Stars: ✭ 76 (-28.97%)
Mutual labels:  ros, moveit
Ros robotics projects
Example codes of new book ROS Robotics Projects
Stars: ✭ 240 (+124.3%)
Mutual labels:  robot, ros
conde simulator
Autonomous Driving Simulator for the Portuguese Robotics Open
Stars: ✭ 31 (-71.03%)
Mutual labels:  robot, ros
Spatio temporal voxel layer
A new voxel layer leveraging modern 3D graphics tools to modernize navigation environmental representations
Stars: ✭ 246 (+129.91%)
Mutual labels:  robot, ros
arm
Robot arm simulation using Gazebo, ROS Control and MoveIt.
Stars: ✭ 79 (-26.17%)
Mutual labels:  ros, moveit
Rosnodejs
Client library for writing ROS nodes in JavaScript with nodejs
Stars: ✭ 145 (+35.51%)
Mutual labels:  robot, ros
onine
ROS based service robot
Stars: ✭ 32 (-70.09%)
Mutual labels:  ros, moveit
ur ws
Universal robot with robotiq hand workspace
Stars: ✭ 21 (-80.37%)
Mutual labels:  ros, moveit
Open manipulator
OpenManipulator for controlling in Gazebo and Moveit with ROS
Stars: ✭ 163 (+52.34%)
Mutual labels:  robot, ros
Turtlebot Navigation
This project was completed on May 15, 2015. The goal of the project was to implement software system for frontier based exploration and navigation for turtlebot-like robots.
Stars: ✭ 28 (-73.83%)
Mutual labels:  robot, ros
Robot calibration
Generic calibration for robots
Stars: ✭ 154 (+43.93%)
Mutual labels:  robot, ros
open manipulator simulations
ROS Simulation for OpenManipulator
Stars: ✭ 15 (-85.98%)
Mutual labels:  robot, moveit
Djim100 People Detect Track
A ros demo for people detection and tracking on DJI M100 drone
Stars: ✭ 150 (+40.19%)
Mutual labels:  robot, ros
scikit-robot
A Flexible Framework for Robot Control in Python
Stars: ✭ 70 (-34.58%)
Mutual labels:  robot, ros
Weloveinterns
中科院软件所智能软件中心实习生社区
Stars: ✭ 143 (+33.64%)
Mutual labels:  robot, ros
Venom
All Terrain Autonomous Quadruped
Stars: ✭ 145 (+35.51%)
Mutual labels:  robot, ros
urdf-rs
URDF parser using serde-xml-rs for rust
Stars: ✭ 21 (-80.37%)
Mutual labels:  robot, ros
PROBOT Anno
ROS Packages for PROBOT Anno.
Stars: ✭ 75 (-29.91%)
Mutual labels:  ros, moveit

moveit_python

This is a set of pure-python bindings to the ROS interface of MoveIt! based on the earlier moveit_utils package that was developed as part of the chess_player package.

Overview

There are three interfaces currently:

  • MoveGroupInterface -- used to move the arm using the move_group action.
  • PlanningSceneInterface -- used to add/remove collision and attached objects. Can also set the colors of objects.
  • PickPlaceInterface -- used to interface to the pick and place actions.

MoveGroupInterface

The MoveGroupInterface is quite easy to use:

import rospy
from moveit_python import *

rospy.init_node("moveit_py")
g = MoveGroupInterface("planning_group_name", "base_link")

Obviously, you might need different values for base_link, and your planning group is probably not called "planning_group_name".

PlanningSceneInterface

The PlanningSceneInterface allows you to easily insert and remove objects from the MoveIt! planning scene. Starting with version 0.3.0, this module will try to use the newer service-based approach to apply planning scene updates, as this is much more robust than publishing messages over topics asynchronously.

import rospy
from moveit_python import *

rospy.init_node("moveit_py")
# create a planning scene interface, provide name of root link
p = PlanningSceneInterface("base_link")

# add a cube of 0.1m size, at [1, 0, 0.5] in the base_link frame
p.addCube("my_cube", 0.1, 1, 0, 0.5)

# do something

# remove the cube
p.removeCollisionObject("my_cube")

If for some reason you would prefer to not use the service, simply set "use_service" to false in the various add/remove calls. Calling waitForSync will republish messages as needed to synchronize the planning scene between your script and MoveIt.

p.addCube("my_cube", 0.1, 1, 0, 0.5, use_service=False)
p.addCube("my_other_cube", 0.1, 2, 0, 0.5, use_service=False)
p.waitForSync()

PickPlaceInterface

import rospy
from moveit_python import *
from moveit_msgs.msg import Grasp, PlaceLocation

rospy.init_node("moveit_py")
# provide arm group and gripper group names
# also takes a third parameter "plan_only" which defaults to False
p = PickPlaceInterface("arm", "gripper")

g = Grasp()
# fill in g
# setup object named object_name using PlanningSceneInterface
p.pickup("object_name", [g, ], support_name = "supporting_surface")

l = PlaceLocation()
# fill in l
p.place("object_name" [l, ], goal_is_eef = True, support_name = "supporting_surface")

Migration from moveit_utils

  • GraspingInterface renamed to PickPlaceInterface
    • The pick/place functions now return the entire action result, in moveit_utils they returned only the error_code. To access the error code as it used to be returned, you would use result.error_code.val
  • ObjectManager renamed to PlanningSceneInterface
    • remove function is now removeCollisionObject and removeAttachedObject
  • ArmInterface renamed to MoveGroupInterface
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].