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

news2024/11/25 21:27:43

在这里插入图片描述

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或加下方技术群讨论。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

consul做配置中心

1. 分布式配置中心 consul不仅可做注册中心&#xff0c;还可做配置中心 applicaiton.yml与bootstrap.yml: applicaiton.yml是用户级的资源配置项bootstrap.yml是系统级的&#xff0c;优先级更加高 Spring Cloud会创建一个“Bootstrap Context”&#xff0c;作为Spring应用…

blender

通用设置&#xff1a; 仅显示/取消隐藏&#xff1a;数字键盘/ 移动视角&#xff1a;shift鼠标中键 Blender如何给场景添加参考图片-百度经验 (baidu.com) 进入编辑模式&#xff1a;Tab 编辑模式&#xff1a;点-线-面 两个视图 法向显示&#xff1a;就能变成恶心的蓝红色 显…

AI大模型探索之路-实战篇16:优化决策流程:Agent智能数据分析平台中Planning功能实践

系列篇章&#x1f4a5; AI大模型探索之路-实战篇4&#xff1a;深入DB-GPT数据应用开发框架调研 AI大模型探索之路-实战篇5&#xff1a;探索Open Interpreter开放代码解释器调研 AI大模型探索之路-实战篇6&#xff1a;掌握Function Calling的详细流程 AI大模型探索之路-实战篇7…

设计软件有哪些?照明工具篇,渲染100邀请码1a12

阴影和照明涉及到图片的真实感和氛围&#xff0c;所以熟练使用照明工具是设计师的必备能力&#xff0c;这次我们介绍一些照明工具。 1、VRaySun VRaySun是VRay渲染器中的一个功能&#xff0c;用于模拟太阳光源。它是一种方便易用的光源类型&#xff0c;能够产生逼真的日光效果…

高考分数查询结果自动推送至微信(卷II)

祝各位端午节安康&#xff01;只要心中无结&#xff0c;每天都是节&#xff0c;开心最重要&#xff01; 在上一篇文章高考分数查询结果自动推送至微信&#xff08;卷Ⅰ&#xff09;-CSDN博客中谈了思路&#xff0c;今天具体实现。文中将敏感信息已做处理&#xff0c;读者根据自…

2024-6-10-Model-Agnostic Meta-Learning (MAML)

摘自&#xff1a;Meta-Transfer Learning for Zero-Shot Super-Resolution 近年来&#xff0c;提出了各种元学习算法。它们可以分为三类&#xff1a; 基于度量的方法&#xff1a;这些方法通过学习度量空间&#xff0c;使得在少量样本内进行高效的学习。例如[35, 38, 39]。基于…

认识和使用 Vite 环境变量配置,优化定制化开发体验

Vite 官方中文文档&#xff1a;https://cn.vitejs.dev/ 环境变量 Vite 内置的环境变量如下&#xff1a; {"MODE": "development", // 应用的运行环境"BASE_URL": "/", // 部署应用时使用的 URL 前缀"PROD": false, //应用…

第1章Hello world 3/5:Cargo.lock:确保构建稳定可靠:运行第一个程序

讲动人的故事,写懂人的代码 1.6 Cargo.lock:确保构建稳定可靠 “看!”席双嘉一边指着屏幕一边说,“终端窗口提示符的颜色,从绿变黄了。这就意味着代码在上次提交后有点变化。” 赵可菲:“但是我们只是运行了程序,代码应该没动呀。” 席双嘉敲了下git status -uall,这…

【研发日记】Matlab/Simulink软件优化(三)——利用NaNFlag为数据处理算法降阶

文章目录 前言 背景介绍 初始算法 优化算法 分析和应用 总结 前言 见《【研发日记】Matlab/Simulink软件优化(一)——动态内存负荷压缩》 见《【研发日记】Matlab/Simulink软件优化(二)——通信负载柔性均衡算法》 背景介绍 在一个嵌入式软件开发项目中&#xff0c;需要开…

kubernetes(k8s)集群部署(2)

