Exemple #1
0
    def run(self, dummy=False):
        rospy.loginfo("Torso is connecting to the robot...")
        try:
            self.torso = PoppyTorso(use_http=True, simulator='poppy-simu' if dummy else None)
        except IOError as e:
            rospy.logerr("Torso failed to init: {}".format(e))
            return None
        else:
            self.primitive_head = UpperBodyIdleMotion(self.torso, 15)
            self.primitive_right = HeadIdleMotion(self.torso, 15)
            self.go_to([90, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0], 4)
            self.primitive_head.start()
            self.primitive_right.start()

        try:
            self.set_torque_limits()
            self.torso.compliant = False
            self.go_to_rest(True)

            self.srv_reset = rospy.Service('/nips2016/torso/reset', Reset, self._cb_reset)
            self.srv_execute = rospy.Service('/nips2016/torso/execute', ExecuteTorsoTrajectory, self._cb_execute)
            self.srv_set_compliant = rospy.Service('/nips2016/torso/set_compliant', SetTorsoCompliant, self._cb_set_compliant)

            rospy.loginfo("Torso is ready to execute trajectories at {} Hz ".format(self.execute_rate_hz))

            while not rospy.is_shutdown():
                self.publish_eef(self.torso.l_arm_chain.end_effector, self.eef_pub_l)
                self.publish_eef(self.torso.r_arm_chain.end_effector, self.eef_pub_r)
                self.publish_js()
                self.publish_rate.sleep()
        finally:
            self.primitive_right.stop()
            self.primitive_head.stop()
            self.torso.close()
Exemple #2
0
import sys
import numpy as np
import time
import os

x = sys.argv[1]
y = sys.argv[2]
z = sys.argv[3]
nb_objet = sys.argv[4]

from poppy.creatures import PoppyTorso
from cinematique import Bras, Buste
from couple import *

#instanciation du robot avec le nom marlien (Mar pour Martin et Lien pour Julien)
marlien = PoppyTorso()  #Commande uniquement pour le vrai robot
marlien.compliant = False
#mise à 0 des moteurs
for m in marlien.motors:
    m.goto_position(0, 2)

time.sleep(2)
coord_objet = np.mat([[float(x)], [float(y)], [float(z)]])
nb_objet = int(nb_objet)

marlien.l_shoulder_y.goto_position(-180, 3)
marlien.l_elbow_y.goto_position(90, 3)
marlien.r_shoulder_y.goto_position(-180, 3)
marlien.r_elbow_y.goto_position(90, 3, wait=True)

buste = Buste(coord_objet)
import time
import numpy as np
from poppy.creatures import PoppyTorso


poppy = PoppyTorso(simulator='vrep')

delay_time = 1
target_delta = np.array([-0.15, 0, 0])

# Initialize the robot
for m in poppy.motors:
    m.goto_position(0, 2)

# Left arm is compliant, right arm is active
for m in poppy.l_arm:
            m.compliant = False

for m in poppy.r_arm:
    m.compliant = False

# The torso itself must not be compliant
for m in poppy.torso:
    m.compliant = False


def follow_hand(poppy, delta):
    """Tell the right hand to follow the left hand"""
    right_arm_position = poppy.l_arm_chain.end_effector + delta
    poppy.r_arm_chain.goto(right_arm_position, 0.5, wait=True)
