从0入门自主空中机器人-3-【环境与常用软件安装】
关于本课程:
本次课程是一套面向对自主空中机器人感兴趣的学生、爱好者、相关从业人员的免费课程,包含了从硬件组装、机载电脑环境设置、代码部署、实机实验等全套详细流程,带你从0开始,组装属于自己的自主无人机,并让它可以在未知的环境中自由避障穿行。
本次课程的重心主要落在自主空中机器人的搭建、代码部署及调试上,关于自主空中机器人的一些理论基础,例如动力学模型,路径搜索,轨迹规划,地图构建等内容。
课程视频
B站:【完结】从0入门自主空中机器人 | 开源 | 浙江大学Fast-Lab
深蓝学院:从0入门自主空中机器人
相关源码
GitHub:https://github.com/ZJU-FAST-Lab/Fast-Drone-250
Gitee:https://gitee.com/pn_code/Fast-Drone-250
1. 机载电脑环境安装
机载电脑推荐环境
系统:Ubuntu20.04 LST
ROS1:noetic
ROS2:foxy
说明:ROS1和ROS2可以安装在同一个系统,但需要进行一点配置,见【ROS1和ROS2的共存问题】
目前很多算法,包括本教程都是基于ROS1的版本,但ROS2对比ROS1优势很大,而且ROS1目前已经宣布将会在2023年停止更新,因此ROS2已经是大众所趋,建议学有余力的同学在学完ROS1后可以顺带连ROS2也一起学了
1.1 Ubuntu安装
视频教程如下:
- 镜像站地址: http://mirrors.aliyun.com/ubuntu-releases/20.04/ 下载 ubuntu-20.04.4 desktop-amd64.iso
- 烧录软件UltraISO官网:https://cn.ultraiso.net/
- 分区设置:
- **EFI系统分区(主分区)**512M
- **交换空间(逻辑分区)**16000M(内存大小的两倍)
- **挂载点/(主分区)**剩余所有容量
教程中推荐笔记本上也安装Ubuntu,但实际用下来并不推荐安装Ubuntu在笔记本上,很多软件Windows也有,而且笔记本的作用主要就是编辑并发送代码文件到机载电脑上,用VScode+MobaXterm+ssh+nomachine即可
1.2 ROS安装
推荐使用鱼香ros的一键安装脚本:一行代码搭建机器人开发环境(ROS/ROS2/ROSDEP)
wget http://fishros.com/install -O fishros && . fishros
开源地址:https://github.com/fishros/install
问题汇总:一键安装 | 鱼香ROS (fishros.org.cn)更多ROS的资源及教程参考:ROS资源汇总 | MGodmonkeyの世界
2. 必备软件安装
2.1 realsense驱动安装(RGB-D相机)
参考:https://github.com/IntelRealSense/librealsense/blob/master/doc/distribution_linux.md
添加秘钥
sudo apt update
sudo apt-get install apt-transport-https
sudo mkdir -p /etc/apt/keyrings
curl -sSf https://librealsense.intel.com/Debian/librealsense.pgp | sudo tee /etc/apt/keyrings/librealsense.pgp > /dev/null
添加安装源
echo "deb [signed-by=/etc/apt/keyrings/librealsense.pgp] https://librealsense.intel.com/Debian/apt-repo `lsb_release -cs` main" | \
sudo tee /etc/apt/sources.list.d/librealsense.list
sudo apt-get update
以下是README.pdf中的方法
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDEsudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo $(lsb_release -cs) main" -u
- 安装包
# 下面两个必装
sudo apt-get install librealsense2-dkms
sudo apt-get install librealsense2-utils
sudo apt-get install ros-noetic-realsense2-camera
# 下面两个可选,主要是开发调试用
sudo apt-get install librealsense2-dev
sudo apt-get install librealsense2-dbg
- 测试
realsense-viewer
通过realsense-viewer
的指令来检查深度相机是否正确安装并显示
2.2 MAVROS
- 介绍
MAVROS相当于PX4飞控中的MAVLINK模块。MAVROS将话题转为MAVLINK格式消息发送给飞控,飞控中的MAVLINK模块将MAVLINK格式消息转化为uORB消息给PX4各模块间传递消息使用,也可以反过来从uORB消息一直到ROS话题。
代码示例看MAVROS Offboard control example就好了,讲得很清楚。
- 安装
sudo apt-get install ros-noetic-mavros # 这里的noetic是ros的版本,其他版本自行更换名称
cd /opt/ros/noetic/lib/mavros
sudo ./install_geographiclib_datasets.sh
2.3 git、gcc、g++、python与make
sudo apt install git # git
sudo apt install build-essential # gcc、g++
sudo apt install make # make
sudo apt install python3 # python3
检查版本
git --version
gcc --version
g++ --version
make --version
python3 --version
2.4 ceres、glog与ddyanmic-reconfigure
-
介绍
-
ceres是什么
Ceres Solver是一个开源**C++**库,用于建模和解决大型复杂的优化问题。它可以用于解决具有边界约束和一般无约束优化问题的非线性最小二乘问题。它是一个成熟,功能丰富且高性能的库。Ceres Solver是谷歌2010就开始用于解决优化问题的C++库,2014年开源。在Google地图,Tango项目,以及著名的SLAM系统OKVIS和Cartographer的优化模块中均使用了Ceres Solver。 -
glog是什么
glog是google出品的c++日志库,提供了很多非常不错的功能,例如日志分等级打印、条件打印、日志格式化、日志文件滚动大小等。
-
ddynamic-reconfigure是什么
ddynamic-reconfigure是一个ROS软件包,它提供了一个动态重新配置的框架,可以在运行时修改ROS节点的参数。它可以帮助用户在
不停止节点的情况下,实时地调整节点的参数,从而优化节点的性能。
-
-
下载并解压
3rd_party.zip
wget https://gitee.com/pn_code/Fast-Drone-250/blob/master/3rd_party.zip
unzip 3rd_party.zip
- 编译安装
cd ./glog
sudo chmod 777 ./autogen.sh
sudo chmod 777 ./configure
sudo ./autogen.sh && sudo ./configure && sudo make install
sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libgtest-dev
cd ../ceres-solver-2.0.0rc1
mkdir build
cd build
cmake ..
sudo make -j4
sudo make install
sudo apt-get install ros-noetic-ddynamic-reconfigure
这里的
libcxsparse3
如果有错误,参考下面这篇博客【安装Ceres相关依赖时libcxsparse3.1.2报错_安装ceres相关依赖项时显示找不到_振华OPPO的博客-CSDN博客】
2.4 ego-plannner
参考:ZJU-FAST-Lab/ego-planner (gitee.com)的**Readme.md**中的说明
- 安装uav_simulator需要的Armadillo库
sudo apt-get install libarmadillo-dev
-
下载源码
From github
git clone https://github.com/ZJU-FAST-Lab/ego-planner.git
Or from gitee
git clone https://gitee.com/iszhouxin/ego-planner.git
- 编译源码
cd ego-planner
catkin_make -DCMAKE_BUILD_TYPE=Release
- 执行
在ego-planner
文件夹的一个终端中,打开rviz进行可视化和交互
source devel/setup.bash
roslaunch ego_planner rviz.launch
在ego-planner
文件夹的另一个终端中,打开仿真
source devel/setup.bash
roslaunch ego_planner run_in_sim.launch
3. 常用软件安装
- vscode
- 前往【vscode官网】下载Linux x64 deb包
- 使用
sudo apt install ****.deb
进行安装
- Terminator
- 多窗口命令行终端
- 使用
sudo apt install terminator
进行安装
- Plotjuggler
- 可视化时间时序的工具
- 使用
sudo apt install ros-noetic-plotjuggler ros-noetic-plotjuggler-ros
进行安装 - 使用
rosrun plotjuggler plotjuggler
进行查看
- Net-tools
- 网络工具包,用于查看linux的IP地址
- 使用
sudo apt install net-tools
进行安装 - 使用
ifconfig
进行查看IP地址
- ssh
- 使用
sudo apt install openssh-server
进行安装 - 使用ssh终端等工具连接上机载电脑
- 使用
以上工具的使用方式请自行前往度娘搜索
以上工具的阿里云盘下载地址:【下载入口】
{% pdf https://mybog.s3.bitiful.net/ros/word/readme.pdf %}
相关文章:
从0入门自主空中机器人-3-【环境与常用软件安装】
关于本课程: 本次课程是一套面向对自主空中机器人感兴趣的学生、爱好者、相关从业人员的免费课程,包含了从硬件组装、机载电脑环境设置、代码部署、实机实验等全套详细流程,带你从0开始,组装属于自己的自主无人机,并让…...
electron node-api addon开发
解决方案入口 拷贝日志以及json等第三方源码 增加包含目录 编写接口 默认模板已经有一个回调函数了 照葫芦画瓢就行 其中几个重要的点要注意 1.参数传入 比如如下的例子: 头文件定义: public:下增加 Napi::Value StartAnswer (const Napi::Callb…...
如何在嵌入式系统或计算机系统中验证boot程序
在嵌入式系统或计算机系统中,验证boot程序(引导程序)的正确性至关重要,因为它负责初始化系统硬件、加载操作系统内核,并设置系统环境。以下是一些常用的验证boot程序的方法: 一、硬件验证 示波器与逻辑分…...
scala基础学习_运算符
文章目录 scala运算符算术运算符关系运算符逻辑运算符位运算符其他运算符赋值运算符 scala运算符 在 Scala 中,运算符通常被定义为方法。这意味着你可以将运算符视为对象上的方法调用。以下是一些常用的运算符及其对应的操作: 算术运算符 :…...

【ANGULAR网站开发】初始环境搭建
1. 初始化angular项目 1.1 创建angular项目 需要安装npm和nodejs,这边不在重新安装 直接安装最新版本的angular npm install -g angular/cli安装指定大版本的angular npm install -g angular/cli181.2 启动angular 使用idea启动 控制台启动 ng serve启动成功…...

【Java】面试题 并发安全 (2)
文章目录 可重入锁(ReentrantLock)知识总结1. 可重入锁概念与特点2. 基本语法与使用注意事项3. 底层实现原理4. 面试回答要点 synchronized与lock的区别死锁相关面试题讲解死锁产生的四个条件ConcurrentHashMap2. JDK1.7的ConcurrentHashMap结构添加数据…...

springboot启动不了 因一个spring-boot-starter-web底下的tomcat-embed-core依赖丢失
这个包丢失了 启动不了 起因是pom中加入了 <tomcat.version></tomcat.version>版本指定,然后idea自动编译后,包丢了,删除这个配置后再也找不回来, 这个包正常在 <dependency><groupId>org.springframe…...

React 组件的通信方式
在 React 应用开发中,组件之间的通信是构建复杂用户界面和交互逻辑的关键。正确地实现组件通信能够让我们的应用更加灵活和易于维护。以下是几种常见的 React组件通信方式。 一、父子组件通信 1. 通过 props 传递数据(父组件向子组件传递数据࿰…...

WAV文件双轨PCM格式详细说明及C语言解析示例
WAV文件双轨PCM格式详细说明及C语言解析示例 一、WAV文件双轨PCM格式详细说明1. WAV文件基本结构2. PCM编码方式3. 双轨PCM格式详细说明二、C语言解析WAV文件的代码示例代码说明一、WAV文件双轨PCM格式详细说明 WAV文件是一种用于存储未压缩音频数据的文件格式,广泛应用于音频…...
【ES6复习笔记】数值扩展(16)
介绍 在 JavaScript 中,数值扩展提供了一些额外的功能,使得处理数值变得更加方便。本教程将介绍一些常用的数值扩展方法和属性。 1. Number.EPSILON Number.EPSILON 是 JavaScript 表示的最小精度。它的值接近于 2.2204460492503130808472633361816E-…...

百度热力图数据日期如何选择
目录 1、看日历2、看天气 根据研究内容定,一般如果研究城市活力的话,通常会写“非重大节假日,非重大活动,非极端天气等”。南方晴天不多,有小雨或者中雨都可认为没有影响,要不然在南方很难找到完全一周没有…...
Vue.js 高级组件开发:设计模式与实践
Vue.js 高级组件开发:设计模式与实践 引言一、组合式 API 与动态依赖注入1. 基于 provide/inject 的动态依赖2. 动态依赖注入与懒加载 二、动态渲染与自定义渲染函数1. 使用 Render 函数动态生成内容2. 自定义 vnode 操作 三、复杂场景下的动态表单生成与验证四、高…...

《一文读懂卷积网络CNN:原理、模型与应用全解析》
《一文读懂卷积网络CNN:原理、模型与应用全解析》 一、CNN 基本原理大揭秘(一)从人类视觉到 CNN 灵感(二)核心组件详解 二、经典 CNN 模型巡礼(一)LeNet-5:开山鼻祖(二&a…...

MONI后台管理系统-数据敏感字段存储加密
前言: 在我们数据库中,存在很多的敏感数据,如用户表中,存在用户电话、身份证号、邮箱等属于用户的敏感信息,我们通常在存入数据库后,将其进行加密存储,以此来保证数据安全性。 …...
熟悉各类游戏设计模式的用途与限制,如 factory、strategy、mvc、object pool 等
良好的系统分析与设计能力要求开发者熟悉并正确运用各种设计模式来解决特定问题。设计模式是一种针对特定问题的通用解决方案,可提高代码的可复用性、可维护性和可扩展性。以下是对一些常见游戏设计模式的详细分析,包括其用途、限制和代码示例。 一、工厂…...

【RabbitMQ高级篇】消息可靠性问题(1)
目录 1.消息可靠性 1.1.生产者消息确认 1.1.1.修改配置 1.1.2.定义Return回调 1.1.3.定义ConfirmCallback 1.2.消息持久化 1.2.1.交换机持久化 1.2.2.队列持久化 1.2.3.消息持久化 1.3.消费者消息确认 1.3.1.演示none模式 1.3.2.演示auto模式 1.4.消费失败重试机制…...

ASP.NET |日常开发中常见问题归纳讲解
ASP.NET |日常开发中常见问题归纳讲解 前言一、性能问题1.1 数据库访问性能1.2 视图状态(在ASP.NET Web Forms 中) 二、安全问题2.1 SQL 注入2.2 跨站脚本攻击(XSS) 三、状态管理问题3.1 会话状态(Session …...
【【深入浅出TinyRisc-v】】
深入浅出TinyRisc-v 本代码参考于 https://gitee.com/liangkangnan/tinyriscv 自己理解之后又重新写了一遍 tinyriscv.v // 涓嬮潰鏄鏁翠釜top妯″潡鐨勪功鍐? module tinyriscv(input clk ,input rst_n …...

常见的限流算法
常见的限流算法 限流的定义固定窗口算法滑动窗口算法漏桶算法(推荐)令牌桶算法(推荐)限流粒度本地限流(单机限流)分布式限流(多机限流)分布式限流的实现 限流的定义 限流,也称流量控制。是指系统…...
【Leetcode 每日一题】3159. 查询数组中元素的出现位置
问题背景 给你一个整数数组 n u m s nums nums,一个整数数组 q u e r i e s queries queries 和一个整数 x x x。 对于每个查询 q u e r i e s [ i ] queries[i] queries[i],你需要找到 n u m s nums nums 中第 q u e r i e s [ i ] queries[i] q…...
pom.xml 文件中配置你项目中的外部 jar 包打包方式
使用 system 作用域(不推荐,但简单直接) <dependency><groupId>com.test</groupId> <!-- 可自定义,建议与项目相关 --><artifactId>open-sdk</artifactId> <!-- 可自定义,建议…...

JWT安全:弱签名测试.【实现越权绕过.】
JWT安全:假密钥【签名随便写实现越权绕过.】 JSON Web 令牌 (JWT)是一种在系统之间发送加密签名 JSON 数据的标准化格式。理论上,它们可以包含任何类型的数据,但最常用于在身份验证、会话处理和访问控制机制中发送有关用户的信息(“声明”)。…...
【SCI论文实现】信息引导的高质量三维重建——系统架构设计 PYTHON
一、多模态数据采集与预处理模块 设计目标:解决动态场景中多源数据的时空对齐与质量优化问题,为后续特征提取提供高精度、强一致性的输入。 1.1 传感器配置逻辑 选择 RGB-D 相机(如 Kinect)与 LiDAR(如 Velodyne VLP-16)的互补组合,原因在于: RGB-D 相机提供高分辨率…...

GIS数据类型综合解析
GIS数据类型综合解析 目录 GIS数据类型综合解析1. 总体介绍2. GIS数据类型分类与对比2.1 主要数据类型对比表 3. 详细解析与扩展内容3.1 矢量数据(Vector Data)3.2 栅格数据(Raster Data)3.3 属性数据(Attribute Data&…...

如何使用 poetry 创建虚拟环境,VSCode 如何激活使用 Poetry 虚拟环境(VSCode如何配置 Poetry 虚拟环境)
文章目录 📖 介绍 📖🏡 演示环境 🏡📒 使用 Poetry 创建和激活虚拟环境 📒🧪 创建项目并初始化 Poetry🔧 配置虚拟环境创建位置✅ 指定Python版本📦 安装依赖并创建虚拟环境🚀 激活虚拟环境📒 在 VSCode 中配置 Poetry 虚拟环境 📒🧭 方法一:使用 V…...

STM32F407寄存器操作(ADC非连续扫描模式)
1.前言 书接上回,在看手册的时候我突然发现手册上还描述了另一种ADC扫描模式,即非连续扫描模式,想着连续扫描模式都已经探索过了,那就顺手把非非连续模式研究一下吧。 2.理论 我们先看看手册,这里我就以规则通道举例…...
Python爬虫:AutoScraper 库详细使用大全(一个智能、自动、轻量级的网络爬虫)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、AutoScraper概述1.1 AutoScraper介绍1.2 安装1.3 注意事项二、基本使用方法2.1 创建 AutoScraper 实例2.2 训练模型2.3 保存和加载模型2.4 数据提取方法2.5 自定义规则三、高级功能3.1 多规则抓取3.2 分页抓取3.3 代…...
第6节 Node.js 回调函数
Node.js 异步编程的直接体现就是回调。 异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了。 回调函数在完成任务后就会被调用,Node 使用了大量的回调函数,Node 所有 API 都支持回调函数。 例如,我们可以一边读取文…...
针对Python开发的工具推荐及分析,涵盖集成开发环境(IDE)、轻量级工具、在线开发平台、代码管理工具等)
以下是针对Python开发的工具推荐及全面分析,涵盖集成开发环境(IDE)、轻量级工具、在线开发平台、代码管理工具等,结合不同场景和需求进行分类说明: 目录 一、集成开发环境(IDE) 1. PyCharm 2…...
WEB安全--SQL注入--MSSQL注入
一、SQLsever知识点了解 1.1、系统变量 版本号:version 用户名:USER、SYSTEM_USER 库名:DB_NAME() SELECT name FROM master..sysdatabases 表名:SELECT name FROM sysobjects WHERE xtypeU 字段名:SELECT name …...