unreal——运行时看物件的碰撞器

命令:show Collision
键盘上的这个键:
在这里插入图片描述
在这里输入:
在这里插入图片描述
在这里插入图片描述
这样就看到了碰撞器的包围盒了:
在这里插入图片描述

### 实现人工势场法在AirSim中的应用 #### 三、人工势场法概述 人工势场法是局部路径规划中较为常用的技术之一。该方法通过构建虚拟力场来指导机人的运动,在此环境中,目标位置产生吸引作用而障碍物则施加排斥效应[^1]。 对于四旋翼飞行而言,利用Python实现了基于人工势场法的静态与简单动态环境下的避障功能,并且大多数情况下能够取得良好的模拟成果;由于其作为局部性的解决方案特性——无需知晓整个场景内所有固定或活动物的具分布状况即可运作良好,因此具备处理移动型阻碍的能力[^2]。 尽管目前尚未完成针对三维立空间里实施有效规避策略的工作,但从理论角度分析可知,只要获取到有关于无人驾驶飞机感知周围实的相关API接口之后,便可以着手开展进一步调整和完善工作以支持更复杂的应用需求[^3]。 #### 四、具实现步骤说明 为了使上述概念能够在Microsoft AirSim平台之上得以现并实际运行起来,则需遵循如下几个要点: - **初始化设置**:确保安装好最新版本的AirSim SDK以及配套开发工具链(如Visual Studio Code),同准备好用于编写控制逻辑脚本的语言环境(推荐采用Python)。此外还需下载官方提供的示例项目或者自行创建一个新的Unreal Engine工程文件夹结构。 - **定义引力和斥力模型**:依据所处任务情境设定合理的参数值范围,比如最大速度限制、安全距离阈值等重要指标。通常来说,会将目的地方向视为正方向给予持续拉拽力量,而对于任何可能碰撞的对象周边区域赋予相反指向的压力梯度变化规律。 - **集成传感数据读取模块**:借助AirSim所提供的丰富多样的传感装置选项(激光雷达LiDAR, RGB相机图像流等等),实监测当前所在位置附近是否存在潜在威胁源。一旦发现异常情况立即触发相应机制响应动作序列执行流程。 - **优化决策过程效率**:鉴于计算资源有限性考量因素的影响,应当尽可能简化不必要的运算环节从而加快整反应速率。例如提前缓存部分重复使用的中间变量结果避免多次求解相同问题浪费间开销;又或者是引入启发式搜索算法加速寻找最优前进路线的速度表现。 - **测试验证性能稳定性**:最后一步就是反复试验不同工况组合条件下系统的鲁棒性和可靠性水平如何。可以通过改变初始状态配置方式(起始坐标点随机化)、增加干扰项数量规模(更多杂乱无章摆放的小物件)等方式来进行全面细致的功能测评检验。 ```python import airsim from math import sqrt client = airsim.MultirotorClient() client.confirmConnection() def calculate_attractive_force(current_position, target_position): """ 计算吸引力 """ distance_to_target = sqrt((target_position.x_val - current_position.x_val)**2 + (target_position.y_val - current_position.y_val)**2) if distance_to_target < 0.5: # 当接近目的地减慢速度 eta = 0.1 * (distance_to_target / 0.5) else: eta = 0.1 attractive_x = eta * (target_position.x_val - current_position.x_val) attractive_y = eta * (target_position.y_val - current_position.y_val) return attractive_x, attractive_y def repulsive_forces(obstacles_positions, robot_position): """ 计算来自多个障碍物总的推斥力 """ sum_repulsion_x = 0 sum_repulsion_y = 0 for obstacle_pos in obstacles_positions: dist_obstacle_robot = sqrt((obstacle_pos.x_val - robot_position.x_val)**2 + (obstacle_pos.y_val - robot_position.y_val)**2) if dist_obstacle_robot <= 2.0: # 只考虑近距离内的影响 beta = 0.8 force_magnitude = beta * ((1/dist_obstacle_robot)-(1/2)) direction_vector_x = -(robot_position.x_val - obstacle_pos.x_val)/dist_obstacle_robot direction_vector_y = -(robot_position.y_val - obstacle_pos.y_val)/dist_obstacle_robot sum_repulsion_x += force_magnitude * direction_vector_x sum_repulsion_y += force_magnitude * direction_vector_y return sum_repulsion_x, sum_repulsion_y while True: drone_state = client.getMultirotorState().kinematics_estimated.position goal_location = airsim.Vector3r(-97,-164,0) # 设定终点位置 attract_frc = calculate_attractive_force(drone_state, goal_location) obs_data = client.simGetImages([airsim.ImageRequest("front_center", airsim.ImageType.DepthVis)]) processed_obs_info = process_image(obs_data) # 假设有一个函数可以从图片中提取出障碍物的位置信息列表 total_repulse_frc = repulsive_forces(processed_obs_info['positions'], drone_state) final_velocity_command = ( attract_frc[0]+total_repulse_frc[0], attract_frc[1]+total_repulse_frc[1] ) client.moveByVelocityAsync(final_velocity_command[0],final_velocity_command[1],z=drone_state.z_val,duration=0.5).join() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值