Exemple #4
0
class Torso(object):
    def __init__(self):
        self.rospack = RosPack()
        with open(join(self.rospack.get_path('nips2016'), 'config', 'torso.json')) as f:
            self.params = json.load(f)
        with open(join(self.rospack.get_path('nips2016'), 'config', 'perception.json')) as f:
            self.perception_params = json.load(f) # TODO remove perception

        self.execute_rate_hz = self.perception_params['recording_rate']  # TODO
        self.execute_rate = rospy.Rate(self.execute_rate_hz)

        self.publish_rate = rospy.Rate(self.params['publish_rate'])

        self.eef_pub_l = rospy.Publisher('/nips2016/torso/left_arm/end_effector_pose', PoseStamped, queue_size=1)
        self.eef_pub_r = rospy.Publisher('/nips2016/torso/right_arm/end_effector_pose', PoseStamped, queue_size=1)
        self.js_pub_l = rospy.Publisher('/nips2016/torso/left_arm/joints', JointState, queue_size=1)

        self.srv_reset = None
        self.srv_execute = None
        self.srv_set_compliant = None

        self.primitive_head = None
        self.primitive_right = None

        # Protected resources
        self.torso = None
        self.in_rest_pose = False
        self.robot_lock = RLock()

    def go_to_rest(self, slow):
        with self.robot_lock:
            duration = 2 if slow else 0.25
            self.set_torque_limits(60)
            self.torso.goto_position({'l_shoulder_y': 13, 'l_shoulder_x': 20, 'l_elbow_y': -25}, duration)
            rospy.sleep(duration)
            self.go_to([90, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0], duration)
            self.torso.motors[4].compliant = True  # This motor overheats a lot
            self.in_rest_pose = True
            self.set_torque_limits()

    def go_to(self, motors, duration):
        motors_dict = dict(zip([m.name for m in self.torso.motors], motors))
        self.torso.goto_position(motors_dict, duration)
        rospy.sleep(duration)

    def set_torque_limits(self, value=None):
        for m in self.torso.l_arm:
            m.torque_limit = self.params['torques'] if value is None else value

    def run(self, dummy=False):
        rospy.loginfo("Torso is connecting to the robot...")
        try:
            self.torso = PoppyTorso(use_http=True, simulator='poppy-simu' if dummy else None)
        except IOError as e:
            rospy.logerr("Torso failed to init: {}".format(e))
            return None
        else:
            self.primitive_head = UpperBodyIdleMotion(self.torso, 15)
            self.primitive_right = HeadIdleMotion(self.torso, 15)
            self.go_to([90, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0], 4)
            self.primitive_head.start()
            self.primitive_right.start()

        try:
            self.set_torque_limits()
            self.torso.compliant = False
            self.go_to_rest(True)

            self.srv_reset = rospy.Service('/nips2016/torso/reset', Reset, self._cb_reset)
            self.srv_execute = rospy.Service('/nips2016/torso/execute', ExecuteTorsoTrajectory, self._cb_execute)
            self.srv_set_compliant = rospy.Service('/nips2016/torso/set_compliant', SetTorsoCompliant, self._cb_set_compliant)

            rospy.loginfo("Torso is ready to execute trajectories at {} Hz ".format(self.execute_rate_hz))

            while not rospy.is_shutdown():
                self.publish_eef(self.torso.l_arm_chain.end_effector, self.eef_pub_l)
                self.publish_eef(self.torso.r_arm_chain.end_effector, self.eef_pub_r)
                self.publish_js()
                self.publish_rate.sleep()
        finally:
            self.primitive_right.stop()
            self.primitive_head.stop()
            self.torso.close()

    def publish_eef(self, eef_pose, publisher):
        pose = PoseStamped()
        pose.header.stamp = rospy.Time.now()
        pose.header.frame_id = 'torso_base'
        pose.pose.position.x = eef_pose[0]
        pose.pose.position.y = eef_pose[1]
        pose.pose.position.z = eef_pose[2]
        publisher.publish(pose)

    def publish_js(self):
        js = JointState()
        js.header.stamp = rospy.Time.now()
        js.name = [m.name for m in self.torso.l_arm]
        js.position = [m.present_position for m in self.torso.l_arm]
        js.velocity = [m.present_speed for m in self.torso.l_arm]
        js.effort = [m.present_load for m in self.torso.l_arm]
        self.js_pub_l.publish(js)

    def _cb_execute(self, request):
        # TODO Action server
        thread = Thread(target=self.execute, args=[request.torso_trajectory])
        thread.daemon = True
        thread.start()
        return ExecuteTorsoTrajectoryResponse()

    def execute(self, trajectory):
        with self.robot_lock:
            rospy.loginfo("Executing Torso trajectory with {} points...".format(len(trajectory.points)))
            if not self.in_rest_pose:
                self.go_to_rest(False)
            for point in trajectory.points:
                if rospy.is_shutdown():
                    break
                self.torso.goto_position(dict(zip(trajectory.joint_names, point.positions)), 1.05/self.execute_rate_hz)
                self.execute_rate.sleep()
            rospy.loginfo("Trajectory ended!")

    def _cb_set_compliant(self, request):
        with self.robot_lock:
            self.left_arm_compliant(request.compliant)
        return SetTorsoCompliantResponse()

    def left_arm_compliant(self, compliant):
        rospy.loginfo("Torso left arm now {}".format('compliant' if compliant else 'rigid'))
        for m in self.torso.l_arm:
            m.compliant = compliant

    def _cb_reset(self, request):
        rospy.loginfo("Resetting Torso{}...".format(" in slow mode" if request.slow else ""))

        if request.slow:
            with self.robot_lock:
                self.left_arm_compliant(False)
                system('beep')
                rospy.sleep(1)
                self.go_to_rest(True)
        else:
            with self.robot_lock:
                self.left_arm_compliant(False)
                self.go_to_rest(False)
        return ResetResponse()
