蓝桥云课中支持的ROS1版本有哪些?-2025在线尝试ROS1全家福最方便的打开模式-

indigo之后的LTS全支持

其实,ROS1 indigo kinetic melodic noetic全部都支持的,由于工作任务重加班多,一直没有分享详细的教程。


2022年:曾经版本

蓝桥ROS机器人之曾经新版本(indigo/kinetic/melodic/ardent/dashing)_ros indigo和kinetic区别-CSDN博客


2024年:回复


2025总结版本,2025在线尝试ROS1全家福最方便的打开模式:

indigo

ROS1的版本1.11

kinetic

ROS1的版本1.12


noetic

配置

bash 复制代码
gpg --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
gpg --export C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 | sudo tee /usr/share/keyrings/ros.gpg > /dev/null
bash 复制代码
sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/ros.gpg] https://mirrors.aliyun.com/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

测试

ROS1的版本1.15

更多版本由于加班太多,工作任务繁重,不在举例了。

再次感谢朋友们的支持和鼓励。

bash 复制代码
sudo apt install terminator -y

在Ubuntu系统中,Terminator是综合功能、易用性和扩展性后最推荐的终端工具,尤其适合需要多任务处理和高效操作的用户;若追求轻量级或特定场景需求,GNOME Terminal、Tilix或Kitty可作为备选方案。以下是具体推荐及分析:

1. Terminator(全能型首选)

  • 核心优势

    • 多分屏管理 :支持垂直/水平分屏、自由拖拽调整比例,可同步输入命令到所有分屏(快捷键Super+G),适合多任务并行操作。
    • 深度定制 :通过配置文件(~/.config/terminator/config)可自定义字体、颜色、透明度等,支持插件扩展(如终端截图、日志记录)。
    • 快捷键丰富 :例如Ctrl+Shift+E垂直分屏、Ctrl+Shift+O水平分屏、Ctrl+Shift+W关闭当前终端等。
  • 安装命令

    复制代码

    bash

    |---|-------------------------------|
    | | sudo apt install terminator |

  • 适用场景:开发、系统管理、多任务处理。

2. GNOME Terminal(内置轻量级)

  • 核心优势
    • 系统预装:无需额外安装,兼容性极佳。
    • 基础分屏 :支持轻量级分屏(Ctrl+Shift+T新建标签页,Ctrl+Shift+H/T水平/垂直分屏)。
    • 主题支持 :可通过Gogh工具或手动编辑.bashrc文件调整配色方案。
  • 限制:不支持高级布局保存,功能相对基础。
  • 适用场景:快速启动、简单任务处理。

3. Tilix(可视化分屏)

  • 核心优势

    • 拖拽式布局:直接拖拽标签创建复杂网格,支持会话保存/恢复。
    • 同步输入 :一次键入多终端执行(Ctrl+Alt+A)。
  • 安装命令

    复制代码

    bash

    |---|--------------------------|
    | | sudo apt install tilix |

  • 适用场景:需要复杂分屏布局且希望可视化操作的用户。

4. tmux(终端复用器)

  • 核心优势

    • 持久化会话:SSH断开后重连仍可恢复工作环境。
    • 分屏管理 :支持垂直/水平分屏(如tmux new -s dev_session创建会话,Ctrl+b %垂直分屏)。
  • 安装命令

    复制代码

    bash

    |---|-------------------------|
    | | sudo apt install tmux |

  • 适用场景:远程服务器管理、长时间运行任务。

5. Kitty(高性能GPU加速)

  • 核心优势

    • GPU渲染:超低延迟,支持OpenGL渲染。
    • 跨平台兼容:Linux/macOS通用。
  • 安装命令

    复制代码

    bash

    |---|--------------------------|
    | | sudo apt install kitty |

  • 适用场景:追求极致性能或需要跨平台使用的用户。

推荐逻辑总结

  • Terminator:功能全面,分屏与同步输入能力突出,适合大多数开发场景。
  • GNOME Terminal:轻量级首选,适合快速启动或简单任务。
  • Tilix:可视化分屏与会话管理更直观,适合复杂布局需求。
  • tmux:服务器环境持久化必备,适合远程操作。
  • Kitty:GPU加速提升性能,适合高性能需求用户。

