ROS-Melodic 编译Moveit全过程记录和错误解决方案

2023-05-16

ROS-Melodic 编译Moveit全过程记录和错误解决方案

在Ros Melodic版本下,直接运行sudo apt-get install ros-melodic-moveit会出现以下错误:

   下列软件包有未满足的依赖关系:
    ros-melodic-moveit-full : 依赖:xxxxx 但是它将不会被安装
  E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

正确的安装方法是先从源码编译解决环境冲突问题,具体步骤如下:

1. 准备工作

更新软件包版本

rosdep update
sudo apt-get update
sudo apt-get dist-upgrade 

下载依赖文件

 sudo apt-get install python-wstool python-catkin-tools clang-format-3.9 

2. 源码编译

创建工作区

mkdir ~/ws_moveit
cd ~/ws_moveit 

下载源代码

wstool init src
wstool merge -t src https://raw.githubusercontent.com/ros-planning/moveit/master/moveit.rosinstall
wstool update -t src
rosdep install -y --from-paths src --ignore-src --rosdistro ${ROS_DISTRO}
catkin config --extend /opt/ros/${ROS_DISTRO} --cmake-args -DCMAKE_BUILD_TYPE=Release 

Tip:这一步中,wstool update -t src由于网络问题可能会导致速度很慢,解决方法是在浏览器中进入https://raw.githubusercontent.com/ros-planning/moveit/master/moveit.rosinstall网站,可以看到如下信息:

# This file is intended for users who want to build MoveIt from source.
# Used with wstool, users can download source of all packages of MoveIt.
- git:
    local-name: moveit_msgs
    uri: https://github.com/ros-planning/moveit_msgs.git
    version: master
- git:
    local-name: moveit_resources
    uri: https://github.com/ros-planning/moveit_resources.git
    version: master
- git:
    local-name: geometric_shapes
    uri: https://github.com/ros-planning/geometric_shapes.git
    version: noetic-devel
- git:
    local-name: moveit
    uri: https://github.com/ros-planning/moveit.git
    version: master
- git:
    local-name: rviz_visual_tools
    uri: https://github.com/PickNikRobotics/rviz_visual_tools
    version: master
- git:
    local-name: moveit_visual_tools
    uri: https://github.com/ros-planning/moveit_visual_tools.git
    version: master
- git:
    local-name: moveit_tutorials
    uri: https://github.com/ros-planning/moveit_tutorials.git
    version: master
- git:
    local-name: panda_moveit_config
    uri: https://github.com/ros-planning/panda_moveit_config.git
    version: melodic-devel

记载的是要编译的各个仓库和分支,所以如果由于网络问题,可以在src文件夹下键入git clone -b 分支名 +地址,其中的分支名为version的内容。

安装编译器缓存(可选环节)

安装ccache:

sudo apt-get install ccache

配置环境

echo 'export PATH=/usr/lib/ccache:$PATH' >> $HOME/.bashrc
source $HOME/.bashrc 

利用ccache可以查看build过程中命中率和缓存使用情况的统计信息:

ccache --show-stats

编译Moveit

catkin build

Tip:编译中可能会出现的各种问题:

  1. catkin build导致系统经常卡死,这是由于编译默认采用全部核,可以在后面加上-j2或-j4

  2. 当出现如下错误时:

    /opt/ros/kinetic/lib/libresource_retriever.so:对‘curl_easy_init@CURL_OPENSSL_3’未定义的引用
    /opt/ros/kinetic/lib/libresource_retriever.so:对‘curl_easy_perform@CURL_OPENSSL_3’未定义的引用
    /opt/ros/kinetic/lib/libresource_retriever.so:对‘curl_easy_setopt@CURL_OPENSSL_3’未定义的引用
    /opt/ros/kinetic/lib/libresource_retriever.so:对‘curl_easy_cleanup@CURL_OPENSSL_3’未定义的引用
    ......
    

    则表示ROS和Anaconda的出现兼容问题,意思就是在编译过程中所使用的curl与libcurl无法匹配

    解决方法(直接删除libcurl.so.4,将libcurl.so.4指向ros使用的版本/usr/lib/x86_64-linux-gnu/libcurl.so.4:):

    cd ~/anaconda3/lib
    sudo rm libcurl.so.4
    sudo ln -s /usr/lib/x86_64-linux-gnu/libcurl.so.4.4.0 libcurl.so.4
    
  3. 当出现如下错误时:

    //usr/lib/x86_64-linux-gnu/libapr-1.so.0:对‘uuid_generate@UUID_1.0’未定义的引用
    //usr/lib/x86_64-linux-gnu/libSM.so.6:对‘uuid_unparse_lower@UUID_1.0’未定义的引用
    

    同样是由ROS和Anaconda的出现的兼容问题导致

    解决方法:

    sudo rm ~/anaconda3/lib/libuuid.so.1
    sudo ln -s /lib/x86_64-linux-gnu/libuuid.so.1 ~/anaconda3/lib/libuuid.so.1
    

