在树莓派上安装 ROS Melodic

树莓派的支持的系统比较多,以 Raspbian Buster 为例,记录在树莓派上下载并构建 ROS Melodic 的步骤,其他的派类似。

一、安装 ROS Melodic

打开树莓派终端并执行以下步骤。

   1. 安装 repository key

    $ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
    $ curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

   2. 更新 Debian 包索引,并升级已安装的软件包

    $ sudo apt-get update
    $ sudo apt-get upgrade

   3. 安装依赖包

    $ sudo apt install -y python-rosdep python-rosinstall-generator python-wstool python-rosinstall build-essential cmake

   4. 初始化 rosdep

    $ sudo rosdep init
    $ rosdep update

二、创建 catkin 工作空间

   1. 创建一个 catkin 工作空间来构建核心包。

在树莓派终端上运行以下命令。

     $ mkdir -p ~/ros_catkin_ws

     $ cd ~/ros_catkin_ws

   2. 使用 wstool 命令来获取核心包并在树莓派上构建它们。

     $ rosinstall_generator ros_comm rosout std_msgs sensor_msgs geometry_msgs tf --rosdistro melodic --deps --wet-only --tar > melodic-ros_mw-wet.rosinstall

     $ wstool init src melodic-ros_mw-wet.rosinstall

这个命令会添加指定变体中的所有 catkin 或 wet 包,然后将源代码下载到 ~/ros_catkin_ws/src目录中。一旦执行此命令,系统可能需要几分钟时间将核心包下载到 src 文件夹中。

如果 wstool init 命令失败或被中断,你可以通过运行以下命令来恢复下载过程。

        wstool update -j4 -t src

   注意:-j4 参数表示并行下载四个文件,以加快下载速度。-t src 参数指定了下载到的目标目录。

三、使用 rosdep 解决依赖关系

在构建 catkin 工作空间之前,需要确保已经解决了所有依赖关系并安装了所有包。

通过在树莓派终端上运行以下命令来解决依赖关系。

     $ cd ~/ros_catkin_ws$ rosdep install -y --from-paths src --ignore-src --rosdistro melodic -r --os=debian:buster

四、构建 catkin 工作空间

对于早期的树莓派硬件(如:Model B+、Model B Rev1、Model B Rev2、Pi 2 Model B、Pi Zero W),可以增加交换空间以提高构建速度。

在树莓派终端上执行此命令以打开交换配置文件。

     $ sudo nano /etc/dphys-swapfile

在编辑器窗口中,搜索 CONF_SWAPSIZE 变量并将其设置为 500。保存文件。这将把交换空间增加到 500MB。

执行以下命令以激活新的交换空间大小。

     $ sudo dphys-swapfile setup$ sudo dphys-swapfile swapon

在解决完依赖关系和下载完软件包之后,调用 catkin_make_isolated,构建 catkin 工作空间。

     $ sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/melodic

ROS Melodic 现在已安装在树莓派硬件板上。

激活新安装的环境。

     $ source /opt/ros/melodic/setup.bash

可以在 ~/.bashrc 文件中源设置 setup.bash,以便每次启动新 shell 时自动将 ROS 环境变量添加到 bash 会话中。

     $ echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc

五、创建 catkin 用户工作空间

在树莓派终端上创建一个 catkin 用户工作空间,执行以下步骤。

   1. 为 ROS Melodic 源设置脚本。
source /opt/ros/melodic/setup.bash
   2. 初始化 ROS 用户工作空间 ~/catkin_ws.

创建并初始化 ROS 用户工作空间: ~/catkin_ws.

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
   3. 构建 ROS 用户工作空间。

此步骤在 ~/catkin_ws 工作空间下创建 devel 和 build 目录。

cd ~/catkin_ws/
catkin_make

                                                                                         老徐,2024/7/26

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

github-page静态网页将字符串写入github库中文本文档

🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收…

【MySQL进阶之路 | 高级篇】MVCC三剑客:隐藏字段,Undo Log,ReadView

1. 再谈隔离级别 我们知道事务有四个隔离级别,可能存在三种并发问题: 在MySQL中,默认的隔离级别是可重复读,可以解决脏读和不可重复读的问题,如果仅从定义的角度来看,它并不能解决幻读问题。如果我们想要解…

python利用lxml模块爬取百度贴吧标题列表—新手练习的项目

