【ROS2 入门】虚拟机环境 ubuntu 18.04 ROS2 安装

news2025/1/16 12:58:42

         大家好,我是虎哥,从今天开始,我将花一段时间,开始将自己从ROS1切换到ROS2,做为有别于ROS1的版本,做了很多更新和改变,我还是很期待自己逐步去探索ROS2中的惊喜。在安装过程中我也遇到的一些坑,我自己也尝试填了一部分,未必是全部,但是相信集合大家发布的各种安装教程,你也可以顺利安装。接下来开始我们的ROS初步探索吧。

目录

一、虚拟机系统安装ubuntu 18.04 系统

二、初始化系统

三、安装ROS2 eloquent 版本

3.1 官方部署说明

3.2添加ros2 软件源

3.3安装ros-eloquent和相关依赖

3.3安装python3库

3.4环境变量设置

1、ROS2单独存在

2、ROS1和ROS2共存(我没有实践这条)

四、ROS2依赖配置

4.1解决功能包依赖

4.2安装colcon编译工具

4.3 验证安装结果

1、查看环境变量printenv | grep -i ROS

2、运行经典小乌龟

3、实验通信

五、使用ros2

5.1创建ros2工作空间

5.2创建功能包

5.3编译

一、虚拟机系统安装ubuntu 18.04 系统

开始安装

 需要等待系统安装完毕。

 我虚拟机硬件配置为:

二、初始化系统

关闭自动更新

 确认系统版本

#更新

sudo apt-get update
#更换源
sudo apt-get install -y  wget
sudo apt-get install apt-transport-https -y
#18.04
sudo cp -a /etc/apt/sources.list /etc/apt/sources.list.bak
#华为源 18.04 
sudo sed -i "s@http://.*archive.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list
sudo sed -i "s@http://.*security.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list
​
sudo apt-get update

 还有报错,这个是华为源的BUG,可以先不用理。

#安装常用工具组件
sudo apt-get install -y \
    vim \
    lrzsz \
    curl 

三、安装ROS2 eloquent 版本

3.1 官方部署说明

官网教程入口:ROS 2 Eloquent Elusor Installation — ROS 2 Documentation: Eloquent documentation

我们综合一下,国内的教程和官方教程,亲自测试了如下教程

3.2添加ros2 软件源

sudo apt update && sudo apt install curl gnupg2 lsb-release
​
#这句不好用,网上找了另外一条
#curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
curl http://repo.ros2.org/repos.key | sudo apt-key add -
​
sudo sh -c 'echo "deb [arch=amd64] http://packages.ros.org/ros2/ubuntu bionic main" > /etc/apt/sources.list.d/ros2-latest.list'

3.3安装ros-eloquent和相关依赖

sudo apt update
sudo apt install ros-eloquent-desktop

 开始漫长等待

 注意,你的网还是好一点,就少出点问题,我之前切换到了我手机热点上。

 下载完后就开始安装了。

 安装完毕。

3.3安装python3库

sudo apt install -y libpython3-dev python3-pip
pip3 install -U argcomplete

安装RMW implementation(跳过 体积太大,费时间)

sudo apt update
sudo apt install ros-eloquent-rmw-connext-cpp

3.4环境变量设置

1、ROS2单独存在

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

2、ROS1和ROS2共存(我没有实践这条)

echo "ros melodic(1) or ros2 dashing(2)?"
read edition
if [ "$edition" -eq "1" ];then
  source /opt/ros/melodic/setup.bash
  #在这里继续添加source ROS1的工作空间
else
  source /opt/ros/eloquent/setup.bash
  #source ~/ros2_ws/install/local_setup.bash
fi
推荐内容
 

四、ROS2依赖配置

4.1解决功能包依赖

sudo pip3 install rosdepc
sudo rosdepc init
rosdepc update

 如果出现如下错误:

sudo rosdep fix-permissions

4.2安装colcon编译工具

sudo apt-get install python3-colcon-ros

4.3 验证安装结果

1、查看环境变量printenv | grep -i ROS

