首页 > 其他分享 >ROS实验课(二)

ROS实验课(二)

时间:2024-06-07 23:05:05浏览次数:11  
标签:文件 launch urdf 指令 ROS gazebo myrobot 实验课

前言

此篇博客记录ROS实验课二的内容,基于教材《ROS机器人开发技术基础》。

16.04的Ubuntu版本,7.16.1的gazebo版本,ROS版本为kinetic。

老师的本意是我们逐个学习urdf建模与gazebo控制,熟悉整个流程,在提供的教学包的基础上做出自己的改进。在命令行输入以下指令下载教学包:

git clone https://github.com/ccqjcj/ROS-Academy-for-Beginners.git

记得在工作空间目录 ~/catkin_ws/ 目录下运行指令,安装依赖。

rosdep install --from-paths src --ignore-src --rosdistro=kinetic -y

 此条指令可能无法一次性解决依赖的问题。笔者后面很笨地一个一个装,如果有更好的方法,欢迎留言。

本文假设各位都已成功安装教学包。且安装了与ubuntu版本相适配的gazebo版本。

此处记录速通的方法,没有所谓的技术改进。

简单流程

1、ArbotiX + Rviz

在你的工作空间,即 ~/catkin_ws/  目录下运行该指令,打开第一个仿真环境。在运行launch文件之前,别忘记刷新环境。

 然后,输入以下指令,会有第一个仿真环境。

roslaunch myrobot_description arbotix_myrobot_with_kinect.launch

我们讲解一下这条指令的意思。roslaunch 表示启动当前工作空间下ros功能包中的launch文件。

myrobot_description 是一个功能包,包中有launch文件夹,urdf文件夹等等。在launch文件夹中存放着 myrobot_description功能包中的launch文件——我没见过太多的例子,推测这是一种文件夹的管理方式,清晰直观。

arbotix_myrobot_with_kinect.launch 是launch文件夹的名字,最后的 .launch 是拓展名。

所以,这条指令的意思是, 启动当前工作空间下 myrobot_description 功能包中的  arbotix_myrobot_with_kinect.launch 文件。

如果报错,一般有两种可能:

1、你没有这个功能包,那就自己重新下载,或者干脆写一个。

2、你没有刷新环境,此处给出关于刷新环境的参考博客,建议参考博客中的第二种方法,一劳永逸。

【解决问题】RLException: [xx.launch] is neither a launch file in package [x] nor is [x] a launch file name_roscore错误-CSDN博客

接着,输入第二条指令控制机器人运动:

roslaunch myrobot_teleop myrobot_teleop.launch

指令的意思和上面的一样。只要在ROS工作空间下,只要遵循着这样的格式,那么它的意思你应该能够明确地得出。

如此,成功的话,会有类似效果。你可以通过在键盘上按下 u、i 等字母控制机器人的运动,终端的英文提示信息会告诉你更详细的内容。

2、ros_control + gazebo

 同样,在工作空间下,输入指令便能打开gazebo

roslaunch myrobot_gazebo view_myrobot_with_camera_gazebo.launch

再输入指令,查看当前摄像头传回的图像。

rqt_image_view

此条指令在任何目录下都使用,但得先运行一个ROS节点。顺利的话,结果如下:

遇到的问题

当然,我在这些过程中遇到了问题,成功启动第一份launch文件,我得到的是一个类似幽灵的、白色的轮廓,并没有具体的几何图形。这可能是因为你没有安装ArbotiX功能包。

我通过输入以下指令解决:

sudo apt-get install ros-kinetic-arbotix-*

这条指令相信你很熟悉,不妨再讲一遍

sudo 用root用户的权限  apt-get install , linux操作系统中常用的下载指令; ros-kinetic-arbotix-*,

下载的内容是ros操作系统中 kinetic版本下的arbotix中的全部内容。此处的 * 是代指的意思。我可以再给你一个例子:

mv *.txt /home  将当前目录下所有的txt文件移动到/home目录下。  

而在尝试启动第二份launch文件时,gazebo显示preparing your work,加载很长时间。原因是 ~/.gazebo文件中的model文件夹内缺失必要的模型,给出解决的参考链接:

【踩坑记录】Gazebo启动慢,画面卡“Preparing your world”_gazebo卡在启动界面-CSDN博客

summary

以上,便是此次实验的记录了。只看操作方法,不考虑原理的的话,流程很快,可以速通。但若想从零开始,还是有一定的挑战性。

1、需要在urdf文件中描述机器人的几何特性,连杆间的连接情况,运动学、动力学特征等等。你也可以用xacro文件简化urdf模型,它更精简,支持代码复用,在大型工程中更受欢迎。

2、你需要一个launch文件启动结点。

3、通常情况下需要一个.yaml配置文件为urdf文件提供具体的参数。——与之相对,你可以硬编码(hard coding),即在urdf文件中直接对惯性、质量等标签赋值。这种方法在单个简单项目中当然无可厚非,能够胜任任务。但在大型文件或需要反复更改测试不同参数模型情况时,很是费力。所以我们一般都提倡有这么一个配置文件,它的作用就是传入参数。

