WSL+ROS

设置 ROS 安装源

  • 官方默认安装源
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
  • 清华的安装源(我使用的源)
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
  • 中科大的安装源
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'

设置 key

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

安装

  • 更新 apt,apt 是用于从互联网仓库搜索、安装、升级、卸载软件或操作系统的工具
sudo apt update
  • 安装所需类型的 ROS:ROS 多个类型,如 Desktop-Full、Desktop、ROS-Base
# noetic 为 Ubuntu20.04 对应的 ROS 版本,根据版本号改名称!
# 18.04 对应 melodic,16.04 对应 kinetic
sudo apt install ros-noetic-desktop-full
# 查看对应 Ubuntu 版本
lsb_release -a

:由于网络原因,导致连接超时,可能会安装失败,可以多次重复调用更新和安装命令,直至成功

  • 若要卸载,则运行下列命令
# Ubuntu 20.04
sudo apt remove ros-noetic-*

配置环境变量

# 以下为 Ubuntu20.04 版本,注意自己的版本
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc

安装构建依赖

  • 安装构建依赖的相关工具
# 若为 melodic 版本则下面命令需要更改
sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
  • 初始化 rosdep
sudo rosdep init
rosdep update
  • 由于 raw.githubusercontent.com 被墙,程序无法下载相应的文件导致出现下面情况。

    在这里插入图片描述

    • 修改相关文件,文件中涉及的 URL 内容,如果是:raw.githubusercontent.com/ros/rosdistro/master 都替换成中准备的gitee.com/zhao-xuzuo/rosdistro/raw/master 即可(具体参考文末链接)

      cd /usr/lib/python3/dist-packages/
      sudo vim ./rosdistro/__init__.py
      sudo vim ./rosdep2/gbpdistro_support.py
      sudo vim ./rosdep2/sources_list.py
      sudo vim ./rosdep2/rep3.py
      
    • 重新执行 sudo rosdep init 和 rosdep update

测试 ROS

  • 升级 WSL 到 WSLG:以管理员形式打开命令提示符,输入 wsl --update

在这里插入图片描述

  • 将 VS code 连接到 WSL,VS code 配置可以参考我之前的一篇文章
    • 需要插件:C/C++、Python、CMake Tools、ROS
  • 使用 VS code 打开终端,输入 roscore

在这里插入图片描述

  • 使用 VS code 再打开一个终端,输入 rosrun turtlesim turtlesim_node,此时会弹出界面

在这里插入图片描述

  • 在 WSL 中输入 rosrun turtlesim turtle_teleop_key 来操控小乌龟

在这里插入图片描述

参考安装 ROS

ROS 简易程序——cpp

  • 创建工作空间并初始化,可得到三个文件夹
mkdir -p ROS_demo/src  # 创建工作空间
cd ROS_demo            # 进入工作空间
catkin_make            # 调用 catkin_make 命令编译

在这里插入图片描述

  • 创建 ROS 包并添加依赖:下面将创建一个名为 test 的功能包,其依赖于 roscpp(C++)、rospy(python)、std_msgs
cd src
catkin_create_pkg test roscpp rospy std_msgs

在这里插入图片描述

  • 编辑源文件:在上面 test 功能包中的 src 文件夹中添加 cpp 文件,以下代码输出 hello world!
// 包含 ros 的头文件
#include "ros/ros.h"

int main(int argc, char *argv[])
{
    // ros 节点初始化
    ros::init(argc,argv,"hello");
    // 创建 ros 节点句柄(非必须)
    ros::NodeHandle n;
    // 控制台输出 hello world
    ROS_INFO("hello world!");

    return 0;
}
  • 编辑配置文件:需要修改 test 功能包中的 CMakeLists.txt 文件,分别需要修改 add_executabletarget_link_libraries(hello_c.cpp 为上一步创建的源文件名称,hello_c 为映射后的名称)

在这里插入图片描述

  • 编译源文件:回到工作空间 ROS_demo 中,然后执行 catkin_make,如果前面配置没问题则会出现如下内容

在这里插入图片描述

  • 执行

    • 启动 roscore

在这里插入图片描述

  • 启动另一个终端进入工作空间并运行如下命令

在这里插入图片描述

ROS 简易程序——python

  • 前提:已创建 ROS 工作空间(ROS_demo)和 ROS 功能包(test)
  • 进入 ROS 包添加 scripts 目录并编辑 python 文件
cd ~/code/ROS_demo/src/test  # 路径根据自己而定
mkdir scripts                # 与 cpp 源文件存放目录同等级
#! /usr/bin/env python
####### python 文件内容 #######
import rospy

if __name__ == "__main__":
    rospy.init_node("Hello")
    rospy.loginfo("Hello World!!!!")

在这里插入图片描述

  • 为 python 文件添加可执行权限
chmod +x hello_p.py  # hello_p.py 为创建的文件名
  • 编辑 test 功能包中的 CMakeLists.txt 文件,这里只需要修改 catkin_install_python

在这里插入图片描述

  • 编译并执行,与 cpp 版本一样,只不过使用 rosrun test hello_p.py(rosrun 功能包名 python文件名)

在这里插入图片描述

launch 文件

一个程序中可能需要启动多个节点,比如:ROS 内置的小乌龟案例,如果要控制乌龟运动,要启动多个窗口,分别启动 roscore、乌龟界面节点、键盘控制节点。如果每次都调用 rosrun 逐一启动,显然效率低下。官方给出的优化策略是使用 launch 文件,可以一次性启动多个 ROS 节点

  • 在功能包(test)下新建一个 launch 文件夹
  • 在 launch 文件夹下创建 launch 文件
  • 编辑 launch 文件内容
