目录

一、安装依赖

二、源码下载

三、测试

四、Q&S

Q1:编译报错

Q2:rosdep update失败

五、源码结构


一、安装依赖

  • 确保有一个支持UTF-8的locale设置。locale设置例子如下:
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
  • 设置源

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 -
sudo sh -c 'echo "deb [arch=amd64,arm64] http://packages.ros.org/ros2/ubuntu `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list'
  • 安装相关的工具包和依赖

sudo apt update && sudo apt install -y \
  build-essential \
  cmake \
  git \
  python3-colcon-common-extensions \
  python3-lark-parser \
  python3-pip \
  python-rosdep \
  python3-vcstool \
  wget
# install some pip packages needed for testing
python3 -m pip3 install -U \
  argcomplete \
  flake8 \
  flake8-blind-except \
  flake8-builtins \
  flake8-class-newline \
  flake8-comprehensions \
  flake8-deprecated \
  flake8-docstrings \
  flake8-import-order \
  flake8-quotes \
  pytest-repeat \
  pytest-rerunfailures \
  pytest \
  pytest-cov \
  pytest-runner \
  setuptools

注意:可以通过python3 -V查看python3链接的版本,如果是python3.9后续的编译可能会有问题

# install Fast-RTPS dependencies
sudo apt install --no-install-recommends -y \
  libasio-dev \
  libtinyxml2-dev

二、源码下载

  • 创建工作空间并进行下载源码

mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
wget https://raw.githubusercontent.com/ros2/ros2/dashing/ros2.repos
vcs import src < ros2.repos
  • 用rosdep安装依赖项

sudo rosdep init
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro dashing -y --skip-keys "console_bridge fastcdr fastrtps libopensplice67 libopensplice69 rti-connext-dds-5.3.1 urdfdom_headers"
  • 编译
cd ~/ros2_ws/
colcon build --symlink-install

三、测试

运行talker-listener例子测试是否成功安装

  • 新终端,执行以下命令:

. ~/ros2_ws/install/local_setup.bash
ros2 run demo_nodes_cpp talker
  • 新终端,执行以下命令:
. ~/ros2_ws/install/local_setup.bash
ros2 run demo_nodes_cpp listener

四、Q&S

Q1:编译报错

ERROR:colcon:colcon build: Duplicate package names not supported:

原因:有删除vcstool import的情况下重复import了一次

解决:把src文件夹里面你从ros2的github下载的东西都删除,再做一次vcs import src < ros2.repos

Q2:rosdep update失败

原因: www.rawgithubusercontent.com被墙了,导致下载失败

解决:资源代理;网站https://ghproxy.com/支持github的资源代理,可以用此代理加速rosdep对Github的访问,进而解决rosdep update失败问题。

rep3.py

__init__.py

sources_list.py

五、源码结构

ROS2源码中的rcl和rclcpp

        RCL和RCLCPP是ROS2中两个重要的库,分别对应于ROS中的roscpp和roslib。他们都是ROS2中重要的工具库。

        RCL库是ROS2中的C语言实现,它提供了一组API来访问ROS2节点的底层实现;RCL的主要功能包括:节点管理、时钟管理、参数管理和发布与订阅管理。

        RCLCPP库是ROS2中的C++实现,它基于RCL库,提供了易用的C++ API,方便开发者使用。RCLCPP的主要功能包括:

  • 节点管理:创建、销毁节点,获取节点信息等;
  • 时钟管理:获取系统时间、获取ROS时钟、修改时间等;
  • 参数管理:获取、设置参数等;
  • 发布与订阅管理:创建、销毁发布者和订阅者,发布消息、接受消息等;
  • 服务管理:创建、销毁服务、调用服务等;
  • 定时器管理:创建、销毁定时器,设置定时等。

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