蓝桥云课中支持的ROS1版本有哪些?------2025在线尝试ROS1全家福最方便的打开模式

引言

机器人操作系统(Robot Operating System,简称ROS)作为全球机器人领域最广泛使用的开源框架,自2010年首次发布以来,已形成覆盖工业、服务、教育等场景的完整生态。在蓝桥云课等在线学习平台中,ROS1的多个长周期支持版本(LTS)因其稳定性与兼容性,成为机器人开发者入门与进阶的首选。截至2025年,蓝桥云课完整支持ROS1 Indigo、Kinetic、Melodic、Noetic四大LTS版本,覆盖Ubuntu 14.04至20.04 LTS操作系统。本文将系统梳理各版本特性、安装配置方法及典型应用场景,为开发者提供一站式技术指南。

一、ROS1版本演进与LTS版本选择逻辑

1.1 ROS1版本历史与LTS定义

ROS1的版本发布遵循"字母序+代号"规则,每6个月发布一个新版本,每2年发布一个LTS版本。LTS版本提供5年官方支持,包括安全更新、依赖库维护及兼容性保障。截至2025年,ROS1共发布12个主要版本,其中Indigo(2014)、Kinetic(2016)、Melodic(2018)、Noetic(2020)为LTS版本,构成蓝桥云课的核心教学体系。

1.2 版本选择的核心考量因素

  • 系统兼容性:ROS1版本与Ubuntu LTS版本强绑定(如Noetic仅支持Ubuntu 20.04)。
  • 硬件支持:新版ROS1增加对ARM架构、GPU加速及新型传感器的支持。
  • 功能完整性:新版集成更多工具链(如Gazebo仿真、MoveIt!运动规划)。
  • 社区活跃度:LTS版本拥有更完善的文档、教程及第三方包支持。

1.3 蓝桥云课版本选择建议

版本 发布年份 Ubuntu支持 核心特性 适用场景
Indigo 2014 14.04 基础架构稳定,硬件抽象层完善 传统工业机器人开发
Kinetic 2016 16.04 增加ROS2兼容接口,优化实时性 服务机器人导航与感知
Melodic 2018 18.04 集成Gazebo 9,支持深度学习框架 移动机器人SLAM与路径规划
Noetic 2020 20.04 Python 3全面支持,性能优化 教育机器人、科研原型开发

二、蓝桥云课环境配置:从零到一的完整流程

2.1 系统准备与镜像选择

蓝桥云课提供预装Ubuntu 20.04 LTS的虚拟机镜像,支持一键部署Noetic环境。对于自定义环境,需确保系统满足以下要求:

  • 操作系统:Ubuntu 14.04/16.04/18.04/20.04 LTS(对应Indigo/Kinetic/Melodic/Noetic)。
  • 内存:≥4GB(仿真环境建议≥8GB)。
  • 磁盘空间:≥20GB(Noetic完整安装约需10GB)。

2.2 版本安装:分步详解与问题排查

2.2.1 Noetic版本安装(Ubuntu 20.04)

步骤1:配置软件源与密钥

复制代码

bash

|---|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| | # 导入ROS公钥(2025年推荐使用阿里云镜像) |
| | gpg --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 |
| | gpg --export C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 | sudo tee /usr/share/keyrings/ros.gpg > /dev/null |
| | |
| | # 添加软件源(使用阿里云镜像加速) |
| | sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/ros.gpg] https://mirrors.aliyun.com/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' |

步骤2:安装ROS核心包

复制代码

bash

|---|--------------------------------------------|
| | # 更新软件包列表 |
| | sudo apt update |
| | |
| | # 安装桌面完整版(含rviz、Gazebo等工具) |
| | sudo apt install ros-noetic-desktop-full |
| | |
| | # 初始化rosdep(依赖管理工具) |
| | sudo rosdep init |
| | rosdep update |

步骤3:配置环境变量

复制代码

bash