一、爬取需求 就是用python,获取某百度贴吧的标题 二、代码 import lxml.html import requests ydm requests.get(https://tieba.baidu.com/f?ieutf-8&kw%E5%BC%A0%E5%A7%93%E4%B9%8B%E5%AE%B6).content.decode() selector lxml.html.fromstring(ydm) inf…

【Golang 面试基础题】每日 5 题(十)

✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/UWz06 📚专栏简介:在这个专栏中,我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏…

跨境电商独立站:Shopify/Wordpress/店匠选哪个?

在面对不断增加的平台运营压力时,不少跨境电商的商家逐渐将注意力转向建立自己的独立站。据《中国跨境出口电商发展报告(2022)》所示,中国拥有的独立站数量在2022年已接近20万个,这表明独立站已成为卖家拓展海外市场的…

Vue3分段控制器(Segmented)

效果如下图:在线预览 APIs Segmented 参数说明类型默认值必传block是否将宽度调整为父元素宽度,同时所有选项占据相同的宽度booleanfalsefalsedisabled是否禁用booleanfalsefalseoptions选项数据string[] | number[] | SegmentedOption[][]falsesize控…

LoRA:低秩自适应

LoRA:低秩自适应 本章节是对轻松上手微调大语言模型——QLORA篇中提到的LoRA的原理解释。 背后动机 现今模型的参数量变得越来越大,对预训练模型进行全微调变得越来越不可行。为了解决这个问题有了LoRA(Low-Rank Adaption)的诞生。将可训练…

ATF-541M4全解析(一)

目录 一、描述二、规格三、各参数最大值四、25℃下的典型值 一、描述 安华高科技 (Avago Technologies) 的 ATF-541M4 是一款高线性度、低噪声、单电源供电的E-PHEMT,封装在一个微型无引脚封装中。 ATF-541M4 的小尺寸和低外形使其非常适合用于混合模块和其他空间…

C++多态的底层原理

目录 1.虚函数表 (1)虚函数表指针 (2)虚函数表 2.虚函数表的继承--重写(覆盖)的原理 3.观察虚表的方法 (1)内存观察 (2)打印虚表 虚表的地址 函数 传参…

SpringBoot添加密码安全配置以及Jwt配置

Maven仓库(依赖查找) 1、SpringBoot安全访问配置 首先添加依赖 spring-boot-starter-security 然后之后每次启动项目之后,访问任何的请求都会要求输入密码才能请求。(如下) 在没有配置的情况下,默认用户…

【python】python基于 Q-learning 算法的迷宫游戏(源码+论文)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

ctfshow-web入门-php特性(web137-web141)

目录 1、web137 2、web138 3、web139 4、web140 5、web141 1、web137 直接调用 ctfshow 这个类下的 getFlag 函数,payload: ctfshowctfshow::getFlag 查看源码: 拿到 flag:ctfshow{dd387d95-6fbe-4703-8ec5-9c8f9baf2bb5} 在…

【Linux】远程连接Linux虚拟机(MobaXterm)

【Linux】远程连接Linux虚拟机(MobaXterm) 零、原因 有时候我们在虚拟机中操作Linux不太方便,比如不能复制粘贴,不能传文件等等,我们在主机上使用远程连接软件远程连接Linux虚拟机后可以解决上面的问题。 壹、软件下…

MySQL_JDBC

目录 一、JDBC常用的接口和类 1.1 数据库连接 Connection 1.2 Statement 对象 二、JDBC的使用 总结 【Java 的数据库编程】 JDBC 即 Java Database Connectivity (Java数据库连接),是一种用于执行 SQL 语句的 Java API。这个 API 由 java.sql.*,javax.sql.* …

软件测试:Postman 工具的使用。开发及测试均需要掌握的测试工具

工具介绍 各个模块功能的介绍如下: 1、New:在这里创建新的请求、集合或环境;还可以创建更高级的文档、Mock Server 和 Monitor以及API。 2、Import:这用于导入集合或环境。有一些选项,例如从文件,文件夹导…

Linux环境下(DeepinV20+)使用docker安装和使用mysql、redis、minio等各类中间件(后续用到其他中间件会继续更新)

docker安装:https://blog.csdn.net/HXBest/article/details/140702265 本人环境放置路径为:/env/中间件名称/,实际改为你自己的!!! 一、mysql安装和使用 docker run -itd --name mysql -p 3306:3306 \ -d …

用 apifox cli 命令行运行本地接口出现TypeError:Invalid IP address: undefined

用 apifox cli 命令行运行本地接口出现TypeError:Invalid IP address: undefined,客户端运行是通过的但命令行运行会报错 修改端口也是一样报错,地址修改为127.0.0.1会报错connect ECONNREFUSED 127.0.0.1:8080 解决方法:不用localhost&…

PHP家政系统自营+多商户独立端口系统源码小程序

家政行业的新篇章 引言:家政行业的数字化转型 近年来,随着科技的飞速发展和人们生活节奏的加快,家政服务行业也迎来了数字化转型的浪潮。为了提升服务效率、优化用户体验,越来越多的家政公司开始探索“家政系统自营多商户小程序…

Ubuntu24.04安装

1. 系统安装 1.1 引导界面 开机进入grub引导界面后,会有安装服务和测试内存两个选择,选择第一个进行安装。 1.2 语言选择 这里的语言选择的是安装过程中的语言,根据个人偏好选择即可,不过没有中文,所以默认使用英文…

【C++】选择结构- 嵌套if语句

嵌套if语句的语法格式&#xff1a; if(条件1) { if(条件1满足后判断是否满足此条件) {条件2满足后执行的操作} else {条件2不满足执行的操作} } 下面是一个实例 #include<iostream> using namespace std;int main4() {/*提示用户输入一个高考分数&#xff0c;根据分…