Ubuntu18.04安装ROS系统

打印 上一主题 下一主题

主题 1012|帖子 1012|积分 3036


媒介

ROS (Robot Operating System, 机器人操作系统) 提供一系列步调库和工具以帮助软件开发者创建机器人应用软件。它提供了硬件抽象、装备驱动、库函数、可视化、消息传递和软件包管理等诸多功能。
   具体内容请参考
https://baike.baidu.com/item/ros/4710560?fr=aladdin
  
一、Ubuntu18.04安装ROS情况

1.添加ROS软件源

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

2.添加密钥

  1. sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654
复制代码

3.安装ROS

  1. sudo apt update
复制代码

  1. sudo apt-get install ros-melodic-desktop-full
复制代码
选择Y


4.初始化rosdep

  1. 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
  

  1. rosdep update
复制代码

5.设置情况变量

  1. echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
  2. source ~/.bashrc
复制代码
6.安装rosinstall

  1. sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential
复制代码
二、ROS第一个例程——小海龟

开启小海龟仿真的步骤:
1.启动ROS Master

  1. roscore
复制代码

2.启动小海龟仿真器

  1. rosrun turtlesim turtlesim_node
复制代码

3.启动海龟控制节点

  1. 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)创建功能包

  1. $  cd ~/catkin_ws/src
  2. $  catkin_create_pkg my_topic roscpp rospy std_msgs geometry_msgs turtlesim
复制代码

再往功能包下的 src 中添加的 cpp 文件,该文件实现了发布者。
实现发布者的步骤:
1、初始化ROS节点;
2、向ROS Master注册节点信息,包括发布的话题名和话题中的消息类型;
3、创建消息数据;
4、按照肯定频率循环发布消息

velocity_publisher.cpp代码:
  1. // 该例程将发布turtle1/cmd_vel话题,消息类型geometry_msgs::Twist
  2. #include <ros/ros.h>
  3. #include <geometry_msgs/Twist.h>
  4. int main(int argc, char **argv)
  5. {
  6.         // ROS节点初始化
  7.         ros::init(argc, argv, "my_velocity_publisher");
  8.         // 创建节点句柄
  9.         ros::NodeHandle n;
  10.         // 创建一个Publisher,发布名为/turtle1/cmd_vel的topic,消息类型为geometry_msgs::Twist,队列长度20
  11.         ros::Publisher turtle_vel_pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel", 20);
  12.         // 设置循环的频率
  13.         ros::Rate loop_rate(10);
  14.         int count = 0;
  15.         while (ros::ok())
  16.         {
  17.             // 初始化geometry_msgs::Twist类型的消息
  18.                 geometry_msgs::Twist velocity_msg;
  19.                 velocity_msg.linear.x = 0.5;//线速度
  20.                 velocity_msg.angular.z = 0.5;//角速度
  21.             // 发布消息
  22.                 turtle_vel_pub.publish(velocity_msg);
  23.                 ROS_INFO("Publsh turtle velocity command[%0.2f m/s, %0.2f rad/s]", //类似c的printf
  24.                                 velocity_msg.linear.x, velocity_msg.angular.z);
  25.             // 按照循环频率延时
  26.             loop_rate.sleep();
  27.         }
  28.         return 0;
  29. }
复制代码
在添加了源文件后,我们需要修改编译规则,举行编译:
  1. //配置CMakeLists.txt中的编译规则
  2. // 1、设置需要编译的代码和生成的可执行文件
  3. add_executable(my_velocity_publisher src/my_velocity_publisher.cpp)
  4. // 2、设置链接库
  5. target_link_libraries(my_velocity_publisher ${catkin_LIBRARIES})
复制代码

编译并运行发布者:
  1. $ cd ~/catkin_new_ws$ catkin_make$ source devel/setup.bash$ roscore
  2. $ rosrun turtlesim turtlesim_node
  3. $ rosrun my_topic my_velocity_publisher
复制代码
(2)运行效果:


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

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

打开终端,输入命令查看主机的ip和主机名称,并记载(此处若ifconfig找不到命令,可以根据提示输入sudo apt install net-tools)

两台主机分别添加对方的ip地点和主机名到hosts文件中。这里可以直接利用vim大概sudo gedit打开文件(这里个人推荐利用gedit)
  1. vim /ect/hosts
复制代码
  1. sudo gedit /etc/hosts
复制代码
在第三行参加ip主机地点和主机名hostname然后保存退出
接下来重启网络
  1. sudo /etc/init.d/networking restart
复制代码
2、下载两个包

下载同步包和ssh服务器
  1. sudo apt-get install chrony
  2. sudo apt-get install openssh-server
复制代码
检查启动
  1. ps -e|grep ssh
  2. 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(适合超零根本阅读)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

曂沅仴駦

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表