0


Ubuntu18.04安装ROS系统

文章目录


前言

ROS (Robot Operating System, 机器人操作系统) 提供一系列程序库和工具以帮助软件开发者创建机器人应用软件。它提供了硬件抽象、设备驱动、库函数、可视化、消息传递和软件包管理等诸多功能。

详细内容请参考
https://baike.baidu.com/item/ros/4710560?fr=aladdin


一、Ubuntu18.04安装ROS环境

1.添加ROS软件源

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

在这里插入图片描述

2.添加密钥

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654

在这里插入图片描述

3.安装ROS

sudo apt update

在这里插入图片描述

sudo apt-get install ros-melodic-desktop-full

选择Y
在这里插入图片描述
在这里插入图片描述

4.初始化rosdep

sudo rosdep init

在这里插入图片描述

说明:

(1)使用

sudo rodep init

出现

sudo rosdep:找不到命令提示的错误
解决方法:

**

sudo apt install python-rosdep

**

在这里插入图片描述

(2)出现

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.

的错误
在这里插入图片描述
解决方法:
**

增加raw.githubusercontent.com域名与ip之间的映射

**

$ sudo vim /etc/hosts
151.101.84.133 raw.githubusercontent.com

在这里插入图片描述

rosdep update

在这里插入图片描述

5.设置环境变量

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

6.安装rosinstall

sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential

二、ROS第一个例程——小海龟

开启小海龟仿真的步骤:

1.启动ROS Master

roscore

在这里插入图片描述

2.启动小海龟仿真器

rosrun turtlesim turtlesim_node

在这里插入图片描述

3.启动海龟控制节点

rosrun turtlesim turtle_teleop_key

在这里插入图片描述
在这里插入图片描述

**

说明:

**
每个步骤都需要

新打开一个终端

,小海龟的运行路径是在最后一个终端上,通过

上下左右按键

控制的。

三、编写C++程序,控制小海龟走一个标准的圆形

1、创建工作空间和功能包

