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 类 它有很多虚拟方法 其中一些方法本质上是抽象的 它们在子类中完全实现 基类是空的 为了让它编译 我在基类中抛出一个 InvalidOperationException 并注释应该做什么 这只是感觉很脏 有更好的方法来设计我的
  • 如何在 C# 中释放桌面应用程序的 VM/私有字节

    我有用 C 开发的桌面应用程序 应用程序使用的虚拟机大小非常高 我想向 pdf 文件添加水印 该文件有超过 10 000 页 确切地说是 10776 页 VM 大小增加 有时应用程序冻结或抛出内存不足异常 是否有解决方案可以在 C 中以编程
  • 抽象类:成员函数“virtual...”的抽象返回类型无效

    在我的程序中 我有这样的类层次结构 include
  • 虚函数的实现可以放在头文件中吗

    通常 如果我们将非虚拟成员函数的实现放入头文件中 该函数将被内联 如果我们将虚拟成员函数的实现放在头文件中怎么样 我想这与将其放入 cpp 文件中是一样的 因为内联和多态性不能一起工作 我的说法正确吗 将方法的实现放入头文件中并不会使其内联
  • Box.COM 与 Android 应用程序集成-OAuthActivity-NullpointerException?

    我正在整合BOX COM与我的 android 应用程序 所以我正在使用BoxAndroidLibraryV2 and BoxJavaLibraryV2与我的申请 我可以运行示例 Android 应用程序BoxSDKSample 因此 我从
  • 在.NET中编写虚拟打印机[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我希望创建一个虚拟打印机 将数据传递到我的 NET 应用程序 然后我想创建一个安装程序来安装打印机和
  • 可以存在空的虚拟表吗?

    include
  • 如何在没有表单标签的情况下更改 Mobile Safari 键盘中的返回键文本?

    我想更改 返回 按钮上的文本移动Safari当我的输入元素聚焦时的键盘 我知道你可以这样做
  • PHP 中 C++ 的虚函数相当于什么?

    Is it abstract function xxx 我刚刚做了一个测试 似乎表明私有方法也是虚拟的 class a private function test echo 1 class b extends a private funct
  • C++:如何从外部调用父类函数

    I have class A public virtual void foo class B public A public void foo B ptr new B 我想给A打电话foo 直接使用 ptr 指针 当我尝试时 A ptr g
  • 虚拟属性和延迟加载

    根据定义 虚拟属性或方法是对要重写的子类可见的方法 但是 NHibernate 使用虚拟属性来确保延迟加载 我的问题不是关于NHibernate 而是如何使用虚拟属性来实现延迟加载 虚拟财产是否还有我不知道的隐藏行为 它们被声明为 virt
  • 虚拟继承[重复]

    这个问题在这里已经有答案了 虚拟 继承是什么意思 我看到了下面的代码 没明白关键字的意思virtual在以下情况下 class A class B public virtual A 虚拟继承用于解决 DDD 问题 Dreadful Diam
  • C++ 重载虚函数发出 clang 警告?

    clang 在编译以下代码时发出警告 struct Base virtual void get char e virtual void get char e int index struct Derived public Base virt
  • 如何在不使用鼠标的情况下执行虚拟鼠标单击C# [重复]

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

    我已经在 Ubuntu 上的 opt lampp 目录中安装了 XAMPP 并且想要设置一些虚拟主机 Apache 虚拟主机教程说明放置
  • 比较:接口方法、虚方法、抽象方法

    它们各自的优点和缺点是什么 接口方法 虚拟方法 抽象方法 什么时候应该选择什么 做出这一决定时应牢记哪些要点 虚拟和抽象几乎是一样的 虚方法在基类中有一个实现 可以选择重写 而抽象方法则没有 并且must在子类中被覆盖 否则它们是相同的 在
  • C++ 虚拟关键字与重写函数

    我正在学习c 并且正在学习virtual关键字 我在互联网上搜索试图理解它但无济于事 我进入编辑器并做了以下实验 期望它打印两次基本消息 因为我的印象是需要 virtual 关键字来覆盖函数 然而 它打印出了两条不同的消息 有人可以向我解释
  • C++继承自具有相同虚函数名的多个基类

    我尝试了这段代码 class A virtual void foo 0 class B virtual void foo 0 class C public A public B virtual void A foo virtual void
  • 具有多播和单播的 DDS 配置

    我仍在尝试理解 DDS 及其概念 我有一个配置 其中两台笔记本电脑运行基于 dds 的应用程序 我的环境不允许多播 因此我决定采用点对点连接 单播 为了将两台笔记本电脑置于同一网络中 我使用以太网电缆连接它们 不确定是否有必要 现在我没有更
  • 有什么办法可以在抽象基类中拥有模板函数吗?

    我正在尝试创建一个配置管理器类 它可以通过 std string 存储任意对象 我的界面 抽象基类 的最初想法是这样的 当然这是非常不完整的 class ConfigurationManager public static boost sh

随机推荐