4. 安装Moveit

终端键入:

sudo apt-get install ros-melodic-moveit

5. 检验安装

打开roscore:

roscore

启动Moveit-Setup-Assistant:

roslaunch moveit_setup_assistant setup_assistant.launch

启动成功后出现如下界面,恭喜你已经成功安装Ros Melodic下的Moveit!

在这里插入图片描述

后续

 喜欢的话可以关注一下我的公众号技术开发小圈,尤其是对深度学习以及计算机视觉有兴趣的朋友,我会把相关的源码以及更多资料发在上面,希望可以帮助到新入门的大家!
在这里插入图片描述

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

ROS-Melodic 编译Moveit全过程记录和错误解决方案 的相关文章

  • 装双系统的一些记录

    小米电脑F2进入BIOS设置 xff0c F12选取启动项 启动U盘制作 ROS安装
  • ROS使用注意事项

    看到一篇总结 xff0c 感觉很有用 摘抄下来 转自 xff1a https www cnblogs com pk28 p 7625838 html
  • Python time模块 时间戳转换

    时间戳转换 时间戳获取 import time time time 时间戳转时间字符串 时间戳 gt 时间数组 gt 格式化时间字符串 时间字符串转时间戳 格式时间字符串 gt 时间数组 gt 时间数组 时间戳转换时间字符串 time st
  • 图漾深度摄像头基本使用方法

    搞到一款图漾的3d相机 xff08 型号为FM810 C xff09 有好久了 xff0c 一直也只是编译了sample代码跑起来看看样子 xff0c 并没有着手看SDK以及开发的事 近几日对照SDK以及其中的SimpleView Fetc
  • Xilinx FPGA的约束设计和时序分析总结 (转)

    在进行FPGA的设计时 xff0c 经常会需要在综合 实现的阶段添加约束 xff0c 以便能够控制综合 实现过程 xff0c 使设计满足我们需要的运行速度 引脚位置等要求 通常的做法是设计编写约束文件并导入到综合实现工具 xff0c 在进行
  • STM32学习笔记-串口

    所用的STM32主要有3个串口 xff0c 3个串口的物理位置如图中所示 串口的驱动编写流程 待续
  • 工业以太网EtherCat学习

    一 简单介绍 EtherCAT是由德国Beckhoff公司提出的实时以太网解决方案 xff0c 它是国际现场总线标准的组成部分 在现场总线级的高速I O控制和高速运动控制方面有突出的表现 EtherCAT使用标准的以太网卡作为主站 xff0
  • AVstream驱动学习

    Step 1 Learn about Windows architecture and drivers AVStream AVStream is a Microsoft provided multimedia class driver th
  • 制作一个舵机云台【内附资料下载链接】

    1 运动功能说明 舵机云台下方的舵机可以提供一个左右摆动的动作 xff0c 同时上方横置的关节模组可以提供一个上下摆动的动作 在这两部分的配合下 xff0c 云台的执行端端 xff08 即 xff1a 关节模组的U型支架 xff09 可以灵
  • UART控制器LIN功能模式(NUC029LAN阅读笔记)

    UART控制器LIN功能模式 xff08 NUC029LAN阅读笔记 xff09 LIN总线帧格式字节域格式 xff08 LIN标准 xff09 帧头 xff08 Header xff09 同步间隔域 xff08 Break Field x
  • 关于新唐NUC029LAN库函数操作无法打开定时器2和定时器3的问题(库函数中的bug)

    结论 xff1a 问题 xff1a 使用NUC029LAN库函数中的设备时钟使能函数时 xff0c 无法正常打开定时器TMR2和TMR3 原因 xff1a clk h中 xff0c 定时器2模块 xff08 TMR2 MODULE xff0
  • STC12系列单片机的1T模式和12T模式

    STC12系列单片机的1T模式和12T模式 总结STC12系列单片机的1T模式和12T模式基本原理以定时器为例 总结 1T 模式 不分频 1个系统基本时钟 xff0c 执行一个动作 xff1b 12T模式 12分频 12个系统基本时钟 xf
  • 函数指针及其定义和用法,C语言函数指针详解

    声明 xff1a 转载 函数指针及其定义和用法 xff0c C语言函数指针详解 版权归原作者所有 xff0c 若有侵权请联系删除 函数指针及其定义和用法 xff0c C语言函数指针详解 函数指针大家了解一下就行了 xff0c 用得不多 xf
  • Python md5、sha256、sha1、加密方法

    需要使用 hashlib 这个库 xff0c python 自带的 xff0c 可以直接用 要加密的数据需要先使用 encode 进行编码 import hashlib data 61 34 你好 34 要进行加密的数据 data sha
  • 通信方式、通信接口、通信总线、通信协议的关系

    通信方式通信接口通信总线通信协议接口 总线 协议之间的关系 通信方式 通信方式是指通信双方之间的工作方式或信号传输方式 终端与其他设备 xff08 例如其他终端 计算机和外部设备 xff09 通过数据传输进行通信 xff0c 根据数据的传输
  • 通信方式的分类(串行通信和并行通信)

    通信方式的分类串行通信和并行通信串行通信同步通信和异步通信单工 半双工和双工 并行通信 通信方式的分类 通信方式是指通信双方之间的工作方式或信号传输方式 终端与其他设备 xff08 例如其他终端 计算机和外部设备 xff09 通过数据传输进
  • 为什么需要使用栈结构?

    在以往学习高级语言时 xff0c 提到栈 xff0c 下意识都会反映上来FILO xff0c 它是暂存数据的一种数据结构 xff0c 但是为什么会用到栈 xff1f 却一直讳莫如深 xff0c 这是高级语言不会涉及到的底层的实现 xff0c
  • C语言中define的用法

    define顾名思义 xff0c 就是下定义 xff0c 那么在C中它也发挥着下定义的作用 1 提前定义变量 include lt stdio h gt define N 100 int main int a 61 10 printf 34
  • C++编译时出现未定义的引用问题解决

    未定义的引用 xff08 undefined reference xff09 出现的原因是生成可执行文件所在的cpp包含头文件时 xff0c 头文件中声明的函数定义未被可执行文件所识别 xff0c 解决办法如下 xff1a add libr
  • 【仿真】手把手学会基于Simulink下的模糊控制系统(上)

    目录 前言 xff1a 什么是模糊控制 1 模糊控制器MATLAB教程 xff08 初级 xff09 1 1 模糊PD控制器 前言 xff1a 什么是模糊控制 控制专业并且写过论文的同学想必一定听说过模糊控制 xff0c 但多数人对于什么是

