Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
a2648e7
无人机导航系统
725921 Dec 21, 2025
ce76877
Merge branch 'OpenHUTB:main' into main
725921 Dec 21, 2025
363d13d
Merge branch 'OpenHUTB:main' into main
725921 Dec 21, 2025
64752ed
无人机导航系统
725921 Dec 22, 2025
8c29b44
Merge branch 'main' of https://github.com/725921/nn
725921 Dec 22, 2025
dbbc21a
Merge branch 'OpenHUTB:main' into main
725921 Dec 22, 2025
a20a3d7
无人机导航
725921 Dec 24, 2025
e91f251
Merge branch 'main' of https://github.com/725921/nn
725921 Dec 24, 2025
a334652
Merge branch 'OpenHUTB:main' into main
725921 Dec 24, 2025
d410ad5
无人机导航系统
725921 Dec 24, 2025
7d0f31f
Merge branch 'main' of https://github.com/725921/nn
725921 Dec 24, 2025
d97b5ad
Merge branch 'OpenHUTB:main' into main
725921 Dec 24, 2025
720f56a
无人机导航
725921 Dec 24, 2025
63a680b
Merge branch 'main' of https://github.com/725921/nn
725921 Dec 24, 2025
37306bf
Merge branch 'OpenHUTB:main' into main
725921 Dec 24, 2025
3bc591a
添加注释
725921 Dec 26, 2025
2e14e57
Merge branch 'main' of https://github.com/725921/nn
725921 Dec 26, 2025
0cd357c
Merge branch 'OpenHUTB:main' into main
725921 Dec 26, 2025
e55f1be
添加注释
725921 Dec 26, 2025
ddc4ae7
Merge branch 'OpenHUTB:main' into main
725921 Dec 26, 2025
7ae988f
Merge branch 'main' of https://github.com/725921/nn
725921 Dec 26, 2025
68040a4
添加了目录文件
725921 Dec 27, 2025
058113f
Merge branch 'OpenHUTB:main' into main
725921 Dec 27, 2025
00288e9
操作键位文件补充
725921 Dec 27, 2025
ae3622a
Merge branch 'OpenHUTB:main' into main
725921 Dec 27, 2025
616d301
Merge branch 'main' of https://github.com/725921/nn
725921 Dec 27, 2025
424fbd0
添加了操作按键补充的文件
725921 Dec 27, 2025
43cfc92
Merge branch 'OpenHUTB:main' into main
725921 Dec 27, 2025
148c67b
Merge branch 'main' of https://github.com/725921/nn
725921 Dec 27, 2025
fa2917a
无人机
725921 Dec 30, 2025
9657503
Merge branch 'OpenHUTB:main' into main
725921 Dec 30, 2025
cb1a892
Merge branch 'main' of https://github.com/725921/nn
725921 Dec 30, 2025
b8a66b5
Merge branch 'OpenHUTB:main' into main
725921 Mar 2, 2026
5f75090
Merge branch 'OpenHUTB:main' into main
725921 Mar 2, 2026
32e285b
123
725921 Mar 2, 2026
3ec4990
Merge branch 'main' of https://github.com/725921/nn
725921 Mar 2, 2026
25cb049
Merge branch 'OpenHUTB:main' into main
725921 Mar 2, 2026
c005f30
readme的提交
725921 Mar 2, 2026
b5f9fd2
Merge branch 'main' of https://github.com/725921/nn
725921 Mar 2, 2026
e58934f
Merge branch 'OpenHUTB:main' into main
725921 Mar 2, 2026
d582955
初试测试代码
725921 Mar 2, 2026
d50d2f3
Merge branch 'main' of https://github.com/725921/nn
725921 Mar 2, 2026
01369bc
Merge branch 'OpenHUTB:main' into main
725921 Mar 3, 2026
55e2010
无人机运行代码
725921 Mar 3, 2026
b22dfba
Merge branch 'main' of https://github.com/725921/nn
725921 Mar 3, 2026
832105d
Merge branch 'OpenHUTB:main' into main
725921 Mar 3, 2026
aa4a61d
模拟器链接测试
725921 Mar 3, 2026
fb385db
Merge branch 'main' of https://github.com/725921/nn
725921 Mar 3, 2026
d34daa7
无人机起飞检查
725921 Mar 3, 2026
9ef94c7
Merge branch 'OpenHUTB:main' into main
725921 Mar 3, 2026
9b7e2d2
Merge branch 'OpenHUTB:main' into main
725921 Mar 3, 2026
15a833b
Merge branch 'OpenHUTB:main' into main
725921 Mar 3, 2026
4111606
Merge branch 'OpenHUTB:main' into main
725921 Mar 4, 2026
84f9e8b
改进了主代码
725921 Mar 4, 2026
a9a0ac4
Merge branch 'OpenHUTB:main' into main
725921 Mar 4, 2026
9177152
Merge branch 'OpenHUTB:main' into main
725921 Mar 4, 2026
eea86af
Merge branch 'OpenHUTB:main' into main
725921 Mar 4, 2026
5444e5b
代码添加注释
725921 Mar 4, 2026
ddd1987
Merge branch 'main' of https://github.com/725921/nn
725921 Mar 4, 2026
95d9a35
Merge branch 'OpenHUTB:main' into main
725921 Mar 5, 2026
d5f0b81
连接代码的优化
725921 Mar 5, 2026
ef0bcd5
Merge branch 'main' of https://github.com/725921/nn
725921 Mar 5, 2026
d779aa2
Merge branch 'OpenHUTB:main' into main
725921 Mar 5, 2026
d5223b1
主代码注释添加
725921 Mar 5, 2026
06c5812
Merge branch 'main' of https://github.com/725921/nn
725921 Mar 5, 2026
d77fcf0
图片捕获代码
725921 Mar 5, 2026
b39a20e
增加了场景分析
725921 Mar 5, 2026
6c22674
Merge branch 'OpenHUTB:main' into main
725921 Mar 5, 2026
1e271d1
Merge branch 'main' of https://github.com/725921/nn
725921 Mar 5, 2026
7701c32
代码优化
725921 Mar 5, 2026
1279516
Merge branch 'OpenHUTB:main' into main
725921 Mar 5, 2026
c76dd2f
readme 的更新
725921 Mar 6, 2026
751103b
Merge branch 'OpenHUTB:main' into main
725921 Mar 6, 2026
c075559
Merge branch 'main' of https://github.com/725921/nn
725921 Mar 6, 2026
dc70536
Merge branch 'OpenHUTB:main' into main
725921 Mar 6, 2026
49af4c1
Merge branch 'OpenHUTB:main' into main
725921 Mar 6, 2026
c4cbd9a
Merge branch 'OpenHUTB:main' into main
725921 Mar 6, 2026
5c122af
Merge branch 'main' of https://github.com/725921/nn
725921 Mar 6, 2026
424c8cd
添加注释
725921 Mar 6, 2026
f588d61
Merge branch 'OpenHUTB:main' into main
725921 Mar 6, 2026
b6a33e7
Merge branch 'main' of https://github.com/725921/nn
725921 Mar 6, 2026
006a689
airsim初步模拟
725921 Mar 6, 2026
7fde671
飞行控制测试
725921 Mar 7, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
140 changes: 140 additions & 0 deletions src/Autonomous_Navigation/airsim.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
# airsim_connection.py
import airsim
import time


