Virtual Box+Ubuntu20.04+ROS2 Foxy配置

2023-05-16

ROS从最早的正式版本Box Turtle到现在也十几年了。而ROS2出来也挺久了,一直没机会看看。好久也没弄ROS,这几天捣鼓了捣鼓。

目录

1. Virtual Box安装Ubuntu20.04

2. ROS2 Foxyd安装


1. Virtual Box安装Ubuntu20.04

Virtual Box是Oracle公司收购的一款免费且开源的虚拟机软件,而且提供了《Programming Guide and Reference》可供开发人员进行二次开发,主要是提供一些脚本可调用Virtual Box的一些功能。Virtual Box还是挺好用,安装Ubuntu网上也很多教程。目前最新最稳定的Ubuntu版本是20.04,在官网上可以下载到。这里补充几点。安装好后点击设备安装增强功能,这些可以让虚拟机里的系统随窗口大小的变化而变化,而不是固定的分辨率。其次尽量将网络设置成桥接模式,这样虚拟机系统和外面window系统是一个网段,方便使用putty等工具。

2. ROS2 Foxyd安装

一般安装好Ubuntu后需要切换服务器源,不过我发现现在默认本身的也挺快。ROS2的安装按照官网来一般来说是没问题的,但总还是会出现问题,比如一些指令运行出错,gpg没法认证等问题,或者下载慢等。而且这次我发现即便是使用的清华ROS2镜像源也还是没法下载。原因是ros.asc文件所在的网址打不开。

sudo apt install curl gnupg2
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
sudo apt update

 无奈只好再跟着官网提供的脚本继续研究研究,主要卡在第二步的ros.key和ros-archive-keyring.gpg,访问受阻。

############# Step1 ################

locale  # check for UTF-8
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8
locale  # verify settings

############# Step2 ################
sudo apt update && sudo apt install curl gnupg2 lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key  -o /usr/share/keyrings/ros-archive-keyring.gpg

############# Step3 ################
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

############# Step4 ################
sudo apt install ros-foxy-desktop

后来发现在https://github.com/ros/rosdistro可以下载到这个两个认证文件,于是在Windows上下载后,通过scp传入到虚拟机中(尽量采用管理员模式运行Windows命令)。

 然后再在虚拟机中,运行下面几行,发现都没有换源也能很快下载和安装ros2了,而且速度还可以。

sudo apt-key add ros.asc
sudo cp ros.key /usr/share/keyrings/ros-archive-keyring.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

sudo apt update
sudo apt install ros-foxy-desktop

最后在.bashrc文件中加入source /opt/ros/foxy/setup.bash设置好ros2的环境变量,变可开启ROS2之旅了。另附一篇古月居的安装教程《ROS2入门教程——2. Ubuntu20.04安装ROS2 Foxy》。

附一张大家熟知的ROS话题发布与监听例程,祝大家使用愉快。