<!-- node: 包含的某个节点; pkg: 功能包; type: 被运行的节点文件; name: 为节点命名; output: 设置日志的输出目标 -->
<launch>
    <node pkg="turtlesim" type="turtlesim_node" name="turtle_GUI_01"/>
    <node pkg="turtlesim" type="turtle_teleop_key" name="turtle_key_01" />
</launch>
  • 通过 source 命令刷新工作空间(ROS_demo)环境
source ./devel/setup.bash
  • 运行 launch 文件
# roslaunch 包名 launch文件名
roslaunch test start_turtle.launch
  • 运行结果

在这里插入图片描述

<think>我们正在处理用户的问题:如何在WindowsSubsystemfor Linux中卸载ROS?根据引用内容,我们了解到用户之前可能通过WSL安装了Ubuntu,并在其中安装了ROS。现在需要卸载ROS。注意:ROS(RobotOperating System)是一个在Linux环境中运行的机器人软件平台。卸载ROS意味着我们要从WSL中的Ubuntu系统中移除ROS相关的软件包。步骤:1.首先,我们需要进入WSL中的Ubuntu系统。2.然后,根据ROS的安装方式(比如是通过apt包管理器安装的),使用相应的命令卸载。通常,如果ROS是通过apt安装的(如使用`sudo aptinstall ros-<distro>-desktop-full`等命令),那么我们可以使用apt来卸载。具体步骤:1.打开Windows终端,并进入Ubuntu子系统:-可以通过在开始菜单中找到Ubuntu(或你安装的特定版本)打开,或者使用命令`wsl -d Ubuntu-22.04`(根据你的子系统名称)进入。2.在Ubuntu子系统中,执行以下步骤卸载ROS:a.移除ROS软件包:```bashsudoapt removeros-*```注意:这会移除所有以`ros-`开头的包,即ROS相关的包。b.移除依赖项(可选,但推荐):```bashsudoapt autoremove```c.如果用户还安装了rosdep等工具,可能需要手动清理相关文件。但通常这些工具也是通过apt安装的,会被上述命令移除。d.清理ROS环境变量:用户可能在`.bashrc`文件中添加了ROS的环境变量。需要编辑`~/.bashrc`文件,删除与ROS相关的行。-使用文本编辑器(如nano)打开`.bashrc`:```bashnano ~/.bashrc```-查找包含`/opt/ros`的行(通常会有设置`ROS_DISTRO`、`ROS_ETC_DIR`等环境变量的行),并删除这些行。-保存并退出,然后执行:```bashsource ~/.bashrc```3.验证卸载:尝试运行`roscore`等ROS命令,应该提示命令未找到。4.如果用户希望彻底删除整个Ubuntu子系统(包括ROS和所有其他数据),则可以通过Windows的wsl命令注销(卸载)该子系统:-首先退出Ubuntu子系统。-在WindowsPowerShell或命令提示符中执行:```powershellwsl --unregisterUbuntu-22.04```注意:将"Ubuntu-22.04"替换为你的子系统名称。执行此操作会删除该子系统及其所有数据,包括ROS。但是,用户可能只是想卸载ROS而保留Ubuntu子系统,因此我们主要提供步骤2。根据引用[2]中提到的命令,我们可以使用`wsl--unregister`来卸载整个子系统,但这是一种更彻底的方法,会删除所有数据。因此,我们提供两种方案:方案一:只卸载ROS(保留Ubuntu系统)方案二:卸载整个Ubuntu子系统(这样ROS也会被删除)用户可以根据需要选择。生成相关问题:1.如何验证ROS是否已成功卸载?2.卸载ROS后如何重新安装特定版本的ROS?3.在WSL中卸载Ubuntu子系统后,如何重新安装?4.如何清理ROS安装后遗留的配置文件?5.WSL中如何管理多个Linux子系统?注意:在回答中,我们引用了引用[2]中关于wsl命令的部分,因此我们在相关位置添加引用标识[^2]。</think>### 如何在WSL中卸载ROS 在Windows Subsystem for Linux (WSL) 中卸载ROS(机器人操作系统)需要执行以下步骤: #### 步骤1:进入WSL环境 1. 打开Windows终端(PowerShell或CMD) 2. 进入已安装ROSUbuntu子系统: ```bash wsl -d Ubuntu-22.04 # 替换为你的子系统名称 ``` #### 步骤2:卸载ROS软件包 在Ubuntu子系统内执行: ```bash # 移除所有ROS软件包 sudo apt remove 'ros-*' && sudo apt autoremove # 清理残留配置 sudo apt purge 'ros-*' ``` #### 步骤3:移除环境配置 编辑用户配置文件: ```bash nano ~/.bashrc ``` 找到并删除以下类似内容: ```bash # ROS环境设置 source /opt/ros/noetic/setup.bash # 替换为你的ROS版本 export ROS_MASTER_URI=http://localhost:11311 export ROS_HOSTNAME=localhost ``` 保存后刷新配置: ```bash source ~/.bashrc ``` #### 步骤4:彻底移除子系统(可选) 如果需要完全卸载Ubuntu及所有数据: 1. 退出WSL环境 2. 在Windows终端执行: ```powershell wsl --unregister Ubuntu-22.04 # 替换为你的子系统名称 ``` #### 验证卸载 在WSL中运行: ```bash roscore # 应显示"command not found" echo $ROS_DISTRO # 应返回空值 ``` > **重要提示**: > - 卸载ROS不会影响WSL本身[^2] > - 使用`apt remove`保留用户数据,`--unregister`将删除整个子系统[^3] > - 卸载前建议备份`~/catkin_ws`等自定义工作空间
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值