printenv | grep -i ROS
LD_LIBRARY_PATH=/opt/ros/eloquent/opt/yaml_cpp_vendor/lib:/opt/ros/eloquent/opt/rviz_ogre_vendor/lib:/opt/ros/eloquent/lib/x86_64-linux-gnu:/opt/ros/eloquent/lib
AMENT_PREFIX_PATH=/opt/ros/eloquent
ROS_VERSION=2
ROS_LOCALHOST_ONLY=0
ROS_PYTHON_VERSION=3
PYTHONPATH=/opt/ros/eloquent/lib/python3.6/site-packages
PATH=/opt/ros/eloquent/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
ROS_DISTRO=eloquent

2、运行经典小乌龟

Install the turtlesim package for your ROS 2 distro:

sudo apt update

sudo apt install ros-eloquent-turtlesim

Check that the package installed:

ros2 pkg executables turtlesim

To start turtlesim, enter the following command in your terminal:

ros2 run turtlesim turtlesim_node

新开一个窗口

ros2 run turtlesim turtle_teleop_key

使用键盘前后左右键就可以控制小乌龟运动了。感觉很亲切。

在打开一个窗口,依次使用下面命令,和ROS1下就很多类似。

ros2 node list
ros2 topic list
ros2 service list
ros2 action list

打印输出:

ros2 node list
    /teleop_turtle
    /turtlesim
ros2 topic list
    /parameter_events
    /rosout
    /turtle1/cmd_vel
    /turtle1/color_sensor
    /turtle1/pose
ros2 service list
    /clear
    /kill
    /reset
    /spawn
    /teleop_turtle/describe_parameters
    /teleop_turtle/get_parameter_types
    /teleop_turtle/get_parameters
    /teleop_turtle/list_parameters
    /teleop_turtle/set_parameters
    /teleop_turtle/set_parameters_atomically
    /turtle1/set_pen
    /turtle1/teleport_absolute
    /turtle1/teleport_relative
    /turtlesim/describe_parameters
    /turtlesim/get_parameter_types
    /turtlesim/get_parameters
    /turtlesim/list_parameters
    /turtlesim/set_parameters
    /turtlesim/set_parameters_atomically
ros2 action list
    /turtle1/rotate_absolute

3、实验通信

开一个终端执行

ros2 run demo_nodes_cpp talker

开另外一个终端执行

ros2 run demo_nodes_py listener

五、使用ros2

5.1创建ros2工作空间

mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src

5.2创建功能包

ros2 pkg create --build-type ament_cmake testcpp   # c++功能包
ros2 pkg create --build-type ament_python testpython  # python功能包

这里与ros1有区别,创建功能包需要指定语言

robot@ubuntu:~/ros2_ws/src$ ros2 pkg create --build-type ament_python testpython
    going to create a new package
    package name: testpython
    destination directory: /home/robot/ros2_ws/src
    package format: 3
    version: 0.0.0
    description: TODO: Package description
    maintainer: ['robot <robot@todo.todo>']
    licenses: ['TODO: License declaration']
    build type: ament_python
    dependencies: []
    creating folder ./testpython
    creating ./testpython/package.xml
    creating source folder
    creating folder ./testpython/testpython
    creating ./testpython/setup.py
    creating ./testpython/setup.cfg
    creating folder ./testpython/resource
    creating ./testpython/resource/testpython
    creating ./testpython/testpython/__init__.py
    creating folder ./testpython/test
    creating ./testpython/test/test_copyright.py
    creating ./testpython/test/test_flake8.py
    creating ./testpython/test/test_pep257.py
robot@ubuntu:~/ros2_ws/src$ ros2 pkg create --build-type ament_cmake testcpp
    going to create a new package
    package name: testcpp
    destination directory: /home/robot/ros2_ws/src
    package format: 3
    version: 0.0.0
    description: TODO: Package description
    maintainer: ['robot <robot@todo.todo>']
    licenses: ['TODO: License declaration']
    build type: ament_cmake
    dependencies: []
    creating folder ./testcpp
    creating ./testcpp/package.xml
    creating source and include folder
    creating folder ./testcpp/src
    creating folder ./testcpp/include/testcpp
    creating ./testcpp/CMakeLists.txt

