Ubuntu16.04LTS安装ROS测试小海龟样例

一、参考资料

在Ubuntu中安装ROS Kinetic
ROS安装ubuntu16.04 无需科学上网解决sudo rosdep init初始化问题

二、安装ROS关键步骤

1. 选择ROS版本

ROS安装选择

Ubuntu版本不同,对应安装的ROS版本也不同,务必版本对齐
本文以Ubuntu16.04LTS系统为例,安装ROS Kinetic版本

ROS版本Ubuntu版本
ROS KineticUbuntu16.04LTS
ROS MelodicUbuntu18.04LTS
ROS NoeticUbuntu20.04LTS

在这里插入图片描述

2. 配置Ubuntu软件仓库

配置Ubuntu软件仓库(repositories),勾选“restricted”,“universe”和“multiverse”。

在这里插入图片描述

3. 设置 sources.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'

4. 设置密钥

# 设置key密钥
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

5. 安装ROS

# 更新源
sudo apt update# 安装ROS
sudo apt-get install ros-kinetic-desktop-full

6. 初始化 rosdep

在开始使用ROS之前需要初始化rosdep。rosdep可以在编译某些源码的时为其安装一些系统依赖,同时也是某些ROS核心功能组件所必需用到的工具。

# 初始化 rosdep
sudo rosdep init
rosdep update
(demo) yoyo@yoyo:/usr/lib/python2.7/dist-packages/rosdistro$ sudo rosdep init
Wrote /etc/ros/rosdep/sources.list.d/20-default.list
Recommended: please runrosdep update(demo) yoyo@yoyo:/usr/lib/python2.7/dist-packages/rosdistro$ rosdep update
reading in sources list data from /etc/ros/rosdep/sources.list.d
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml
Query rosdistro index file:///home/yoyo/Downloads/rosdistro/index-v4.yaml
Skip end-of-life distro "ardent"
Skip end-of-life distro "bouncy"
Skip end-of-life distro "crystal"
Skip end-of-life distro "dashing"
Skip end-of-life distro "eloquent"
Skip end-of-life distro "foxy"
Skip end-of-life distro "galactic"
Skip end-of-life distro "groovy"
Add distro "humble"
Skip end-of-life distro "hydro"
Skip end-of-life distro "indigo"
Add distro "iron"
Skip end-of-life distro "jade"
Skip end-of-life distro "kinetic"
Skip end-of-life distro "lunar"
Skip end-of-life distro "melodic"
Add distro "noetic"
Add distro "rolling"
updated cache in /home/yoyo/.ros/rosdep/sources.cache

7. 配置环境变量

# 配置环境变量
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source ~/.bashrc

三、测试ROS turtlesim小海龟样例

如何在 Ubuntu 18.04.1 LTS 上安装 ROS Melodic 的详细过程

在ROS中运行小海龟,执行步骤如下:

1. 启动roscore

# 打开新终端,启动roscore
roscore
yoyo@yoyo:/usr/lib/python2.7/dist-packages/rosdistro$ roscore
... logging to /home/yoyo/.ros/log/d3752a5e-2ac3-11ee-9ef5-18c04d9e91e3/roslaunch-yoyo-32650.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.started roslaunch server http://yoyo:36853/
ros_comm version 1.12.17SUMMARY
========PARAMETERS* /rosdistro: kinetic* /rosversion: 1.12.17NODESauto-starting new master
process[master]: started with pid [32661]
ROS_MASTER_URI=http://yoyo:11311/setting /run_id to d3752a5e-2ac3-11ee-9ef5-18c04d9e91e3
process[rosout-1]: started with pid [32674]
started core service [/rosout]

2. 启动小海龟节点

# 打开新终端,启动小海龟节点
rosrun turtlesim turtlesim_node
(demo) yoyo@yoyo:~$ rosrun turtlesim turtlesim_node
[ INFO] [1690273390.857742853]: Starting turtlesim with node name /turtlesim
[ INFO] [1690273390.860713835]: Spawning turtle [turtle1] at x=[5.544445], y=[5.544445], theta=[0.000000]

3. 启动小海龟运动控制节点

# 打开新终端,启动小海龟运动控制节点
rosrun turtlesim turtle_teleop_key
yoyo@yoyo:~$ rosrun turtlesim turtle_teleop_key
Reading from keyboard
---------------------------
Use arrow keys to move the turtle.

