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

相关文章

mybatis映射器配置小结

《mybatis映射器配置小结》本文详解MyBatis映射器配置,重点讲解字段映射的三种解决方案(别名、自动驼峰映射、resultMap),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定... 目录select中字段的映射问题使用SQL语句中的别名功能使用mapUnderscoreToCame

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

Vue3绑定props默认值问题

《Vue3绑定props默认值问题》使用Vue3的defineProps配合TypeScript的interface定义props类型,并通过withDefaults设置默认值,使组件能安全访问传入的... 目录前言步骤步骤1:使用 defineProps 定义 Props步骤2:设置默认值总结前言使用T

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

MySQL8 密码强度评估与配置详解

《MySQL8密码强度评估与配置详解》MySQL8默认启用密码强度插件,实施MEDIUM策略(长度8、含数字/字母/特殊字符),支持动态调整与配置文件设置,推荐使用STRONG策略并定期更新密码以提... 目录一、mysql 8 密码强度评估机制1.核心插件:validate_password2.密码策略级

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

QT Creator配置Kit的实现示例

《QTCreator配置Kit的实现示例》本文主要介绍了使用Qt5.12.12与VS2022时,因MSVC编译器版本不匹配及WindowsSDK缺失导致配置错误的问题解决,感兴趣的可以了解一下... 目录0、背景:qt5.12.12+vs2022一、症状:二、原因:(可以跳过,直奔后面的解决方法)三、解决方