class AbandonedParkSimulator:
def __init__(self):
print("连接到AbandonedPark模拟器...")

# 连接到本地的AbandonedPark模拟器
self.client = airsim.MultirotorClient()
self.client.confirmConnection()

# 检查连接状态
print(f"连接状态: {self.client.ping()}")

print("模拟器已连接!")

def ensure_drone_mode(self):
"""确保切换到无人机模式"""
print("切换到无人机模式...")

# 尝试解锁无人机
try:
self.client.enableApiControl(True)
self.client.armDisarm(True)
print("无人机已解锁")
return True
except Exception as e:
print(f"切换模式时出错: {e}")
print("请确保模拟器中已选择无人机模式")
return False

def takeoff_and_hover(self, altitude=10):
"""起飞并悬停"""
print(f"起飞到 {altitude} 米高度...")

# 起飞
self.client.takeoffAsync().join()
time.sleep(2)

# 移动到指定高度
self.client.moveToZAsync(-altitude, 3).join()
time.sleep(1)

print(f"已在 {altitude} 米高度悬停")

def capture_park_image(self):
"""捕获废弃公园图像"""
print("捕获图像...")

# 从相机获取图像
responses = self.client.simGetImages([
airsim.ImageRequest(
"0", # 前置摄像头
airsim.ImageType.Scene,
False, False # 不压缩
)
])