在这里插入图片描述

4. 解析说明

  • rosrun:在ROS包中运行节点;
  • turtlesim:这是ROS中一个用于演示机器人控制的软件包;
  • turtlesim_node:这是turtlesim软件包中的一个节点,用于在屏幕上绘制小海龟;
  • turtle_teleop_key:这是turtlesim软件包中另一个节点,它可以通过键盘上的方向键来控制小海龟的运动。

执行 rosrun turtlesim turtlesim_node 时,计算机会启动一个节点,用于在屏幕上绘制小海龟。当执行 rosrun turtlesim turtle_teleop_key 时,计算机会启动另一个节点,该节点将通过键盘控制小海龟的运动。

四、FAQ

Q:E:无法定位软件包 ros-noetic-desktop-full

在这里插入图片描述

错误原因:
ROS版本与Ubuntu版本不匹配解决办法:
安装合适的ROS版本

Q:设置密钥不成功

(demo) yoyo@yoyo:~$ sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
Executing: /tmp/tmp.N32dAXh9fh/gpg.1.sh --keyserver
hkp://keyserver.ubuntu.com:80
--recv-key
C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
gpg: 下载密钥‘AB17C654’,从 hkp 服务器 keyserver.ubuntu.com
gpg: 密钥 AB17C654:“Open Robotics <info@osrfoundation.org>”未改变
gpg: 合计被处理的数量:1
gpg:              未改变:1
(demo) yoyo@yoyo:~$ curl -sSL 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xC1CF6E31E6BADE8868B172B4F42ED6FBAB17C654' | sudo apt-key add -
程序“curl”尚未安装。 您可以使用以下命令安装:
sudo apt install curl
gpg: 找不到有效的 OpenPGP 数据。
(demo) yoyo@yoyo:~$ sudo apt-key adv --keyserver 'hkp://pgp.mit.edu:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
Executing: /tmp/tmp.LQAFHhtZPo/gpg.1.sh --keyserver
hkp://pgp.mit.edu:80
--recv-key
C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
gpg: 下载密钥‘AB17C654’,从 hkp 服务器 pgp.mit.edu
gpg: 密钥 AB17C654:“Open Robotics <info@osrfoundation.org>”未改变
gpg: 合计被处理的数量:1
gpg:              未改变:1
错误原因:
无法连接到密钥服务器解决办法:
wget http://packages.ros.org/ros.key
sudo apt-key add ros.key

Q:ERROR: cannot download default sources list from:

(demo) yoyo@yoyo:~$ sudo rosdep init
ERROR: cannot download default sources list from:
https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
Website may be down.
错误原因:
无法连接到国外服务器,导致初始化 rosdep失败

解决办法

  1. 下载rosdistro功能包;

    git clone https://github.com/ros/rosdistro.git
    
  2. 修改文件 20-default.list

    修改 rosdistro/rosdep/sources.list.d/20-default.list 文件,将url改为本地文件地址。

    # os-specific listings first
    yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml osx# generic
    yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
    yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
    yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
    gbpdistro https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml fuerte# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead
    

    修改为

    # os-specific listings first
    yaml file:///home/yoyo/Downloads/rosdistro/rosdep/osx-homebrew.yaml osx# generic
    yaml file:///home/yoyo/Downloads/rosdistro/rosdep/base.yaml
    yaml file:///home/yoyo/Downloads/rosdistro/rosdep/python.yaml
    yaml file:///home/yoyo/Downloads/rosdistro/rosdep/ruby.yaml
    gbpdistro file:///home/yoyo/Downloads/rosdistro/releases/fuerte.yaml fuerte# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead
    
  3. 修改文件 sources_list.py

    修改 /usr/lib/python2.7/dist-packages/rosdep2/sources_list.py 文件,将url改为本地文件地址。

    DEFAULT_SOURCES_LIST_URL = 'https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list'
    

    修改为

    DEFAULT_SOURCES_LIST_URL = 'file:///home/yoyo/Downloads/rosdistro/rosdep/sources.list.d/20-default.list'
    
  4. 修改文件 rep3.py

    修改 /usr/lib/python2.7/dist-packages/rosdep2/rep3.py 文件,将url改为本地文件地址。

    REP3_TARGETS_URL = 'https://raw.githubusercontent.com/ros/rosdistro/master/releases/targets.yaml'
    

    修改为

    REP3_TARGETS_URL = 'file:///home/yoyo/Downloads/rosdistro/releases/targets.yaml'
    
  5. 修改文件 __init__.py

    修改 /usr/lib/python2.7/dist-packages/rosdistro/__init__.py 文件,将url改为本地文件地址。

    DEFAULT_INDEX_URL = 'https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml'
    

    修改为

    DEFAULT_INDEX_URL = 'file:///home/yoyo/Downloads/rosdistro/index-v4.yaml'
    