4、想要在gazebo包中仿真,就需要在urdf文件中写入gaebo插件。格式遵从urdf文件中其他标签的格式。

5、当然,在完成上述步骤后,你也许能够成功运行并达到期望的效果。而更多数情况下,你可能会遇到各种错误,然后一步一步定位,返回修改。在多次经历了这样的过程后,你的功能包成功启动。那么,恭喜你。

最后,如前所述,这篇博客仅仅作为记录。感兴趣的话,可以自己查看功能包中的内容。

标签:文件,launch,urdf,指令,ROS,gazebo,myrobot,实验课
From: https://blog.csdn.net/qq_64338302/article/details/139469308

相关文章

  • ROS socketcan_bridge使用说明
    ROSsocketcan_bridge使用说明(以ubuntu20.04为例)socketcan_bridge是什么ROS针对socketcan提供了三个层次的驱动库,分别是ros_canopen,socketcan_bridge和socketcan_interface。socketcan_interface:功能:这是最底层的包,直接与Linux的SocketCAN库交互。它提供了基础的API来......
  • 一键云部署:资源编排 ROS 轻松部署 LLM 流程编排服务 Flowise
    Flowise是一个开源的低代码工具,供开发者构建定制化的LLM流程编排和AI代理。资源编排服务(ResourceOrchestrationService,ROS)是阿里云提供基于基础设施即代码(InfrastructureasCode,IaC)理念的自动化部署服务,我们可以通过定义一个JSON/YAML/Terraform模板,轻松部署一套......
  • Microsoft Remote Desktop for Mac(微软远程连接软件)v10.9.7直装版
    MicrosoftRemoteDesktop是微软开发的远程连接工具,支持Windows、macOS、iOS和Android,允许用户通过互联网远程访问其他计算机的桌面和应用程序,实现跨设备文件共享。同时,它提供网络层身份验证、数据加密和多重身份验证等安全功能,确保用户隐私和数据安全。MicrosoftRemoteDesk......
  • 数据分析实战—Microsoft 股票价格数据集
    前言    Microsoft最初从为Altair8800开发BASIC解释器开始,迅速扩展了其产品线,包括MS-DOS操作系统,该系统成为IBMPC的基石。这一成功之后是 Windows操作系统的推出,它已成为个人和商业计算的主要平台。多年来,Microsoft已经使其产品多样化,包括MicrosoftOffice等软件产......
  • microsoft store商店无法下载问题
    解决办法:开启window更新;1.开始--》搜索“服务”--》以管理员身份运行;2.找到Windowsupdate,开启即可如果服务状态是停止,无法开启。则参照下面的方法打开注册表找到层级:计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wuauserv更改所有者......
  • 一键云部署:资源编排 ROS 轻松部署文本转语音系统 ChatTTS
    ChatTTS是专门为对话场景设计的文本转语音模型,例如LLM助手对话任务。它支持英文和中文两种语言。最大的模型使用了10万小时以上的中英文数据进行训练。ChatTTSwebUI&API为ChatTTS提供了网页界面和API服务。资源编排服务(ResourceOrchestrationService,ROS)是阿里云提供基......
  • Microsoft.Extensions.DependencyInjection会自动释放通过DI(依赖注入)创建的对象
    Microsoft.Extensions.DependencyInjection中(下面简称DI),在调用ServiceProvider和IServiceScope对象的Dispose()方法时,也会自动调用ServiceProvider和IServiceScope对象通过DI创建的对象的Dispose()方法(前提是,通过DI创建的对象实现了IDisposable接口)。我们新建一个.NETCore控制台......
  • # WIN10/WIN11 找不到【应用商店 Microsoft.WindowsStore】怎么办?
    WIN10/WIN11找不到【应用商店Microsoft.WindowsStore】怎么办?解决方法:1、右键【开始】菜单,点击【WindowsPowerShell(管理员)】,输入:Get-AppxPackage-allusers|SelectName,PackageFullName2、查询到的目录中找到【Microsoft.WindowsStore】,复制后面的可安装版本......
  • [ROS报错问题]SystemError: initialization of cv_bridge_boost raised unreported ex
            在运行ROS代码时,很多人会使用到cv_bridge库,这个库的主要功能是帮助在ROS的图像消息(sensor_msgs/Image)和OpenCV的图像格式(cv::Mat)之间进行转换。然而,有时在使用cv_bridge时会遇到一个让人头疼的问题,即报错:fromcv_bridge.boost.cv_bridge_boostimportcvt......
  • Bi-encoder vs Cross encoder?
    本文永久地址:https://wanger-sjtu.github.io/encoder-cross-bi/Bi-encoder和Cross-encoder是在自然语言理解任务模型的两种不同方法,在信息检索和相似性搜索二者的使用更为广泛。在LLM大火的今天,RAG的pipeline中这两个模块作为提升检索精度的模块更是备受瞩目。Bi-encoder:架......