Skip to content

voicepeak/CUADC_learning

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 

Repository files navigation

CUADC 控制类学习

这是一个面向 ROS1/Noetic 初学者的 CUADC 多旋翼任务控制教学项目。项目用纯软件模拟“侦察与救援”任务,重点是理解任务状态机、topic、service、视觉对准、投放控制、安全监控和日志记录如何配合。

本项目不是直接控制真机的代码,不包含真实 PX4/MAVROS 解锁、模式切换、电机控制、GPIO、PWM 或舵机控制。

项目结构

cuadc_interfaces/
  ROS msg / srv 接口包,定义节点之间通信的数据格式。

cuadc_multirotor_control_tutor/
  ROS 教学 demo 主包,包含任务状态机、仿真无人机、假视觉、投放、安全、调试和日志节点。

核心文件:

cuadc_multirotor_control_tutor/docs/task_flow.md
  完整任务触发流程。

cuadc_multirotor_control_tutor/cuadc_multirotor_control_tutor/mission_node.py
  核心任务状态机。

cuadc_multirotor_control_tutor/launch/tutor_demo.launch
  一次启动完整教学 demo。

任务流程

待机
→ 调用 /mission/start
→ 安全检查
→ 模拟解锁
→ 起飞到 2.5 m
→ 飞到投放区
→ 搜索投放目标
→ 视觉对准
→ 投放第 1 瓶水
→ 投放第 2 瓶水
→ 飞到侦察区
→ 记录高置信度侦察结果
→ 返回起点
→ 降落
→ 任务结束

先看这份流程文档:

cuadc_multirotor_control_tutor/docs/task_flow.md

构建和运行

推荐环境:

Ubuntu 20.04
ROS Noetic
Python 3
catkin
rospy

把两个包放入 catkin 工作空间:

mkdir -p ~/cuadc_ws/src
cd ~/cuadc_ws/src
# 将 cuadc_interfaces 和 cuadc_multirotor_control_tutor 复制到这里

构建:

cd ~/cuadc_ws
catkin_make
source devel/setup.bash

启动完整 demo:

roslaunch cuadc_multirotor_control_tutor tutor_demo.launch

另开一个终端启动任务:

source ~/cuadc_ws/devel/setup.bash
rosservice call /mission/start "{}"

手动中止任务:

rosservice call /mission/abort "reason: 'manual test abort'"

观察 topic

rostopic echo /mission/state
rostopic echo /drone/state
rostopic echo /vision/drop_target
rostopic echo /drop/status
rostopic echo /safety/status

核心节点

mission_node.py
  任务状态机。决定什么时候起飞、去投放区、对准、投放、侦察、返航、降落。

sim_drone_node.py
  模拟无人机运动。接收位置或速度 setpoint,发布 /drone/state。

fake_vision_node.py
  模拟视觉识别。发布投放目标误差和侦察区危险品识别结果。

drop_control_node.py
  模拟投放机构。接收 /drop/command,发布 /drop/status。

safety_monitor_node.py
  独立安全监控。检查低电量、越界、高度过高、任务超时。

control_debug_node.py
  每秒打印任务总览,方便观察。

logger_node.py
  保存 CSV 日志到 logs/mission_log.csv。

参数实验

实验目标 文件 参数
让无人机飞慢一点 cuadc_multirotor_control_tutor/config/sim_drone_params.yaml position_speed
让低电量更快触发 cuadc_multirotor_control_tutor/config/sim_drone_params.yaml battery_drain_per_second
改变投放区位置 cuadc_multirotor_control_tutor/config/mission_params.yaml drop_zone_x
让目标搜索失败 cuadc_multirotor_control_tutor/config/mission_params.yaml disable_drop_target
改变视觉对准速度 cuadc_multirotor_control_tutor/config/controller_params.yaml align_kx, align_ky
改变安全边界 cuadc_multirotor_control_tutor/config/safety_params.yaml max_x, max_abs_y, max_z

真机安全

不要直接连接真机执行本项目。真机测试必须先拆桨,保留遥控器人工接管,先在仿真中验证,自动投放测试必须远离人员。任何真机接入都必须经过单模块验证、低高度验证、边界验证、急停验证和现场安全评审。

About

控制类学习

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors