Ubuntu20.04 ROS-noetic安装与使用(原创)

ROS命令

      • 注:内容还在不断更新中,研究方向是无人机群体追踪,无人机零件已经购买,本周末会自己配真实无人机,之后会不断更新相关算法笔记。如果有相关研究同学,可以私聊我,一起讨论。
      • 1. ros-noetic安装
      • 2. ros基础命令
      • 3. 用catkin创建ros workspace
      • 4. 用catkin创建ros packet
      • 5. 用catkin更新ros workspace

注:内容还在不断更新中,研究方向是无人机群体追踪,无人机零件已经购买,本周末会自己配真实无人机,之后会不断更新相关算法笔记。如果有相关研究同学,可以私聊我,一起讨论。

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-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
# 更新
sudo apt update
# 安装桌面完整版本
sudo apt install ros-noetic-desktop-full
# 查看可用软件包
apt search ros-noetic
# 安装其他软件包
sudo apt install ros-noetic-PACKAGE
# 查找软件包安装位置
dpkg -L softwarename
# ros环境启用
source /opt/ros/noetic/setup.bash

2. ros基础命令

# ros初始化
rosdep init
# ros更新
rosdep update
# ros软件包路径查找
rospack find <packet>
# ros软件包依赖库查询
rospack depends1 <packet>
# ros目录查看
rosls <dir>
# ros目录打开
roscd <dir>

3. 用catkin创建ros workspace

$ mkdir -p ~/catkin_ws/src
# catkin_ws为ros工作空间的名字,可修改
$ cd ~/catkin_ws/
$ catkin_make
# 构建ros工作空间的配置文件,如果报错,使用catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3
$ source devel/setup.bash
# 启动ROS

当前目录应该能看到build和devel这两个目录。在devel文件夹里面你可以看到几个setup.*sh文件。source这些文件中的任何一个都可以将当前工作空间设置在环境的最顶层。默认为source /opt/rps/noetic/setup.sh,启动系统默认的ROS软件开发环境

# 使用ROS_PACKAGE_PATH环境变量确定当前ros工作空间目录:
$ echo $ROS_PACKAGE_PATH
/home/<username>/catkin_ws/src:/opt/ros/<distro>/share

4. 用catkin创建ros packet

$ cd ~/catkin_ws/src
$ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
# This is an example, do not try to run this
# catkin_create_pkg <package_name> [depend1] [depend2] [depend3]

一个包要想称为catkin软件包,必须符合以下要求:

  1. 这个包必须有一个符合catkin规范的package.xml文件
  • 这个package.xml文件提供有关该软件包的元信息
  1. 这个包必须有一个catkin版本的CMakeLists.txt文件
  • 如果它是个Catkin元包的话,则需要有一个CMakeList.txt文件的相关样板
  1. 每个包必须有自己的目录
  • 这意味着在同一个目录下不能有嵌套的或者多个软件包存在

创建后工作空间workspace和软件包packet的关系如下:

workspace_folder/        -- WORKSPACEsrc/                   -- SOURCE SPACECMakeLists.txt       -- 'Toplevel' CMake file, provided by catkinpackage_1/CMakeLists.txt     -- CMakeLists.txt file for package_1package.xml        -- Package manifest for package_1...package_n/CMakeLists.txt     -- CMakeLists.txt file for package_npackage.xml        -- Package manifest for package_n

5. 用catkin更新ros workspace

$ cd ~/catkin_ws
$ catkin_make
$ source devel/setup.bash

查找软件包安装位置命令 dpkg -L softwarename

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

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

相关文章

vue中正确使用swiper

首先安装swiper cnpm install swiper5.4.5 -S cnpm install vue-awesome-swiper3.1.3 -S 二、在main.js中引入swiper.css import swiper/css/swiper.css 三、在组件中使用 1、引入必要的组件 import { swiper, swiperSlide } from "vue-awesome-swiper"; 2、注…

30天精通Nodejs--第十七天:express-路由配置

目录 引言基础路由配置路由参数与查询参数路由前缀与子路由路由重定向结语 引言 上篇文章我们简单介绍了express的基础用法&#xff0c;包括express的安装、创建路由及项目启动&#xff0c;对express有了一个基础的了解&#xff0c;这篇开始我们将详细介绍express的一些高级用…

IDEA—初始化配置

注&#xff1a;以下红框圈的部分&#xff0c;均为已设置好的 外观与行为 编辑器 高级设置 按两次 shift 弹出提示问题解决

【WPF.NET开发】WPF中的拖放

本文内容 WPF 中的拖放支持数据传输拖放事件实现拖放拖放示例 本主题概述 Windows Presentation Foundation (WPF) 应用程序中的拖放支持。 拖放通常指一种数据传输方法&#xff1a;使用鼠标&#xff08;或一些其他指针设备&#xff09;选择一个或多个对象&#xff0c;将其拖…

神经网络|张量tensor(待完善)

文章目录 tensor/张量什么是tensor&#xff1f;如何用代码实现tensortensor在神经网络中的应用 其他 tensor/张量 什么是tensor&#xff1f; 张量是用来探究一个点在各个切面&#xff08;一共三个切面&#xff09;和各个方向&#xff08;x&#xff0c;y&#xff0c;z三个方向&…

蚁群算法(ACO)解决旅行商(TSP)问题的python实现