5.3编译

cd ~/ros2_ws/
colcon build

纠错,疑问,交流: 911946883@qq.com  

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

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

相关文章

阿里云服务器安装wireshark图形界面与远程连接配置(使用tigervnc)

tags: Server Ubuntu Wireshark 写在前面 昨天折腾了一下透视HTTP协议这门课的实验环境, 通过阿里云的轻量应用服务器来完成了, 但是还差一步, 那就是wireshark的安装, 虽然通过apt安装好了, 但是打不开实在是烦人, 后来经过各种搜索, 我发现问题出在了tightvnc上, 这个vnc服…

vue2中swiper6不能正常使用的解决

第一步安装swiper6 第二步在main.js中引入swiper6 注意&#xff1a;也可以在其他地方引入&#xff0c;但是在main.js中引入&#xff0c;所有的组件都能用swiper的样式 样式的引入&#xff0c;不是平常的引入&#xff0c;引入代码如下 注意&#xff1a;一定要这样引入样式 …

【自学Python】Python比较运算符

Python比较运算符 Python比较运算符教程 在 Python 中&#xff0c;比较运算符的结果都是 bool 型&#xff0c;也就是要么是 True&#xff0c;要么是 False。关系表达式经常用在 if 结构的条件中或 循环结构 的条件中。 Python比较运算符语法 比较运算符功能说明>大于如果…

正则表达式表单校验实例

描述 一个简单的注册页面&#xff0c;对输入框进行了简单的正则表达式校验 代码 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title></title><link rel"stylesheet" href"css/index2.css" …

深入思考 Schema 管理的几个基本问题

本文作者&#xff1a;王大龙&#xff0c;数据分析领域资深工程师&#xff0c;观远产品中一切数据的风暴降生之主&#xff0c;元数据世界的精神领袖&#xff0c;数据治理的永恒守望者。前言我发现理解某一个具体「事物」最好的方式是先去理解其背后所遵循的「范式」。范式是一个…

java-Spring集成定时器使用方法

文章目录定时器配置文件测试文件配置参数说明SpringBoot集成schedulepom.xml文件启动类运行结果定时器配置文件 spring核心配置文件 <?xml version"1.0" encoding"UTF-8"?> <beans:beans xmlns:xsi"http://www.w3.org/2001/XMLSchema-in…

python笔记之转义问题 字符串前缀 正则表达式

Python的字符串自己也用\转义 s ABC\\-001 # Python的字符串 # 对应的正则表达式字符串变成&#xff1a; # ABC\-001建议使用Python的r前缀&#xff0c;就不用考虑转义的问题了 s rABC\-001 # Python的字符串 # 对应的正则表达式字符串不变&#xff1a; # ABC\-001关于斜杠…

RGB、LVDS、MIPI和EDP接口液晶屏

RGB、LVDS、MIPI和EDP接口液晶屏概述一、RGB_TTL二、LVDS三、MIPI&#xff08;手机、平板等数码产品应用场合&#xff09;四、eDP接口&#xff08;笔记本、工控机、工业平板等应用场合&#xff0c;用来取代LVDS接口&#xff09;五、应用概述 液晶屏有RGB、LVDS、MIPI DSI和EDP等…

《MYSQL实战45讲》笔记(1-10)

1&#xff1a;一条SQL查询语句是如何执行的&#xff1f; 下面我们来结合一张图来了解MySQL的基本架构 总体来看&#xff0c;MySQL分为服务层和存储引擎两个部分。其中存储引擎负责数据的存储和提取&#xff0c;而服务层负责连接的建立、分析、优化、执行等其他步骤。 常见的…

虚幻引擎中GPU Lightmass全局光照的使用步骤

GPU Lightmass (GPULM) 是一种光烘焙方法&#xff0c;它预先计算来自具有 Stationary 或 Static 移动性的灯光的复杂光交互&#xff0c;并将该数据存储在创建的应用于场景几何体的光照贴图纹理中。GPU Lightmass 显着减少了为复杂场景计算、构建和生成光照数据所需的时间&#…