Exemple #5
0
import sys 
import numpy as np
import time
import os

x = sys.argv[1]
y = sys.argv[2]
z = sys.argv[3]
nb_objet = sys.argv[4]

from poppy.creatures import PoppyTorso
from cinematique import Bras,Buste
from couple import *

#instanciation du robot avec le nom marlien (Mar pour Martin et Lien pour Julien)
marlien = PoppyTorso() #Commande uniquement pour le vrai robot
marlien.compliant = False
#mise à 0 des moteurs
for m in marlien.motors:
    m.goto_position(0,2)
    

time.sleep(2)
coord_objet = np.mat([[float(x)],[float(y)],[float(z)]])
nb_objet = int(nb_objet)

marlien.l_shoulder_y.goto_position(-180,3)
marlien.l_elbow_y.goto_position(90,3)
marlien.r_shoulder_y.goto_position(-180,3)
marlien.r_elbow_y.goto_position(90,3,wait=True)
Exemple #6
0
## Get the torso. 
from poppy.creatures import PoppyTorso
from threading import Thread
from pypot.server.httpserver import HTTPRobotServer

torso = PoppyTorso()

server = HTTPRobotServer(torso, host='193.50.110.242', port=8080)

Thread(target=lambda: server.run(quiet=True, server='wsgiref')).start()
Exemple #7
0
import time
import numpy as np
from poppy.creatures import PoppyTorso

poppy = PoppyTorso(simulator='vrep')

delay_time = 1
target_delta = np.array([-0.15, 0, 0])

# Initialize the robot
for m in poppy.motors:
    m.goto_position(0, 2)

# Left arm is compliant, right arm is active
for m in poppy.l_arm:
    m.compliant = False

for m in poppy.r_arm:
    m.compliant = False

# The torso itself must not be compliant
for m in poppy.torso:
    m.compliant = False


def follow_hand(poppy, delta):
    """Tell the right hand to follow the left hand"""
    right_arm_position = poppy.l_arm_chain.end_effector + delta
    poppy.r_arm_chain.goto(right_arm_position, 0.5, wait=True)

Exemple #8
0
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Created on Thu Feb 23 12:32:24 2017

@author: gdebat
"""

import json
import pypot
import time

from pypot.vrep import from_vrep
from poppy.creatures import PoppyTorso
#from cherry import Cherry
from STT_google import STT_google
from chatterbot import sendToChatterbot
#from textToSpeech.TTS_test import TTS_test

poppy = PoppyTorso(simulator='vrep')
#sp=Speak(poppy, text="Non vous n'avez pas souri!")
sp = STT_google(poppy, state='normal')
sp.run()
print "ok"

# poppy = PoppyTorso(simulator='vrep')
# #sp=Speak(poppy, text="Non vous n'avez pas souri!")
# sp=TTS_test(poppy, text='Bonjour', lang= 'fr', ttsengine='google')
# sp.run()
# print "ok"