Ubuntu20.04安装ROS

一、ROS的介绍

ROS 是一个适用于机器人的开源的元操作系统。它提供了操作系统应有的服务,包括硬件抽象,底层设备控制,常用函数的实现,进程间消息传递,以及包管理。它也提供用于获取、编译、编写、和跨计算机运行代码所需的工具和库函数。在某些方面ROS相当于一种“机器人框架(robot frameworks)”。
ROS 运行时的“蓝图”是一种基于ROS通信基础结构的松耦合点对点进程网络。ROS实现了几种不同的通信方式,包括基于同步RPC样式通信的服务(services)机制,基于异步流媒体数据的话题(topics)机制以及用于数据存储的参数服务器(Parameter Server)。ROS并不是一个实时的框架,但ROS可以嵌入实时程序。

二、ROS软件安装

参考网站:http://wiki.ros.org/cn/Installation/Ubuntu

2.1 设置sources.list,添加软件包

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

在这里插入图片描述

notice
Linux 中“>”和“>>”的区别
两个运算符都是输出方向运算符。主要区别如下:
“>”:覆盖现有文件,或者如果目录中不存在所提及名称的文件,则创建一个文件。
“>>”:追加现有文件,或者如果目录中不存在所提及名称的文件,则创建一个文件。

2.2 设置密钥

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

在这里插入图片描述

2.3 安装

首先确保软件包索引是最新的,否则上述修改是无效的,使用如下命令更新
sudo apt update
在这里插入图片描述

使用桌面完整安装:ROS、rqt、rviz、机器人通用库、2D/3D 模拟器和 2D/3D 感知

# Ubuntu 20.04 
sudo apt install ros-noetic-desktop-full

# Ubuntu 18.04 
sudo apt install ros-melodic-desktop-full

在这里插入图片描述

2.4 设置环境变量

在终端输入如下指令,对环境变量进行配置

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

在这里插入图片描述

2.5 初始化rosdep

克隆rosdistro文件

  • 因为https://raw.githubusercontent.com网站在国内被屏蔽无法访问,直接进行初始化会失败,所以先将需要的rosdistro文件克隆下来。
  • 将克隆好的文件夹放置在你自己指定的本地文件夹下,我这里放置在了/opt/ros/noetic/文件夹下。(注:从github上获取需要让linux可以连接上外网,或者在主机上下载后上传到虚拟机中)
cd /opt/ros/noetic/
git clone https://github.com/ros/rosdistro.git

修改文件1:20-default.list

  • 文件路径:/opt/ros/noetic/rosdistro/rosdep/sources.list.d/
  • 将里面的URL改为file路径,需要删除默认URL路径中的/master/
cd /opt/ros/noetic/rosdistro/rosdep/sources.list.d/
sudo gedit 20-default.list

# 修改为如下内容
# os-specific listings first
yaml file:///opt/ros/noetic/rosdistro/rosdep/osx-homebrew.yaml osx

# generic
yaml file:///opt/ros/noetic/rosdistro/rosdep/base.yaml
yaml file:///opt/ros/noetic/rosdistro/rosdep/python.yaml
yaml file:///opt/ros/noetic/rosdistro/rosdep/ruby.yaml
gbpdistro file:///opt/ros/noetic/rosdistro/releases/fuerte.yaml fuerte

# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead

在这里插入图片描述

修改文件2:gbpdistro_support.py

  • 文件路径为:/usr/lib/python3/dist-packages/rosdep2/(Noetic路径为python3,Melodic或者老版本路径为python2.7)
cd /usr/lib/python3/dist-packages/rosdep2/
sudo gedit gbpdistro_support.py

# 修改为如下内容
FUERTE_GBPDISTRO_URL = 'file:///opt/ros/noetic/rosdistro/' \
    'releases/fuerte.yaml'

在这里插入图片描述

修改文件3:rep3.py

  • 文件路径为:/usr/lib/python3/dist-packages/rosdep2/
cd /usr/lib/python3/dist-packages/rosdep2/
sudo gedit rep3.py

