import time from roslibpy import Message from roslibpy import Topic from compas_fab.backends import RosClient client = RosClient() talker = Topic(client, '/chatter', 'std_msgs/String') def start_talking(): while client.is_connected: talker.publish(Message({'data': 'Hello RobArch World!'})) print('Sending message...') time.sleep(1) talker.unadvertise() client.on_ready(start_talking) client.run_forever()
print('Starting UR joint state publisher...') print('Press CTRL+C to abort') print( 'NOTE: if CTRL+C does not abort cleanly, set the env variable to FOR_DISABLE_CONSOLE_CTRL_HANDLER=1' ) print('ROS Nodes status:') client = RosClient(host=args.ros_host, port=int(args.ros_port)) print(' [ ] ROS Topics', end='\r') joint_states_topic = roslibpy.Topic(client, '/ur_joint_states', 'sensor_msgs/JointState') joint_states_topic.advertise() client.on_ready( functools.partial(joint_states_publisher, topic=joint_states_topic, frequency=args.frequency)) print(' [X] ROS Topics') print('Ready!') client.run_forever() print('ROS Nodes status:') print(' [ ] ROS Topics disconnection', end='\r') joint_states_topic.unadvertise() print(' [X] ROS Topics disconnection') time.sleep(1) print('Disconnected')
print('ROS Nodes status:') print(' [ ] ROS Services', end='\r') client = RosClient(host=args.ros_host, port=int(args.ros_port)) storage_service = roslibpy.Service(client, '/store_assembly_task', 'workshop_tum_msgs/AssemblyTask') storage_service.advertise(storage_handler) execute_service = roslibpy.Service(client, '/execute_assembly_task', 'workshop_tum_msgs/AssemblyTask') execute_service.advertise(functools.partial(execution_handler, ur=ur)) print(' [X] ROS Services') client.on_ready( functools.partial(joint_states_received, ur=ur, ros=client, frequency=args.frequency)) print('Ready!') client.run_forever() print('ROS Nodes status:') print(' [ ] ROS Services disconnection', end='\r') storage_service.unadvertise() execute_service.unadvertise() print(' [X] ROS Services disconnection') time.sleep(1) print('Disconnected')
talker = Topic(client, '/messages', 'std_msgs/String') talker.advertise() listener = Topic(client, '/messages', 'std_msgs/String') listener.subscribe(receive_message) while client.is_connected: text = get_input() if text == 'q': break send_message(talker, text) client.terminate() def receive_message(message): data = json.loads(message['data']) if data['name'] != name: print('\r[{}]: {}\r'.format( data['name'], data['text'].ljust(80), )) print('> {}'.format(get_current_buffer()), end='', flush=True) def send_message(talker, message): talker.publish({'data': json.dumps(dict(text=message, name=name))}) client.on_ready(start_chat) client.run_forever()
import time from roslibpy import Message from roslibpy import Topic from compas_fab.backends import RosClient client = RosClient() listener = Topic(client, '/chatter', 'std_msgs/String') def start_listening(): listener.subscribe(receive_message) def receive_message(message): print('Heard talking: ' + message['data']) client.on_ready(start_listening) client.run_forever()
from roslibpy import Topic from compas_fab.backends import RosClient def receive_message(message): print(message) if __name__ == '__main__': import argparse parser = argparse.ArgumentParser(description='Joint states publisher') parser.add_argument('-r', '--ros-host', help='ROS host', default='localhost') parser.add_argument('-p', '--ros-port', help='ROS port', default=9090) args = parser.parse_args() client = RosClient(host=args.ros_host, port=int(args.ros_port)) # Subscribe to joint state updates listener = Topic(client, '/ur_joint_states', 'sensor_msgs/JointState') listener.subscribe(receive_message) # Start connection client.on_ready(lambda: print('[OK] Connected to ROS: \n')) client.run_forever() client.terminate()