随机推荐

  • 【STM32CubeMX】STM32H7-RTOS-SPI-W5500

    工程源码下载 xff1a 基于裸机和Freertos的W5500网络通信工程 目录 1 移植W5500步骤 2 Cobemx配置步骤 2 1 时钟配置Clock Configuration 2 2 Trace and Debug配置 2 3
  • 【PADS】PADS覆铜技巧

    目录 重要快捷键 基础设置 层设置 电源层分割处理 给自己喜欢的网络上个颜色 TOP层覆铜 验证设计是否有问题 PADS开窗 PADS为分割层模拟数字地覆网格铜 PADS 快捷键 Ctrl 43 鼠标滚轮失灵 Ctrl 43 鼠标滚轮造成P
  • 【Cadence16.6】安装教程

    初识安装包文件 我们cadence16 6的安装包是这样的 xff0c 详细请去https www fanyedu com index mulitcourse video html id 61 1008 1008观看 首先我们打开这个文件夹
  • 【硬件】芯片温度/功耗计算

    本博客参考 xff1a 一纸沙漏的博客 芯片的四个温度 内核温度 封装表面温度 空气周边温度以及PCB板温度 TJ xff08 Die Junction Temp xff09 芯片的硅核温度 xff0c 就是芯片内部核心的温度 xff0c
  • Python unicode 字符串 转 list

    unicode 字符串 转 list unicodeList 61 u 39 100 100 100 100 100 100 39 1 方法一 list 61 eval unicodeList 2 方法二 int value for val
  • 【硬件】AD623单电源供电差分放大

    1 前言 检测电机电流运用检流电阻的方法在往期已经介绍过 详情请见 xff1a 检流电阻计算电流 2 需求分析 2 1 电机流过电流 已知电机的峰值堵转电流为4 6A xff0c 连续堵转电流为3 2A xff0c 以上信息可以得知需要采样
  • 【电路】PT1000/PT100温度采集电路

    目录 原理图下载链接 xff1a https download csdn net download Roger 717 33823983https download csdn net download Roger 717 33823983h
  • 【QT】手把手制作一个QT网络调试助手(准备阶段)

    目录 1 新建一个工程 2 mainwindow ui设计 2 1 对窗口主体进行栅格化布局 2 2 添加网络通信配置GroupBox 2 2 1 填充内容 2 2 2 栅格布局GroupBox 2 3 总结 3 Pro程序配置 4 头文件
  • 【PR】PR视频剪辑实用技巧

    1 两个视频叠加 1 首先 xff0c 找到要导入的视频所在文件夹 xff0c 将视频拖动到项目面板中 按住Ctrl拖动视频再复制两个视频 2 将素材视频分别拖入到序列的 视频轨道1 2 3 3 点击选中轨道1上的视频 xff0c 在源面板
  • 【Project】项目管理软件学习笔记

    一 前言 使用Project制定项目计划步骤大致如下 xff1a 以Project2013为例 xff0c 按照上图步骤指定项目计划 二 实施 2 1 创建空白项目 点击文件 新建 空白项目 xff0c 即完成了空白项目的创建 xff0c
  • 【硬件】P沟道和N沟道MOS管开关电路设计

    场效应管做的开关电路一般分为两种 xff0c 一种是N沟道 xff0c 另一种是P沟道 xff0c 如果电路设计中要应用到高端驱动 的话 xff0c 可以采用PMOS来导通 P沟道MOS管开关电路 PMOS的特性 xff0c Vgs小于一定
  • 多线程基础之七:多线程遇上printf的“延迟写”策略

    0 运行库提供的IO读写函数采用 延迟写 策略的原因 编程时经常会用到printf 函数 xff0c 但是由于printf 函数涉及到和显示器或磁盘等外设进行交互 xff0c 所以操作涉及到从 用户态 gt 内核态 gt 返回用户态 的一系
  • VC和VS区别

    S是Visual Studio xff0c 它是微软提供的一个工具集 xff0c 由各种各样的工具组成 VS可以支持C C 43 43 VB JAVA C 编程 然了一次只能支持一种编程方式 在VS安装完成 xff0c 第一次运行的时候会让
  • 【potplayer安装及设置LAV Splitter】

    potplayer安装及设置LAV Splitter 下载及安装Lav Splitter解码器配置Lav Splitter解码器 potplayer是一款windows平台上一款轻量功能强大的播放器 xff0c 它界面简洁 xff0c 功能
  • 关于头文件的相互包含

    编程过程中 xff0c 经常会碰到头文件的相互包含 xff0c 如果处理不慎 xff0c 就会报错 比如在头文件A h中有如下代码 xff08 代码中的B Handle是在头文件B h中定义的 xff09 xff1a span class
  • Python list中去重的多种方法

    去重之后顺序会改变 set去重 列表去重会让列表改变原来的顺序 l1 61 1 4 4 2 3 4 5 6 1 l2 61 list set l1 print l2 1 2 3 4 5 6 但是 xff0c 可以通过列表中索引 xff08
  • TI学习笔记之“振动补偿算法”

    一些应用中 xff0c 负载和机械角度有关 xff0c 比如空调压缩机 典型压缩机应用的负载曲线如下图所示 xff0c 不难发现 xff0c 在一个机械周期内 xff0c 负载和机械角度存在一定的关系 xff0c 这种情况在转子式压缩机中尤
  • “compilerPath“的问题

    在c cpp properties josn文件中 xff0c complierPath的问题解决如下 如果正在编译c 43 43 文件 xff0c 先在终端输入which g 43 43 我的弹出了 usr bin g 43 43 把这个
  • Digest Authentication Response 如何计算

    Session Initiation Protocol NOTIFY Request Line NOTIFY sip 192 168 125 130 5060 SIP 2 0 Method NOTIFY Request URI sip 19
  • ROS-Melodic 编译Moveit全过程记录和错误解决方案

    ROS Melodic 编译Moveit全过程记录和错误解决方案 在Ros Melodic版本下 xff0c 直接运行sudo apt get install ros melodic moveit会出现以下错误 xff1a 下列软件包有未满