# 修改为如下内容
REP3_TARGETS_URL = 'file:///opt/ros/noetic/rosdistro/releases/targets.yaml'

在这里插入图片描述

修改文件4:init.py

  • 文件路径为:/usr/lib/python3/dist-packages/rosdistro/
cd /usr/lib/python3/dist-packages/rosdistro/
sudo gedit __init__.py

# 修改为如下内容
DEFAULT_INDEX_URL = 'file:///opt/ros/noetic/rosdistro/index-v4.yaml'

在这里插入图片描述

2.6 安装python-rosdep

在终端输入如下指令安装python-rosdep,如果不安装,在运行sudo rosdep init时可能出现sudo:rosdep:找不到命令的错误。

# Noetic版本ROS为python3-rosdep
sudo apt-get install python3-rosdep

# Melodic版本ROS为python-rosdep
sudo apt-get install python-rosdep

在这里插入图片描述

2.7 创建20-default.list文件

安装了python-rosdep后,因为国内网络被屏蔽的原因运行sudo rosdep init还无法下载或连接失败的错误。所以用如下命令创建这个文件。

sudo mkdir -p /etc/ros/rosdep/sources.list.d 
cd /etc/ros/rosdep/sources.list.d
sudo gedit 20-default.list

# 在文件中添加如下内容
#os-specific listings first
yaml file:///opt/ros/noetic/rosdistro/rosdep/osx-homebrew.yaml osx
#generic
yaml file:///opt/ros/noetic/rosdistro/rosdep/base.yaml
yaml file:///opt/ros/noetic/rosdistro/rosdep/python.yaml
yaml file:///opt/ros/noetic/rosdistro/rosdep/ruby.yaml
gbpdistro file:///opt/ros/noetic/rosdistro/releases/fuerte.yaml fuerte
#newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead

在这里插入图片描述

2.8 完成初始化rosdep

在终端输入如下指令,完成初始化rosdep
rosdep update
在这里插入图片描述

2.9 安装rosinstall

# Noetic版本ROS为
sudo apt install python3-rosdep 
sudo apt install python3-rosinstall 
sudo apt install python3-rosinstall-generator 
sudo apt install python3-wstool 
sudo apt install build-essential

# Melodic版本ROS为
sudo apt install python-rosdep 
sudo apt install python-rosinstall 
sudo apt install python-rosinstall-generator 
sudo apt install python-wstool
sudo apt install build-essential

2.10 运行ROS

roscore
在这里插入图片描述

三、小海龟demo

roscore运行
在这里插入图片描述
新开一个bash,输入rosrun turtlesim turtlesim_node
在这里插入图片描述
新建一个bash,输入rosrun turtlesim turtle_teleop_key,使用上下左右键控制移动
在这里插入图片描述

四、了解ROS话题和消息的发布与获取的方式,终端命令发布话题控制海龟圆周运动。

4.1 话题获取

先将小海龟demo运行起来,然后再开一个bash,输入rqt_graph
在这里插入图片描述这个图描述了两个,publisher是/teleop_turtle,subscriber是/turtlesim,也就是publisher通过话题向turtlesim发送控制信息。

4.2 消息获取

bash输入rostopic info /turtle1/cmd_vel
在这里插入图片描述
type表示话题的数据类型。

4.3 获取消息格式

rosmsg show geometry_msgs/Twist
在这里插入图片描述
分别表示线速度和角速度,取值只有x,z。
rostopic echo /turtle1/cmd_vel 打印传递的信息。
在这里插入图片描述

4.4 命令行实现控制圆周运动

先输入以下命令
rostopic pub -r 10 /turtle1/cmd_vel geometry_msgs/Twist "linear:
接下来按下Tab建,会自动帮我们补全。

在这里插入图片描述
然后修改数据,将线速度的x修改为1,角速度的z也修改为1。
在这里插入图片描述

五、C++编码实现小海龟圆周运动

5.1 创建ROS工作空间

  • 创建工作空间
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
  • 编译工作空间
cd ~/catkin_ws
catkin_make
source devel/setup.bash
  • 检查环境变量
echo $ROS_PACKAGE_PATH

