ROS1配置husky仿真环境遇到的一些问题+方法论

在这里插入图片描述

ROS 系列学习教程(总目录)

本文目录

  • 一、问题描述
  • 二、问题分析
    • 2.1 分析日志
    • 2.2 尝试一(失败)
    • 2.3 尝试二(成功)
  • 三、husky仿真需要安装的软件包
  • 四、总结 - 方法论
    • 4.1 文件路径不合法
    • 4.2 文件内容不合法
    • 4.3 ROS 环境变量
      • 4.3.1 方法一
      • 4.3.2 方法二
  • 五、源码下载

一、问题描述

从github下载husky源码,加工作空间,编译,加环境变量,一顿操作后运行launch文件,结果一片红 -。-

在这里插入图片描述

二、问题分析

2.1 分析日志

在日志中,一般报错自顶向下是符合错误出现的先后顺序的,后出现的错误可能是由先出现的错误导致的,所以一般先分析最先出现的错误,对这个来说就是:

resource not found: fath_pivot_mount_description
ROS path [0]=/opt/ros/noetic/share/ros
ROS path [1]=/home/vistar/Desktop/husky/src
ROS path [2]=/home/vistar/Desktop/robot_mrobot/src
ROS path [3]=/home/vistar/Desktop/ROS-Learning/src
ROS path [4]=/opt/ros/noetic/share

第一句的意思是资源 fath_pivot_mount_description 没有找到,然后列出了搜索路径,这些都是我加入ROS环境变量的路径,其中包括husky,说明husky的环境变量配置成功了。

搜了一下这是一个ROS功能包,用于添加摄像机和其他传感器的手动可调 Fath 枢轴支架,仓库路径。

而后面的报错:

RLException: while processing /home/vistar/Desktop/husky/src/husky_gazebo/launch/spawn_husky.launch:
while processing /home/vistar/Desktop/husky/src/husky_control/launch/control.launch:
while processing /home/vistar/Desktop/husky/src/husky_description/launch/description.launch:
Invalid <param> tag: Cannot load command parameter [robot_description]: command [['/opt/ros/noetic/lib/xacro/xacro', '/home/vistar/Desktop/husky/src/husky_description/urdf/husky.urdf.xacro', 'robot_namespace:=/']] returned with code [2]. 

Param xml is <param name="robot_description" command="$(find xacro)/xacro '$(find husky_description)/urdf/husky.urdf.xacro'     robot_namespace:=$(arg robot_namespace)"/>
The traceback for the exception was written to the log file

意思是说在处理 description.launch 文件时,命令 '/opt/ros/noetic/lib/xacro/xacro', '/home/vistar/Desktop/husky/src/husky_description/urdf/husky.urdf.xacro', 'robot_namespace:=/' 加载失败。看了一下 husky.urdf.xacro 文件确实依赖了 fath_pivot_mount_description,所以,要先解决 fath_pivot_mount_description 的问题。

2.2 尝试一(失败)

既然是找不到功能包,安装就行了,我的ROS版本是 noetic,安装对应功能包的指令如下:

sudo apt install ros-noetic-fath-pivot-mount-description

然而,人生不如意十之八九:
在这里插入图片描述

应该是ROS官方软件仓库没有包含该软件包。

2.3 尝试二(成功)

既然从官方库安装失败,那就直接源码安装,打开该软件包的 github仓库,复制 git 路径:
在这里插入图片描述

点击绿色的 Code 然后复制路径,并 clone 源码到本地 husky 工作空间的 src 下,然后编译,如下指令:

# clone源码
git clone https://github.com/clearpathrobotics/fath_pivot_mount_description.git
# 编译
catkin_make

编译成功后,继续执行 husky 的 gazebo 启动文件,结果 -。-
在这里插入图片描述

这次是另一个软件包找不到,说明 fath_pivot_mount_description 的问题已经解决了,按照如上方法继续处理 flir_camera_description 的问题即可。

三、husky仿真需要安装的软件包

ROS1配置husky机器人仿真环境需要安装的软件包信息及说明如下:

# fath_pivot_mount_description,官方库没有,需要源码安装
git clone https://github.com/clearpathrobotics/fath_pivot_mount_description.git

# flir_camera_description,官方库没有,需要源码安装,注意安装分支要对应ROS版本
# 该仓库包括 flir_camera_description 和 spinnaker_camera_driver 两个软件包
# flir_camera_description 是相机模型,spinnaker_camera_driver 是相机驱动程序
# husky 仿真只用到了 flir_camera_description,如果你想保留spinnaker_camera_driver,需要额外安装 image_exposure_msgs 和 wfov_camera_msgs 两个消息软件包
# 仅对于 husky 仿真,下载 flir_camera_driver 后单独将 flir_camera_description 包放到husky/src下即可
git clone -b noetic-devel https://github.com/ros-drivers/flir_camera_driver.git

# lms1xx,官方库有,直接安装即可,注意对应ROS版本
sudo apt install ros-noetic-lms1xx
# 源码安装,注意对应ROS版本
# git clone -b noetic-devel https://github.com/clearpathrobotics/LMS1xx.git

# velodyne_description,官方库有,直接安装即可,注意对应ROS版本
sudo apt install ros-noetic-velodyne-description
# 源码安装
# git clone https://bitbucket.org/DataspeedInc/velodyne_simulator.git

至此,编译后,roslaunch husky_gazebo empty_world.launch 启动文件已经能启动gazebo并显示husky模型:
在这里插入图片描述

但启动过程中仍有一些报错:
在这里插入图片描述

这是 slam、手柄控制、键盘控制等功能的依赖包没有安装导致的加载失败,但不影响gazebo的启动与模型加载,如果需要仿真slam等功能,则需要安装他们,软件包信息及说明如下:

# robot_localization,官方库有,直接安装即可,注意对应ROS版本
sudo apt install ros-noetic-robot-localization
# 该软件包需要 geographic_msgs 消息软件包依赖,注意对应ROS版本
sudo apt install ros-noetic-geographic-msgs
# 该软件包需要 GeographicLib 库依赖
sudo apt install libgeographic-dev
# 源码安装,注意对应ROS版本
# git clone -b noetic-devel https://github.com/cra-ros-pkg/robot_localization.git

# interactive_marker_twist_server,官方库有,直接安装即可,注意对应ROS版本
sudo apt install ros-noetic-interactive-marker-twist-server
# 源码安装,ROS1对应版本在kinetic已稳定,ROS1 kinetic及以后都安装该版本
# git clone -b kinetic-devel https://github.com/ros-visualization/interactive_marker_twist_server.git

# twist_mux,官方库有,直接安装即可,注意对应ROS版本
sudo apt install ros-noetic-twist-mux
# 源码安装,注意对应ROS版本
# git clone -b noetic-devel https://github.com/ros-teleop/twist_mux.git

# joy,官方库有,直接安装即可,注意对应ROS版本
sudo apt install ros-noetic-joy
# 源码安装,下载后单独将 joy 包放到husky/src下
# git clone https://github.com/ros-drivers/joystick_drivers.git

# teleop_twist_joy,官方库有,直接安装即可,注意对应ROS版本
sudo apt install ros-noetic-teleop-twist-joy
# 源码安装,注意对应ROS版本
# git clone https://github.com/ros-teleop/teleop_twist_joy.git

四、总结 - 方法论

对这种 xacro 文件加载失败的问题,一般就几个原因:

4.1 文件路径不合法

检查xacro文件路径,使用vim等打开文件,能打开说明路径对的,如:

vim /home/vistar/Desktop/husky/src/husky_description/urdf/husky.urdf.xacro

4.2 文件内容不合法

检查xacro文件内容,使用xacro指令检查文件,如果命令成功运行,它应该输出生成的 URDF 文件内容。如果出现错误信息,根据错误提示修正 xacro 文件。

xacro /home/vistar/Desktop/husky/src/husky_description/urdf/husky.urdf.xacro robot_namespace:=/

如 xacro 未安装,使用如下命令安装:

sudo apt update
sudo apt install ros-noetic-xacro

4.3 ROS 环境变量

检查你的ROS工作空间路径是否加到环境变量中:

echo $ROS_PACKAGE_PATH

如不存在,有两种方法添加:

4.3.1 方法一

使用source指令,适合临时使用的工作空间:

source /opt/ros/noetic/setup.bash
source ~/Desktop/husky/devel/setup.bash

每次打开新终端,手动执行上述指令。

4.3.2 方法二

