ros入门(题尾一键安装)

2023-05-16

运行ros

` 提示:因为手头有英伟达树莓派跟激光雷达,也有ros小车


直接上现成的,但是会卡。而且不好用,所以建议自己安装一个

链接:https://pan.baidu.com/s/16eDEqTB7y9wE9ghmqoTofA
提取码:yylk

文章目录

  • 运行ros
  • 前言
  • 一、安装ros
    • 1、ubunutu安装ros
  • 二、试试?
    • 1.配置环境
    • 2.小海龟
  • 三、基础
    • 1.建立基础工程
    • 2.创建功能包
  • 四.自定义话题消息类型
    • 应用消息
  • 五.自定义服务消息类型
  • 区别


前言

手头有雷达,所以像试试ros操作系统


在这里插入图片描述

一、安装ros

ros对于ubuntu是有版本要求的,一下是版本对应关系

ubuntu版本对应ros版本
16.04Kinetic
18.04Melodic
20.04Noetic

这里我们可以lsb_release -a查看我们的ubunutu版本,避免出错

book@100ask:~$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 18.04.2 LTS
Release:	18.04
Codename:	bionic
book@100ask:~$ 

1、ubunutu安装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 apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80'   --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

如下代表成功
在这里插入图片描述

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

安装malodic_ros,这一步时间还挺长的

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

在这里插入图片描述

然后就是初始化

sudo pip3 install rosdepc
sudo rosdepc init
rosdepc update

链接: link

在这里插入图片描述

二、试试?

1.配置环境

打开终端输入以下,

echo "source /opt/ros/melodic/setup.bash" >>~/.bashrc
 //这样每次打开终端就不用重复输入
source ~/.bashrc 

也可以打开文件看看
在这里插入图片描述

2.小海龟

打开三个终端,分别输入

roscore   所有的ros都必须启动这个,就是管理者意思
rosrun turtlesim turtlesim_node   运行这个就会出现小海龟
rosrun turtlesim turtle_teleop_key   运行这个就会可以通过小键盘去控制小海龟

在这里插入图片描述

更简单的方法
一行代码安装ROS链接: 一行代码安装ROS

三、基础

1.建立基础工程

mkdir -p catkin_ws/src
创建联级目录
cd catkin_ws/src
到src目录后初始化工作空间
catkin_init_workspace
返回 catkin_make目录
catkin_make

ls发现当前目录有个devel跟build,具体干嘛的后面再说,大概就是build用来储存一些编译后的文件,devel是一些环境设置的文件,而为了以后的方便操作,将本地的工作空间加入的终端打开的环境变量中,我们可以在home目录下打开 .bashrc 这个文件并且加入

source /home/book/catkin_ws/devel/setup.bash

到 .bashrc 里面如图,因为运行某些程序的时候需要此终端有这个环境
在这里插入图片描述

2.创建功能包

我们到了其功能包cd catkin_ws/src/目录下
然后创建我们的功能包,msg是名称,后面两个是他的依赖项

catkin_create_pkg msg std_msgs roscpp 

里面有这四个文件,CMakeLists.txt是编译文件,跟Makefile一样,
package.xml 是配置文件,在嵌入式中很常见,主要设置一些编译过程中需要的依赖项,以及储存一些设置断电后一些系统设置的系统环境变量

CMakeLists.txt  include  package.xml  src

在这里大概讲下他的文件结构,小编开始学习的时候也有点发怵

四.自定义话题消息类型

我们在功能包目录下创建msg文件,在此文件夹目录下创建一个后为.msg的animal.msg文件,输入以下文本,实际机器人情况就是一些gps的数据

string animal
string action
uint8  age
uint8  sex
uint8  x
uint8  y
uint8  z  

然后在我们的功能包目录下的package.xml 最后加入

  <build_depend>message_generation</build_depend>
  <exec_depend>message_runtime</exec_depend>

代表我们能编译msg文件

在这里插入图片描述
然后打开我们的CMakeLists.txt自行修改,大概就是配置编译.msg文件
在这里插入图片描述

在这里插入图片描述
找到catkin_package,加入message_runtime

catkin_package(
#  INCLUDE_DIRS include
#  LIBRARIES server
  CATKIN_DEPENDS roscpp std_msgs message_runtime
#  DEPENDS system_lib
)

然后我们回到工作空间主目录,进行catkin_make
在这里插入图片描述
此时我们就会发现生成了一个.h文件
在这里插入图片描述

应用消息

同样在CMakeLists。txt下进行编辑
在这里插入图片描述

add_executable(person_publisher src/person_publisher.cpp)
target_link_libraries(person_publisher  ${catkin_LIBRARIES})
add_dependencies(person_publisher  ${PROJECT_NAME}_generate_messages_cpp )

add_executable(person_subscriber src/person_subscriber.cpp)
target_link_libraries(person_subscriber ${catkin_LIBRARIES})
add_dependencies(person_subscriber ${PROJECT_NAME}_generate_messages_cpp)

pub

/***********************************************************************
Copyright 2020 GuYueHome (www.guyuehome.com).
***********************************************************************/

/**
 * 该例程将发布/person_info话题,自定义消息类型learning_topic::Person
 */
 
#include <ros/ros.h>
#include "msg/animal.h"

int main(int argc, char **argv)
{
    // ROS节点初始化
    ros::init(argc, argv, "person_publisher");

    // 创建节点句柄
    ros::NodeHandle n;

    // 创建一个Publisher,发布名为/person_info的topic,消息类型为learning_topic::Person,队列长度10
    ros::Publisher person_info_pub = n.advertise<msg::animal>("/person_info", 10);

    // 设置循环的频率
    ros::Rate loop_rate(1);

    int count = 0;
    while (ros::ok())
    {
        // 初始化learning_topic::Person类型的消息
    	msg::animal person_msg;
		person_msg.action = "creep";
        person_msg.animal="cat";
		person_msg.age  = 4;
		person_msg.sex  = 0;
        person_msg.x=1;
        person_msg.y=2;
        person_msg.z=3;

        // 发布消息
		person_info_pub.publish(person_msg);

       	ROS_INFO("Publish Person Info: action:%s  age:%d  sex:%d", 
				  person_msg.action.c_str(), person_msg.age, person_msg.sex);

        // 按照循环频率延时
        loop_rate.sleep();
    }

    return 0;
}

sub

/***********************************************************************
Copyright 2020 GuYueHome (www.guyuehome.com).
***********************************************************************/

/**
 * 该例程将订阅/person_info话题,自定义消息类型learning_topic::Person
 */
 
#include <ros/ros.h>
#include "msg/animal.h"

// 接收到订阅的消息后,会进入消息回调函数
void personInfoCallback(const msg::animal::ConstPtr& msg)
{
    // 将接收到的消息打印出来
    ROS_INFO("Subcribe Person Info: action:%s   animal:%s   age:%d  sex:%s x:%d  y:%d  x:%d", 
			 msg->action.c_str(), msg->animal.c_str(), msg->age,msg->sex ? "公" : "母",msg->x,msg->y,msg->z );
}

int main(int argc, char **argv)
{
    // 初始化ROS节点
    ros::init(argc, argv, "person_subscriber");

    // 创建节点句柄
    ros::NodeHandle n;

    // 创建一个Subscriber,订阅名为/person_info的topic,注册回调函数personInfoCallback
    ros::Subscriber person_info_sub = n.subscribe("/person_info", 10, personInfoCallback);

    // 循环等待回调函数
    ros::spin();

    return 0;
}
结果

在这里插入图片描述

五.自定义服务消息类型

我们在功能包目录下创建msg文件,在此文件夹目录下创建一个后为.srv的message.srv文件,输入以下文本,实际机器人情况就是一些gps的数据,跟话题消息很像对不对,但是多了一行—下面的回应,意思是服务消息是有回应的

string name
uint8  age
uint8  sex

uint8 unknown = 0
uint8 male    = 1
uint8 female  = 2

---
string result

然后在我们的功能包目录下的package.xml 最后加入

  <build_depend>message_generation</build_depend>
  <exec_depend>message_runtime</exec_depend>

代表我们能编译msg文件

在这里插入图片描述
然后打开我们的CMakeLists.txt自行修改,大概就是配置编译.msg文件
在这里插入图片描述
加入服务的消息编译
在这里插入图片描述

找到catkin_package,加入message_runtime

catkin_package(
#  INCLUDE_DIRS include
#  LIBRARIES server
  CATKIN_DEPENDS roscpp std_msgs message_runtime
#  DEPENDS system_lib
)

最后跟话题一样,对应用程序进行编译

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

运行即可

区别

我们可以看到话题有个队列去存消息,然年去更新掉最开始的信息,类似于堆,话题跟服务的大概区别就udp跟tcp,我们再服务的有个callback有个返回,可以想象类似于tcp的返回的sck包

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ros入门(题尾一键安装) 的相关文章

  • 使用WTGAHRS2(JY-GPSIMU)在ROS中读取数据并发布话题

    目录 IMU简介 驱动程序 IMU串口通信协议 程序 效果 IMU简介 十轴惯性导航传感器WTGAHRS2传感器集成高精度的陀螺仪 加速度计 地磁场传感器 GPS 模块 采用高性能的微处理器和先进的动力学解算与卡尔曼动态滤波算法 能够快速求
  • ROS之QtCreator开发环境搭建

    文章目录 系统环境 官方教程 安装 卸载 使用 导入工作空间 构建与运行 编写测试程序 系统环境 操作系统 Ubuntu20 04 ROS版本 Noetic 官方教程 按照官方教程或者下面笔记中的内容均能进行环境搭建 笔记中另外做了部分补充
  • ROS中使用VLP16激光雷达获取点云数据

    ROS中使用VLP16激光雷达获取点云数据 个人博客地址 本文测试环境为 Ubuntu20 04 ROS Noetic 需要将激光雷达与PC连接 然后在设置 gt 网络 gt 有线中将IPv4改为手动 并且地址为192 168 1 100
  • 思岚RPLIDAR A2 在ubuntu 16.04上的测试

    1 下载雷达ROS包 首先在github上下载rplidar的ros包 下载指令为 默认安装了git git clone https github com Slamtec rplidar ros git 在ubuntu上创建工作空间 并将该
  • Webots小车与Gampping建图仿真与ORB3算法实践

    此篇博客转自本作者在古月居的博客 https www guyuehome com 34537 前言 在研一的时候 由于XXX项目的需要 其中一项就是需要测试Gmapping建图 自然也要求使用ROS系统 由于之前经常在webots中进行仿真
  • ros 中ERROR: cannot download default sources list from: https://raw.githubusercontent.com/ros/rosdist

    ros 中ERROR cannot download default sources list from https raw githubusercontent com ros rosdistro master rosdep sources
  • 无人驾驶论坛

    1 百度Apollo论坛 http www 51apollo com 2 人工智能中文资讯网 http www ailab cn
  • 关于相机与激光雷达数据采集与标定

    最近在做一个关于车路协同的项目 需要做一个路侧系统 传感器有摄像头和激光雷达 相机和激光雷达联合标定费了老半天劲 在此记录一下 雷达时间戳不对 导致摄像头和雷达的数据无法对齐 解决办法 修改雷达驱动发布点云消息时的时间戳 相机内参标定可以使
  • Ubuntu16.04安装ROS Kinetic详细步骤

    文章目录 ROS安装 配置Ubuntu软件仓库 设置sources list 设置密钥 更新Debian软件包索引 安装ROS 初始化 rosdep 环境配置 构建工厂依赖 测试安装 开发环境 ROS安装 ROS Kinetic只支持Wil
  • Hypervisor介绍及在智能驾驶的应用

    转自Hypervisor 智能座舱和智能驾驶融合的关键技术 腾讯新闻
  • ROS 笔记(01)— Ubuntu 20.04 ROS 环境搭建

    ROS 官网 https www ros org ROS 中文官网 http wiki ros org cn 1 系统和 ROS 版本 不同的 ROS 版本所需的 ubuntu 版本不同 每一版 ROS 都有其对应版本的 Ubuntu 切记
  • Ubuntu18.04配置Seetaface6

    目录 一 下载安装Qt软件 1 安装包下载 2 安装Qt 3 配置 二 下载源码 三 编译工具 四 编译 1 编译OpenRoleZoo 2 编译SeetaAuthorize 3 编译TenniS 五 运行 1 修改lib路径 2 buil
  • 在Ubuntu 14.04.2 LTS上安装Qt

    Qt是一个跨平台的应用程序框架 广泛用于开发具有GUI界面的应用软件以及命令行工具 几乎所有操作系统都可以使用Qt 如Windows Mac OS X Android等 用于开发Qt应用程序的主要编程语言是C 但是可以使用诸如Python
  • 解决ros安装 使用roscore命令测试问题

    本人安装教程完成ROS的安装后 在进行测试如图1命令 出现 解决办法输入完命令1后要输入命令2才行 即可测试成功 测试成功的界面如下
  • Ubuntu安装ROS

    原文链接 https blog csdn net qq 44830040 article details 106049992 这也是我在ubuntu里面安装ROS的第N次 以前每次安装过程都忘记总结了 导致每次安装ROS都浪费了很多的时间用
  • 进入 docker 容器,exec 丢失 PATH 环境变量

    这是我的 Dockerfile FROM ros kinetic ros core xenial CMD bash 如果我跑docker build t ros docker run it ros 然后从容器内echo PATH 我去拿 o
  • 如何将视频或图像序列转换为包文件?

    我是 ROS 新手 我需要转换预先存在的视频文件 或者large可以连接到视频流中的图像数量 bagROS 中的文件 我在网上找到了这段代码 http answers ros org question 11537 creating a ba
  • 无法加载 LZ4 支持的 Python 扩展。 LZ4 压缩将不可用

    我是 ROS 新手 我刚刚打开终端并输入roscore和另一个终端并键入rostopic node我收到这个错误 上面写着 无法加载 LZ4 支持的 Python 扩展 LZ4 压缩将不可用 我搜索并去了https pypi org pro
  • 可以在catkin工作区之外创建ROS节点吗?

    我想在catkin工作区之外创建一个ROS发布者节点 可以创建吗 当然可以 像对待任何其他 cpp 库或 python 包一样对待 ROS 在Python中你必须保留PYTHONPATH环境变量指向ros包 opt ros kinetic
  • VideoCapture 未检测到 uEye 摄像头

    我的 uEye 相机遇到了一个问题 使用我的笔记本电脑摄像头 id 0 或 USB 上的网络摄像头 id 1 此行完美运行 TheVideoCapturer open 1 TheVideoCapturer 属于 VideoCapture 类

随机推荐

  • WIFI原理

    1 路由器向下提供给接入的用户一个id xff0c 也就是类似于192 168 1 231 xff0c 这样的ip地址 xff0c 所有在这个路由器下的用户的ip地址的前面的网络号是相同的 xff0c 都是192 168 1 xff08 x
  • :: 在 C++ 中的作用

    一 作用域符号 xff1a 作用域符号 的前面一般是类名称 xff0c 后面一般是该类的成员名称 xff0c C 43 43 为例避免不同的类有名称相同的成员而采用作用域的方式进行区分 另外 xff0c 在类外定义类中已申明的函数成员时 x
  • PX4-4-任务调度

    PX4所有的功能都封装在独立的模块中 xff0c uORB是任务间数据交互和同步的工具 xff0c 而管理和调度每个任务 xff0c PX4也提供了一套很好的机制 xff0c 这一篇我们分享PX4的任务调度机制 我们以PX4 1 11 3版
  • 基于stm32的mpu6050传感器实验

    64 TOCMPU6050 43 STM32学习笔记 学习了差不多两天的mpu6050 xff0c 参考了很多篇博客还有看一些资料 xff0c 今晚终于把这个东西在我的串口显示出来了 xff0c 下面就废话不多说 xff0c 开始我的笔记啦
  • Ubuntu 20.04 ROS Noetic及Realsense-ROS的安装和多机通信

    Ubuntu 20 04 ROS Noetic及Realsense ROS的安装和多机通信 1 Ubuntu20 04 ROS Noetic安装 参考官方安装教程 ROS Installation 请以以上安装步骤为准 xff0c 因为随着
  • 机械硬盘基本知识

    硬盘内部的物理结构很复杂 xff0c 只能从大的颗粒度去看内部的结构 xff0c 总体来说 xff0c 硬盘结构包括 xff1a 盘片 磁头 盘片主轴 控制电机 磁头控制器 数据转换器 接口 缓存 等几个部份 所有的盘片 xff08 一般硬
  • RTK八大基础知识

    RTK作为现代化测量中的测绘仪器 xff0c 已经非常普及 RTK在测量中的优越性也是不言而喻 为了能让RTK的优越性能在使用中充分的发挥出来 xff0c 为了能让RTK使用人员能灵活的应用RTK xff0c 我认为RTK使用人员必须了解以
  • 游戏思考04:网络游戏同步算法产生原因和相关介绍:跟随(插值)、预测、延迟补偿,三种算法(未完待续02/07)

    文章目录 一 网络同步的典型场景二 简单粗暴的数据同步为何行不通 xff1f xff08 帧同步的难题 xff09 1 xff09 网络同步的流程2 xff09 网络延迟和抖动的直观解释3 xff09 产生卡顿 瞬移的原因分析4 xff09
  • 51单片机定时器实现流水灯实验

    实验内容 xff1a 利用AT89C51的定时器0 方式1实现流水灯效果 xff0c 并用仿真验证 定时器0方式1的工作方式 xff1a 定时器的工作方式选择由寄存器TMOD控制 方式选择通过M0和M1控制 xff0c 方式1为16位定时器
  • 51单片机七段数码管显示时钟无按键控制—①—74HC595版

    参考链接 xff1a 51单片机七段数码管显示时钟加按键控制 74HC595版 51单片机七段数码管显示时钟加按键控制 74HC595版 文章目录 一 实验内容 xff1a 二 实验分析 xff1a 三 仿真图 xff1a 四 源代码 xf
  • 51单片机lcd1602显示时间日期

    实验内容 xff1a 使用51单片机控制LCD1602液晶显示屏显示 时间 日期 星期 温度 信息 xff0c 并可通过按键设置值 仿真效果展示 xff1a proteus仿真图 xff1a 硬件测试图 xff1a 说明 xff1a 硬件测
  • 51单片机实现普通时钟

    一 实验内容 xff1a 1 打开单片机 xff0c 数码管显示当前时间0 0 0 xff0c 时 分 秒 xff08 时间为24小时制 xff09 2 按键1 xff1a 按下一次进入秒的修改 xff0c 按下两次修改分钟 xff0c 按
  • No suitable kits found.——QT创建项目错误

    才开始学QT就遇到一个问题 xff0c 无法创建项目 xff0c 在 Kits 这一步提示 No suitable kits found 我的错误原因 xff1a 因为以前装过MinGw环境 xff0c 而且环境里还包含着中文 xff0c
  • Keil5高亮显示相同变量加上护眼配色方案

    先上效果图 xff1a 我们知道 xff0c 之前版本的Keil是不会对相同代码进行高亮显示的 xff0c 不过现在最新版的Keil已经支持对其高亮显示了 xff0c 只不过其配色还是和原来一样有些差强人意 初始效果如下 xff1a 实现上
  • 螺旋队列公式解释

    以1为坐标零点 xff0c 向右为X正 xff0c 向下为Y正 xff0c 任意输入一坐标 xff08 x y xff0c r 61 max x y 为当前所在层数 xff0c 得到下面公式 上边 xff1a top 61 max r 43
  • Bilibili缓存视频在电脑端直接打开方式

    哔哩哔哩移动端缓存的视频和音频分开了 xff0c 使用PotPlayer播放器可以在播放视频的时候加载音频 xff0c 从而不用合并两个文件 具体操作 xff1a 使用PotPlayer播放器打开video m4s文件 打开后点鼠标右键 x
  • C语言数组、结构体、结构体数组作为函数参数

    数组作为函数参数 如果想把一个数组名参数传递给函数 xff0c 正确的函数形参应该是怎样的 xff1f 它是应该声明为一个指针还是一个数组 xff1f 调用函数时实际传递的是一个指针 xff0c 所以函数的形参实际上是一个指针 xff0c
  • 有道词典离线数据包位置

    软件版本 xff1a 9 1 0 位置 xff1a C Users 用户名 AppData Local Yodao DeskDict nmt model 将离线包放入nmt model文件夹后重新启动有道词典即可断网使用长句翻译 汉英互译离
  • 改变Keil5所有窗口的背景颜色

    在网上找了很多都没有找到如何更改Keil5左侧和下侧的背景颜色 xff0c 后来根据一些提示找到了改背景的方法 xff0c 在此分享给有需要的人 首先 xff0c 更换中间那块的背景颜色相信大家都会 xff0c 不过我还是写一下 xff0c
  • ros入门(题尾一键安装)

    运行ros 96 提示 xff1a 因为手头有英伟达树莓派跟激光雷达 xff0c 也有ros小车 直接上现成的 xff0c 但是会卡 而且不好用 xff0c 所以建议自己安装一个 链接 xff1a https pan baidu com s