Q:ERROR: default sources list file already exists:

ERROR: default sources list file already exists:/etc/ros/rosdep/sources.list.d/20-default.list
Please delete if you wish to re-initialize
错误原因:
重复初始化,导致初始化 rosdep失败解决办法:
删除20-default.list文件,重新初始化sudo rm -r /etc/ros/rosdep/sources.list.d/20-default.list
sudo rosdep init
rosdep update

Q:程序“rosrun”尚未安装。 您可以使用以下命令安装:

(demo) yoyo@yoyo:/media/yoyo/U$ rosrun turtlesim turtlesim_node
程序“rosrun”尚未安装。 您可以使用以下命令安装:
sudo apt install rosbash
错误原因:
环境变量未生效解决办法:
配置环境变量,重新打开终端
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source ~/.bashrc

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/7066.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工作不要当老黄牛

1&#xff0c;员工需要帮上级分忧&#xff0c;不论上级是不是老板。很多时候上级就是经理、总监&#xff0c;本质上他也只是一个卑微普通的打工人&#xff1b; 2&#xff0c;对上级的态度不能是掏心掏肺&#xff0c;应该是尽心尽力。掏心掏肺和尽心尽力的区别是&#xff1a;全身…

MonoBehaviour 组件

MonoBehaviour 组件是指继承了 MonoBehaviour 类的脚本组件&#xff0c;可以附加到游戏对象上&#xff0c;用于控制游戏对象的行为和交互。 MonoBehaviour 类是 Unity 中的一个基类&#xff0c;提供了许多方法和事件&#xff0c;用于处理输入、渲染、碰撞、协程等操作。 Unity…

C盘空间不足:解决办法完整教程

当C盘空间不足时&#xff0c;你可以尝试以下几种解决方案&#xff1a; 1. 清理临时文件&#xff1a;使用Windows自带的磁盘清理工具&#xff0c;可以删除临时文件、回收站中的文件和其他不必要的系统文件&#xff0c;释放一些空间&#xff0c;推荐使用工具分区助手。 2. 卸载不…

React 框架下自己写一个braft编辑器,然后将编辑器内容展示在网页端

1.首先自己写一个编辑器 输入文字&#xff1b; 支持选择表情&#xff1b; 可添加小程序链接&#xff1b;可添加网页链接&#xff1b;并且可以编辑删除&#xff1b;效果如下 2.输入完毕后&#xff0c;点击文本输入框保存&#xff0c;将便携式内容回显&#xff0c; 渲染时…

[MySQL]MySQL用户管理

[MySQL]MySQL用户管理 文章目录 [MySQL]MySQL用户管理1. 用户的概念2. 用户信息3. 创建用户4. 修改用户密码5. 删除用户6. MySQL中的权限7. 给用户授权8. 回收权限 1. 用户的概念 MySQL中的用户分为超级用户&#xff08;root&#xff09;和普通用户。超级用户的操作是不受权限…

机器人制作开源方案 | 智能垃圾桶

1. 功能说明 智能垃圾桶是一种利用物联网技术和智能感知能力的智能设备&#xff0c;旨在提高垃圾分类和处理的效率。通常具备以下特点和功能&#xff1a; ① 智能感知&#xff1a;智能垃圾桶配备各种传感器&#xff0c;如压力传感器、红外线传感器等&#xff0c;可以实时感知…

Spring Cloud 之 Gateway 网关

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…