适合长期使用的工作空间。

将上述指令加到 ~/.bashrc 中,每次新终端打开都会自动调用该脚本,不用手动执行。

五、源码下载

加入依赖的 husky 源码,不需要再配置环境,欢迎加star:
https://github.com/vistar-terry/husky
由于我的初始环境不一定和你的一样,可能有些依赖没有加入,欢迎提issue或加下方技术群讨论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/697987.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring Boot集成tablesaw插件快速入门Demo

1.什么是tablesaw&#xff1f; Tablesaw是一款Java的数据可视化库&#xff0c;主要包括两部分&#xff1a; 数据解析库&#xff0c;主要用于加载数据&#xff0c;对数据进行操作(转化&#xff0c;过滤&#xff0c;汇总等)&#xff0c;类比Python中的Pandas库&#xff1b;数据…

idea鼠标滚轮滚动放大缩小字体

在idea中的【file】->【settings】菜单&#xff0c;弹出settings窗口&#xff0c;点击窗口中的【Editor】->【General】&#xff0c;在右侧窗口中&#xff0c;选中【Change font size with CtrlMouse Wheel in All editors】即可。

Apollo9.0 PNC源码学习之Control模块(二)

前面文章&#xff1a;Apollo9.0 PNC源码学习之Control模块&#xff08;一&#xff09; 本文将对具体控制器以及原理做一个剖析 1 PID控制器 1.1 PID理论基础 如下图所示&#xff0c;PID各参数(Kp,Ki,Kd)的作用&#xff1a; 任何闭环控制系统的首要任务是要稳、准、快的响…

AdroitFisherman模块测试日志(2024/6/10)

测试内容 测试AdroitFisherman分发包中SHAUtil模块。 测试用具 Django5.0.3框架&#xff0c;AdroitFisherman0.0.31 项目结构 路由设置 总路由 from django.contrib import admin from django.urls import path,include from Base64Util import urls urlpatterns [path(ad…

教育的数字化转型——Kompas.ai如何变革学习体验

引言 在现代教育中&#xff0c;数字化转型逐渐成为提升学习效果的重要手段。随着科技的进步&#xff0c;人工智能&#xff08;AI&#xff09;在教育领域的应用越来越广泛。本文将探讨教育数字化转型的发展趋势&#xff0c;并介绍Kompas.ai如何通过AI技术变革学习体验。 教育数…

Nodejs 第七十六章(MQ进阶)

MQ介绍和基本使用在上一章介绍过了&#xff0c;不再重复 消息&#xff1a;在RabbitMQ中&#xff0c;消息是传递的基本单元。它由消息体和可选的属性组成 生产者Producer&#xff1a;生产者是消息的发送方&#xff0c;它将消息发送到RabbitMQ的交换器&#xff08;Exchange&…

新概念英语视频百度云,新概念英语视频百度网盘,新概念1-4册

在现今数字化时代&#xff0c;英语学习资源丰富多样&#xff0c;其中新概念英语视频因其深入浅出的教学风格和丰富多样的学习内容&#xff0c;备受广大英语学习者的青睐。本文旨在为广大英语学习者提供一份详尽的新概念英语视频下载指南&#xff0c;帮助大家轻松获取优质学习资…

vscode 中 eslint 无效?npm init 是什么?

vscode 中 eslint 无效 我想要给一个项目添加 eslint&#xff0c;按照 eslint 官方指南操作&#xff1a; npm init eslint/configlatest自动安装了相关依赖并创建配置文件 eslint.config.mjs。 按理说&#xff0c;此刻项目应该已经配置好 eslint 了。但是我的编辑器 vscode …

冯喜运:6.11最新黄金原油趋势解析及独家多空操作建议

【黄金消息面分析】&#xff1a;周二&#xff08;6月11日&#xff09;亚市早盘&#xff0c;现货黄金窄幅震荡&#xff0c;目前交投于2310.15美元/盎司附近。黄金价格在上一交易日创下三年半来最大单日跌幅后于周一反弹&#xff0c;收报2310.71美元/盎司附近&#xff0c;投资者在…

java复习知识点

1.get&#xff0c;set: java 中当定义了一个私有的成员变量的时候&#xff0c;如果需要访问或者获取这个变量的时候&#xff0c;就可以编写set或者get方法去调用&#xff0c;set是给属性赋值的&#xff0c;get是取得属性值的&#xff0c;被设置和存取的属性一般是私有&#xf…