概念
工作空间(workspace)是一个存放工程开发相关文件的文件夹。所有的源码、配置文件、可执行文件都是放置在里面的。主要分为四个文件夹:
1.src: 代码空间 (source space)
放置功能包(里面的代码、配置文件、launch文件
2.build:编译空间 (build space)
编译过程中的中间文件(不太用关心
3.devel:开发空间 (development space)
编译生成的一些可执行文件、库、脚本
4.install:安装空间 (install space)
install命令的结果就放在里面

(1)创建工作空间

overview:
在这里插入图片描述

operation:在这里插入图片描述

catkin_init_workspace //初始化工作空间(属性变化),看到冒出了CMakeLists.txt>

下面对工程编译(catkin_make)
要来到工作空间的根目录进行编译:
在这里插入图片描述

看到出现了另两个空间:
在这里插入图片描述

使install空间出现:
在这里插入图片描述

(2)创建功能包

  • 功能包是放置ROS源码的最小单元
  • 同一个工作空间下不允许存在同名功能包

创建功能包:
(要放在src里面):
在这里插入图片描述

命令 功能包名 依赖1 依赖2 依赖3:

catkin_create_pkg test_pkg roscpp rospy std_msgs>

在这里插入图片描述

打开功能包:
include放置头文件
src放功能包的代码
后面两个文件是功能包一定有的,使其区别于普通文件夹的属性
在这里插入图片描述

编译功能包:
还是先回到catkin_ws
编译工作空间就行了
因为没有代码所以也没有实际效果
在这里插入图片描述
要运行功能包里某一个程序的话,要先设置一下工作空间的环境变量
设置之后系统才能找到工作空间

设置环境变量:

ros@ros-virtual-machine:~/catkin_ws$ source devel/setup.bash >

在这里插入图片描述

检查环境变量:

用echo命令把环境变量打开
(ROS_PACKAGE_PATH 是ROS本身的一个环境变量,通过这个环境变量查找所有功能包的路径)
也是只有在前一步设置了工作空间的setup.bash之后,path里面才会包含工作空间的路径

ros@ros-virtual-machine:~/catkin_ws$ echo $ROS_PACKAGE_PATH
/home/ros/catkin_ws/src:/opt/ros/noetic/share

2、发布者Publisher的编程实现

以小乌龟速度为例,话题模型(Publisher/Subscriber)如下:
在这里插入图片描述

(1)创建功能包

$  cd ~/catkin_ws/src
$  catkin_create_pkg my_topic roscpp rospy std_msgs geometry_msgs turtlesim

在这里插入图片描述

再往功能包下的 src 中添加的 cpp 文件,该文件实现了发布者。

实现发布者的步骤:
1、初始化ROS节点;
2、向ROS Master注册节点信息,包括发布的话题名和话题中的消息类型;
3、创建消息数据;
4、按照一定频率循环发布消息
在这里插入图片描述

velocity_publisher.cpp代码:

// 该例程将发布turtle1/cmd_vel话题,消息类型geometry_msgs::Twist #include<ros/ros.h>#include<geometry_msgs/Twist.h>intmain(int argc,char**argv){// ROS节点初始化
    ros::init(argc, argv,"my_velocity_publisher");// 创建节点句柄
    ros::NodeHandle n;// 创建一个Publisher,发布名为/turtle1/cmd_vel的topic,消息类型为geometry_msgs::Twist,队列长度20
    ros::Publisher turtle_vel_pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel",20);// 设置循环的频率
    ros::Rate loop_rate(10);int count =0;while(ros::ok()){// 初始化geometry_msgs::Twist类型的消息
        geometry_msgs::Twist velocity_msg;
        velocity_msg.linear.x =0.5;//线速度
        velocity_msg.angular.z =0.5;//角速度// 发布消息
        turtle_vel_pub.publish(velocity_msg);ROS_INFO("Publsh turtle velocity command[%0.2f m/s, %0.2f rad/s]",//类似c的printf
                velocity_msg.linear.x, velocity_msg.angular.z);// 按照循环频率延时
        loop_rate.sleep();}return0;}

在添加了源文件后,我们需要修改编译规则,进行编译:

//配置CMakeLists.txt中的编译规则// 1、设置需要编译的代码和生成的可执行文件add_executable(my_velocity_publisher src/my_velocity_publisher.cpp)// 2、设置链接库target_link_libraries(my_velocity_publisher ${catkin_LIBRARIES})

在这里插入图片描述

编译并运行发布者:

$ cd ~/catkin_new_ws
$ catkin_make
$ source devel/setup.bash
$ roscore
$ rosrun turtlesim turtlesim_node
$ rosrun my_topic my_velocity_publisher

(2)运行结果:

在这里插入图片描述

四、以小海龟为例演示两台电脑的ROS分布式通信

1、查看两台电脑各自的IP信息和主机名hostname

打开终端,输入命令查看主机的ip和主机名称,并记录(此处若

ifconfig

找不到命令,可以根据提示输入

sudo apt install net-tools

)
在这里插入图片描述

两台主机分别添加对方的ip地址和主机名到hosts文件中。这里可以直接使用vim或者sudo gedit打开文件(这里个人推荐使用gedit)

vim /ect/hosts
sudo gedit /etc/hosts

在第三行加入ip主机地址和主机名hostname然后保存退出

接下来重启网络

sudo /etc/init.d/networking restart

2、下载两个包

下载同步包和ssh服务器

sudo apt-get install chrony
sudo apt-get install openssh-server

检查启动

ps -e|grep ssh
ping 从机的ip地址

总结

安装ROS的整个过程,首先需要选择对应版本的ROS,接着就是在网络问题上的处理。目前网上还没有比较好的方法来解决线上安装过程遇到的网络问题,最佳的方式就是放弃线上安装,选择本地下载安装,不然会花费比较久的时间。

实现小海龟的运动我们可以使用键盘的上下键,命令行以及编程实现,通过三种方式的实现初步了解了ROS的特点。

参考文献

Ubuntu18.04安装ROS——实现小海龟仿真

ROS学习笔记(十二)ROS noetic ubuntu 版本 rosdep init,rosdep update 问题解决方法

[古月居ros21讲出现问题及个人解决方案1]第十讲出现:[rospack] Error: package ‘learning_topic‘ not found

Could not find a package configuration file provided by “std_msg“ with any of the following names:

ROS简介-从零开始讲解ROS(适合超零基础阅读)

标签: linux ubuntu 学习

本文转载自: https://blog.csdn.net/weixin_68811361/article/details/136310645
版权归原作者 菲菲QAQ 所有, 如有侵权,请联系我们删除。

“Ubuntu18.04安装ROS系统”的评论:

还没有评论