ROS2在ubuntu中的应用开发的一般过程和命令及安装

 第一步:ROS2一键安装和VSCODE调试开发

1、感谢鱼香社区的工具,贡献特别大!根据ubuntu版本选择ROS2版本安装ROS2。同时安装VSCODE。

wget http://fishros.com/install -O fishros && . fishros

2、按照如下命令行方式打开VSCODE,方便调试

source install/setup.bash && code

 第二步:使用工作空间(workspace)、包(package)和节点(node)管理

ROS2的项目

参考连接:  https://www.yahboom.com/study/raspberry5          提取码:erwp

1、ROS2的项目文件树

ROS2工作空间的目录结构如下: 

WorkSpace --- 自定义的工作空间。
    |--- build:存储中间文件的目录,该目录下会为每一个功能包创建一个单独子目录。
    |--- install:安装目录,该目录下会为每一个功能包创建一个单独子目录。
    |--- log:日志目录,用于存储日志文件。
    |--- src:用于存储功能包源码的目录。
        |-- C++功能包
            |-- package.xml:包信息,比如:包名、版本、作者、依赖项。
            |-- CMakeLists.txt:配置编译规则,比如源文件、依赖项、目标文件。
            |-- src:C++源文件目录。
            |-- include:头文件目录。
            |-- msg:消息接口文件目录。
            |-- srv:服务接口文件目录。
            |-- action:动作接口文件目录。
        |-- Python功能包
            |-- package.xml:包信息,比如:包名、版本、作者、依赖项。
            |-- setup.py:与C++功能包的CMakeLists.txt类似。
            |-- setup.cfg:功能包基本配置文件。
            |-- resource:资源目录。
            |-- test:存储测试相关文件。
            |-- 功能包同名目录:Python源文件目录。
 

另外,无论是Python功能包还是C++功能包,都可以自定义一些配置文件相关的目录。 

|-- C++或Python功能包
    |-- launch:存储launch文件。
    |-- rviz:存储rviz2配置相关文件。
    |-- urdf:存储机器人建模文件。
    |-- params:存储参数文件。
    |-- world:存储仿真环境相关文件。
    |-- map:存储导航所需地图文件。
    |-- ...... 

上述这些目录也可以定义为其他名称,或者根据需要创建其他一些目录。

2、创建工作空间(workspace)的命令行

mkdir -p my_ws/src 

cd my_ws 

colcon build 

3、创建功能包

命令行模板:

ros2 pkg create <package_name> --build-type <build-type> --dependencies <dependencies> --node-name <node-name>

创建C++功能包

ros2 pkg create pkg_helloworld_cpp --build-type ament_cmake --dependencies rclcpp --node-name helloworld

创建Python功能包

ros2 pkg create pkg_helloworld_py --build-type ament_python --dependencies rclpy --node-name helloworld

创建Python功能包 server intereface

ros2 pkg create pkg_interfaces --build-type ament_cmake --dependencies rosidl_default_generators sensor_msgs --license Apache-2.0

4、编译

在创建好的功能包中,我们可以继续完成代码的编写,之后需要编译和配置环境变量,才能正常运行:

cd ~/my_ws

# 编译环境ROS

source /opt/ros/foxy/setup.bash

# 编译工作空间所有功能包
colcon build
# 编译指定功能包(一个或多个)
colcon build --packages-select 功能包列表
#配置环境变量
source install/setup.bash

#清空历史以便于重新编译

rm -rf build install log

5、运行特定节点或查看通信接口定义的命令行

# 运行指定包内的指定节点

ros2 run pkg_helloworld_py helloworld

#查看通信接口定义

 ros2 interface show  pkg_interfaces/srv/Add

 

 

在 RDK3(基于 Ubuntu 20.04)上使用国内镜像源卸载并重新安装 ROS2 Foxy 的完整步骤:

 

步骤 1:卸载现有 ROS2 Foxy

bash
# 1.1 停止所有 ROS 相关进程
ros2 daemon stop

# 1.2 移除所有 ROS2 Foxy 包
sudo apt remove ~nros-foxy-* && sudo apt autoremove

# 1.3 移除残留文件和配置
sudo rm -rf /opt/ros/foxy
rm -rf ~/.ros
rm -rf ~/.config/ros
sudo rm /etc/ros/rosdep/sources.list.d/20-default.list

# 1.4 清理环境变量
sed -i '/source \/opt\/ros\/foxy\/setup.bash/d' ~/.bashrc
sed -i '/ROS_DISTRO/d' ~/.bashrc
sed -i '/ROS_VERSION/d' ~/.bashrc
sed -i '/RMW_IMPLEMENTATION/d' ~/.bashrc
sed -i '/LD_LIBRARY_PATH/d' ~/.bashrc
sed -i '/PYTHONPATH/d' ~/.bashrc

# 1.5 更新环境
source ~/.bashrc

步骤 2:配置国内软件源

bash
# 2.1 备份原有源列表
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

# 2.2 使用清华源替换(Ubuntu 20.04)
sudo sed -i 's@//.*archive.ubuntu.com@//mirrors.tuna.tsinghua.edu.cn@g' /etc/apt/sources.list
sudo sed -i 's@//.*security.ubuntu.com@//mirrors.tuna.tsinghua.edu.cn@g' /etc/apt/sources.list

# 2.3 更新系统
sudo apt update && sudo apt upgrade -y
sudo apt autoremove

步骤 3:使用国内镜像安装 ROS2 Foxy

bash
# 3.1 安装基础依赖
sudo apt install -y \
    curl \
    gnupg2 \
    lsb-release \
    software-properties-common \
    build-essential \
    python3-pip \
    python3-argcomplete

# 3.2 设置语言环境
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