MQTT QoS 0, 1, 2 介绍

什么是 QoS 很多时候&#xff0c;使用 MQTT 协议的设备都运行在网络受限的环境下&#xff0c;而只依靠底层的 TCP 传输协议&#xff0c;并不能完全保证消息的可靠到达。因此&#xff0c;MQTT 提供了 QoS 机制&#xff0c;其核心是设计了多种消息交互机制来提供不同的服务质量&…

自监督学习之掩码自动编码器(Masked Autoencoders, MAE)——音频识别方面

自监督学习之掩码自动编码器(Masked Autoencoders, MAE)——音频识别方面 1.参考文献 《Masked Autoencoders that Listen》 2.背景 Transformers和self-supervised learning(自监督学习)占据了计算机视觉(Computer Vision,CV)和自然语言处理(natural language processing, …

百度工程师带你玩转正则

作者 | 向阳 导读 在很多技术领域&#xff0c;都有正则的身影。但许多像我一样的人&#xff0c;只闻其名。因此将正则常用知识汇总&#xff0c;便于查阅。正则表达式&#xff08;Regular Expression&#xff09;是用于描述一组字符串特征的模式&#xff0c;用来匹配特定的字符串…

机械--UG NX2007改变零件的默认颜色

UG&#xff08;现在的新版本叫NX&#xff0c;但一般人仍然沿用UG的叫法&#xff0c;下同&#xff09;&#xff0c;新建零件时&#xff0c;零件的默认颜色是橙色的&#xff0c;个人很不喜欢。 当然&#xff0c;实体化以后&#xff0c;可以改变它的颜色&#xff0c;选中实体以后…

傻瓜式裂变—竖屏视频超级原创,呆头鹅批量剪辑软件上万人使用

呆头鹅批量剪辑软件优势&#xff1a; 专业的技术开发团队&#xff0c;成熟的技术架构&#xff0c;完整的售后服务&#xff0c;我们为您解决所有的后顾之忧 .几乎涵盖市面上已知的所有剪辑功能.几乎涵盖市面上已知的所有剪辑功能.完成通知&#xff0c;运行间隔提醒&#xf…

201:vue+openlayers:加载geojson文件形成围栏,可添加、修改、删除feature,导出geojson

第201个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+openlayers中实现围栏列表与图中feature双向互动功能。 利用GeoJSON().readFeatures获得到features,通过转换在地图上形成图形,通过新增、修改、删除feature,可以更改整体的features关系。点击导出可以将修改后的…

工厂安全着装识别检测算法 python

工厂安全着装识别检测算法通过Python基于YOLOv5技术&#xff0c;对现场画面中的人员着装穿戴进行实时分析检测自动抓拍存档告警。Python是一种由Guido van Rossum开发的通用编程语言&#xff0c;它很快就变得非常流行&#xff0c;主要是因为它的简单性和代码可读性。它使程序员…

现在才开始学测试晚了么

相信问这样问题的朋友&#xff0c;对软件测岗位存在着很深的误解。实际上&#xff0c;相对于其他的技术岗位来讲&#xff0c;软件测试入门可以说是相对简单的了&#xff0c;因此多晚学习都来得及。其次&#xff0c;这个行业的就业前景广阔&#xff0c;像测试主管、自动化架构师…

k8s之Service

写在前面 本文接k8s之DaemonSet 。 通过Deployment我们可以实现一直有指定个数的POD在运行&#xff0c;而通过DaemonSet可以实现在每个Node上都有一个POD在运行&#xff0c;不管是这两种方式中的哪一种&#xff0c;都是仅仅实现了有若干个POD在运行的效果&#xff0c;但是还无法…

【AdaBoost算法】

AdaBoost算法的原理介绍 AdaBoost算法核心思想 AdaBoost算法 (Adaptive Boosting) 是一种有效而实用的Boosting算法&#xff0c; 它以一种高度自适应的方法顺序地训练弱学习器。AdaBoost根据前一次的 分类效果调整数据的权重&#xff0c;上一个弱学习器中错误分类样本的权重会…