TSP问题 旅行商问题&#xff08;Travelling Salesman Problem, 简记TSP&#xff0c;亦称货郎担问题)&#xff1a;设有n个城市和距离矩阵D [dij]&#xff0c;其中dij表示城市i到城市j的距离&#xff0c;i, j 1, 2 … n&#xff0c;则问题是要找出遍访每个城市恰好一次的一条回…

【kafka】记录用-----------1

主题&#xff08;topic&#xff09;&#xff1a;消息的第一次分类 根据人为的划分条件将消息分成不同的主题 主题的划分是人为的根据不同的任务情景去划分 比如&#xff0c;我们有两个主题&#xff0c;一个是"订单"&#xff0c;另一个是"库存"。每个主题代…

Java集成消息队列Kafka

1.Kafka maven坐标 在使用Maven构建Java项目时&#xff0c;你可以通过添加Kafka的Maven依赖来引入Kafka相关的库。下面是Kafka的Maven坐标&#xff1a; <dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId&g…

SpringCloud + Redis 实现Api接口限流 防止恶意刷接口

一、API接口防刷 顾名思义&#xff0c;想让某个接口某个人在某段时间内只能请求N次。 二、原理 在请求的时候&#xff0c;服务器通过Redis记录你请求的次数&#xff0c;如果次数超过限制就不给访问。 在redis保存的key是有失效的&#xff0c;过期就会删除。 三、api限流的场…

GPT-4:智能语言模型的新篇章

随着人工智能技术的飞速发展&#xff0c;智能语言模型已经成为了我们日常生活和工作中不可或缺的一部分。GPT-4&#xff0c;作为最新一代的语言模型&#xff0c;不仅继承了前代技术的优势&#xff0c;还在理解深度、生成连贯性和创造性方面实现了质的飞跃。本文将探讨GPT-4的创…

强化学习应用(二):基于Q-learning的无人机物流路径规划研究(提供Python代码)

一、Q-learning简介 Q-learning是一种强化学习算法&#xff0c;用于解决基于马尔可夫决策过程&#xff08;MDP&#xff09;的问题。它通过学习一个价值函数来指导智能体在环境中做出决策&#xff0c;以最大化累积奖励。 Q-learning算法的核心思想是通过不断更新一个称为Q值的…

【JAVA】谈谈 ReadWriteLock 和 StampedLock

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;JAVA ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 ReadWriteLock&#xff08;读写锁&#xff09; 基本原理&#xff1a; 接口和实现&#xff1a; 用法示例&#xff1a; StampedL…

电梯导轨市场分析:我国市场销量增长率约为2.4%

电梯导轨(The elevator guide rail)是由钢轨和连接板构成的电梯构件&#xff0c;分为轿厢导轨和对重导轨。从截面形状分为T形&#xff0c;L形和空心三种形式。导轨在起导向作用的同时&#xff0c;承受轿厢&#xff0c;电梯制动时的冲击力&#xff0c;安全钳紧急制动时的冲击力等…

javacv和opencv对图文视频编辑-用多张图片合成MP4视频

狠人话不多&#xff0c;直接上代码 package com.bitar.javavideo.test;import org.bytedeco.ffmpeg.global.avcodec; import org.bytedeco.ffmpeg.global.avutil; import org.bytedeco.javacv.FFmpegFrameRecorder; import org.bytedeco.javacv.Java2DFrameConverter;import j…

Camunda Cluster

Rest API&#xff1a;无状态&#xff0c;根据权重路由。控制台API&#xff1a;webapp 登录有状态&#xff0c;根据IP路由。 nginx.conf upstream rest_proxy {server localhost:8080 weight1;server localhost:8081 weight1;server localhost:8082 weight1; }upstream webapp…

《2024 年 Web3.0 数字资产趋势报告》(二)

撰文&#xff1a;方军、周芳鸽、李祺虹、张睿彬&#xff0c;Uweb 编辑&#xff1a;Nona&#xff0c;Techub News 点击关注公众号获取完整报告 接下来我们将继续和大家分享《2024 年 Web3.0 数字资产趋势报告》中其余部分。

PyCharm连接服务器(利用PyCharm实现远程开发)

利用PyCharm实现远程开发 注&#xff1a;该功能只有在PyCharm专业版下才可以使用&#xff0c;并且必须是官方的正版许可&#xff0c;破解版的是不可以使用的&#xff01;&#xff01;&#xff01;可以通过免费教育许可申请使用权限&#xff08;申请流程&#xff09;。 pycharm…

QEMU源码全解析 —— PCI设备模拟(6)

接前一篇文章&#xff1a; 上一回讲到了pci_edu_realize函数中的pci_register_bar函数&#xff0c;本回对于其进行详细解析。 再次贴出pci_register_bar函数源码&#xff0c;在hw/pci/pci.c中&#xff0c;代码如下&#xff1a; void pci_register_bar(PCIDevice *pci_dev, in…

在Java中正确使用Optional

Optional类是在Java 8中引入的&#xff0c;用于解决NullPointerException的问题。 java.util.Optional类是一个泛型类型的类&#xff0c;只包含一个类型为T的值。其目的是提供对可能为null的类型T的引用对象的更安全的替代方案。但是&#xff0c;只有在正确使用的情况下&#…