# 3.3 添加国内 ROS2 镜像源(使用清华源)
sudo curl -sSL https://mirrors.tuna.tsinghua.edu.cn/rosdistro/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

# 3.4 更新并安装 ROS2 Foxy
sudo apt update
sudo apt install -y ros-foxy-desktop python3-rosdep

步骤 4:配置 rosdep 使用国内源

bash
# 4.1 配置 rosdep 使用清华源
export ROSDISTRO_INDEX_URL=https://mirrors.tuna.tsinghua.edu.cn/rosdistro/index-v4.yaml
sudo rosdep init --include-eol-distros
rosdep update

# 4.2 永久设置 rosdep 源
echo "export ROSDISTRO_INDEX_URL=https://mirrors.tuna.tsinghua.edu.cn/rosdistro/index-v4.yaml" >> ~/.bashrc
source ~/.bashrc

步骤 5:配置环境

bash
# 5.1 添加环境变量
echo "source /opt/ros/foxy/setup.bash" >> ~/.bashrc
echo "export RMW_IMPLEMENTATION=rmw_fastrtps_cpp" >> ~/.bashrc
source ~/.bashrc

# 5.2 配置库路径
sudo sh -c 'echo "/opt/ros/foxy/lib" > /etc/ld.so.conf.d/ros-foxy.conf'
sudo ldconfig

# 5.3 创建必要的符号链接
sudo ln -sf /opt/ros/foxy/lib/librmw_fastrtps_cpp.so /usr/lib/
sudo ln -sf /opt/ros/foxy/lib/librclpy_common.so /usr/lib/
sudo ln -sf /opt/ros/foxy/lib/librcl.so /usr/lib/
sudo ldconfig

步骤 6:验证安装

bash
# 6.1 测试核心功能
source /opt/ros/foxy/setup.bash
ros2 run demo_nodes_cpp talker

# 在另一个终端运行:
# ros2 run demo_nodes_cpp listener

# 6.2 检查版本
ros2 doctor --report

# 6.3 测试 Python 导入
python3 -c "import rclpy; print('rclpy version:', rclpy.__version__)"

步骤 7:重建工作区

bash
# 7.1 创建工作区
mkdir -p ~/yahboomcar_ws/src
cd ~/yahboomcar_ws

# 7.2 设置国内 pip 源(可选)
mkdir -p ~/.pip
echo "[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn" > ~/.pip/pip.conf

# 7.3 安装依赖
source /opt/ros/foxy/setup.bash
rosdep install --from-paths src --ignore-src -y --skip-keys "fastcdr rti-connext-dds-6.0.1"

# 7.4 构建工作区
colcon build --symlink-install

# 7.5 运行你的节点
source install/setup.bash
ros2 run pkg_helloworld_py helloworld

国内镜像源参考列表

  1. 系统源:

    • 清华:https://mirrors.tuna.tsinghua.edu.cn/ubuntu/

    • 阿里云:https://mirrors.aliyun.com/ubuntu/

  2. ROS2 源:

    • 清华:https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu/

    • 中科大:https://mirrors.ustc.edu.cn/ros2/ubuntu/

  3. rosdistro 源:

    • 清华:https://mirrors.tuna.tsinghua.edu.cn/rosdistro/

    • 中科大:https://mirrors.ustc.edu.cn/rosdistro/

  4. pip 源:

    • 清华:https://pypi.tuna.tsinghua.edu.cn/simple

    • 阿里云:https://mirrors.aliyun.com/pypi/simple/

常见问题解决方案

1. 如果安装速度慢:

bash
# 使用 apt-fast 替代 apt
sudo add-apt-repository ppa:apt-fast/stable
sudo apt install apt-fast
sudo apt-fast install ros-foxy-desktop

2. 如果 rosdep 更新失败:

bash 
# 手动下载配置文件
sudo mkdir -p /etc/ros/rosdep/sources.list.d/
sudo curl -o /etc/ros/rosdep/sources.list.d/20-default.list https://mirrors.tuna.tsinghua.edu.cn/git/rosdistro/rosdep/raw/master/20-default.list
rosdep update

3. 如果构建工作区时依赖问题:

bash
# 跳过有问题的依赖
rosdep install --from-paths src --ignore-src -y --skip-keys "KEY1 KEY2"

# 手动安装特定依赖
sudo apt install ros-foxy-PACKAGE_NAME

完整卸载脚本(使用国内源)

创建 clean_ros_foxy.sh

bash
#!/bin/bash

# 停止 ROS 进程
ros2 daemon stop > /dev/null 2>&1

# 卸载 ROS
sudo apt remove -y ~nros-foxy-* 
sudo apt autoremove -y

# 清理文件
sudo rm -rf /opt/ros/foxy
rm -rf ~/.ros ~/.config/ros
sudo rm -f /etc/ros/rosdep/sources.list.d/20-default.list
sudo rm -f /etc/ld.so.conf.d/ros-foxy.conf

# 清理环境变量
sed -i '/ros/d' ~/.bashrc
sed -i '/RMW_IMPLEMENTATION/d' ~/.bashrc
sed -i '/LD_LIBRARY_PATH/d' ~/.bashrc
sed -i '/PYTHONPATH/d' ~/.bashrc

# 恢复国内源
sudo cp /etc/apt/sources.list.bak /etc/apt/sources.list
sudo apt update

echo "ROS Foxy 已完全卸载"

使用方式:

bash
chmod +x clean_ros_foxy.sh
sudo ./clean_ros_foxy.sh

这些步骤使用了国内镜像源来加速下载和安装过程,特别适合在中国大陆地区的网络环境。如果在安装过程中遇到特定问题,可以根据错误信息调整对应的镜像源或安装参数。

posted @ 2026-03-16 15:06  辛河  阅读(155)  评论(0)    收藏  举报