Skip to content

This the the repo containing all stages of the drone competition, including circle crossing, auto flight and FPV racing.

License

Notifications You must be signed in to change notification settings

RoboMaster/IntelligentUAVChampionshipSimulator

Repository files navigation

release note:

20231016: 修复黄色障碍环与场景干涉的问题;优化动态环碰撞效果;

20231013: 修正了障碍圈yaw值正负号相反的问题;修复了强光照射下,障碍圈显白色的问题;

20231007: 修复启动脚本随机数输入参数问题,将 -seed=123 改为 seed 123

20230926: 修改自定义数据类型,为所有的 airsim_ros 下的自定义数据类型添加了时间戳

20230916: 更新README,去除settings.json中小窗口图像

20230908: 更新README

自主无人机竞速模拟器使用说明

简介

RMUA2023赛季综合赛模拟器

官方测试环境

ros-noetic
ubuntu20.04
NVIDIA RTX3060TI gpu (驱动版本:470.182.03)
INTEL I7 12th cpu

注意:若使用神经网络,建议使用双显卡以保证模拟器性能

使用说明

  1. 安装Nvidia-Docker

确保已安装 Nvidia 驱动


安装docker

  • sudo apt-get install ca-certificates gnupg lsb-release
  • sudo mkdir -p /etc/apt/keyrings
  • curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
  • echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  • sudo apt-get update
  • sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

安装nvidia-container-toolkit

  • distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
  • curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
  • curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
  • sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
  • sudo systemctl restart docker

设置用户组,消除 sudo 限制

  • sudo groupadd docker
  • sudo gpasswd -a $USER docker
  • 注销账户并重新登录使新的用户组生效
  • sudo service docker restart
  1. 安装ROS-Noetic

  • sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
  • sudo apt install curl
  • curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
  • sudo apt update
  • sudo apt install ros-noetic-desktop-full
  • sudo apt install python3-catkin-tools
  1. 使用模拟器

本机启动

  • cd /path/to/IntelligentUAVChampionshipSimulator
  • wget https://stg-robomasters-hz-q0o2.oss-cn-hangzhou.aliyuncs.com/1016_r1.zip
  • unzip 1016_r1.zip
  • mkdir ~/Documents/AirSim
  • cp settings.json ~/Documents/AirSim
  • 渲染模式 ./run_simulator.sh
  • 后台模式 ./run_simulator_offscreen.sh
    注意:脚本中的 seed 参数为模拟器的随机种子,可根据需要修改
    pic
  • 使用ros查看主题
  • source /opt/ros/noetic/setup.bash
  • rostopic list
    pic

Docker启动

  • cd /path/to/IntelligentUAVChampionshipSimulator
  • docker build -t simulator .
  • ./run_docker_simulator.sh 123
    注意:Docker仅支持后台模式运行,启动脚本后第一个参数 123 是模拟器的随机种子,可根据需要修改
  • 使用ros查看主题
  • source /opt/ros/noetic/setup.bash
  • rostopic list
    pic

ros数据交互

pic

用于获取数据的可订阅的主题

  • 下视相机
    /airsim_node/drone_1/bottom_center/Scene
  • 双目左rgb图
    /airsim_node/drone_1/front_left/Scene
  • 双目右rgb图
    /airsim_node/drone_1/front_right/Scene
  • imu数据
    /airsim_node/drone_1/imu/imu
  • 无人机状态真值
    /airsim_node/drone_1/debug/pose_gt
  • gps数据
    /airsim_node/drone_1/pose
  • 障碍圈位姿真值
    /airsim_node/drone_1/debug/circle_poses_gt
  • 障碍圈参考位姿
    /airsim_node/drone_1/circle_poses
  • 赛道中生成的树的真实位置
    /airsim_node/drone_1/debug/tree_poses_gt
  • 电机输入PWM信号(0:右前, 1:左后, 2:左前, 3:右后)
    /airsim_node/drone_1/rotor_pwm

用于发送指令的主题

  • 姿态控制
    /airsim_node/drone_1/pose_cmd_body_frame
  • 速度控制
    /airsim_node/drone_1/vel_cmd_body_frame
  • 角速度推力控制
    /airsim_node/drone_1/angle_rate_throttle_frame

可用服务

  • 起飞
    /airsim_node/drone_1/takeoff
  • 降落
    /airsim_node/drone_1/land
  • 重置
    /airsim_node/reset

注意:

服务器仅开放 下视相机, 双目左rgb图, 双目右rgb图, gps数据, 障碍圈参考位姿, imu数据, 规则手册中未提及的话题(无人机状态真值, 障碍圈位姿真值, 赛道中生成的树的真实位置, 电机输入PWM信号)仅供调试程序使用。

Q&A

找不到数据类型

使用rqt_topic时发现一些数据类型缺失,需要source官方开发案例教程中basic_dev中的airsim_ros包。具体请参考: https://github.com/RoboMaster/IntelligentUAVChampionshipBase pic

帧率波动

当帧率波动严重时,可以更换更高性能的显卡。使用3090显卡进行测试,连续运行1个小时,模拟器帧率波动维持在0.5%以下。
也可以关闭不需要的相机降低模拟器性能需求,提升帧率稳定性。 对于本机启动,仅需要把 ~/Documents/AirSim/settings.json 中相应相机配置删除即可关闭该相机。
对于docker启动,需要把 /path/to/IntelligentUAVChampionshipSimulator 中的 settings.json 中相应相机配置删除后重新构建镜像即可。
pic

时钟同步

模拟器时钟与本地时钟存在一定差异,建议使用 IMU 主题传出的时间戳作为全局时钟进行程序设计。

About

This the the repo containing all stages of the drone competition, including circle crossing, auto flight and FPV racing.

Resources

License

Stars

Watchers

Forks

Packages