|---|---------------------------------------------------------|
| | # 将环境变量配置写入.bashrc(永久生效) |
| | echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc |
| | source ~/.bashrc |

常见问题解决

  • 公钥导入失败:检查网络连接,或手动下载公钥文件后导入。
  • 软件源更新超时:替换为国内镜像源(如清华、中科大)。
  • 依赖冲突 :使用sudo apt --fix-broken install修复。
2.2.2 其他版本安装(以Melodic为例)
复制代码

bash

|---|--------------------------------------------------------------------------------------------------------------------------------|
| | # Ubuntu 18.04配置 |
| | sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' |
| | sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 |
| | sudo apt update |
| | sudo apt install ros-melodic-desktop-full |

2.3 工作空间创建与功能包开发

步骤1:创建Catkin工作空间

复制代码

bash

|---|----------------------------|
| | mkdir -p ~/catkin_ws/src |
| | cd ~/catkin_ws |
| | catkin_make |
| | source devel/setup.bash |

步骤2:创建功能包(以C++节点为例)

复制代码

bash

|---|------------------------------------------------|
| | cd ~/catkin_ws/src |
| | catkin_create_pkg my_package roscpp std_msgs |
| | cd my_package/src |
| | touch my_node.cpp |

步骤3:编写节点代码

复制代码

cpp

|---|---------------------------------------------------------------------|
| | #include "ros/ros.h" |
| | #include "std_msgs/String.h" |
| | |
| | int main(int argc, char **argv) { |
| | ros::init(argc, argv, "my_node"); |
| | ros::NodeHandle nh; |
| | ros::Publisher pub = nh.advertise<std_msgs::String>("topic", 10); |
| | ros::Rate rate(10); |
| | |
| | while (ros::ok()) { |
| | std_msgs::String msg; |
| | msg.data = "Hello, ROS!"; |
| | pub.publish(msg); |
| | ros::spinOnce(); |
| | rate.sleep(); |
| | } |
| | return 0; |
| | } |

步骤4:编译与运行

复制代码

bash

|---|-----------------------------|
| | cd ~/catkin_ws |
| | catkin_make |
| | source devel/setup.bash |
| | rosrun my_package my_node |

三、蓝桥云课典型应用场景与实战案例

3.1 小乌龟仿真:ROS基础概念验证

场景描述 :通过turtlesim包验证ROS节点通信、话题发布与订阅机制。

操作步骤

  1. 启动ROS核心服务:

    复制代码

    bash

    |---|-----------|
    | | roscore |

  2. 启动仿真节点与键盘控制节点:

    复制代码

    bash

    |---|--------------------------------------|
    | | rosrun turtlesim turtlesim_node |
    | | rosrun turtlesim turtle_teleop_key |

  3. 查看话题列表与消息内容:

    复制代码

    bash

    |---|----------------------------------|
    | | rostopic list |
    | | rostopic echo /turtle1/cmd_vel |

技术要点

  • 节点间通过话题(/turtle1/cmd_vel)实现解耦通信。
  • 使用rqt_graph可视化计算图。

3.2 多机器人协同控制:命名空间与重映射

场景描述:在单一ROS核心下控制两个独立的小乌龟机器人。

操作步骤

  1. 创建两个命名空间:

    复制代码

    bash

    |---|------------------------------------------------|
    | | # 终端1(机器人1) |
    | | rosrun turtlesim turtlesim_node __ns:=robot1 |
    | | |
    | | # 终端2(机器人2) |
    | | rosrun turtlesim turtlesim_node __ns:=robot2 |

  2. 分别启动键盘控制节点:

    复制代码

    bash

    |---|---------------------------------------------------------------------------------------------|
    | | # 终端3(控制机器人1) |
    | | rosrun turtlesim turtle_teleop_key __ns:=robot1 /turtle1/cmd_vel:=/robot1/turtle1/cmd_vel |
    | | |
    | | # 终端4(控制机器人2) |
    | | rosrun turtlesim turtle_teleop_key __ns:=robot2 /turtle1/cmd_vel:=/robot2/turtle1/cmd_vel |

