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

2024-06-11 01:52

本文主要是介绍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或加下方技术群讨论。

这篇关于ROS1配置husky仿真环境遇到的一些问题+方法论的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1049880

相关文章

SpringBoot 异常处理/自定义格式校验的问题实例详解

《SpringBoot异常处理/自定义格式校验的问题实例详解》文章探讨SpringBoot中自定义注解校验问题,区分参数级与类级约束触发的异常类型,建议通过@RestControllerAdvice... 目录1. 问题简要描述2. 异常触发1) 参数级别约束2) 类级别约束3. 异常处理1) 字段级别约束

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

Spring Boot配置和使用两个数据源的实现步骤

《SpringBoot配置和使用两个数据源的实现步骤》本文详解SpringBoot配置双数据源方法,包含配置文件设置、Bean创建、事务管理器配置及@Qualifier注解使用,强调主数据源标记、代... 目录Spring Boot配置和使用两个数据源技术背景实现步骤1. 配置数据源信息2. 创建数据源Be

Python错误AttributeError: 'NoneType' object has no attribute问题的彻底解决方法

《Python错误AttributeError:NoneTypeobjecthasnoattribute问题的彻底解决方法》在Python项目开发和调试过程中,经常会碰到这样一个异常信息... 目录问题背景与概述错误解读:AttributeError: 'NoneType' object has no at

Spring的RedisTemplate的json反序列泛型丢失问题解决

《Spring的RedisTemplate的json反序列泛型丢失问题解决》本文主要介绍了SpringRedisTemplate中使用JSON序列化时泛型信息丢失的问题及其提出三种解决方案,可以根据性... 目录背景解决方案方案一方案二方案三总结背景在使用RedisTemplate操作redis时我们针对

Spring Boot Maven 插件如何构建可执行 JAR 的核心配置

《SpringBootMaven插件如何构建可执行JAR的核心配置》SpringBoot核心Maven插件,用于生成可执行JAR/WAR,内置服务器简化部署,支持热部署、多环境配置及依赖管理... 目录前言一、插件的核心功能与目标1.1 插件的定位1.2 插件的 Goals(目标)1.3 插件定位1.4 核

RabbitMQ消息总线方式刷新配置服务全过程

《RabbitMQ消息总线方式刷新配置服务全过程》SpringCloudBus通过消息总线与MQ实现微服务配置统一刷新,结合GitWebhooks自动触发更新,避免手动重启,提升效率与可靠性,适用于配... 目录前言介绍环境准备代码示例测试验证总结前言介绍在微服务架构中,为了更方便的向微服务实例广播消息,

Kotlin Map映射转换问题小结

《KotlinMap映射转换问题小结》文章介绍了Kotlin集合转换的多种方法,包括map(一对一转换)、mapIndexed(带索引)、mapNotNull(过滤null)、mapKeys/map... 目录Kotlin 集合转换:map、mapIndexed、mapNotNull、mapKeys、map

nginx中端口无权限的问题解决

《nginx中端口无权限的问题解决》当Nginx日志报错bind()to80failed(13:Permissiondenied)时,这通常是由于权限不足导致Nginx无法绑定到80端口,下面就来... 目录一、问题原因分析二、解决方案1. 以 root 权限运行 Nginx(不推荐)2. 为 Nginx

解决1093 - You can‘t specify target table报错问题及原因分析

《解决1093-Youcan‘tspecifytargettable报错问题及原因分析》MySQL1093错误因UPDATE/DELETE语句的FROM子句直接引用目标表或嵌套子查询导致,... 目录报js错原因分析具体原因解决办法方法一:使用临时表方法二:使用JOIN方法三:使用EXISTS示例总结报错原