Enjoy!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Virtual Box+Ubuntu20.04+ROS2 Foxy配置 的相关文章

  • 具有 C++ 虚函数时的 GDB 不完整类型

    我刚刚注意到一些奇怪的事情 当我在类中添加 虚拟关键字 除构造函数之外的任何函数 时 我无法在 GDB 中显示对象的内容 GDB 说 不完整类型 这是代码 reco h ifndef RECO H define RECO H include
  • Tkinter:如何创建选择框

    I need to create a choice box where i can click on arrow and it give me list of choices And if i click on one of them it
  • ros2+xacro文件示例代码备份

    重要提示 在xacro文件虽然是xml文件 但是如果在xacro文件中随意插入自定义标签 虽然check urdf不会报错 但是最后rviz2解析的时候会出现错误 例如 如果在上述xml文件中加入以下代码将出现显示异常
  • ros2 学习07 rclpy包 详解

    rclpy 是 python 操作ros2 封装的一个工具包 rclpy 源码路径 https github com ros2 rclpy 文档说明地址 https docs ros2 org latest api rclpy index
  • 状态模式 C++

    在遵循这里的一些优秀教程之后 我正在尝试创建一个简单的状态模式 http gameprogrammingpatterns com state html http gameprogrammingpatterns com state html
  • 未使用的私有虚拟方法是否允许将来扩展而不破坏 ABI 兼容性?

    我正在开发一个共享库 假设我有以下类定义 class MyClass public public interface private virtual void foo1 int virtual void foo2 int bool virt
  • iOS6 中的 CoreMIDI/PGMidi 虚拟 midi 错误

    面临两个错误 此代码在 iOS 4 和 5 中有效 但更新到 6 后 它不起作用 我发现了以下内容 但不知道如何在代码中修复它 从 iOS 6 开始 应用程序需要在其 UIBackgroundModes 中拥有音频键才能使用 CoreMID
  • 如何消除 Spotfire 箱形图中的异常值

    提前感谢您的帮助 问候 拉杰 将值添加到MAX 即使可能 值也会扭曲数据 不过 有两种技巧可以做到这一点 右键单击 gt 属性 gt Y 轴 gt 设置MIN范围值和MAX将值范围设置为可以消除所有异常值的值 这实际上只适用于所有值都彼此接
  • Exception sending a multicast message:Network is unreachable故障

    出现这个故障就是没有连接到网络 如果虚拟机没有连接到本机 那么就会出现这个情况 当虚拟机连接到本机就会自动消失 同时如果是用电脑直接安装Ubuntu运行也会出现这个情况 应该是要连接到一个路由器里面这个情况才会消失
  • ros2 基础学习 15- URDF:机器人建模方法

    URDF 机器人建模方法 ROS是机器人操作系统 当然要给机器人使用啦 不过在使用之前 还得让ROS认识下我们使用的机器人 如何把一个机器人介绍给ROS呢 为此 ROS专门提供了一种机器人建模方法 URDF Unified Robot De
  • 如何链接“并行”类层次结构?

    我有一个小的类层次结构 其中每个类对应于某个 TComponent 后代 例如基类 TDefaultFrobber 及其后代 TActionFrobber 和 TMenuItemFrobber 分别对应于 TComponent TCusto
  • 虚拟继承[重复]

    这个问题在这里已经有答案了 虚拟 继承是什么意思 我看到了下面的代码 没明白关键字的意思virtual在以下情况下 class A class B public virtual A 虚拟继承用于解决 DDD 问题 Dreadful Diam
  • 在 C++ 中描述虚函数的最简洁而准确的方法是什么?

    在评估基本 C 知识的面试中 被要求描述什么是虚函数似乎是最常见的问题之一 然而 在 C 编程几年之后 我仍然有一种不舒服的感觉 即我并不真正理解如何最好地定义它们是什么 如果我查阅维基百科 我看到虚函数的定义是 在面向对象编程中 虚函数或
  • 如何在不使用鼠标的情况下执行虚拟鼠标单击C# [重复]

    这个问题在这里已经有答案了 我想在 Windows 应用程序中执行单击 而不使用真正的鼠标 这样我可以将其最小化 很像机器人的行为 我该怎么做 我认为你正在寻找的功能是PostMessage DllImport user32 dll Set
  • 强制虚拟方法表中函数的顺序?

    如何控制虚拟表中虚拟函数的顺序 它们的排列顺序是否与声明的顺序相同 当继承带有虚表的类时 继承类的虚表是基类的扩展 还是仅用继承类的虚函数创建的全新虚表 即虚拟表仍然位于类的索引 0x0 处吗 a 就标准而言 你不能 事实上你甚至不能假设
  • Rails:虚拟属性和表单值

    我有一本带有虚拟属性的模型书 用于从书籍表单创建编辑器 代码如下 class Book lt ActiveRecord Base has many book under tags has many tags through gt book
  • Android Studio:“创建新 AVD”窗口中禁用“确定”按钮

    我下载并安装了最新的 Android Studio 版本 0 8 6 测试版 但在尝试创建新的 Android 虚拟设备时遇到了困难 我尝试按照以下步骤操作 https developer android com training wear
  • 当“virtual”位于“class Foo : public virtual Bar”而不是“virtual void frob()”时,这意味着什么?

    我明白virtual在成员函数的上下文中 例如virtual void frob 但它在类声明的上下文中意味着什么 比如class Foo public virtual Bar 对于给定的方法 有 8 种情况源于以下三个位置是否存在 vir
  • 在云服务器中运行 python 脚本的最简单方法是什么?

    我有一个网络爬行 python 脚本 需要几个小时才能完成 并且无法在我的本地计算机上完整运行 有没有一种方便的方法可以将其部署到简单的 Web 服务器 该脚本基本上将网页下载到文本文件中 如何最好地实现这一点 谢谢 既然你说性能是一个问题
  • Windows 内存映射文件

    我正在尝试研究 Windows 内核在内存映射文件 虚拟内存方面的行为 具体来说 我感兴趣的是确定内存映射文件的内容 由 Windows 刷新到磁盘的频率以及 Windows 使用什么标准来决定是时候这样做 我在网上做了一些研究 除了 MS

随机推荐