ohmyzsh遇到(eval):43: defining function based on alias `xxx‘的问题

好想发疯 为什么为什么&#xff0c;kamisama&#xff0c;为什么这种奇怪的bug总要发生在我的身上&#xff0c;呀哒呦呀哒呦&#xff0c;一定是哪里做错了desu&#xff0c;demo…bokuwa真的找到了解决の道啊&#xff01;不要小看Google的力量啊铁咩&#xff08;怒音&#xff01…

网络安全 Day20-计算机网络基础知识05(网络原理)

计算机网络基础知识05&#xff08;网络原理&#xff09; 1. OSI 模型2. VMware虚拟机NAT模式下上网原理3. 不能上网故障排查 1. OSI 模型 OSI 7层网络通信原理模型 OSI 国际网互联 OSI 数据包封装解封装过程 北京局域网主机A到深圳局域网主机B数据工作流程 2. VMware虚拟机N…

VUE中的生命周期、每个生命周期可以干什么

生命周期 就VUE来说就是一个程序的即将创建到销毁的一个过程&#xff0c;也就是vm对象实例从创建到最终销毁的过程。 VUE生命周期4个阶段8个钩子函数(到某一阶段自动调用的函数) 1.初始阶段&#xff08;虚拟的DOM生成&#xff09; beforeCreate() 初始化事件对象和生命周期…

人类机器人编程的心理机制(一)

\qquad 本文中的人类机器人编程(Human Robot Programming)意指“基于创伤的脑控(trauma-based mind control, T.B.M.C)”或“基于创伤的编程(trauma-based programming)”&#xff0c;文中用英文缩写“T.B.M.C”指代。T.B.M.C的操纵主体是施加编程的个人或机构&#xff0c;文中…

CentOS安装OpenBLAS教程

OpenBLAS 是一个基于BSD许可&#xff08;开源&#xff09;发行的优化 BLAS 计算库&#xff0c;BLAS&#xff08;Basic Linear Algebra Subprograms 基础线性代数程序集&#xff09;是一个应用程序接口&#xff08;API&#xff09;标准&#xff0c;用以规范发布基础线性代数操作…

【图论】二分图

二分图&#xff0c;即可以将图中的所有顶点分层两个点集&#xff0c;每个点集内部没有边 判定图为二分图的充要条件&#xff1a;有向连通图不含奇数环 1、染色法 可以解决二分图判断的问题 步骤与基本思路 遍历图中每一个点&#xff0c;若该点未被染色&#xff0c;则遍历该…

Unity如何快速接入iOS和GooglePlay的成就排行榜等GameCenter功能

一般在游戏开发中&#xff0c;经常有成就排行榜的需求&#xff0c;按照我们的理解&#xff0c;通常是要自己导入谷歌的sdk&#xff0c;或者苹果的sdk&#xff0c;然后封装后通过桥接来调用。 不用这么复杂&#xff0c;本鱼蛋(egostudio 防爬)告诉大家一个方法&#xff0c;其实…

el-table 表头设置渐变色

<el-table :data"tableData" stripe><el-table-column prop"name" label"测试" align"left"></el-table-column><el-table-column prop"code" label"测试1" align"left"></…

Sui Move与标准Move的有哪些区别和根本性创新

Sui网络将Sui Move作为其本地编程语言&#xff0c;使用Sui Move编写的apps利用Sui的共识机制&#xff0c;实现了令人印象深刻的交易性能。 然而&#xff0c;熟悉Move编程语言的开发者在探索Sui文档时可能会感到困惑&#xff0c;因为该文档着重介绍了对象和一些指令&#xff0c…

kafka消费者api和分区分配和offset消费

kafka消费者 消费者的消费方式为主动从broker拉取消息&#xff0c;由于消费者的消费速度不同&#xff0c;由broker决定消息发送速度难以适应所有消费者的能力 拉取数据的问题在于&#xff0c;消费者可能会获得空数据 消费者组工作流程 Consumer Group&#xff08;CG&#x…

刷题记:无重复字符的最长子串

● 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”&#xff0c;所以其长度为 3。 输入: s “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”&#xff0c;所…

git 提示 不能合并

今天A分支合并B分支&#xff0c;提示“不能合并” 最终发现&#xff0c;是另一个分支的版本落后导致&#xff0c;但是git并未提示出来 有遇到这种问题可以先检查下版本

如何有效跟踪你的计费时间?

对于自由职业者、小型企业和远程团队来说&#xff0c;时间跟踪是必需的。了解自己在单个项目或任务上投入了多少时间&#xff0c;可以帮助他们有效管理资源和优化工作流程。 然而&#xff0c;在向客户收费时&#xff0c;时间跟踪多了一层复杂性&#xff1a;不仅需要跟踪所花费…