This example will show a simple pickup test in addition to the TF Broadcaster to visualize the result in rviz. This should be usable inside a binderhub using webviz
from rospy import get_param
from pycram.bullet_world import BulletWorld, Object
from pycram.pose import Pose
from pycram.process_module import simulated_robot, with_simulated_robot
from pycram.language import macros, par
from pycram.designators.location_designator import *
from pycram.designators.action_designator import *
from pycram.enums import Arms
from pycram.designators.object_designator import *
from pycram.designators.object_designator import BelieveObject
from pycram.plan_failures import IKError
import math
try:
robot = get_param('/nbparam_robot')
environment = get_param('/nbparam_environment')
except Exception as e:
robot = 'pr2'
environment = 'kitchen'
print(f"Robot: {robot}")
print(f"Environment: {environment}")
# With Bulletworld
world = BulletWorld()
# Without Bulletworld (use rviz instead)
world = BulletWorld('DIRECT')
robot = Object("pr2", "robot", robot + ".urdf")
robot_desig = ObjectDesignatorDescription(names=["pr2"]).resolve()
milk = Object("milk", "milk", "milk.stl", pose=Pose([2, 0, 1]))
milk_BO = BelieveObject(names=["milk"])
from pycram.ros.tf_broadcaster import TFBroadcaster
from pycram.ros.joint_state_publisher import JointStatePublisher
from pycram.ros.viz_marker_publisher import VizMarkerPublisher
broadcaster = TFBroadcaster()
joint_publisher = JointStatePublisher("joint_states", 0.1)
#v = VizMarkerPublisher(topic_name='viz_marker')
with simulated_robot:
ParkArmsAction([Arms.BOTH]).resolve().perform()
MoveTorsoAction([0.33]).resolve().perform()
pickup_pose_knife = CostmapLocation(target=milk_BO.resolve(), reachable_for=robot_desig).resolve()
pickup_arm = pickup_pose_knife.reachable_arms[0]
NavigateAction(target_locations=[pickup_pose_knife.pose]).resolve().perform()
with simulated_robot:
PickUpAction(object_designator_description=milk_BO,
arms=["left"],
grasps=["left", "right"]).resolve().perform()