From 5416119a62f6a72ade6752c84eeb682646ae1c53 Mon Sep 17 00:00:00 2001 From: pateman16 <patrickkarlsson16@gmail.com> Date: Mon, 23 Apr 2018 17:20:43 +0200 Subject: [PATCH] minor changes --- CMakeLists.txt | 1 + src/Startup.txt | 1 - src/launch/autonomous_offboard_pid.launch | 2 +- .../autonomous_offboard_takeoff_test.launch | 4 +- src/launch/autonomous_offboard_test.launch | 3 +- src/scripts/action_controller.py | 2 +- src/scripts/action_controller_descend.py | 2 +- src/scripts/action_controller_pid.py | 22 ++-- src/scripts/action_controller_takeoff_test.py | 18 +-- src/scripts/action_controller_test.py | 46 ++++---- src/scripts/coverage_server.py | 4 +- src/scripts/descend_on_object_server.py | 4 +- src/scripts/detect_object_server.py | 4 +- src/scripts/goto_position_server.py | 4 +- src/scripts/goto_position_vel_server.py | 11 +- src/scripts/long_grippers_server.py | 4 +- src/scripts/mavros_state.pyc | Bin 4650 -> 4650 bytes src/scripts/position_control.py | 105 ++++++++---------- src/scripts/short_grippers_server.py | 4 +- 19 files changed, 110 insertions(+), 131 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fbd9a3f..0ebecc1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -71,6 +71,7 @@ add_action_files( FILES goto_position.action goto_position_vel.action + takeoff_curr.action detect_object.action center_on_object.action descend_on_object.action diff --git a/src/Startup.txt b/src/Startup.txt index 8a015fb..970ba03 100644 --- a/src/Startup.txt +++ b/src/Startup.txt @@ -13,7 +13,6 @@ terminal3: roslaunch simulation_control simulation_control.launch ready to fly - Start Rosserial with sensor controller rosrun rosserial_python serial_node.py -port:=/dev/USB0 diff --git a/src/launch/autonomous_offboard_pid.launch b/src/launch/autonomous_offboard_pid.launch index f6550a0..b6a471b 100644 --- a/src/launch/autonomous_offboard_pid.launch +++ b/src/launch/autonomous_offboard_pid.launch @@ -1,6 +1,6 @@ <launch> <node name="position_control" pkg="autonomous_offboard" type="position_control.py" output="screen" /> - <node name="action_controller_takeoff_test" pkg="autonomous_offboard" type="action_controller_takeoff_test.py" output="screen" /> + <node name="action_controller_pid" pkg="autonomous_offboard" type="action_controller_pid.py" output="screen" /> <node name="goto_position_server" pkg="autonomous_offboard" type="goto_position_server.py" output="screen" /> <node name="goto_position_vel_server" pkg="autonomous_offboard" type="goto_position_vel_server.py" output="screen" /> <node name="obstacle_detection_control" pkg="simulation_control" type="obstacle_detection_control.py" output="screen" /> diff --git a/src/launch/autonomous_offboard_takeoff_test.launch b/src/launch/autonomous_offboard_takeoff_test.launch index 060fa79..5b5f06c 100644 --- a/src/launch/autonomous_offboard_takeoff_test.launch +++ b/src/launch/autonomous_offboard_takeoff_test.launch @@ -1,6 +1,6 @@ <launch> <node name="position_control" pkg="autonomous_offboard" type="position_control.py" output="screen" /> - <node name="action_controller_test" pkg="autonomous_offboard" type="action_controller_test.py" output="screen" /> + <node name="action_controller_takeoff_test" pkg="autonomous_offboard" type="action_controller_takeoff_test.py" output="screen" /> <node name="goto_position_server" pkg="autonomous_offboard" type="goto_position_server.py" output="screen" /> - <node name="obstacle_detection_control" pkg="simulation_control" type="obstacle_detection_control.py" output="screen" /> + <node name="takeoff_curr_server" pkg="autonomous_offboard" type="takeoff_curr_server.py" output="screen" /> </launch> diff --git a/src/launch/autonomous_offboard_test.launch b/src/launch/autonomous_offboard_test.launch index cd38a3e..4bfb4e2 100644 --- a/src/launch/autonomous_offboard_test.launch +++ b/src/launch/autonomous_offboard_test.launch @@ -1,6 +1,5 @@ <launch> <node name="position_control" pkg="autonomous_offboard" type="position_control.py" output="screen" /> - <node name="action_controller_takeoff_test" pkg="autonomous_offboard" type="action_controller_takeoff_test.py" output="screen" /> + <node name="action_controller_test" pkg="autonomous_offboard" type="action_controller_test.py" output="screen" /> <node name="goto_position_server" pkg="autonomous_offboard" type="goto_position_server.py" output="screen" /> - <node name="obstacle_detection_control" pkg="simulation_control" type="obstacle_detection_control.py" output="screen" /> </launch> diff --git a/src/scripts/action_controller.py b/src/scripts/action_controller.py index f7c0b26..a1dea2c 100755 --- a/src/scripts/action_controller.py +++ b/src/scripts/action_controller.py @@ -7,7 +7,7 @@ import actionlib import mavros_state import time -from simulation_control.msg import center_on_objectAction, center_on_objectGoal, descend_on_objectAction, descend_on_objectGoal, detect_objectAction, detect_objectGoal, goto_positionAction, goto_positionGoal, short_grippersAction, short_grippersGoal, long_grippersAction, long_grippersGoal, coverageAction, coverageGoal +from autonomous_offboard.msg import center_on_objectAction, center_on_objectGoal, descend_on_objectAction, descend_on_objectGoal, detect_objectAction, detect_objectGoal, goto_positionAction, goto_positionGoal, short_grippersAction, short_grippersGoal, long_grippersAction, long_grippersGoal, coverageAction, coverageGoal from std_msgs.msg import Float32 from geometry_msgs.msg import PoseStamped diff --git a/src/scripts/action_controller_descend.py b/src/scripts/action_controller_descend.py index c296c71..3548b25 100755 --- a/src/scripts/action_controller_descend.py +++ b/src/scripts/action_controller_descend.py @@ -7,7 +7,7 @@ import actionlib import mavros_state import time -from simulation_control.msg import center_on_objectAction, center_on_objectGoal, descend_on_objectAction, descend_on_objectGoal, detect_objectAction, detect_objectGoal, goto_positionAction, goto_positionGoal, short_grippersAction, short_grippersGoal, long_grippersAction, long_grippersGoal, coverageAction, coverageGoal +from autonomous_offboard.msg import center_on_objectAction, center_on_objectGoal, descend_on_objectAction, descend_on_objectGoal, detect_objectAction, detect_objectGoal, goto_positionAction, goto_positionGoal, short_grippersAction, short_grippersGoal, long_grippersAction, long_grippersGoal, coverageAction, coverageGoal from std_msgs.msg import Float32 from geometry_msgs.msg import PoseStamped diff --git a/src/scripts/action_controller_pid.py b/src/scripts/action_controller_pid.py index f548f8d..11607d0 100755 --- a/src/scripts/action_controller_pid.py +++ b/src/scripts/action_controller_pid.py @@ -7,13 +7,13 @@ import actionlib import mavros_state import time -from simulation_control.msg import center_on_objectAction, center_on_objectGoal, descend_on_objectAction, descend_on_objectGoal, detect_objectAction, detect_objectGoal,goto_position_velAction, goto_position_velGoal, goto_positionAction, goto_positionGoal, short_grippersAction, short_grippersGoal, long_grippersAction, long_grippersGoal, coverageAction, coverageGoal +from autonomous_offboard.msg import center_on_objectAction, center_on_objectGoal, descend_on_objectAction, descend_on_objectGoal, detect_objectAction, detect_objectGoal,goto_position_velAction, goto_position_velGoal, goto_positionAction, goto_positionGoal, short_grippersAction, short_grippersGoal, long_grippersAction, long_grippersGoal, coverageAction, coverageGoal from std_msgs.msg import Float32 from geometry_msgs.msg import PoseStamped if __name__ == '__main__': - rospy.init_node('action_controller_test') + rospy.init_node('action_controller_pid_test') mv_state = mavros_state.mavros_state() print 'Setting offboard' mv_state.set_mode('OFFBOARD') @@ -30,20 +30,21 @@ if __name__ == '__main__': rospy.loginfo("Takeoff succeded") time.sleep(5) + rospy.loginfo("Z PID") ######Z PID######### goto_position_vel_client = actionlib.SimpleActionClient('goto_position_vel', goto_position_velAction) goto_position_vel_client.wait_for_server() - goto_position_vel_goal = goto_positionGoal() + goto_position_vel_goal = goto_position_velGoal() goto_position_vel_goal.destination.pose.position.x = 0 goto_position_vel_goal.destination.pose.position.y = 0 goto_position_vel_goal.destination.pose.position.z = 3 - goto_position_vel_client.send_goal(goto_position_goal) + goto_position_vel_client.send_goal(goto_position_vel_goal) goto_position_vel_client.wait_for_result() time.sleep(10) ###STABALIZE - rospy.loginfo("Second position") + rospy.loginfo("Stabalize") goto_position_goal.destination.pose.position.x = 0 goto_position_goal.destination.pose.position.y = 0 goto_position_goal.destination.pose.position.z = 2 @@ -51,17 +52,18 @@ if __name__ == '__main__': goto_position_client.wait_for_result() time.sleep(5) + rospy.loginfo("X PID") #######X PID############## goto_position_vel_goal.destination.pose.position.x = 1 goto_position_vel_goal.destination.pose.position.y = 0 goto_position_vel_goal.destination.pose.position.z = 2 - goto_position_vel_client.send_goal(goto_position_goal) + goto_position_vel_client.send_goal(goto_position_vel_goal) goto_position_vel_client.wait_for_result() time.sleep(10) ###STABALIZE - rospy.loginfo("Second position") + rospy.loginfo("Stabalize") goto_position_goal.destination.pose.position.x = 0 goto_position_goal.destination.pose.position.y = 0 goto_position_goal.destination.pose.position.z = 2 @@ -71,16 +73,17 @@ if __name__ == '__main__': time.sleep(5) #######Y PID############## + rospy.loginfo("Y PID") goto_position_vel_goal.destination.pose.position.x = 0 goto_position_vel_goal.destination.pose.position.y = 1 goto_position_vel_goal.destination.pose.position.z = 2 - goto_position_vel_client.send_goal(goto_position_goal) + goto_position_vel_client.send_goal(goto_position_vel_goal) goto_position_vel_client.wait_for_result() time.sleep(10) ###STABALIZE - rospy.loginfo("Second position") + rospy.loginfo("Stabalize") goto_position_goal.destination.pose.position.x = 0 goto_position_goal.destination.pose.position.y = 0 goto_position_goal.destination.pose.position.z = 2 @@ -90,3 +93,4 @@ if __name__ == '__main__': time.sleep(5) mv_state.land(0.0) + diff --git a/src/scripts/action_controller_takeoff_test.py b/src/scripts/action_controller_takeoff_test.py index b580068..fd8d3a7 100755 --- a/src/scripts/action_controller_takeoff_test.py +++ b/src/scripts/action_controller_takeoff_test.py @@ -7,7 +7,7 @@ import actionlib import mavros_state import time -from simulation_control.msg import center_on_objectAction, center_on_objectGoal, descend_on_objectAction, descend_on_objectGoal, detect_objectAction, detect_objectGoal, goto_positionAction, goto_positionGoal, short_grippersAction, short_grippersGoal, long_grippersAction, long_grippersGoal, coverageAction, coverageGoal +from autonomous_offboard.msg import center_on_objectAction, center_on_objectGoal, descend_on_objectAction, descend_on_objectGoal, detect_objectAction, detect_objectGoal, goto_positionAction, goto_positionGoal, short_grippersAction, short_grippersGoal,takeoff_currAction, takeoff_currGoal, long_grippersAction, long_grippersGoal, coverageAction, coverageGoal from std_msgs.msg import Float32 from geometry_msgs.msg import PoseStamped @@ -18,17 +18,9 @@ if __name__ == '__main__': print 'Setting offboard' mv_state.set_mode('OFFBOARD') print 'Arming vehicle' + print 'Takeoff' mv_state.arm(True) - time.sleep(5) - rospy.loginfo("Taking off") - goto_position_client = actionlib.SimpleActionClient('goto_position', goto_positionAction) - goto_position_client.wait_for_server() - goto_position_goal = goto_positionGoal() - goto_position_goal.destination.pose.position.z = 2 - goto_position_client.send_goal(goto_position_goal) - goto_position_client.wait_for_result() - rospy.loginfo("Takeoff succeded") - - time.sleep(10) - + print 'Sleeping 20 sec' + time.sleep(20) + print 'Landing' mv_state.land(0.0) diff --git a/src/scripts/action_controller_test.py b/src/scripts/action_controller_test.py index 8c60e99..fe90c77 100755 --- a/src/scripts/action_controller_test.py +++ b/src/scripts/action_controller_test.py @@ -7,64 +7,58 @@ import actionlib import mavros_state import time -from simulation_control.msg import center_on_objectAction, center_on_objectGoal, descend_on_objectAction, descend_on_objectGoal, detect_objectAction, detect_objectGoal, goto_positionAction, goto_positionGoal, short_grippersAction, short_grippersGoal, long_grippersAction, long_grippersGoal, coverageAction, coverageGoal +from autonomous_offboard.msg import center_on_objectAction, center_on_objectGoal, descend_on_objectAction, descend_on_objectGoal, detect_objectAction, detect_objectGoal, goto_positionAction, goto_positionGoal, short_grippersAction, short_grippersGoal, long_grippersAction, long_grippersGoal, coverageAction, coverageGoal from std_msgs.msg import Float32 from geometry_msgs.msg import PoseStamped if __name__ == '__main__': rospy.init_node('action_controller_test') + goto_position_client = actionlib.SimpleActionClient('goto_position', goto_positionAction) + goto_position_client.wait_for_server() + goto_position_goal = goto_positionGoal() mv_state = mavros_state.mavros_state() print 'Setting offboard' mv_state.set_mode('OFFBOARD') print 'Arming vehicle' mv_state.arm(True) - time.sleep(5) rospy.loginfo("Taking off") - goto_position_client = actionlib.SimpleActionClient('goto_position', goto_positionAction) - goto_position_client.wait_for_server() - goto_position_goal = goto_positionGoal() - goto_position_goal.destination.pose.position.z = 2 - goto_position_client.send_goal(goto_position_goal) - goto_position_client.wait_for_result() - rospy.loginfo("Takeoff succeded") - - time.sleep(5) + time.sleep(10) rospy.loginfo("First position") - goto_position_goal.destination.pose.position.x = -5 + goto_position_goal.destination.pose.position.x = 20 goto_position_goal.destination.pose.position.y = 0 - goto_position_goal.destination.pose.position.z = 2 + goto_position_goal.destination.pose.position.z = 3 goto_position_client.send_goal(goto_position_goal) goto_position_client.wait_for_result() - time.sleep(5) + time.sleep(10) rospy.loginfo("Second position") - goto_position_goal.destination.pose.position.x = -5 - goto_position_goal.destination.pose.position.y = 5 - goto_position_goal.destination.pose.position.z = 2 + goto_position_goal.destination.pose.position.x = 0 + goto_position_goal.destination.pose.position.y = -20 + goto_position_goal.destination.pose.position.z = 3 goto_position_client.send_goal(goto_position_goal) goto_position_client.wait_for_result() - time.sleep(5) + time.sleep(10) rospy.loginfo("Third position") - goto_position_goal.destination.pose.position.x = 0 - goto_position_goal.destination.pose.position.y = 5 - goto_position_goal.destination.pose.position.z = 2 + goto_position_goal.destination.pose.position.x = -20 + goto_position_goal.destination.pose.position.y = 0 + goto_position_goal.destination.pose.position.z = 3 goto_position_client.send_goal(goto_position_goal) goto_position_client.wait_for_result() - time.sleep(5) + time.sleep(10) - rospy.loginfo("Third position") + rospy.loginfo("Fourth position") goto_position_goal.destination.pose.position.x = 0 - goto_position_goal.destination.pose.position.y = 0 - goto_position_goal.destination.pose.position.z = 2 + goto_position_goal.destination.pose.position.y = 20 + goto_position_goal.destination.pose.position.z = 3 goto_position_client.send_goal(goto_position_goal) goto_position_client.wait_for_result() - time.sleep(5) + time.sleep(10) mv_state.land(0.0) diff --git a/src/scripts/coverage_server.py b/src/scripts/coverage_server.py index b40ec84..68b935e 100755 --- a/src/scripts/coverage_server.py +++ b/src/scripts/coverage_server.py @@ -1,7 +1,7 @@ #!/usr/bin/env python import rospy import actionlib -import simulation_control.msg +import autonomous_offboard.msg import numpy as np import time import math @@ -28,7 +28,7 @@ class coverage_server(): self.detect_object_client = actionlib.SimpleActionClient('detect_object', detect_objectAction) self.rate = rospy.Rate(20) self.action_server = actionlib.SimpleActionServer('coverage', - simulation_control.msg.coverageAction, + autonomous_offboard.msg.coverageAction, execute_cb=self.execute_cb, auto_start=False) self.action_server.start() diff --git a/src/scripts/descend_on_object_server.py b/src/scripts/descend_on_object_server.py index 1faeda3..8b92f4c 100755 --- a/src/scripts/descend_on_object_server.py +++ b/src/scripts/descend_on_object_server.py @@ -1,7 +1,7 @@ #!/usr/bin/env python import rospy import actionlib -import simulation_control.msg +import autonomous_offboard.msg from geometry_msgs.msg import PoseStamped, Point from std_msgs.msg import Bool, String import time @@ -29,7 +29,7 @@ class descend_on_object_server(): self.rate = rospy.Rate(20) self.result = simulation_control.msg.descend_on_objectResult() self.action_server = actionlib.SimpleActionServer('descend_on_object', - simulation_control.msg.descend_on_objectAction, + autonomous_offboard.msg.descend_on_objectAction, execute_cb=self.execute_cb, auto_start=False) self.last_object_pose = Point() diff --git a/src/scripts/detect_object_server.py b/src/scripts/detect_object_server.py index 7a079ed..cb6b281 100755 --- a/src/scripts/detect_object_server.py +++ b/src/scripts/detect_object_server.py @@ -1,7 +1,7 @@ #!/usr/bin/env python import rospy import actionlib -import simulation_control.msg +import autonomous_offboard.msg from geometry_msgs.msg import PoseStamped, Point class detect_object_server(): @@ -20,7 +20,7 @@ class detect_object_server(): self.rate = rospy.Rate(20) self.result = simulation_control.msg.detect_objectResult() - self.action_server = actionlib.SimpleActionServer('detect_object', simulation_control.msg.detect_objectAction, + self.action_server = actionlib.SimpleActionServer('detect_object', autonomous_offboard.msg.detect_objectAction, execute_cb=self.execute_cb, auto_start=False) self.action_server.start() diff --git a/src/scripts/goto_position_server.py b/src/scripts/goto_position_server.py index d983d65..3c7c6e5 100755 --- a/src/scripts/goto_position_server.py +++ b/src/scripts/goto_position_server.py @@ -1,7 +1,7 @@ #!/usr/bin/env python import rospy import actionlib -import simulation_control.msg +import autonomous_offboard.msg from std_msgs.msg import Bool, String from geometry_msgs.msg import PoseStamped @@ -19,7 +19,7 @@ class goto_position_server(): self.rate = rospy.Rate(20) #self.result = simulation_control.msg.goto_positionResult() - self.action_server = actionlib.SimpleActionServer('goto_position', simulation_control.msg.goto_positionAction, + self.action_server = actionlib.SimpleActionServer('goto_position', autonomous_offboard.msg.goto_positionAction, execute_cb=self.execute_cb, auto_start=False) self.action_server.start() diff --git a/src/scripts/goto_position_vel_server.py b/src/scripts/goto_position_vel_server.py index bd0c42d..02b51f5 100755 --- a/src/scripts/goto_position_vel_server.py +++ b/src/scripts/goto_position_vel_server.py @@ -1,17 +1,17 @@ #!/usr/bin/env python import rospy import actionlib -import simulation_control.msg +import autonomous_offboard.msg from std_msgs.msg import Bool, String from geometry_msgs.msg import PoseStamped -class goto_position_server(): +class goto_position_vel_server(): def __init__(self): #variables self.target_reached = False #publishers - self.pose_control = rospy.Publisher('/position_control/set_position', PoseStamped, queue_size=10) + self.pose_control = rospy.Publisher('/position_control/set_velocity', PoseStamped, queue_size=10) self.mode_control = rospy.Publisher('/position_control/set_mode', String, queue_size=10) #subscribers @@ -19,12 +19,13 @@ class goto_position_server(): self.rate = rospy.Rate(20) #self.result = simulation_control.msg.goto_positionResult() - self.action_server = actionlib.SimpleActionServer('goto_position_vel', simulation_control.msg.goto_position_velAction, + self.action_server = actionlib.SimpleActionServer('goto_position_vel', autonomous_offboard.msg.goto_position_velAction, execute_cb=self.execute_cb, auto_start=False) self.action_server.start() def execute_cb(self, goal): + print(goal) self.mode_control.publish('velctr') self.pose_control.publish(goal.destination) rospy.sleep(0.1) @@ -43,6 +44,6 @@ if __name__ == '__main__': try: rospy.init_node('goto_position_vel_server') - goto_position_server() + goto_position_vel_server() except rospy.ROSInterruptException: pass diff --git a/src/scripts/long_grippers_server.py b/src/scripts/long_grippers_server.py index 486bf4f..7e7a79f 100755 --- a/src/scripts/long_grippers_server.py +++ b/src/scripts/long_grippers_server.py @@ -3,7 +3,7 @@ import roslib import rospy import actionlib -import simulation_control.msg +import autonomous_offboard.msg import time from std_msgs.msg import Float32 @@ -20,7 +20,7 @@ class long_grippers_server(): self.rate = rospy.Rate(20) self.result = simulation_control.msg.long_grippersResult() self.server = actionlib.SimpleActionServer('long_grippers', - simulation_control.msg.long_grippersAction, + autonomous_offboard.msg.long_grippersAction, execute_cb=self.execute_cb, auto_start=False) self.server.start() diff --git a/src/scripts/mavros_state.pyc b/src/scripts/mavros_state.pyc index ac3d43131589bc9aae5c22ee0a9ef3ddab57e73f..8044321eb231bc91837f7536bc9b1a2e9448d2ce 100644 GIT binary patch delta 36 ocmZ3bvPy-W`7<w9^^=<$+0XECF*u|%fPu(leKxJl?EK2i0M2p=ApigX delta 36 ocmZ3bvPy-W`7<xqr>rX*+0XECeXvhw00WW9`fOU8+4+^30pHvT2mk;8 diff --git a/src/scripts/position_control.py b/src/scripts/position_control.py index 64b7432..dea6744 100755 --- a/src/scripts/position_control.py +++ b/src/scripts/position_control.py @@ -7,6 +7,7 @@ from VelocityController import VelocityController from sensor_msgs.msg import Imu import numpy as np + class position_control(): def __init__(self): print 'Initialising position control' @@ -17,7 +18,7 @@ class position_control(): self.actual_height = Float32 self.actual_height = 0.0 - #----------Subscribers----------# + # ----------Subscribers----------# rospy.Subscriber('/position_control/set_mode', String, self.set_mode_callback) rospy.Subscriber('/position_control/set_position', PoseStamped, self.set_pose_callback) rospy.Subscriber('/position_control/set_velocity', PoseStamped, self.set_velocity_callback) @@ -36,7 +37,6 @@ class position_control(): rospy.Subscriber('/mavros/imu/data', Imu, self._local_imu_callback) rospy.Subscriber('Laser_LidarLite', Float32, self._local_lidar_callback) - # pos self._pose_pub = rospy.Publisher('mavros/setpoint_position/local', PoseStamped, queue_size=10) self._pose_msg = PoseStamped() @@ -52,33 +52,35 @@ class position_control(): self._velpose_msg = PoseStamped() self._velpose_state = "velposctr" - # self._velpos_pub = rospy.Publisher('mavros/setpoint_velocity/cmd_vel', TwistStamped, queue_size=10) - # self._velpos_msg = TwistStamped() - # self._velpos_state = "velposctr" - + # self._velpos_pub = rospy.Publisher('mavros/setpoint_velocity/cmd_vel', TwistStamped, queue_size=10) + # self._velpos_msg = TwistStamped() + # self._velpos_state = "velposctr" self.dist = rospy.Publisher('/position_control/distance', Bool, queue_size=10) - self.real_local_pose = rospy.Publisher('/position_control/local_pose', PoseStamped, queue_size=10) + self.real_local_pose = rospy.Publisher('/position_control/local_pose', Float32, queue_size=10) self.yawangle = rospy.Publisher('/position_control/Yawangle', Float32, queue_size=10) self.pitchangle = rospy.Publisher('/position_control/Pitchangle', Float32, queue_size=10) self.rollangle = rospy.Publisher('/position_control/Rollangle', Float32, queue_size=10) self.current_publisher = self._pose_pub self.current_message = self._pose_msg - #self._pose_msg.pose.position.z = 3 + # self._pose_msg.pose.position.z = 3 + self._pose_msg = self.local_pose + self._pose_msg.pose.position.x = 0 + self._pose_msg.pose.position.y = 0 + self._pose_msg.pose.position.z = 3 self.set_pose(self._pose_msg) self.des_vel = TwistStamped() self.current_mode = String() self.current_mode.data = 'posctr' self.vController = VelocityController() - self.vController.set_x_pid(2.8, 0.913921, 0.0, 1) # 0.15 - self.vController.set_y_pid(2.8, 0.913921, 0.0, 1)#2.1, 0.713921, 0.350178 - self.vController.set_z_pid(1.3, 2.4893, 0.102084, 1) # 0.15 - #self.vController.set_yaw_pid(3.6,1.33333,0.1875,1) + self.vController.set_x_pid(1.0, 0.0, 0.0, 5) # 0.15 #MARCUS: 2.8, 0.913921, 0.0, 1 + self.vController.set_y_pid(1.0, 0.0, 0.0, 5) # 2.1, 0.713921, 0.350178 #MARCUS: 2.8, 0.913921, 0.0, 1 + self.vController.set_z_pid(1.0, 0.0, 0.0, 5) # 0.15 #MARCUS: 1.3, 2.4893, 0.102084, 1 + # self.vController.set_yaw_pid(3.6,1.33333,0.1875,1) self.vController.set_yaw_pid(1, 1.33333, 0.1875, 1) - print 'Init done' while not rospy.is_shutdown(): if self.current_mode.data == 'posctr': @@ -95,7 +97,7 @@ class position_control(): else: print "No such position mode" - self.real_local_pose.publish(self.local_pose) + self.real_local_pose.publish(self.actual_height) self.check_distance() self.get_angles() rate.sleep() @@ -109,27 +111,27 @@ class position_control(): self._vel_msg.twist.linear.z = vel.twist.linear.z def set_pose(self, pose): - self._pose_msg.pose.position.x = pose.pose.position.x - self._pose_msg.pose.position.y = pose.pose.position.y - self._pose_msg.pose.position.z = pose.pose.position.z + self._pose_msg.pose.position.x = self.local_pose.pose.position.x + pose.pose.position.x + self._pose_msg.pose.position.y = self.local_pose.pose.position.y + pose.pose.position.y + self._pose_msg.pose.position.z = pose.pose.position.z - (self.actual_height - self.local_pose.pose.position.z) - self._pose_msg.pose.orientation.x = pose.pose.orientation.x - self._pose_msg.pose.orientation.y = pose.pose.orientation.y - self._pose_msg.pose.orientation.z = pose.pose.orientation.z - self._pose_msg.pose.orientation.w = pose.pose.orientation.w + #self._pose_msg.pose.orientation.x = self._orient_msg.pose.orientation.x + #self._pose_msg.pose.orientation.y = self._orient_msg.pose.orientation.y + #self._pose_msg.pose.orientation.z = self._orient_msg.pose.orientation.z + #self._pose_msg.pose.orientation.w = self._orient_msg.pose.orientation.w def set_vel_pose(self, vel_pose): - #print(vel_pose.pose) + # print(vel_pose.pose) self._vel_pose_msg.pose.position.x = self.local_pose.pose.position.x + vel_pose.pose.position.x self._vel_pose_msg.pose.position.y = self.local_pose.pose.position.y + vel_pose.pose.position.y self._vel_pose_msg.pose.position.z = vel_pose.pose.position.z - #print(self._vel_pose_msg.pose) + # print(self._vel_pose_msg.pose) self._vel_pose_msg.pose.orientation.x = vel_pose.pose.orientation.x self._vel_pose_msg.pose.orientation.y = vel_pose.pose.orientation.y self._vel_pose_msg.pose.orientation.z = vel_pose.pose.orientation.z self._vel_pose_msg.pose.orientation.w = vel_pose.pose.orientation.w - def set_velpose_pose(self,vel_pose): + def set_velpose_pose(self, vel_pose): self._velpose_msg.pose.position.x = vel_pose.pose.position.x self._velpose_msg.pose.position.y = vel_pose.pose.position.y self._velpose_msg.pose.position.z = vel_pose.pose.position.z @@ -139,14 +141,9 @@ class position_control(): self._velpose_msg.pose.orientation.z = vel_pose.pose.orientation.z self._velpose_msg.pose.orientation.w = vel_pose.pose.orientation.w - - def _local_pose_callback(self, data): self.local_pose = data - ###Comment out below to get rid of laser height### - if self.actual_height > 0.0: - self.local_pose.pose.position.z = self.actual_height - + def _local_velocity_callback(self, data): self.local_velocity = data @@ -154,52 +151,46 @@ class position_control(): def _local_imu_callback(self, data): self.local_imu = data - def _local_lidar_callback(self,data): - self.lidar_height = (data.data/100) + def _local_lidar_callback(self, data): + self.lidar_height = (data.data / 100) X = self.local_imu.orientation.x Y = self.local_imu.orientation.y Z = self.local_imu.orientation.z W = self.local_imu.orientation.w - #pitch = math.atan2(2 * OriY * OriW + 2 * OriX * OriZ, 1 - 2 * OriY * OriY - 2 * OriZ * OriZ) - #roll = math.atan2(2 * OriX * OriW + 2 * OriY * OriZ, 1 - 2 * OriX * OriX - 2 * OriY * OriZ) + - roll = math.atan2(2*(Y*Z + W*X),W*W - X*X -Y*Y + Z*Z) - pitch = math.asin(-2*(X*Z - W*Y)) + roll = math.atan2(2 * (Y * Z + W * X), W * W - X * X - Y * Y + Z * Z) + pitch = math.asin(-2 * (X * Z - W * Y)) - Comp = -math.sin(pitch)*0.22 # 0.22 = 22cm from rotation centrum + Comp = -math.sin(pitch) * 0.22 # 0.22 = 22cm from rotation centrum + - - #print self.actual_height - - self.actual_height = (self.lidar_height*(math.cos(pitch)*math.cos(roll)))-Comp - + self.actual_height = (self.lidar_height * (math.cos(pitch) * math.cos(roll))) - Comp def set_pose_callback(self, data): self.set_pose(data) def set_velocity_callback(self, data): - self.set_vel_pose(data) + self.set_vel_pose(data) - def set_velpose_callback(self,data): + def set_velpose_callback(self, data): self.set_velpose_pose(data) - def set_x_pid(self,data): + def set_x_pid(self, data): self.vController.set_x_pid(data.x, data.y, data.z) - def set_y_pid(self,data): + def set_y_pid(self, data): self.vController.set_y_pid(data.x, data.y, data.z) - def set_z_pid(self,data): + def set_z_pid(self, data): self.vController.set_z_pid(data.x, data.y, data.z) - def set_yaw_pid(self,data): + def set_yaw_pid(self, data): self.vController.set_yaw_pid(data.x, data.y, data.z) - - def get_angles(self): X = self.local_imu.orientation.x @@ -207,15 +198,12 @@ class position_control(): Z = self.local_imu.orientation.z W = self.local_imu.orientation.w - - - yaw = math.asin(2 * X * Y + 2 * Z * W) - roll = math.atan2(2*(Y*Z + W*X),W*W - X*X -Y*Y + Z*Z) - pitch = math.asin(-2*(X*Z - W*Y)) + roll = math.atan2(2 * (Y * Z + W * X), W * W - X * X - Y * Y + Z * Z) + pitch = math.asin(-2 * (X * Z - W * Y)) self.yawangle.publish(math.degrees(yaw)) # Yaw in degrees - self.pitchangle.publish(math.degrees(pitch)) # Pitch in degrees + self.pitchangle.publish(math.degrees(pitch)) # Pitch in degrees self.rollangle.publish(math.degrees(roll)) # Roll in degrees def check_distance(self): @@ -228,12 +216,12 @@ class position_control(): vel_pose_tot.pose.position.x = self._vel_pose_msg.pose.position.x vel_pose_tot.pose.position.y = self._vel_pose_msg.pose.position.y vel_pose_tot.pose.position.z = self._vel_pose_msg.pose.position.z - #print("target vel_pos: {}".format(vel_pose_tot)) + # print("target vel_pos: {}".format(vel_pose_tot)) booldist = self.is_at_position(self.local_pose.pose.position, vel_pose_tot.pose.position, 0.2) boolvel = self.hover_velocity() self.dist.publish(booldist and boolvel) - def is_at_position(self,p_current, p_desired, offset): + def is_at_position(self, p_current, p_desired, offset): des_pos = np.array((p_desired.x, p_desired.y, p_desired.z)) @@ -246,6 +234,7 @@ class position_control(): def hover_velocity(self): return self.local_velocity.twist.linear.x < 0.2 and self.local_velocity.twist.linear.y < 0.2 and self.local_velocity.twist.linear.z < 0.2 + if __name__ == '__main__': try: diff --git a/src/scripts/short_grippers_server.py b/src/scripts/short_grippers_server.py index e7bf2df..92200df 100755 --- a/src/scripts/short_grippers_server.py +++ b/src/scripts/short_grippers_server.py @@ -3,7 +3,7 @@ import roslib import rospy import actionlib -import simulation_control.msg +import autonomous_offboard.msg import time from std_msgs.msg import Float32 @@ -20,7 +20,7 @@ class short_grippers_server(): self.rate = rospy.Rate(20) self.result = simulation_control.msg.short_grippersResult() self.server = actionlib.SimpleActionServer('short_grippers', - simulation_control.msg.short_grippersAction, + autonomous_offboard.msg.short_grippersAction, execute_cb=self.execute_cb, auto_start=False) self.server.start() -- GitLab