目录 k8s集群类型 k8s集群规划&#xff1a; 1.基础环境准备&#xff1a; &#xff08;1&#xff09;保证可以连接外网 &#xff08;2&#xff09;关闭禁用防火墙和selinux &#xff08;3&#xff09;同步阿里云服务器时间&#xff08;达到集群之间时间同步&#xff09; &…

上心师傅的思路分享(三)--Nacos渗透

目录 1. 前言 2. Nacos 2.1 Nacos介绍 2.2 鹰图语法 2.3 fofa语法 2.3 漏洞列表 未授权API接口漏洞 3 环境搭建 3.1 方式一: 3.2 方式二: 3.3 访问方式 4. 工具监测 5. 漏洞复现 5.1 弱口令 5.2 未授权接口 5.3.1 用户信息 API 5.3.2 集群信息 API 5.3.3 配置…

前端开发部署:Visual Studio Code + vue

〇 说明 本教程全部采用默认安装路径&#xff0c;因为在进行自定义路径安装的时候&#xff0c;需要配置各种环境变量&#xff0c;在这个配置过程中&#xff0c;可能出现各种很混乱的问题。 一 安装Node.js 1 下载https://nodejs.org/en 2 按照默认NEXT执行 C:\Program Files…

flutter日历范围选择器

1.传入日期跨度&#xff0c;选择上架日期时&#xff0c;自动显示下架日期 2.手动选择上架日期和下架日期(图中下架日期自动填了只需CalendarDateRangePicker在initState方法中使用_startDate widget.initialStartDate; _endDate widget.initialEndDate;&#xff0c;而不直接…

史上最详细四叉树地图不同技术应用和代码详解

四叉树地图在计算机和机器人领域应用的很广&#xff0c;但是初学者可能会发现四叉树地图有各种不同的实现方式&#xff0c;很多在机器人领域不适用或是在计算机存储领域不适用。今天我就讲解下各类四叉树的实现方式和应用场景。 史上最详细四叉树地图不同技术应用和代码详解 本…

出现 Navicat 和 Cmd 下SQL 版本 | 查询不一致的解决方法

目录 1. 问题所示1.1 查询表格不一致1.2 版本不一致2. 原理分析3. 解决方法1. 问题所示 命令行和数据库使用工具出现不一致的情况,分别有如下情况 1.1 查询表格不一致 使用工具查询当地表格: 使用命令行查询当地表格: 1.2 版本不一致 在cmd命令下mysql --version 查询…

Vue3全局封装dialog弹框

Vue3全局封装modal弹框使用&#xff1a; 应用场景&#xff1a;全局动态form表单弹框 应用Vue3碎片&#xff1a; ref&#xff0c;reactive&#xff0c;app.component&#xff0c;defineExpose&#xff0c;defineProps&#xff0c;defineEmits 应用UI: element-plus dialog form …

【设计模式】结构型设计模式之 适配器模式

介绍 适配器模式&#xff08;Adapter Pattern&#xff09; 是一种结构型设计模式&#xff0c;它的核心目的是使接口不兼容的类能够协同工作。适配器模式通过将一个类的接口转换为客户希望的另一个接口&#xff0c;来解决两个已有接口之间不匹配的问题&#xff0c;从而增加它们…

【Vue】声明式导航-自定义类名(了解)

问题 router-link的两个高亮类名 太长了&#xff0c;我们希望能定制怎么办 解决方案 我们可以在创建路由对象时&#xff0c;额外配置两个配置项即可。 linkActiveClass和linkExactActiveClass const router new VueRouter({routes: [...],linkActiveClass: "类名1&quo…

微信小程序毕业设计-网吧在线选座系统项目开发实战(附源码+论文)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…

Hadoop 2.0:主流开源云架构(一)

目录 一、引例&#xff08;一&#xff09;问题概述&#xff08;二&#xff09;常规解决方案&#xff08;三&#xff09;分布式下的解决方案&#xff08;四&#xff09;小结 自从云计算的概念被提出&#xff0c;不断地有IT厂商推出自己的云计算平台&#xff0c;但它们都是商业性…