今日科普:生命杀手——“脑出血”

在我们的日常生活中&#xff0c;有一种被称为“脑出血”的疾病&#xff0c;它像是一位潜伏的杀手&#xff0c;无声无息地威胁着我们的生命。脑出血&#xff0c;简单来说&#xff0c;就是脑部血管破裂&#xff0c;导致血液流入脑组织&#xff0c;形成血肿&#xff0c;压迫和破坏…

SpringTask-Timer实现定时任务

1、Timer 实现定时任务 1.1、JDK1.3 开始推出定时任务实现工具。 1.2、API 执行代码 public static void main(String[] args) throws ParseException {Timer timer new Timer();String str"2024-06-10 23:24:00";Date date new SimpleDateFormat("yyyy-MM…

文本省略实现展开和收起功能(Taro)

目录 前言 思路 代码 CSS 效果 前言 在写项目的过程中很容易有说明性文本溢出需要出现省略号的功能&#xff0c;并且可以展开查看所有信息&#xff0c;并能够收起。我在写项目的过程中就遇到了这个问题&#xff0c;本来是想要使用组件库中的组件进行功能的实现&#xff0c;…

log4j日志打印导致OOM问题

一、背景 某天压测&#xff0c;QPS压到一定值后机器就开始重启&#xff0c;出现OOM&#xff0c;好在线上机器配置了启动参数-XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath/**/**heapdump.hprof。将dump文件下载到本地&#xff0c;打开Java sdk bin目录下的jvisualvm工具&a…

IDEA | 安装通义灵码插件,开启智能编码旅程

安装步骤 从插件市场安装&#xff0c;点击导航-插件&#xff0c;打开应用市场&#xff0c;搜索通义灵码&#xff08;TONGYI Lingma&#xff09;&#xff0c;找到通义灵码后点击安装。 https://tongyi.aliyun.com/lingma/download 使用方式 https://help.aliyun.com/documen…

YOLO-World:开启实时开放词汇目标检测的新篇章

目标检测作为计算机视觉领域的基石之一&#xff0c;其发展一直备受学术界和工业界的关注。传统的目标检测方法通常受限于固定词汇表的约束&#xff0c;即只能在预定义的类别集合中进行检测。然而&#xff0c;现实世界中的对象种类繁多&#xff0c;远远超出了任何固定词汇表的覆…

机器学习算法 —— 贝叶斯分类之模拟离散数据集

&#x1f31f;欢迎来到 我的博客 —— 探索技术的无限可能&#xff01; &#x1f31f;博客的简介&#xff08;文章目录&#xff09; 目录 实战&#xff08;贝叶斯分类&#xff09;莺尾花数据模拟离散数据集库函数导入数据导入和分析模型训练和预测 总结 实战&#xff08;贝叶斯…

一道Delphi的For循环题目

起因 事情是这样的&#xff1a; 俺在一个Delphi交流QQ群&#xff0c;有点冷场&#xff0c;俺想热一下场子就发了下面这个段子。其实这是之前俺带新人时的一道题目。 第一个回答 第一个网友给的答案是 i:i-1; 俺说这个答案是不对的&#xff0c;因为 Delphi在编译时是不允许…

【教学类-64-03】20240611色块眼力挑战(三)-2-10宫格色差10-50(10倍)适合中班幼儿园(星火讯飞)

背景需求&#xff1a; 【教学类-64-02】20240610色块眼力挑战&#xff08;二&#xff09;-2-25宫格&色差10-100&#xff08;10倍&#xff09;&#xff08;星火讯飞&#xff09;-CSDN博客文章浏览阅读360次&#xff0c;点赞17次&#xff0c;收藏13次。【教学类-64-02】2024…

CTFHUB-SQL注入-时间盲注

本题用到sqlmap工具&#xff0c;没有sqlmap工具点击&#x1f680;&#x1f680;&#x1f680;直达下载安装使用教程 理论简述 时间盲注概述 时间盲注是一种SQL注入技术的变种&#xff0c;它依赖于页面响应时间的不同来确定SQL注入攻击的成功与否。在某些情况下&#xff0c;攻…