技术要点

  • 使用__ns参数指定命名空间。
  • 通过话题重映射(/old_topic:=/new_topic)解决命名冲突。

3.3 Launch文件自动化启动:多节点协同

场景描述:通过Launch文件一键启动仿真环境、控制节点及可视化工具。

操作步骤

  1. 创建Launch文件(~/catkin_ws/src/my_package/launch/turtles.launch):

    复制代码

    xml

    |---|----------------------------------------------------------------------------------|
    | | <launch> |
    | | <group ns="robot1"> |
    | | <node pkg="turtlesim" type="turtlesim_node" name="turtle"/> |
    | | <node pkg="turtlesim" type="turtle_teleop_key" name="teleop" output="screen"/> |
    | | </group> |
    | | <group ns="robot2"> |
    | | <node pkg="turtlesim" type="turtlesim_node" name="turtle"/> |
    | | <node pkg="turtlesim" type="turtle_teleop_key" name="teleop" output="screen"/> |
    | | </group> |
    | | <node pkg="rqt_graph" type="rqt_graph" name="rqt_graph"/> |
    | | </launch> |

  2. 启动Launch文件:

    复制代码

    bash

    |---|---------------------------------------|
    | | roslaunch my_package turtles.launch |

技术要点

  • <group>标签实现命名空间分组。
  • output="screen"参数将节点输出重定向至终端。

3.4 外设集成:游戏手柄控制机器人

场景描述:通过游戏手柄(如Xbox控制器)实时控制小乌龟运动。

操作步骤

  1. 安装手柄驱动与ROS包:

    复制代码

    bash

    |---|-------------------------------------|
    | | sudo apt install joystick xboxdrv |
    | | sudo apt install ros-noetic-joy |

  2. 启动手柄节点:

    复制代码

    bash

    |---|-----------------------|
    | | rosrun joy joy_node |

  3. 编写手柄到话题的转换节点(Python示例):

    复制代码

    python

    |---|-----------------------------------------------------------|
    | | #!/usr/bin/env python |
    | | import rospy |
    | | from sensor_msgs.msg import Joy |
    | | from geometry_msgs.msg import Twist |
    | | |
    | | def joy_callback(data): |
    | | twist = Twist() |
    | | twist.linear.x = data.axes[1] * 2.0 # 左摇杆Y轴 |
    | | twist.angular.z = data.axes[0] * 2.0 # 左摇杆X轴 |
    | | pub.publish(twist) |
    | | |
    | | rospy.init_node('joy_to_twist') |
    | | pub = rospy.Publisher('/cmd_vel', Twist, queue_size=10) |
    | | rospy.Subscriber('/joy', Joy, joy_callback) |
    | | rospy.spin() |

  4. 启动转换节点与仿真环境:

    复制代码

    bash

    |---|-------------------------------------|
    | | rosrun my_package joy_to_twist.py |
    | | rosrun turtlesim turtlesim_node |

技术要点

  • 使用joy包读取手柄输入。
  • 通过话题转换实现异构设备通信。

四、版本迁移与兼容性管理

4.1 跨版本迁移指南

迁移原则

  • 代码兼容性:检查API变更(如Noetic中Python 2到Python 3的迁移)。
  • 依赖管理 :使用rosdep自动解析依赖关系。
  • 构建系统 :更新CMakeLists.txtpackage.xml文件。

典型问题处理

  • 消息类型变更 :如std_msgs/String到自定义消息的迁移。
  • 服务调用差异 :检查服务定义文件(.srv)的兼容性。

4.2 混合版本环境配置

场景描述:在单台主机上同时运行Kinetic与Noetic节点。

解决方案

  1. 使用独立的工作空间与环境变量:

    复制代码

    bash

    |---|--------------------------------------------|
    | | # 启动Kinetic环境 |
    | | source /opt/ros/kinetic/setup.bash |
    | | roslaunch kinetic_package kinetic.launch |
    | | |
    | | # 启动Noetic环境(新终端) |
    | | source /opt/ros/noetic/setup.bash |
    | | roslaunch noetic_package noetic.launch |

  2. 通过ROS_MASTER_URI实现跨版本通信:

    复制代码

    bash

    |---|------------------------------------------------|
    | | # 终端1(Kinetic作为Master) |
    | | export ROS_MASTER_URI=http://localhost:11311 |
    | | roscore |
    | | |
    | | # 终端2(Noetic作为客户端) |
    | | export ROS_MASTER_URI=http://localhost:11311 |
    | | rosrun noetic_package noetic_node |