if responses and len(responses) > 0:
response = responses[0]

# 转换为numpy数组
import numpy as np
img1d = np.frombuffer(response.image_data_uint8, dtype=np.uint8)
img_rgb = img1d.reshape(response.height, response.width, 3)

# 保存图像
import cv2
timestamp = time.strftime("%Y%m%d_%H%M%S")
cv2.imwrite(f"park_capture_{timestamp}.jpg", img_rgb)
print(f"图像已保存: park_capture_{timestamp}.jpg")

return img_rgb
else:
print("未能捕获图像")
return None

def explore_park(self):
"""探索公园的简单路径"""
print("开始探索废弃公园...")

# 定义探索路径(围绕公园)
waypoints = [
(20, 0, -10), # 向前20米
(20, 15, -10), # 向右15米
(0, 15, -12), # 向后20米,下降2米
(0, 0, -10), # 向左15米,回到起点
]

for x, y, z in waypoints:
print(f"飞往位置: ({x}, {y}, {z})")
self.client.moveToPositionAsync(x, y, z, 3).join()

# 在每个位置捕获图像
self.capture_park_image()
time.sleep(1)

print("探索完成!")

def cleanup(self):
"""清理资源"""
print("正在降落...")
self.client.landAsync().join()
self.client.armDisarm(False)
self.client.enableApiControl(False)
print("无人机已降落")


# 快速测试脚本
if __name__ == "__main__":
print("=== AbandonedPark无人机测试 ===")

# 1. 确保模拟器已经运行
input("请确保AbandonedPark.exe已运行,然后按回车继续...")

# 2. 连接模拟器
simulator = AbandonedParkSimulator()

try:
# 3. 切换到无人机模式
if simulator.ensure_drone_mode():
# 4. 起飞
simulator.takeoff_and_hover(10)

# 5. 捕获初始图像
simulator.capture_park_image()

# 6. 简单探索
simulator.explore_park()

# 7. 降落
simulator.cleanup()
except KeyboardInterrupt:
print("用户中断")
simulator.cleanup()
except Exception as e:
print(f"发生错误: {e}")
simulator.cleanup()
80 changes: 80 additions & 0 deletions src/Autonomous_Navigation/basic.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# test_basic.py
"""
Basic connection test
"""

import airsim
import cv2
import numpy as np
import time


def test_connection():
print("=" * 50)
print("BASIC CONNECTION TEST")
print("=" * 50)

# Test AirSim connection
try:
print("Connecting to simulator...")
client = airsim.MultirotorClient()
client.confirmConnection()
print("✓ Connection successful!")
except Exception as e:
print(f"✗ Connection failed: {e}")
return False

# Test image capture
try:
print("Testing image capture...")
responses = client.simGetImages([
airsim.ImageRequest("0", airsim.ImageType.Scene)
])

if responses:
response = responses[0]
print(f"✓ Image size: {response.width}x{response.height}")

# Convert to numpy array
img1d = np.frombuffer(response.image_data_uint8, dtype=np.uint8)
img = img1d.reshape(response.height, response.width, 3)

# Save test image
cv2.imwrite("test_capture.jpg", img)
print("✓ Test image saved: test_capture.jpg")
except Exception as e:
print(f"✗ Image capture failed: {e}")

# Test drone control
try:
print("Testing drone control...")
client.enableApiControl(True)
client.armDisarm(True)
print("✓ Drone unlocked")

print("Simple takeoff test...")
client.takeoffAsync().join()
time.sleep(2)
print("✓ Takeoff successful")

print("Hovering for 2 seconds...")
time.sleep(2)

print("Landing...")
client.landAsync().join()
print("✓ Landing successful")

except Exception as e:
print(f"✗ Control test failed: {e}")
print("You may need to switch to drone mode in simulator")

print("\n" + "=" * 50)
print("TEST COMPLETE!")
print("=" * 50)

return True


if __name__ == "__main__":
test_connection()
input("\nPress Enter to exit...")
Loading