前言:更多更新文章详见我的个人博客主页【MGodmonkeyの世界】
描述:欢迎来到CERLAB无人机自主框架,这是一个用于自主无人飞行器 (UAV) 的多功能模块化框架。该框架包括不同的组件 (模拟器,感知,映射,规划和控制),以实现自主导航,未知探索和目标检查。
视频演示: YouTube, BiliBili
【CMU】CERLAB-UAV-Autonomy: 空中机器人研发框架
1.模块介绍
autonomous_flight
: 集成了用于各种任务的所有其他模块的自主飞行包。详细信息
global_planner
: 自主机器人的全球航点规划器库。详细信息
map_manager
: 自主机器人的3D映射库。详细信息
onboard_detector
: 自主机器人的动态障碍物检测和跟踪算法。详细信息
remote_control
: Rviz配置和启动文件,便于可视化。详细信息
time_optimizer
: 自主机器人的最优轨迹时间分配库。详细信息
tracking_controller
: 自主机器人的轨迹跟踪控制器。详细信息
trajectory_planner
: 自主机器人的轨迹规划库。详细信息
uav_simulator
: 基于轻型Gazebo/ROS的无人机模拟器。详细信息
2.安装指引
该工程已经在带有ROS Melodic的Ubuntu 18.04和带有ROS Noetic的Ubuntu 20.04上进行了测试,它取决于ROS包: octomap,mavros和vision_msgs。使用以下命令安装软件包:
# step1: 安装依赖
sudo apt install ros-${ROS_DISTRO}-octomap* && sudo apt install ros-${ROS_DISTRO}-mavros* && sudo apt install ros-${ROS_DISTRO}-vision-msgs
cd /opt/ros/noetic/lib/mavros
sudo ./install_geographiclib_datasets.sh# step 2: 克隆工程到工作空间
cd ~/catkin_ws/src
git clone --recursive https://github.com/Zhefan-Xu/CERLAB-UAV-Autonomy.git# 可选: 切换到autonomous_flight的模拟分支
# 默认分支用于实际飞行和PX4模拟
cd ~/catkin_ws/src/CERLAB-UAV-Autonomy/autonomous_flight
git checkout simulation# step 3: 编译
cd ~/catkin_ws
catkin_make
source ~/catkin_ws/devel/setup.bash
# 一定一定一定要source下面这条啊!!!血的教训,控制不了就是因为没有source这个
source ~/catkin_ws/src/CERLAB-UAV-Autonomy/uav_simulator/gazeboSetup.bash
3.PX4仿真&实飞
该CERLAB无人机框架自带两个仿真模拟器,autonomous_flight和PX4仿真,如果需要切换autonomous_flight仿真,则需要通过上面的方式切换分支
自主起飞选项:
Takeoff/Hovering
: 起飞和悬停在指定高度。Takeoff/Tracking Circle
: 起飞和跟踪具有给定半径和速度的圆形轨迹。Navigation
: 静态环境中的自主导航。Dynamic Navigation
: 动态环境中的自主导航。Inspection (Octomap)
: 使用Octomap的自主表面检查。Inspection (Dynamic Map)
: 使用动态地图进行自主表面检查。Dynamic Exploration
: 未知和动态环境中的自主探索。
3.1安装PX4仿真环境(可选但推荐)
环境安装参考:从0制作自主空中机器人-4-【PX4与Gazebo入门】 | MGodmonkeyの世界
注:
如果通过修改
.bashrc
来更新环境变量,请确保PX4环境路径在source ~/catkin_ws/devel/setup.bash
下面,否则将会报错
3.2运行Demo
首先启动无人机模拟器,您应该能够在预定义的gazebo中看到四轴飞行器。
# 启动PX4仿真
roslaunch uav_simulator px4_start.launch# 启动自定义仿真
roslaunch uav_simulator start.launch
若首次启动gazebo仿真黑屏很久,则是加载模型过久,可以提前下载模型到本地
cd ~/.gazebo/ mkdir -p ~/.gazebo/models # 如果models目录存在,则不需要创建 cd ~/.gazebo/models/# 下载模型并解压 wget http://file.ncnynl.com/ros/gazebo_models.txt wget -i gazebo_models.txt ls model.tar.g* | xargs -n1 tar xzvf
a. 简单起飞和悬停 Takeoff/Hovering
:
rosrun autonomous_flight takeoff_and_hover_node # takeoff at 1.0 meter height
b. 起飞和跟踪一圈 Takeoff/Tracking Circle
:
roslaunch autonomous_flight takeoff_and_track_circle.launch # takeoff and tracking a circular trajectory
c. 静态环境导航 Navigation
:
roslaunch autonomous_flight navigation.launch # navigation in the static enviornments
d. 动态环境导航 Dynamic Navigation
:
roslaunch autonomous_flight dynamic_navigation.launch # navigation in the dynamic environments
e. 使用octomap进行静态环境检查 Inspection (Octomap)
:
roslaunch octomap_server octomap_mapping.launch # please remember to modify the parameters for ros topics/transforms
roslaunch autonomous_flight inspection.launch
f. 使用动态地图进行动态环境检查 Inspection (Dynamic Map)
:
roslaunch autonomous_flight dynamic_inspection.launch # autonomous surface inspection
g. 未知和动态环境探索 Dynamic Exploration
:
roslaunch autonomous_flight dynamic_exploration.launch # autonomous exploration in unknown and dynamic environments
3.3参数调整
所有参数都在autonomous_flight/cfg文件夹中。例如,动态导航的参数可以在autonomous_flight/cfg/dynamic_navgation/*.yaml中找到