CERLAB无人机自主框架: 1-环境搭建

前言:更多更新文章详见我的个人博客主页【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 MelodicUbuntu 18.04和带有ROS NoeticUbuntu 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_flightPX4仿真,如果需要切换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中找到

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/775.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Day23_学点儿JSON_定义、数据格式、和XML比较、插件

1 JSON定义 定义&#xff1a;是一种轻量级的数据交换格式 JSON是JavaScript Object Notation缩写 特点&#xff1a; 易于程序员阅读和编写。易于计算机解析和生成。其实是javascript的子集&#xff1a;原生javascript支持JSON <script type"text/javascript">…

B-树 B+树与数据库原理

B树 引入 概念和性质 插入分析 总结 B树 B*树&#xff08;了解&#xff09; 数据库原理 数据库与B树的关系

【深度学习实战(10)】图像推理之预处理

一、预处理流程 在把一张图像送入模型进行推理时&#xff0c;需要先进行预处理&#xff0c;预处理流程包括&#xff1a; &#xff08;1&#xff09;读取图像 &#xff08;2&#xff09;尺寸调整&#xff0c;letter_box&#xff08;不失真&#xff09; &#xff08;3&#xff0…

小红的排列构造(dp优化)

题目描述 小红拿到了一个长度为n的数组a&#xff0c;她希望你构造两个排列p和q&#xff0c;满足对于i∈[1,n],ai∈[1,n]pi或qi二选一。你能帮帮她吗&#xff1f;定义排列是一个长度为n的数组&#xff0c;其中1到n每个元素恰好出现1次。 输入描述:第一行输入一个正整数n&#…

Linux平台Alsa库移植

嵌入式Linux平台Alsa库移植 1. Alsa-lib2. Alsa-utilsAplay播放避坑 1. Alsa-lib alsa-lib下载地址&#xff1a;https://www.alsa-project.org/files/pub/lib/ 这里使用的版本是alsa-lib-1.0.29 下载完成并解压&#xff0c;进入alsa-lib-1.0.29目录 编译配置如下&#xff1a; …

关于selenium各种操作语句(方便查询便携版)

定位方法 #功能from selenium import webdriver#载入驱动 from selenium.webdriver.common.by import By #新版载入by,旧版的find_element_by_id语句一般会被划掉&#xff0c;然后给你提示说语句已淘汰&#xff0c;不过目前还是可以运行&#xff0c;只是代码不好看。#启动驱动的…

解释RocketMQ的“消息顺序”特性

RocketMQ的“消息顺序”特性指的是它能按照发送方的预期&#xff0c;保持消息在生产和消费过程中的顺序一致性。这一特性对于某些特定的应用场景至关重要&#xff0c;比如金融交易、订单处理等&#xff0c;在这些场景中&#xff0c;消息的顺序性对于业务逻辑的正确性有着决定性…

解析OceanBase v4.2 Oracle 语法兼容之 LOCK TABLE

背景 在OceanBase V4.1及之前的版本中&#xff0c;尽管已经为Oracle租户兼容了LOCK TABLE相关的语法&#xff0c;包括单表锁定操作&#xff0c;和WAIT N&#xff0c; NOWAIT 关键字。但使用时还存在一些限制。例如&#xff1a;LOCK TABLE只能针对单表进行锁定&#xff0c;并不…

Leetcode287_寻找重复数

1.leetcode原题链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 2.题目描述 给定一个包含 n 1 个整数的数组 nums &#xff0c;其数字都在 [1, n] 范围内&#xff08;包括 1 和 n&#xff09;&#xff0c;可知至少存在一个重复的整数。 假设 nums 只有 一个重复…

URL GET +号后台接收成空格

问题&#xff1a;参数spdmwhbs001 其中包含URL特殊符号 如果用GET请求方式不做任何不处理那么浏览器自动将转为%20 请求链接为 details?spdmwhbs%20001&limitKcysType1 后台接收到的参数为 whbs 001 &#xff0c;自动将号转成空格了。 尝试解决&#xff08;失败&#…

Redis中的事务(二)