注意事项

  • 避免同一终端中混用不同版本的setup.bash
  • 使用rosversion命令检查节点版本。

五、蓝桥云课教学体系与资源推荐

5.1 课程模块设计

模块 内容概述 推荐版本
基础入门 ROS架构、节点、话题、服务 Indigo/Kinetic
仿真与可视化 Gazebo、RViz、RQt工具链 Melodic
导航与定位 AMCL、Cartographer、MoveIt! Noetic
外设集成 摄像头、激光雷达、机械臂控制 Noetic

5.2 实战项目推荐

  1. 自主导航机器人:基于Noetic的SLAM与路径规划。
  2. 多机器人协作:使用Melodic的分布式通信框架。
  3. 机械臂抓取:结合Kinetic的MoveIt!与Gazebo仿真。

5.3 学习资源汇总

六、未来展望:ROS1到ROS2的平滑过渡

6.1 ROS2核心优势

  • 实时性优化:DDS通信层替代ROS1的TCPROS。
  • 模块化设计:支持微服务架构。
  • 跨平台支持:Windows、macOS原生兼容。

6.2 迁移策略建议

  1. 代码重构:将Python 2代码迁移至Python 3。
  2. 通信接口替换 :使用rclcpp/rclpy替代roscpp/rospy
  3. 仿真验证:在Gazebo中测试ROS2节点。

6.3 蓝桥云课ROS2课程规划

  • 2025年Q3:发布ROS2 Foxy基础课程。
  • 2025年Q4:上线ROS2与ROS1共存实验环境。
  • 2026年:全面转向ROS2教学。

结论

蓝桥云课通过完整支持ROS1 Indigo至Noetic四大LTS版本,为机器人开发者构建了从入门到精通的全链路学习路径。2025年,开发者可基于本文提供的配置方法与实战案例,快速搭建ROS1开发环境,并通过外设集成、多机器人协同等高级场景提升工程能力。未来,随着ROS2的普及,蓝桥云课将持续迭代课程体系,助力开发者抢占机器人技术制高点。


本文介绍了蓝桥云课支持的ROS1主要版本(Indigo、Kinetic、Melodic、Noetic)及其特性,重点讲解了Noetic版本的安装配置流程,包括密钥导入、软件源设置和环境变量配置。同时提供了创建工作空间、编写功能包等基础开发示例,以及多机器人控制、游戏手柄集成等实战案例。文章还涵盖版本迁移指南和混合环境配置方法,并展望了向ROS2过渡的趋势。最后推荐了蓝桥云课的教学资源和学习路径,帮助开发者快速掌握ROS1开发技能。


相关推荐
zhangxuyu11182 小时前
Spring boot 学习记录
java·spring boot·学习
2301_818411553 小时前
rpm软件包管理以及yum,apt的前端软件包管理器
linux·运维·服务器
云闲不收3 小时前
GoFrame框架学习笔记
笔记·学习
MClink3 小时前
架构学习之旅-架构的由来
java·学习·架构
_dindong3 小时前
动规:01背包
数据结构·笔记·学习·算法·leetcode·动态规划·力扣
LGL6030A4 小时前
数据结构学习(1)——指针、结构体、链表(C语言)
数据结构·学习
CS Beginner4 小时前
【Linux】安装配置mysql中出现的问题1
linux·mysql·adb
蒙奇D索大4 小时前
【数据结构】考研算法精讲:分块查找的深度剖析 | 从“块内无序、块间有序”思想到ASL性能最优解
数据结构·笔记·学习·考研·改行学it
不太可爱的叶某人4 小时前
【学习笔记】kafka权威指南——第1章 初识kafka
笔记·学习·kafka