前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ROS1云课→08基础实践(CLI命令行接口)

ROS1云课→08基础实践(CLI命令行接口)

作者头像
zhangrelay
发布2022-09-26 15:15:30
4990
发布2022-09-26 15:15:30
举报

ROS1云课→07基础概念


本小节将01-07内容进行单项和综合实践。

对于ROS1、2使用过程中遇到问题,要善于使用开源社区。

ROS开源社区级的概念主要是ROS资源,其能够通过独立的网络社区分享软件和知识。这些资源包括:

  • 发行版(Distribution) ROS发行版是可以独立安装、带有版本号的一系列综合功能包。ROS发行版像Linux发行版一样发挥类似的作用。这使得ROS软件安装更加容易,而且能够通过一个软件集合维持一致的版本。
  • 软件库(Repository) ROS依赖于共享开源代码与软件库的网站或主机服务,在这里不同的机构能够发布和分享各自的机器人软件与程序。
  • ROS维基(ROS Wiki) ROS Wiki是用于记录有关ROS系统信息的主要论坛。任何人都可以注册账户、贡献自己的文件、提供更正或更新、编写教程以及其他行为。
  • Bug提交系统(Bug Ticket System)如果你发现问题或者想提出一个新功能,ROS提供这个资源去做这些。
  • 邮件列表(Mailing list) ROS用户邮件列表是关于ROS的主要交流渠道,能够像论坛一样交流从ROS软件更新到ROS软件使用中的各种疑问或信息。
  • ROS问答(ROS Answer)用户可以使用这个资源去提问题。
  • 博客(Blog)你可以看到定期更新、照片和新闻,网址是http://www.ros.org/news

现在是时候对之前学习的内容进行一些练习了。在下面的课程中,包括练习包的创建,使用节点、参数服务器以及通过Turtlesim移动仿真机器人。

ROS文件系统导览

通过命令行工具来浏览一下ROS的文件系统。解释最常用的部分。

为了获得功能包和功能包集的信息,使用rospack、rosstack、roscd和rosls命令。使用rospackrosstack来获取有关功能包、功能包集、路径和依赖性等信息。

例如,如果想要找turtlesim包的路径,可以使用以下命令:

$ rospack find turtlesim

获得以下信息:

/opt/ros/kinetic/share/turtlesim

同样,如果想要找到已经在系统中安装过的某个综合功能包(元包),示例如下:

$ rosstack find ros_comm

获得到ros-comm综合功能包的路径,如下:

/opt/ros/kinetic/share/ros_comm

想要获得功能包或功能包集下面的文件列表,那么需要使用:

$ rosls turtlesim

之前命令的输出如下所示:

cmake    images    srv      package.xml  msg

如果想进入某个文件夹,可以使用roscd命令:

$ roscd turtlesim

$ pwd

获得以下新路径:

/opt/ros/kinetic/share/turtlesim

创建工作空间

在开始具体工作之前,首先创建工作空间。在这个工作空间中,将会完成本课程中使用的所有代码。

若要查看ROS正在使用的工作空间,请使用下面的命令:

echo ROS_PACKAGE_PATH

将会看到如下类似信息:

/opt/ros/kinetic/share:/opt/ros/kinetic/stacks

要创建的文件夹是在~/dev/catkin_ws/src/中。若要新建此文件夹,使用下面命令:

$ mkdir –p ~/dev/catkin_ws/src

$ cd ~/dev/catkin_ws/src

$ catkin_init_workspace

当创建工作空间文件夹后,里面并没有功能包,只有CMakeList.txt。下一步是编译工作空间,使用下面命令:

$ cd ~/dev/catkin_ws

$ catkin_make

现在,如果你输入ls命令,可以看到上面命令创建的新文件夹,分别是build和devel文件夹。

完成配置,使用下面命令:

$ source devel/setup.bash

zsh

这一步只是重新加载了setup.bash文件。如果关闭并打开一个新的终端,也将得到同样的效果。应该已经在~/.bashrc文件中加入了该命令行,因为在前面课程用过。如果没有,可以使用下面命令添加它:

$ echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc

创建ROS功能包和综合功能包

就像之前所说,也可以手动创建功能包。但是为了避免那些繁琐的工作,最好使用catkin_create_pkg命令行工具。

使用以下命令在之前建立的工作空间创建新的功能包:

$ cd ~/dev/catkin_ws/src

$ catkin_create_pkg base_tutorials std_msgs roscpp

此命令的格式包括功能包的名称和依赖项。在这个示例中,依赖项包括std_msgsroscpp。如以下命令行所示:

catkin_create_pkg package_name ... dependencyN

这些依赖项包括:

  • std_msgs 包含了常见消息类型,表示基本数据类型和其他基本的消息构造,如多维数组。
  • roscpp 使用C++实现ROS的各种功能。它提供了一个客户端库,让C++程序员能够调用这些接口快速完成与ROS的主题、服务和参数相关的开发工作。

如果所有步骤都正确执行,结果如下图所示:

正如我们之前看到的,你可以使用rospackroscdrosls命令来获取新的功能包信息。下面所示是独立使用的:

  • rospack profile 此命令用于通知新添加的内容
  • rospack find base_tutorials 此命令用于查找路径。
  • rospack depends base_tutorials 此命令用于查看依赖关系。
  • rosls base_tutorials 此命令用于查看内容。
  • roscd base_tutorials 此命令会更改实际路径。

编译ROS功能包

一旦创建了一个功能包,并且编写了一些代码,就需要编译功能包了。当编译功能包的时候,主要是代码的编译过程。

为了编译功能包,可以使用catkin_make工具:

$ cd ~/dev/catkin_ws/

$ catkin_make

在几秒之后,会看到:

如果没有看到错误提示信息,说明功能包编译成功。

记住必须在工作空间文件夹运行catkin_make命令。如果在其他文件夹这样做,命令无法执行。

$ roscd base_tutorials/

$ catkin_make

当在base_tutorials文件夹试图用catkin_make编译功能包,会看到如下错误:

当在catkin_ws文件夹执行catkin_make命令,则会编译成功。最后,如果编译单个功能包使用如下格式的命令:

$ catkin_make -–pkg <package name>


  • rosnode
  • rostopic
  • rosservice
  • rosparam
  • ……

这些也可以用图形化工具rqt替代使用。

例如:rostopic pub


本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-08-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档