事务 事务的实现 执行事务 当一个处于事务状态的客户端向服务器发送EXEC命令时&#xff0c;这个EXEC命令将立即被服务器执行&#xff0c;服务器会遍历这个客户端的事务队列&#xff0c;执行队列中保存的所有命令&#xff0c;最后将执行命令所得的结果全部返回给客户端。 例…

kubernets 节点数量限制修改

kubelet节点pod数量限制 在 Kubernetes 中&#xff0c;kubelet 的 --max-pods 参数默认值是 110。这意味着每个节点上最多可以运行 110 个 Pod。这个默认值是为了在大多数情况下提供一个合理的默认限制&#xff0c;以避免节点资源被过度占用。 如果需要修改默认的 --max-pods…

STM32学习和实践笔记(17):STM32外部中断(EXTI)的整体介绍

1.外部中断介绍 1.1 EXTI简介 STM32F10x外部中断/事件控制器&#xff08;EXTI&#xff09;包含多达 20 个用于产生事件/中断请求的边沿检测器。&#xff08;事件与中断的区别&#xff0c;可参看STM32---中断与事件的区别_中断和事件的区别-CSDN博客&#xff09; 具体有哪些&a…

C语言结课实战项目_贪吃蛇小游戏

目录 最终实现效果&#xff1a; 实现基本的功能&#xff1a; 根据游戏进程解释代码&#xff1a; 游戏初始化&#xff1a; 首先进入游戏&#xff0c;我们应该将窗口名称改为 “贪吃蛇” 并将光标隐藏掉。再在中间打印游戏信息。 之后我们要把地图打印出来&#xff1a; 然后…

Redis(三) 事务与发布订阅

结合前两期 Redis(一) Redis简介(Redis(一) Redis简介-CSDN博客) Redis(二) 可编程性(Redis(二) 可编程性-CSDN博客) 目录 事务在 Redis 中的运作方式 用法 事务中的错误 回滚 放弃命令队列 使用检查和设置的乐观锁定 WATCH解释 使用 WATCH 实现 ZPOP Redis 发布/订…

Python的pytest框架(4)--参数化测试

在 pytest 测试框架中&#xff0c;参数化测试&#xff08;Parametrized Testing&#xff09;意味着将一个测试用例设计为能够接受不同输入数据&#xff08;参数&#xff09;并分别执行&#xff0c;以验证被测试代码在面对多种情况时的行为是否符合预期。参数化测试的核心理念是…

DAY28| 93. 复原IP地址 ,79.子集 ,90.子集II

文章目录 93.复原IP地址78.子集90.子集II 93.复原IP地址 文字讲解&#xff1a;复原IP地址 视频讲解&#xff1a;复原IP地址 **状态&#xff1a;**此题调试了几次ok&#xff0c;与昨天的分割回文子串相比&#xff0c;就是在判断终止条件处需要处理&#xff1b; 思路&#xff1a;…

设计模式- 单例模式(Singleton)结构|实现方式|优缺点|场景

目录 设计模式&#xff08;分类&#xff09; 设计模式&#xff08;六大原则&#xff09; 创建型 工厂方法 抽象工厂模式 单例模式 建造者模式 单例模式&#xff08;Singleton Pattern&#xff09;是一种创建型设计模式&#xff0c;其…

rust : condvar中一对一和多对一模式初探

condvar是不经常碰到的&#xff0c;但其实在tokio之类库中&#xff0c;还是非常核心的作用。 想进一步体会condvar的使用&#xff0c;还是从场景出发。 一、一个通知发送者&#xff0c;一个接收者 假定一个员工收到一个任务&#xff0c;就是模拟是一个时间片&#xff0c;到时…

【Qt】设置QT标准对话框为中文字体

设置QT标准对话框为中文字体 一、问题二、解决方法1、找到Qt内置的翻译文件 qt_zh_CN.qm2、在代码中加载该文件 一、问题 在Qt中我们使用的标准对话框都是英文&#xff0c;例如下面的 字体选择对话框&#xff0c;但是实际中我们需要构建的是中文对话框。 所以我们需要使用Qt官…