paccionesawyer / Create3_ROS2_Intro

A step-by-step introduction to ROS2 on the Create3.
11 stars 0 forks source link

How to call several message from python ? #2

Open azbitak-invn opened 1 year ago

azbitak-invn commented 1 year ago

Hello,

I plan to reuse your script to control my robot by python. I was thinking on createed small piece of function to rotate, drive, undock... the robot. Unfortunately, I have some issue and it seems that is due to several call to rclpy.init or shutdown. Is it possible to do this way ? Many thanks.

def undock(args=None):
    rclpy.init(args=args)

    undock_client = UndockingActionClient()
    future = undock_client.send_goal()

    # The future is completed when an action server accepts or rejects the goal.
    rclpy.spin_until_future_complete(undock_client, future)
    rclpy.shutdown()

def drive(args=None):
    rclpy.init(args=args)
    action_client = DriveDistanceActionClient()

    dist  = 0.5
    speed = 0.15

    action_client.send_goal(dist, speed)
    rclpy.spin(action_client)

def dock(args=None):
    rclpy.init(args=args)

    dock_client = DockServoActionClient()
    future = dock_client.send_goal()

    # # The future is completed when an action server accepts or rejects the goal.
    rclpy.spin_until_future_complete(dock_client, future)
    rclpy.shutdown()

def main(args=None):
    ### undock
    undock()
    # ### rotate
    rotate()
    # ### drive
    # drive()
     ### docking
    dock()