# CICC_rotorS **Repository Path**: BUAAprocess/CICC_rotorS ## Basic Information - **Project Name**: CICC_rotorS - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-10-08 - **Last Updated**: 2021-11-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 环境依赖: - ROS melodic或者ROS noetic - gazebo_ros libgazebo gazebo 9或11 ```bash sudo apt install libgoogle-glog-dev #安装glog ``` ## 安装步骤: ``` mkdir CICC_WS cd CICC_WS git clone https://gitee.com/BUAAprocess/CICC_rotorS.git catkin_make ``` ``` source devel/setup.bash # 每次打开终端需要输入该source命令 # 或者在~/.bashrc 中加入该命令,就不需要每次手动输入。 ``` 启动仿真环境 ``` roslaunch rotors_gazebo CCIC_mav.launch ``` 飞行测试 若需要控制uav1,则向`/uav1/command/twist`话题发送命令,发送频率需要大于10hz。飞机实时的位姿,速度可以通过`/uav1/ground_truth/odometry `来读取。可以采用C++或python编写相应程序设计控制器。(均采用East-North-Up坐标系,与gazebo的全局坐标系对应) ## 计分规则 [环境生成及计分脚本](https://gitee.com/BUAAprocess/CICC_rotorS/blob/master/src/referee_system/CCIC_game_terminal.py)(运行时若缺少依赖,请尝试用pip自行安装) 飞机在计算分数或惩罚时,使用**oriented bounding box** (**OBB**)算法来计算碰撞,其中无人机的碰撞体积被建模为0.6m\*0.8m\*0.3m的六面体,如下图所示: ![image-20211102131315245](https://gitee.com/BUAAprocess/mdimage-bed/raw/master/20211102131315.png) ### 得分 无人机群需要从指定起飞点出发,尽可能多的到达得分点,并躲避威胁区域。得分点的分值、位置、和尺寸均随机生成,其外形为六面体,当有任意一架无人机到达得分区域时(即两六面体相交),该无人机获得得分区域对应的分数,同时得分区域在地图上消失。只有当无人机安全着陆到指定位置时,该无人机所得的分数才会被计入总分。 ### 惩罚 在每个检查周期中(10hz),无人机经过威胁区域或脱离限定活动范围时,将对每架次惩罚区域所对应的分数。 ### 总分计算 总计分公式如下: $$ Score_{total}=Penalty+\sum_{i=1}^{n}Score_{i}\times f(T_{i}) $$ 其中$T_i$为每架无人机到达终点所花费的时间,$f(T_{i})$是一个与$T_i$**负相关**的函数(具体关系待定),$Score_i$为每个无人机在飞行过程中取得的分值,$Penalty$为无人机进入危险区域后对应的惩罚。 ## TODO - 得分及威胁区域的生成规则需要更加细化。比如分块随机。 - 需要加入动态得分区域和动态威胁区域。 - 测试碰撞检测每一帧所需的时间,若时间太长,需要用quadtree来管理场景,而不是遍历场景进行碰撞检测。 - 考虑更加方便、高效的接口将相关信息暴露给参赛者。 - 起飞降落点的选取,以及与飞行时间相关的计分逻辑制定。