从零开始的ROS2学习记录——2·相关环境配置

一、相关环境配置

在安装ROS2之前,我们需要先将环境配置好,这样才能保证ROS2的安装及日后运行操作。ROS2是结合了C++和Python3的特点进行重新设计的,因此需要配置好C++、Python的环境,当然ROS2支持多种编程语言,但这里先针对C++和Python进行简单的环境配置。

默认的Ubuntu软件源包含了一个软件包组:build-essential,该包组包含了GNU编辑器集合、GNU调试器,以及其他编译软件所必须的开发库和工具,所以先安装build-essential。

sudo apt install build-essential 

二、Python的配置

由于Ubuntu是自带了Python的,先来看一下目前环境中Python的相关文件和链接。

cd /usr/bin
ls -l | grep python

可以 看到目前是python3指向python3.10,并没有python指向python3的链接,输入指令:

sudo ln -s /usr/bin/python3 /usr/bin/python

随后再次执行命令可以看到出现了python到python3的链接。 

 

写一个简单的Python代码进行运行,测试Python是否配置好,测试的简单代码如下。

import os

for a in range(10):

    if a < 10:

        print('a = ' , a)

        a += 1
    else:
        break;
print("The End!")

代码正常运行,证明Python已经配置好了。

三、验证C++的编译环境配置

简单写一个测试代码:

#include <iostream>
using namespace std;
int main()
{
    for(int a = 5; a < 10; a++)
    {
        cout << "a = " << a << endl;
    }
    return 0;
}

先用传统的编译方法编译该代码,输入指令:

g++ demo.cpp -o demo.exe

 可以看到成功编译出可执行程序,并且可以正常运行,接着使用make工具进行操作,先写一个简单的makefile

# 预定义变量  

CC = g++  

CFLAGS = -c -Wall  

LDFLAGS =  


# 预定义目标  

SOURCES = demo.cpp  

OBJS = $(SOURCES:.cpp=.o)  

BIN = demo  


# 默认目标  

all: $(BIN)  


# 链接目标  

$(BIN): $(OBJS)  

	$(CC) $(LDFLAGS) $(OBJS) -o $@  

# 编译目标  

.cpp.o:  

	$(CC) $(CFLAGS) $< -o $@  

clean:  

	rm -rf $(OBJS) $(BIN)

 在终端输入make指令进行编译,随后运行代码,代码成功运行则说明C++的编译环境没有问题

由于makefile比较麻烦,所以一般用CMake工具进行编译,先用指令查看Ubuntu是否安装了CMake:

cmake --version

可以看到目前Ubuntu是没有安装cmake的,只需要按照指示进行安装即可。 

sudo apt  install cmake

 

安装完成后再输入cmake --version,就可以看到已安装的cmake版本了,以上就完成了一些相关环境的配置工作,接下来就要进行ROS2的安装。

### ROS2 学习教程和资源 对于希望深入学习ROS2的初学者和开发者而言,存在多种高质量的学习资料可供利用。 #### 中文教程资源 一份非常有价值的中文教程可以从特定仓库获得。这份文档是对官方ROS2网站内容的翻译版本,旨在帮助中文使用者更好地理解ROS2相关概念和技术细节[^1]。此教程不仅覆盖了基础知识,还包含了进阶技巧,适用于不同程度的学习者。 #### 视频教程推荐 除了书面材料外,在线视频也是一种有效的学习方式。“鱼香ROS”频道提供的系列课程《动手学ROS2》通过实际案例讲解如何从零开始掌握ROS2的核心要素,包括环境搭建、节点编程以及常见问题解决方法等[^2]。 #### 架构层面的理解 了解ROS2内部架构有助于更深层次地把握其工作原理: - **操作系统支持**:无论是Linux还是其他主流平台如Windows或macOS都能很好地运行ROS2应用;这部分主要依赖于宿主机所提供的底层设施来完成硬件交互等功能[^3]。 - **DDS实现层**:作为中间件的一部分负责数据分发服务(Data Distribution Service),它实现了跨进程间高效可靠的消息传递机制,并且通过对多个供应商提供的API进行标准化处理以确保兼容性和灵活性。 - **抽象DDS层(RMW)**:在此之上构建了一套更为简洁易用的接口——即所谓的“客户端库”,它们屏蔽掉了大部分复杂的配置选项从而降低了开发难度并提高了生产效率。 - **ROS2客户端库(RCL)**:针对不同编程语言设计有不同的绑定形式(例如Python版rclpy 和 C++ 版 rclcpp),允许程序员按照自己的偏好编写机器人应用程序的同时享受一致性的体验。 ```python import rclpy from rclpy.node import Node class MinimalPublisher(Node): def __init__(self): super().__init__('minimal_publisher') self.publisher_ = self.create_publisher(String, 'topic', 10) timer_period = 0.5 # seconds self.timer = self.create_timer(timer_period, self.timer_callback) self.i = 0 def main(args=None): rclpy.init(args=args) minimal_publisher = MinimalPublisher() rclpy.spin(minimal_publisher) minimal_publisher.destroy_node() rclpy.shutdown() if __name__ == '__main__': main() ``` 这段简单的Python脚本展示了怎样快速启动一个发布字符串消息至指定主题(topic)上的ROS2节点实例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值