5.2 创建ROS功能包

  • 创建功能包
cd ~/catkin_ws/src
catkin_create_pkg learning_topic std_msgs rospy roscpp geometry_msgs
  • 编译功能包
cd ~/catkin_ws
catkin_make
source devel/setup.bash

5.3 C++代码

  • 创建publisher.cpp文件
    在位置~/catkin_ws/src/learning_topic/src/下创建publisher.cpp文件。
  • 发布话题的逻辑

1.初始化ROS节点
2.向ROS Master注册节电信息,包括发布的话题名和话题中的消息类型
3.创建消息数据
4.按照一定频率循环发布消息

  • C++代码:
#include <sstream>
#include "ros/ros.h"
#include "std_msgs/String.h"
#include "geometry_msgs/Twist.h"

int main(int argc, char **argv)
{
	//初始化节点
	ros::init(argc, argv, "publisher");
	//创建节点句柄
	ros::NodeHandle n;
	//创建publisher,发布话题[/turtle1/cmd_vel],消息类型[geometry_msgs::Twist]
	ros::Publisher chatter_pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel", 1000);
	//设置循环频率
	ros::Rate loop_rate(100);
	while (ros::ok())
	{
		//定义发布的数据
		geometry_msgs::Twist msg;
		//定义linear数据
		geometry_msgs::Vector3 linear;
		linear.x=1;
		linear.y=0;
		linear.z=0;
		//定义angular数据
		geometry_msgs::Vector3 angular;
		angular.x=0;
		angular.y=0;
		angular.z=1;
		msg.linear=linear;
		msg.angular=angular;
		//发布msg数据
		chatter_pub.publish(msg);
		//循环等待回调函数
		ros::spinOnce();
		//按照循环频率延时
		loop_rate.sleep();
	}
	return 0;
}
  • 添加编译选项
cd ~/catkin_ws/src/learning_topic
gedit CMakeLists.txt

在最后添上如下代码

add_executable(publisher src/publisher.cpp)
target_link_libraries(publisher ${catkin_LIBRARIES})

保存退出,再进行编译命令

cd ~/catkin_ws
catkin_make

在这里插入图片描述

  • 启动小海龟并实现控制
roscore
#打开新终端
rosrun turtlesim turtlesim_node
#打开新终端
cd ~/catkin_ws
#下面这一步是为了保证rosrun命令能够找到相应的功能包,有可以省去这一步骤的方法,各位可以自行查找
source ~/catkin_ws/devel/setup.bash
rosrun learning_topic publisher

在这里插入图片描述

参考文章

Ubuntu20.04.4安装ROS Noetic详细教程
ubuntu20.04ros从安装到卸载
ROS运行程序让小海龟实现圆周运动

小结

初步认识了ROS系统,了解了其具体应用,认识其节点间通信机制的重要性。

  • 37
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在Ubuntu 20.04安装ROS,你可以按照以下步骤进行操作: 1. 首先,打开终端,并确保你的系统已更新到最新版本。可以运行以下命令进行系统更新: ``` sudo apt-get update ``` 2. 接下来,你可以根据你的Ubuntu版本选择安装对应的ROS版本。对于Ubuntu 20.04,你可以安装ROS Noetic。运行以下命令安装ROS Noetic的完整桌面安装包: ``` sudo apt install ros-noetic-desktop-full ``` 3. 在安装完成后,你需要初始化rosdep,这是一个ROS包管理工具。运行以下命令初始化rosdep: ``` sudo rosdep init && rosdep update ``` 4. 最后,你需要设置ROS环境变量。运行以下命令将ROS环境变量添加到你的bash会话中: ``` echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc source ~/.bashrc ``` 以上步骤将在Ubuntu 20.04安装ROS Noetic。你可以参考和获取更详细的安装指南,如果遇到任何问题,可以参考进行排查和解决。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [ubuntu20.04安装ros](https://download.csdn.net/download/u013278255/86725233)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [【ROS】在 Ubuntu 20.04 安装 ROS 的详细教程](https://blog.csdn.net/PlutooRx/article/details/127558240)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值