ros+gazebo学习(持续更新)

2023-05-16

由于实习需要,开始学习ROS的东西


这篇博客主要是记录在ROS+gazebo学习中遇到的各种坑(掩面),希望能对一些也在该领域的同志提供一点小小帮助~~


安装问题(gazebo+ros):

由于ros和gazebo本身是通过ros_gazebo_pkg包连接的,一般来说,安装时候直接安装ros--full版本即可,博主本人的平台是ubuntu18,官方发布的合适版本melodic,下面是安装步骤,其实和官网一模一样。这里主要说明一下,博主由于之前是在虚拟机上面搭建的,系统是ubuntu14,合适的ros版本是indigo,结果遇到一大堆依赖项的问题,也百度谷歌找了很多解决方法,但是最后还是没安装成功,貌似是因为indigo版本官方已经停止更新,而依赖项由于ubuntu14仍然在更新,导致indigo很多依赖项不符合版本。所以推荐小伙伴们安装kinetic版本或者melodic这种比较新的版本。
安装步骤:

  • 第一步,打开ubuntu软件更新,将restricted,universe和multiverse勾选上,同时,最好是选择ubuntu software里面选择适合自己的下载点,不然安装会有点慢。详细看图:
    在这里插入图片描述
  • 然后是打开终端,输入如下代码:
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://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
  • 更新一下debian包:
sudo apt update

这里提醒一下:最好是在这步后面,加入如下代码

sudo apt upgrade

加这步主要是防止出现依赖项的问题,当然,可以先不加,如果出现了依赖项问题,再重新加入看看。

  • 安装自己想要的版本或者某一个包(如果你安装别的版本ros,请把下面代码的melodic替换成对应的版本,比如kinetic)
    安装全部包:
sudo apt install ros-melodic-desktop-full

或者desktop版本,一般机器人仿真的话,desktop版本足以,但是博主建议如果内存够,还是安装全包的方便一些。
desktop版本:

sudo apt install ros-melodic-desktop

安装某个包,博主就经常因为包的冲突,经常安装和卸载某个包,所以这个命令很实用。

sudo apt install ros-melodic-PACKAGE

比如:sudo apt install ros-melodic-slam-gmapping

如果不知道该版本有什么包,用下面命令查询:

apt search ros-melodic
  • 接着依次输入如下命令:
sudo rosdep init
rosdep update
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
  • 下面是官方建议安装的包
sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential

关于cv_bridge


cv_bridge主要是用来实现opencv和ros数据之间传输的一个包。由于博主安装了别的版本的opencv,这就导致出现很多bug,最为头疼的bug有两个:
一个是lib**.so文件的,网上只找到一个解决方法,但是解决方法太暴力,简单来说,出现这个问题的原因是系统同一个动态链接库版本太多了,而程序直接调用时候会直接去调用最新版本的,导致版本不匹配。解决方法是把这个动态链接库其他版本的都删除,太暴力,可能会导致你其他依赖于该动态链接库的软件或者程序无法运行。
还有一个是

ImportError: dynamic module does not define module export function (PyInit_cv_bridge_boost)

最后解决方法:重新安装cv_bridge这个包。
首先是卸载系统自带的包

sudo apt-get remove ros-melodic-cv-bridge

这里说明一下,由于博主需要ros与gazebo连接,而运行这个命令 还会卸载掉两个包:ros-melodic-gazebo-plugins、ros-melodic-gazebo-ros-pkgs这两个包,而博主需要gazebo_plugins包里面自带的一些plugin,这里博主用的方法是

到ros的包里面,将对应的包删除掉。ros的包一般安装在/opt/ros/melodic/share里面,这里将melodic替换成你安装版本即可。
代码:
cd /opt/ros/melodic/share
sudo rm -r cv_bridge

然后下载最新的cv_bridge包

git clone https://github.com/ros-perception/vision_opencv.git

将里面的cv_bridge包copy出来,放在自己的catkin_workplace的src文件夹里面。

  • 修改cv_bridge的CmakeLists.txt,将里面的
find_package(OpenCV 3 REQUIRED)
根据自己安装的opencv版本修改,比如博主是安装了opencv3.4.3,故而:
find_package(OpenCV 3.4.3  REQUIRED)
  • 回到catkin_workplace目录。用catkin_make编译,或者cmake都行。
    catkin_make编译:
catkin_make --pkg cv_bridge

cmake编译:

cd <catkin_workplace dir>/src/cv_bridge
mkdir build
cd build
cmake ..
make
sudo make install

到了这一步,你用如下命令查询安装的cv_bridge包是否是自己刚刚编译的包。

roscd cv_bridge

如果是,恭喜你,后面基本上没什么大问题了。

  • 如果你是用c++编译,那么在对应的cmakelists.txt添加如下的语句
set(cv_bridge_DIR /usr/local/share/cv_bridge/cmake)  //在find_package前面

如果是python,想直接调用cv_bridge模块的的话。在~/.bashrc文件里面添加路径。(Note:如果你的电脑装了多个版本的python,如果想用rosrun运行python脚本,记得修改python脚本的首行#!/usr/bin/env python,修改为#! /usr/bin/env python2.7,博主版本的ros为melodic,默认安装的python2.7,请根据自己安装ros版本对应的python修改)

sudo gedit ~/.bashrc
//然后在里面添加下面一行代码。
export LD_LIBRARY_PATH=/usr/local/lib/

或者你在用catkin_create_pkg创建自己的程序包时候,加入cv_bridge的依赖包也行。

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

ros+gazebo学习(持续更新) 的相关文章

  • 【硬核】 ROS Navigation 局部路径规划常见算法

    简介 最近 作者参加了关于RMUS 高校 SimReal挑战赛 首次接触到了机器人导航领域 这里记录一下这段时间的收货 sim2real的全称是simulation to reality 是强化学习的一个分支 同时也属于transfer l
  • Python 实现 Dijkstar 路径规划算法

    Dijstar 最短路径算法 用于计算起始点到最终点的最短路径 一般采用的是贪心算法策略 原理可以参考 图解 Open list 和 close list 环境 Terminal 需要预先安装两个库 matplotlib 和 math pi
  • ROS系统基本功能的使用详解(基本指令/节点/服务/启动文件/动态参数)

    ROS系统基本功能的使用详解 一 创建工作空间 二 创建与编译ROS功能包 三 ROS的基本命令 3 1 节点 3 2 主题 3 3 服务 3 4 参数服务器 四 节点的创建与运行 4 1 创建源文件 4 2 修改CMakeLists tx
  • Webots小车与Gampping建图仿真与ORB3算法实践

    此篇博客转自本作者在古月居的博客 https www guyuehome com 34537 前言 在研一的时候 由于XXX项目的需要 其中一项就是需要测试Gmapping建图 自然也要求使用ROS系统 由于之前经常在webots中进行仿真
  • V-REP安装

    小知识 是当前目录 是父级目录 是根目录 1 下载V REP 官网地址 http www v rep eu downloads html 我用ubuntu16 04下载V REP PRO EDU V3 5 0 Linux tar 2 解压安
  • ROS2踩坑记录

    Vscode 显示 找不到module 以此选择 设置 Python 在setting json中编辑 在 python autoComplete extraPaths 中添加额外的第三方库路径 如 opt ros foxy lib pyt
  • GG-CNN代码学习

    文章目录 1 源码网址 https github com dougsm ggcnn 2 数据集格式转化 下载后的康奈尔数据集 解压完之后里面的格式 里面的 tiff图像通过 txt文件转化得到 python m utils dataset
  • 可视化点云

    我在找到的视差图像上有来自 gpu reprojectImageTo3D 的 3D 点 我现在想显示这个点云 如何将找到的点云转换为OpenCV to sensor msgs PointCloud2 我不需要发布点云 这仅用于调试可视化 是
  • 在 Python 3 中导入 Rosbag

    我正在尝试从 Python 3 读取 rosbag 文件 我安装了 ROS2 Eloquent Elusor 它应该支持 Python 3 当我跑步时 import rosbag bag rosbag Bag test bag 从Pytho
  • 从 pcl::PointCloud 中删除点

    我是 PCL 新手 我正在使用 PCL 库 并且正在寻找一种从点云中提取点或将特定点复制到新点的方法 我想验证每个点是否符合条件 并且我想获得仅包含优点的点云 谢谢 使用 ExtractIndices 类 将要删除的点添加到 PointIn
  • 不使用ros编译roscpp(使用g++)

    我正在尝试在不使用ROS其余部分的情况下编译roscpp 我只需要订阅一个节点 但该节点拥有使用旧版本ROS的节点 并且由于编译问题 我无法将我的程序与他的程序集成 我从git下载了源代码 https github com ros ros
  • 我的代码的 Boost 更新问题

    我最近将 boost 更新到 1 59 并安装在 usr local 中 我的系统默认安装在 usr 并且是1 46 我使用的是ubuntu 12 04 我的代码库使用 ROS Hydro 机器人操作系统 我有一个相当大的代码库 在更新之前
  • 无法在 ROS 中使用本地安装的 Protocol Buffer

    我已经安装了协议缓冲区 https developers google com protocol buffers 本地 ROS包的目录结构如下 CMakeLists txt package xml include addressbook p
  • 如何访问 Heroku 中的 docker 容器?

    我已按照此处构建图像的说明进行操作 https devcenter heroku com articles container registry and runtime getting started https devcenter her
  • catkin_make 编译报错 Unable to find either executable ‘empy‘ or Python module ‘em‘...

    文章目录 写在前面 一 问题描述 二 解决方法 参考链接 写在前面 自己的测试环境 Ubuntu20 04 一 问题描述 自己安装完 anaconda 后 再次执行 catkin make 遇到如下问题 CMake Error at opt
  • 在 ROS - Python 中使用来自多个主题的数据

    我能够显示来自两个主题的数据 但无法在 ROS 中实时使用和计算这两个主题的数据 用 Python 代码编写 您有想法存储这些数据并实时计算吗 谢谢 usr bin env python import rospy import string
  • 可以在catkin工作区之外创建ROS节点吗?

    我想在catkin工作区之外创建一个ROS发布者节点 可以创建吗 当然可以 像对待任何其他 cpp 库或 python 包一样对待 ROS 在Python中你必须保留PYTHONPATH环境变量指向ros包 opt ros kinetic
  • ROS 问题:libQt5Core.so.5:无法打开共享对象文件:没有这样的文件或目录

    当我跑步时 rosrun turtlesim turtlesim node 在 Ubuntu 上 我收到以下消息 opt ros noetic lib turtlesim turtlesim node 加载共享库时出错 libQt5Core
  • 如何从里程计/tf数据获取投影矩阵?

    我想将视觉里程计的结果与 KITTI 数据集提供的事实进行比较 对于地面中的每一帧 我都有一个投影矩阵 例如 1 000000e 00 9 043683e 12 2 326809e 11 1 110223e 16 9 043683e 12
  • 使用 CMake 链接 .s 文件

    我有一个我想使用的 c 函数 但它是用Intel编译器而不是gnu C编译器 我在用着cmake构建程序 我实际上正在使用ROS因此rosmake但基础是cmake所以我认为这更多是一个 cmake 问题而不是ROS问题 假设使用构建的文件

随机推荐

  • sqlalchemy.exc.ArgumentError: Could not parse rfc1738 URL from string

    错误信息 sqlalchemy exc ArgumentError Could not parse rfc1738 URL from string 原 flask sqlacodegen mysql root 64 127 0 0 1 fo
  • 面试题汇总:网络编程

    1 tcp和udp的区别 xff1f xff08 1 xff09 TCP面向连接 xff08 如打电话要先拨号建立连接 xff09 UDP是无连接的 xff0c 即发送数据之前不需要建立连接 xff1b xff08 2 xff09 TCP提
  • CentOS7 安装学之思开源考试系统Mysql版

    环境介绍 序号项目版本1操作系统CentOS Linux release 7 9 2009 Core 2redis7 0 03Mysqlmysql Ver 8 0 29 for Linux on x86 64 MySQL Community
  • Cisco catalyst 交换机升级步骤

    交换机升级步骤 1 准备一个FAT32的U盘 2 到cisco官网上下载交换机镜像 3 将U盘插到交换机上 xff0c 登入交换机concole输入dir usbflash0 xff1a 找到该镜像 xff0c 注意镜像不要放在中文目录下
  • 【性能】【内存】zram解读

    1 背景 nbsp 通过压缩长时间不在前台的进程来节省内存占用 不会像swap一样频繁操作闪存 也可以减少IO操作节省资源 延长闪存寿命 不过内存压缩是一种用时间换空间 的方式 cpu解压缩过程也是需要消耗少量cpu资源 尽管当前andro
  • wifi连接过程抓包

    下面是一次wifi连接过程发送数据的抓包 xff0c 有些包没抓到 xff0c 但还是比较全的 1 4包 xff0c 探测请求 响应过程 STA发出探测请求包Probe ReqAP做出回应 xff0c 发出探测响应包Probe Rsp 5
  • mbedtls学习(6)RSA算法

    RSA算法 RSA算法是一种非对称加密算法 xff0c 特点时加密解密算法不同且加密解密密钥不同 xff0c 即一般公钥加密 xff0c 私钥解密 下面时RSA算法关键参数 n 模数 xff0c 位长度为1024比特或者2048比特e 公开
  • LVGL lv_label标签控件(5)

    lv label 相关API在lv label h中 文本模式 span class token keyword enum span span class token punctuation span span class token co
  • LVGL lv_page页面控件(23)

    lv page 页面控件 xff0c 是由2个lv cont容器控件构成 xff0c 其中一个容器作为lv page页面控件的背景层 xff0c 另一个容器作为lv page页面控件的载体 xff0c 此载体存放其他任何子对象 xff0c
  • FreeRTOS消息队列、信号量、互斥量、递归互斥量实现步骤

    文章目录 消息队列消息队列结构读队列步骤写队列步骤 作用 信号量信号量结构 获取信号量释放信号量 互斥量 xff08 锁 xff09 互斥量结构 获取互斥量释放互斥量 递归互斥量 xff08 递归锁 xff09 获取递归互斥量释放递归互斥量
  • GDB调试宏

    参考 GDB需要调试宏只需用 g3选项编译 g 默认选项 xff0c 同 g2 g0 不生成任何调试信息 xff0c 和编译时不加 g 是一样的 g1 生成最少量的调试信息 xff0c 这些信息足够用来通过backtrace查看调用栈符号信
  • GDB格式化打印结构体

    参考 GDB pretty print set print pretty on GDB 打印数组索引 set print array span class token operator span indexes on 例子 span cla
  • 8080接口

    文章目录 简介引脚写时序读时序 简介 8080接口是由英特尔设计 xff0c 是一种并行 异步 半双工通信协议 xff0c 作用是用于外扩RAM ROM xff0c 后面也用于LCD接口 引脚 写时序 先拉低选中器件 xff0c 如果要写入
  • Centos 7离线安装最新版mysql

    测试环境 CentOS Linux release 7 9 2009 Core 1 准备工作 下载离线安装包 xff1a 1 1 浏览器打开地址 xff1a https dev mysql com downloads mysql 1 2 选
  • C语言UDP socket编程

    C语言UDP socket编程 UDP 服务器步骤如下 xff1a 1 创建等链接套接字fd 61 socket 2 绑定待链接套接字bind fd 服务器ip和端口 3 等待信息recvfrom fd 对端地址 UDP 客户端步骤如下 x
  • MQTT学习笔记(4)报文分析之PUBLISH

    PUBLISH xff08 发布消息 xff09 含义 xff1a 客户端到服务端或者服务端到客户端发布消息控制报文 xff0c 是双向的 一 固定报头 DUP 重发标志 当DUP被设置为0 xff0c 表示客户端或者服务器是第一次发送这个
  • MQTT学习笔记(6)搭建本地MQTT服务器

    目前主流的Broker有以下3个 xff1a Mosquitto xff1a https mosquitto org VerneMQ xff1a https vernemq com EMQTT xff1a http emqtt io 我们使
  • nrf52832学习笔记(4)修改蓝牙名称,掉电不丢失

    这篇主要介绍如何在手机端修改设备参数 xff0c 比如设备名称 且实现掉电不丢失 思路 xff1a 把需要修改的参数发送给设备 xff0c 设备根据uuid来分辨是参数 xff0c 并保存在flash中 xff0c 重启服务 xff0c 这
  • IIC协议总结

    这篇总结下IIC协议 简介 IIC xff0c Inter Integrated Circuit xff0c 集成电路总线 xff0c 需要2根线连接拓扑 xff0c 是半双工 xff0c 适用于 34 字节型 34 设备 特点 拓扑如下
  • ros+gazebo学习(持续更新)

    由于实习需要 xff0c 开始学习ROS的东西 这篇博客主要是记录在ROS 43 gazebo学习中遇到的各种坑 xff08 掩面 xff09 xff0c 希望能对一些也在该领域的同志提供一点小小帮助 安装问题 xff08 gazebo 4