mobile_platform_controller.py
This script is responsible for the mobile platform's linear and rotational controller. Since the mobile platform is dragging in simulation (while not publishing and Twist() message), it is crucial to publish a linear x velocity to make platform steady. That's why users should execute this controller in the beginning of the simulation. After it asks for an input, if the input starts with 'linear' it publishes a constant velocity until the desired translation is done. If the input starts with 'tetha' it sends a request to the mobile platform rotation controller that uses a custom PID controller to rotate the platform.
Important: To be able to use rotation controller, users has to execute both service and action launch files as explained down below.
rosrun multirobot_state_publisher mobile_platform_controller.py
ROS Service packages for multirobot project.
ground_truth_listener_mobile_tool0_server
It creates a server that listens to the ground truth of the mobile arm's "tool0" link, and returns a Response that includes the position and orientation information of the link when there is a request.
ground_truth_listener_base_link_server.py It creates a server that listens to the ground truth of the mobile platform's "base_link", and returns a Response that includes the position and orientation information of the link when there is a request.
Launching the services:
roslaunch multirobot_services multirobot_service.launch
ROS Action packages for multirobot project.
freeze_mobile_ee_server.py
It locks the end-effector of the mobile platform to the current position and orientation. It handles the disturbances and movements that are coming from the platform. So to say, it fixes the end-effector to the 'world' rather than 'mobile_base_link'.
send_ee_opposite_server.py
It sends the fixed arm to the opposite side of the mobile arm, aligning the Z-axis.
mobile_platform_rotation_controller_server.py
PID rotation controller for mobile robot platform in order to be more accurate when rotating.
move_both_server.py
It includes the algorithms to move both fixed and mobie arm synchronously.
Launching the Actions:
roslaunch multirobot_actions multirobot_action.launch
After, launching both Services and Actions, users should execute the following lines in order:
First, set both arms to their "operation_ready" pose by usinng their MoveIt! packages.
To move both arms, first execute:
rosrun multirobot_actions send_ee_oppsite_client.py
Second, execute:
rosrun multirobot_actions move_both_client.py
With changing the action message parameters in 'move_both_client.py' script, users can alter the linear position and angle.
To freeze the mobile end-effector, first execute:
rosrun multirobot_actions freeze_mobile_ee_server.py
Second, execute:
rosrun multirobot_actions freeze_mobile_ee_client.py