别管别管别管

import rospy

from std_msgs.msg import String

import roslaunch

import threading

follow_flag = True

def drone_takeoff():

launch = roslaunch.scriptapi.ROSLaunch()

launch.start()

node = roslaunch.core.Node('package_name', '1.launch', args="takeoff")

launch.launch(node)

def follow_apriltag():

while follow_flag:

launch = roslaunch.scriptapi.ROSLaunch()

launch.start()

node = roslaunch.core.Node('package_name', '1.launch', args="follow_apriltag")

launch.launch(node)

def drone_land():

launch = roslaunch.scriptapi.ROSLaunch()

launch.start()

node = roslaunch.core.Node('package_name', '1.launch', args="land")

launch.launch(node)

def adjust_gimbal(param_value):

launch = roslaunch.scriptapi.ROSLaunch()

launch.start()

node = roslaunch.core.Node('package_name', 'uav.launch', args="foo:={}".format(param_value))

launch.launch(node)

def take_photo():

launch = roslaunch.scriptapi.ROSLaunch()

launch.start()

node = roslaunch.core.Node('package_name', '1.launch', args="take_photo")

launch.launch(node)

def adjust_take():

adjust_gimbal_thread = threading.Thread(target=adjust_gimbal, args=(90,))

adjust_gimbal_thread.start()

rospy.sleep(2)

take_photo_thread = threading.Thread(target=take_photo)

take_photo_thread.start()

take_photo_thread.join()

adjust_gimbal_thread = threading.Thread(target=adjust_gimbal, args=(-90,))

adjust_gimbal_thread.start()

adjust_gimbal_thread.join()

def docontrol(data):

global follow_flag

if data.data == "load":

follow_flag = False

drone_land()

elif data.data == "takeoff":

follow_flag = True

drone_takeoff()

elif data.data == "takephoto":

adjust_take()

def main():

rospy.init_node('drone_node', anonymous=True)

global drone_to_car_cmd_pub

drone_to_car_cmd_pub = rospy.Publisher('drone_to_car_cmd', String, queue_size=10)

# 无人机起飞

drone_takeoff()

# 等待5秒确保无人机起飞完毕

rospy.sleep(5)

# 发布指令给智能车,告知可以启动

drone_to_car_cmd_pub.publish("start")

# 无人机跟随AprilTag(线程)

follow_thread = threading.Thread(target=follow_apriltag)

follow_thread.start()

# 智能车在拍照点发送'takephoto'给无人机,无人机订阅消息

rospy.Subscriber('car_to_drone_cmd', String, docontrol)

# 智能车在充电点发送'load"给无人机,无人机订阅消息

rospy.Subscriber('car_to_drone_cmd', String, docontrol)

# 充电5s

rospy.sleep(5)

# 智能车在充电点发送"takeoff"给无人机,无人机订阅消息

rospy.Subscriber('car_to_drone_cmd', String, docontrol)

# 智能车在终点发送"load"给无人机,无人机订阅消息

rospy.Subscriber('car_to_drone_cmd', String, docontrol)


 

follow_thread.join()

rospy.spin()

if __name__ == '__main__':

main()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值