欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[ros2学习]-Client Libraries - 创建工作空间

程序员文章站 2022-07-14 22:16:30
...

前言

主要学习怎么使用客户端库来实现自己的功能,主要介绍C++ 和python 两种,其他的我不太会。。
因为卡面发现dashing版本有很多命令不能用,我这边切eloquent来学习
目前ros2 支持的库有以下这么多

基于ros_tutorials 学习 ,可以从以下几个网站学习

创建工作空间

① 背景

工作区是-个包含ROS 2包的目录。在使用ROS 2之前,必须在要使用的终端安装ros2的安装工作区(通过 source your_ws/install/setup.bash)。这样就可以使用ROS2 自带的软件包。
可以自己创建自定义的工作空间,官方推荐,可以创建一个底层工作空间,和业务工作空间,底层包含所有业务的依赖,也就是模块化

② 前提

已经有的不用重复安装

  • 安装ros2
  • 安装colcon sudo apt install python3-colcon-common-extensions
  • 安装git sudo apt install git
  • 安装小乌龟 sudo apt install ros-<distro>-turtlesim
  • 安装rosdep sudo apt-get install python-rosdep
  • 基本的linux 命令,不会的这里查http://www.ee.surrey.ac.uk/Teaching/Unix/
  • 文本编辑器,我这边C++用的Clion, python用的pycharm

③ 任务

Ⅰ安装ros 2 环境

安装ros2 的环境,通过source
在终端执行:

source /opt/ros/<distro>/setup.bash

例子:

source /opt/ros/eloquent/setup.bash

推荐写入启动文件.bashrc里,这样就不用敲了,也不会忘记

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

Ⅱ 创建文件夹

每个工作空间搞一个文件夹就行,最好名字显义
官方用的dev_ws 代表development workspace

mkdir dev_ws
mkdir dev_ws/src
cd dev_ws/src

自己的包就搞到src下面去就行

Ⅲ clone 教程代码

dev_ws/src路径下执行命令:git clone https://github.com/ros/ros_tutorials.git -b eloquent-devel

下面这个样子就是下载好了
[ros2学习]-Client Libraries - 创建工作空间

Ⅳ 解决依赖

以后自己使用别人的包的时候,也是这个解决依赖问题的

~/dev_ws 路径下执行 sudo rosdep install -i --from-path src --rosdistro eloquent -y
[ros2学习]-Client Libraries - 创建工作空间
报错的话,按照要求操作就行

sudo rosdep init
rosdep update

init 老是失败的话,自己想办法吧,网不好
[ros2学习]-Client Libraries - 创建工作空间

Ⅴ 用colcon 编译

~/dev_ws路径下执行编译,命令是这个colcon build
[ros2学习]-Client Libraries - 创建工作空间
colcon build的其他有用参数:

  • --packages-up-to 生成所需的包及其所有依赖项,但不是整个工作区(节省时间)
  • --symlink-install 避免了每次调整python脚本时都需要重新构建
  • --event-handlers console_direct+ 在生成时显示控制台输出

Ⅵ 安装自定义工作空间

默认 安装路径的setup.bash 是自动执行的,所以我们只需要执行dev_ws 下面的setup.bash
可以通过两种方式执行

  • . install/local_setup.bash
  • source install/local_setup.bash

自定义的工作空间的同名包会覆盖安装路径下的,这个看下研究下setup.bash 就知道了
[ros2学习]-Client Libraries - 创建工作空间

Ⅶ 修改覆盖成

修改 ~/dev_ws/src/ros_tutorials/turtlesim/src/turtle_frame.cpp 52行,改成setWindowTitle("MyTurtleSim")
然后编译运行
[ros2学习]-Client Libraries - 创建工作空间
所以环境不一样,执行的结果也不一样,左边是没有执行安装覆盖层的,右边是安装了的

④ 总结

在本教程中,您将主要的ROS 2发行版安装作为基础,并通过在新工作区中克隆和构建软件包来创建了覆盖层(自定义咯)。如您在修改过的turtlesim中所看到的,覆盖层位于路径的前面,并且优先于底层(/opt/ros)。

建议使用覆盖层来处理少量软件包,因此您不必将所有内容都放在同一工作区中,而不必在每编译都很费时间。

相关标签: # ros2 学习