最新Ubuntu20.04 安装Ros-noetic保姆教程(2025.8.23)

最新Ubuntu20.04 安装Ros-noetic保姆教程(2025.8.23)

环境:Ubuntu20.04 

进行源设置:

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' 

添加 ROS GPG key:

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 

更新软件源:

sudo apt update

安装完整桌面版(推荐):

sudo apt install ros-noetic-desktop-full

如果你只想最小安装,可以改成:

sudo apt install ros-noetic-ros-base -y

 

安装依赖管理工具:

sudo apt install python3-rosdep -y sudo rosdep init rosdep update 

---------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------

执行rosdep update命令时如果报错:

说明你装的是 ROS Noetic 自带的老版本 rosdep,它 还不支持 yaml-index 类型
所以清华新教程里的 yaml-index 配置会报错。

解决方法:

方法一:改成旧格式(适合 Noetic):

先把错误的配置删掉:

sudo rm /etc/ros/rosdep/sources.list.d/20-default.list 

然后写入清华的 旧版 rosdep 源(兼容 Noetic):

sudo sh -c 'echo "yaml https://mirrors.tuna.tsinghua.edu.cn/rosdistro/rosdep/osx-homebrew.yaml osx" > /etc/ros/rosdep/sources.list.d/20-default.list' sudo sh -c 'echo "yaml https://mirrors.tuna.tsinghua.edu.cn/rosdistro/rosdep/base.yaml" >> /etc/ros/rosdep/sources.list.d/20-default.list' sudo sh -c 'echo "yaml https://mirrors.tuna.tsinghua.edu.cn/rosdistro/rosdep/python.yaml" >> /etc/ros/rosdep/sources.list.d/20-default.list' sudo sh -c 'echo "yaml https://mirrors.tuna.tsinghua.edu.cn/rosdistro/rosdep/ruby.yaml" >> /etc/ros/rosdep/sources.list.d/20-default.list' 
方法二:升级 rosdep(让它支持 yaml-index)
sudo apt remove python3-rosdep -y sudo pip3 install -U rosdep 

然后重新初始化:

sudo rosdep init rosdep update 

---------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------

环境配置:

每次打开终端都要设置 ROS 环境,我们把它写进 ~/.bashrc,让它自动生效。

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

安装rosinstall:

sudo apt-get install python-rosinstall

安装结束,可以使用,运行小海龟。

  • 运行ROS Master(每一个ros中必须有master,并且只能有一个)
roscore 

新开一个terminal,打开小海龟窗口:

rosrun turtlesim turtlesim_node

新开一个terminal,打开小海龟控制窗口:
 

rosrun turtlesim turtle_teleop_key

选中控制窗口,按方向键,可看到小乌龟窗口中乌龟在运动:

Read more

JAVA 集合框架进阶:Map 接口的深度解析与实战

JAVA 集合框架进阶:Map 接口的深度解析与实战

JAVA 集合框架进阶:Map 接口的深度解析与实战 1.1 本章学习目标与重点 💡 掌握 Map 接口的核心特性,理解 Key-Value 键值对的存储结构与设计思想。 💡 熟练掌握 HashMap、LinkedHashMap、TreeMap 等实现类的底层原理与适用场景。 💡 理解 Map 集合的线程安全问题,掌握并发环境下的解决方案。 ⚠️ 本章重点是 HashMap 的底层实现原理 和 不同 Map 实现类的性能对比,这是面试和开发中的高频核心考点。 1.2 Map 接口核心概述 1.2.1 Map 接口的定义与特性 💡 Map 是一种键值对(Key-Value) 集合,它的核心是通过键(Key)来唯一标识值(Value)。 Map 接口中的 Key

By Ne0inhk

【JavaScript】不用flat怎么扁平化数组

你想在不使用数组的flat()方法的前提下实现数组扁平化,核心是通过递归或迭代的方式,逐层遍历数组中的元素,把嵌套的子数组 “拆解” 成一维数组。我会给你几种实用且易懂的实现方式,覆盖不同场景需求。 方法 1:递归实现(最易理解,适合新手) 递归的核心思路是:遍历数组的每一个元素,如果元素是数组,就继续递归处理这个子数组;如果不是数组,就直接加入结果数组。 // 递归实现数组扁平化(可指定扁平化深度,默认完全扁平化) function flattenArray(arr, depth = Infinity) { // 存储最终扁平化结果 const result = []; // 遍历原数组的每一个元素 arr.forEach(item => { // 判断:如果当前元素是数组,且还没达到指定扁平化深度 if (Array.isArray(item) && depth > 0) { // 递归处理子数组,深度减1

By Ne0inhk
「源力觉醒 创作者计划」_文心大模型 4.5 开源 28 天:从车间轴承到山村课堂的 AI 突围

「源力觉醒 创作者计划」_文心大模型 4.5 开源 28 天:从车间轴承到山村课堂的 AI 突围

「源力觉醒 创作者计划」_文心大模型 4.5 开源 28 天:从车间轴承到山村课堂的 AI 突围 * 引言: * 正文: * 一、硬件突破:小显存也能驾驭大模型 * 1.1 农机轴承检测部署核心代码(可直接复用) * 1.1.1 调试细节:图像尺寸对准确率的影响(附实测数据) * 二、生态重构:AI 从巨头围墙到山村课堂 * 2.1 开源前后的 AI 生态对比(3 个月实测) * 2.2 社区数据:中小企业的 AI 觉醒 * 三、28 天踩坑实录:开源给你的不只是模型,是螺丝刀 * 3.1

By Ne0inhk

阿里重磅上线了 QoderWork,一个真正能干活的 AI Agent

春节假期在家里闲的没事,我打开 Qoder 官网突然发现阿里竟然上线了一款桌面级通用智能体助手 QoderWork,看名字我们就知道它是做什么的了,就是为普通人打造的一款 AI Agent,目的是将 Qoder 的 Agent 能力从代码领域扩展到日常工作场景,描述需求,自动执行,直接交付结果。 不像是 Qoder AI 编程 IDE 或者  Qoder CLI 终端 Agent ,上手有门槛,更像是跟专业程序员使用的。QoderWork 是可视化的 UI 界面,桌面应用,上手超级简单,几乎没有门槛。 不止聊天,搞定一切 这是 QoderWork 最核心的理念。QoderWork 的定位是「本地运行、自主规划、安全可控的 AI 工作搭子」。 注意这几个关键词:本地运行,

By Ne0inhk