ROS实验课(二)

前言

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

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

相关推荐

  1. 51单片机实验

    2024-06-06 15:04:02       30 阅读
  2. ROS 语音交互()nlp

    2024-06-06 15:04:02       25 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-06 15:04:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-06 15:04:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-06 15:04:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-06 15:04:02       20 阅读

热门阅读

  1. 自动化迁移和更新物体检测XML数据集

    2024-06-06 15:04:02       8 阅读
  2. 03-3.1.2 栈的顺序存储的实现

    2024-06-06 15:04:02       10 阅读
  3. AJAX

    AJAX

    2024-06-06 15:04:02      8 阅读
  4. leetcode刷题

    2024-06-06 15:04:02       8 阅读
  5. WebRTC 在 Android 端实现一对一通信

    2024-06-06 15:04:02       8 阅读
  6. Webrtc支持HEVC之Mediasoup SDP协商编码流程(三)

    2024-06-06 15:04:02       9 阅读
  7. Webrtc支持HEVC之编解码器创建(二)

    2024-06-06 15:04:02       8 阅读
  8. cuda 存储相关博客收藏

    2024-06-06 15:04:02       7 阅读
  9. 注解 - @RequestParam

    2024-06-06 15:04:02       8 阅读
  10. Python正则表达式匹配中文:深入解析与实战应用

    2024-06-06 15:04:02       9 阅读
  11. git -- 清除本地分支以及删除远程分支

    2024-06-06 15:04:02       11 阅读
  12. STM32开发遇见问题解决2024.6.6

    2024-06-06 15:04:02       7 阅读