ROS2初体验——小乌龟测试 安装colcon 构建ROS2工作空间

1.小乌龟测试

ROS2中内置了一些测试案例,用于测试ROS2安装与配置是否正常。

ROS2小乌龟案例:

1.Ctrl + Alt + T打开两个终端;

2.终端1指令:

ros2 run turtlesim turtlesim_node

执行完毕,启动蓝底小乌龟窗口;

3.终端2指令:

ros2 run turtlesim turtle_teleop_key

执行完毕,可以使用键盘控制小乌龟运动。

图例如下:

彩蛋:小乌龟的皮肤

P.S.  在使用键盘控制乌龟运动时,需让鼠标光标聚焦在终端 2 (图中右侧) 中,否则乌龟无响应。

2.安装Colcon

colcon是一个包构建命令行工具用于改进编译,测试和使用多个软件包的工作流程,简单来说即用于编译代码。ROS2默认未安装colcon,故而需要手动安装。

安装代码:

sudo apt install python3-colcon-common-extensions

使用apt还是apt-get?

目前还没有任何 Linux 发行版官方放出 apt-get 将被停用的消息,至少它还有比 apt 更多、更细化的操作功能。对于低级操作,仍然需要 apt-get。

既然两个命令都有用,那么我该使用 apt 还是 apt-get 呢?

作为一个常规 Linux 用户,系统极客建议大家尽快适应并开始首先使用 apt。 不仅因为广大 Linux 发行商都在推荐 apt,更主要的还是它提供了 Linux 包管理的必要选项。

最重要的是,apt 命令选项更少更易记,因此也更易用,所以没理由继续坚持 apt-get。

最后结大家提供两点使用上的建议:

  • apt 可以看作 apt-get 和 apt-cache 命令的子集, 可以为包管理提供必要的命令选项。
  • apt-get 虽然没被弃用,但作为普通用户,还是应该首先使用 apt。

此块引用来自知乎文章:

[Linux]apt 和 apt-get 之间有什么区别? 作者:一口Linux

colcon就相当于ROS1中的catkin工具,可以辅助理解。 

 安装完 colcon 之后,就可以在 ROS2 中编写应用程序了。

小测试

使用colcon构建ROS2工作空间

1.构建colcon_test示例工作空间

1.创建一个工作区的目录colcon_test

cd <目标位置>
mkdir colcon_test && cd colcon_test #创建并打开文件夹

2.下载个clone官方ROS2示例源码(humble版本)测试一下

git clone https://github.com/ros2/examples src/examples -b humble #clone官方示例源码(humble)

3.使用colcon构建工程

 colcon build

4.使用这条语句进行构建时,加上--symlink-install参数允许在调整launch文件时无需重复build(若install文件可能被拷贝至其他机器则该参数会导致源文件无效)

colcon build --symlink-install

等待构建完毕

编完之后的目录结构:

包含build install log src四个部分

build目录存放中间文件,对于每个包,将创建一个子文件,并在其中调用Cmake

install目录是每个包的安装位置

log存放colcon调用的各种日志信息

src用于存放ROS2包的源代码

2.运行节点

1.进入colcon_test,source资源

source ./install/setup.bash

2.运行一个订阅者节点,再打开一个新的终端运行发布者节点

ros2 run examples_rclcpp_minimal_subscriber subscriber_member_function
source install/setup.bash
ros2 run examples_rclcpp_minimal_publisher publisher_member_function

即可见订阅者显示发布者发布的信息。

3.构建一个新ROS2 workspace

从头到尾构建一个自己的ROS2 workspace

1.建立存放目录位置:

mkdir -p colcon_test02/src && cd colcon_test02

2.运行colcon build

colcon build --symlink-install

运行结果:

Summary: 0 packages finished [0.63s]

此时属于自己的新ROS2 workplace已经构建完毕,可以在src文件夹中开始创建功能包了。

Linux mkdir命令 功能描述

使用mkdir命令可以在Linux系统中创建目录。

Linux mkdir命令 语法

mkdir [选项] [目录]

命令中各 [选项] 的含义如表所示

-m <权限模式>

对新创建的目录设置权限,在没有-m选项时,默认权限的755

-v

每次创建新目录都显示信息

-p

可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动创建那些尚不存在的目录,即一次可以建立多个目录

### 关于ROS2的鱼香系列教程 #### ROS2入门篇——初体验 对于希望了解ROS2基础知识的学习者来说,“MOMO的鱼香ROS2”提供了非常有价值的资源。该系列文章不仅涵盖了如何安装适用于Ubuntu 18.04 (Eloquent) 和 Ubuntu 20.04 (Foxy) 的ROS2版本,还深入探讨了ROSROS2之间的差异[^1]。 #### 功能包组织节点示例 在具体的应用层面,通过C++编写的功能包展示了怎样有效地利用工作空间来管理不同类型的节点。这些例子有助于理解最佳实践以及实际开发过程中可能遇到的问题及其解决方案[^2]。 #### 学习建议与预备知识 为了更好地掌握ROS2技术栈,《ROS2机器人中文教程》强调虽然没有严格的前置条件,但是拥有一定的编程背景将会使学习过程更为顺利。这包括但不限于熟悉Linux环境操作、Python或者C++语言特性等[^3]。 ```cpp // C++代码片段展示了一个简单的发布订阅模式下的Publisher实现方式 #include "rclcpp/rclcpp.hpp" using namespace std::chrono_literals; class MinimalPublisher : public rclcpp::Node { public: MinimalPublisher() : Node("minimal_publisher") { publisher_ = this->create_publisher<std_msgs::msg::String>("topic", 10); timer_ = this->create_wall_timer(500ms, [this]() -> void { publish_message(); }); } private: void publish_message() const noexcept { auto message = std::make_unique<std_msgs::msg::String>(); message->data = "Hello, world!"; RCLCPP_INFO(this->get_logger(), "Publishing: '%s'", message->data.c_str()); publisher_->publish(std::move(message)); } rclcpp::TimerBase::SharedPtr timer_; rclcpp::Publisher<std_msgs::msg::String>::SharedPtr publisher_; }; int main(int argc, char *argv[]) { rclcpp::init(argc, argv); rclcpp::spin(std::make_shared<MinimalPublisher>()); rclcpp::shutdown(); } ``` 此段代码演示了创建一个基本的消息发布者的流程,在ROS2环境中发送字符串消息到指定主题上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值