CrazyS 开源项目教程
1. 项目的目录结构及介绍
CrazyS 项目的目录结构如下:
CrazyS/
├── CrazyS/
│ ├── CMakeLists.txt
│ ├── README.md
│ ├── launch/
│ │ ├── crazyflie2.launch
│ │ ├── crazyflie2_ap.launch
│ │ ├── ...
│ ├── scripts/
│ │ ├── crazyflie_add.py
│ │ ├── crazyflie_server.py
│ │ ├── ...
│ ├── src/
│ │ ├── crazyflie_complementaryFilter.cpp
│ │ ├── crazyflie_controller.cpp
│ │ ├── ...
│ ├── config/
│ │ ├── crazyflie2.yaml
│ │ ├── crazyflie2_ap.yaml
│ │ ├── ...
│ ├── include/
│ │ ├── crazyflie_complementaryFilter.h
│ │ ├── crazyflie_controller.h
│ │ ├── ...
│ ├── msg/
│ │ ├── Crazyflie.msg
│ │ ├── ...
│ ├── srv/
│ │ ├── AddCrazyflie.srv
│ │ ├── ...
│ ├── urdf/
│ │ ├── crazyflie2.urdf
│ │ ├── ...
│ ├── worlds/
│ │ ├── empty.world
│ │ ├── ...
├── LICENSE
├── README.md
目录结构介绍
- CrazyS/: 主目录,包含项目的所有文件和子目录。
- CMakeLists.txt: CMake 配置文件,用于构建项目。
- README.md: 项目说明文档。
- launch/: 包含启动文件,用于启动不同的节点和配置。
- scripts/: 包含 Python 脚本,用于管理 Crazyflie 无人机。
- src/: 包含 C++ 源代码文件,实现各种功能。
- config/: 包含配置文件,用于设置参数。
- include/: 包含头文件,定义接口和数据结构。
- msg/: 包含自定义消息文件,用于节点间通信。
- srv/: 包含自定义服务文件,用于节点间服务调用。
- urdf/: 包含 URDF 文件,描述无人机的物理模型。
- worlds/: 包含 Gazebo 世界文件,用于模拟环境。
2. 项目的启动文件介绍
CrazyS 项目中的启动文件位于 launch/
目录下,主要用于启动不同的节点和配置。以下是一些关键的启动文件:
- crazyflie2.launch: 用于启动 Crazyflie 2.0 无人机的基本节点。
- crazyflie2_ap.launch: 用于启动 Crazyflie 2.0 无人机的接入点模式节点。
启动文件示例
以下是 crazyflie2.launch
文件的部分内容:
<launch>
<arg name="uri" default="radio://0/80/250K" />
<arg name="frame" default="crazyflie2" />
<arg name="x" default="0" />
<arg name="y" default="0" />
<arg name="z" default="0.5" />
<include file="$(find crazyflie_driver)/launch/crazyflie_server.launch" />
<group ns="crazyflie">
<node pkg="crazyflie_driver" type="crazyflie_add" name="crazyflie_add" output="screen">
<param name="uri" value="$(arg uri)" />
<param name="frame" value="$(arg frame)" />
<param name="tf_prefix" value="crazyflie" />
<param name="enable_logging" value="True" />
<param name="enable_logging_imu" value="True" />
<param name="enable_logging_temperature" value="True" />
<param name="enable_logging_magnetic_field" value="True" />
<param name="enable_logging_pressure" value="True" />
<param name="