ROS之命令总结

本文详细介绍了ROS(Robot Operating System)的各种命令,包括创建catkin包、解析urdf、使用rosrun运行节点、发布消息、监控话题速率、数据可视化、文件复制、工作空间管理和更多实用操作。此外,还讲解了ROS工作空间的创建、编译、添加到全局路径等步骤,以及package、node、topic、service等相关操作。对于开发者来说,是深入理解ROS命令的实用指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建新的catkin包

catkin_create_pkg<package_name> [depend1] [depend2] [depend3]

$catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

 

解析urdf:

$check_urdf****.urdf

 

rosrun允许您使用包名直接在包中运行一个节点(无需知道包路径)。

$rosrun [package_name] [node_name]

 

发布实时消息

rostopicpub [topic] [msg_type] [args]

$rostopic pub  /turtle1/cmd_velgeometry_msgs/Twist -1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'

上面的命令里面的 -1 表示: 只发布一次,维持3秒,然后退出,

“[2.0,0.0,0.0]”成为x=2.0, y=0.0, z=0.0,以及“[0.0,0.0,1.8]”的线性值,为x=0.0, y=0.0, z=1.8的角度值。

$rostopic pub  /turtle1/cmd_velgeometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'

上面这句里的 -r 1 指的是:以 1Hz 的速度循环发送 -- 后面的信息

 

rostopichz报告数据发布的速率。

rostopichz [topic]

 

rqt_plot数据转换成波形

$rosrun rqt_plot  rqt_plot

 

实现了将文件从一个package复制到另外一个package的功能。

$roscp [package_name] [file_to_copy_path] [copy_path]

$roscp rospy_tutorials AddTwoInts.srv srv/AddTwoInts.srv

ROS常用命令集锦

http://blog.youkuaiyun.com/nnnnnnnnnnnny/article/details/75213524

http://blog.youkuaiyun.com/nnnnnnnnnnnny/article/details/75213524

http://blog.youkuaiyun.com/qq_36355662/article/details/62424704

一、创建 ROS 工作空间

1、启动 ROS       

$     roscore

2、创建工作环境

$     mkdir -p ~/catkin_ws/src

$     cd ~/catkin_ws/src

$     catkin_init_workspace

3、编译 ROS 程序

$     cd ~/catkin_ws

$     catkin_make

4、添加程序包到全局路径

$     echo "sourcecatkin_ws/devel/setup.bash" >> ~/.bashrc

$     source ~/.bashrc

5、设置工作空间,ROS环境变量,及变量路径

$    gedit ~/.bashrc

$    echo $ROS_PACKAGE_PATH 

二、Package 相关操作

1、创建 Package 并编译

$     cd ~/catkin_ws/src

$     catkin_create_pkg <package_name>[depend1] [depend2] [depend3]

$     cd ~/catkin_ws

$     catkin_make

2、查找 Package

$     rospack find [package name]

3、查看 Package 依赖

$    rospack depends <package_name>

$    rospack depends1 <package_name>

三、Node 相关操作

1、查看所有正在运行的 Node

$     rosnode list

2、查看某节点信息

$     rosnode info [node_name]

3、运行 Node

$     rosrun [package_name] [node_name][__name:=new_name]

四、Topic 相关操作

1、查看 rostopic 所有操作

$     rostopic -h

2、查看所有 Topic 列表

$     rostopic list

3、图形化显示 topic

$     rosrun rqt_graph rqt_graph

$     rosrun rqt_plot rqt_plot

4、查看某个 Topic 信息

$     rostopic echo [topic]

5、查看 Topic 消息格式

$     rostopic type [topic]

$     rosmsg show [msg_type]

6、向topic发布消息

$     rostopic pub [-1] <topic><msg_type> [-r 1] -- [args] [args]

五、Service 相关操作

1、查看所以service操作

$     rosservice -h

2、查看 service 列表

$     rosservice list

3、调用 service

$     rosservice call [service] [args]

4、查看 service 格式并显示数据

$     rosservice type [service] | rossrv show

5、设置service parameter

$     rosparam set [parame_name] [args] +rosservice call clear

6、获得parameter

$     rosparam get [parame_name]

7、加载parameter

$     rosparam load [file_name] [namespace]

8、删除parameter

$     rosparam delete

六、Bag 相关操作

1、录制所有topic变化

$     rosbag record -a

2、记录某些topic

$     rosbag record -O subset <topic1><topic2>

3、查看bag信息

$    rosbag info <bagfile_name>

4、回放

$     rosbag play (-r 2) <bagfile_name>

 

 

 

1.需要文件修改权限的文件访问时在代码前加:sudo

Linux命令学习笔记之一目录与文件基本操作,,网址:http://blog.51cto.com/indigotang/1748206

目录操作

cd:进入目录

   基本格式:cd 目录名

   例子:

     1)、在当前目录进入子目录a,输入“cd a

      2)、在当前目录进入根目录下的子目录tmp,输入“cd /tmp

 

cd ..:返回上一级目录

   基本格式:cd ..

   例子:当前目录/tmp/sa/eet

      1)、返回上一级目录,输入“cd ..

     2)、返回tmp目录,输入“cd ../..

cd- :返回到上次访问的目录

http://blog.youkuaiyun.com/youngpan1101/article/details/61196300

http://blog.sina.com.cn/s/blog_12eb0ce3b0102xhyv.html

ls:显示目录中的文件与子目录

    基本格式:ls[-可选项]

    例子:当前目录/tmp

      1)、显示当前目录内的文件与目录,输入“ls”

      2)、显示/home目录内的文件与目录,输入“ls /home”

 

pwd:显示目录完整路径信息

    基本格式:pwd

 

mkdir:创建新目录

    基本格式:mkdir目录名称

    例子:当前目录/tmp/sa/eet

      1)、在当前目录下创建一个名为abc的目录,输入“mkdir abc”

      2)、在根目录下创建一个名为group1的目录,输入“mkdir /group1”

       3)、在当前目录下创建这样一组目录group/user/id,输入“mkdir-p group/user/id”

       4)、在根目录下创建这样一组目录/ie/temp/hi,输入“mkdir-p /ie/temp/hi”

 

mv:重命名和移动目录

    基本格式:

      重命名:mv旧目录名 新目录名

      移动:mv要移动的目录名 目的路径

    例子:当前目录/home

      1)、将目录aaa重命名为bbb,输入“mv aaa bbb”

      2)、将当前目录下aaa目录移动动到根目录,输入“mv aaa /”

      3)、将根目录下a_1目录移动到当前目录,输入“mv /a_1 /home”

 

cp-r:复制目录

    基本格式:cp-r 要复制的目录名 复制后的目录名

    例子:当前目录/home

      1)、当前目录下名为abc的目录复制一份,并命名为cba,输入“cp -r abc cba”

      2)、将当前目录名为abc的目录复制到/tmp目录下,复制后的名称仍然是abc,

        输入“cp-r abc /tmp”

      3)、将当前目录名为abc的目录复制到/tmp目录下,并重命名为cba,

        输入“cp-r abc /tmp/cba”

      4)、将/tmp目录中的cba目录复制到当前目录下,复制后名称仍然是cba,

        输入“cp-r /tmp/cba /home”

      5)、将/tmp目录下的cba目录复制到当前目录下,并重命名为abc,

        输入“cp-r /tmp/cba /home/abc”

 

rm-r:删除目录

    基本格式:rm-r 要删除的目录名称

    例子:当前目录/home

      1)、删除当前目录下的名为abc的目录,输入“rm -r abc”。

        如果要删除的目录是空目录,则会直接删除;

        如果删除的目录不为空,则会提示“rm: descend into directory `abc'?”,只要

        输入“y”。

      2)、删除/tmp目录下aaa目录,输入“rm -r /tmp/aaa”

 

rm-rf:强制删除目录

    基本格式:rm-rf 要删除的目录名称

    注意:使用该命令时不会有任何提示,在使用前一定要确认路径,以免误删造成损失

 

文件操作

touch:创建新的文件

    基本格式:touch文件名称

    例子:当前目录/home

      1)、当前目录下创建一个名为big的文件,输入“touch big”

      2)、在根目录下创建一个名为small的文件,输入“touch /small”

      3)、在/tmp目录下创建一个名为middle的文件,输入“touch /tmp/middle”

 

cp:复制文件

基本格式:cp-r 要复制的目录名 复制后的目录名

    例子:当前目录/home

      1)、当前目录下将名为big的文件复制一份,并重命名为bigger,输入“cp big bigger”

      2)、将当前目录下名为big的文件复制一份到/tmp目录中,文件名称仍然为big,

        输入“cp–r big ~/tmp/big”

      3)、将当前目录下名为small的文件复制一份到/tmp目录中,并重命名为smaller,

        输入“cp–r small ~/tmp/smaller”

      4)、将/tmp目录下名为middle的文件复制一份到/usr,文件名称仍然为middle,

        输入“cp–r ~/tmp/middle ~/usr/middle”

      5)、将/tmp目录下名为list的文件复制一份到/usr,并重命名为list.bak,

        输入“cp–r ~/tmp/list ~/usr/list.bak”

同意模板:将catkin_ws/src/test_robot下的robot.urdf文件复制到catkin_ws/src/robot_description下,并保持名字不变,

$cp–r ~/catkin_ws/src/test_robot/robot.urdf~/catkin_ws/src/robot-description/robot.urdf

          

rm:删除文件

    基本格式:rm文件名

    例子:当前目录/home

      1)、将当前目录中名为same的文件,输入“rm same”,

        回车后回有提示“rm:remove regular empty file `same'?”,在提示后输入“y”

      2)、删除/tmp目录中名为tnsname.bak的文件,输入“rm /tmp/tnsname.bak”,

        回车后回有提示“rm:remove regular empty file `tnsname.bak'?”,

        在提示后输入“y”

 

rm-rf:强制删除文件

    基本格式:rm-rf 文件名

    注意:使用该命令时不会有任何提示,在使用前一定要确认路径,以免误删造成损失

 

mv:重命名和移动文件

    基本格式:

      重命名:mv旧文件名 新文件名

      移动:mv要移动的文件名 目的路径

    例子:当前目录/home

      1)、重命名当前目录中名为sam的文件为sam.bak,输入“mv sam sam.bak”

      2)、将当前目录中名为sam的文件移动到/tmp目录下,文件名仍然为sam,

        输入“mvsam /tmp”

      3)、将当前目录中名为sam的文件移动到/tmp目录下,并重命名为sam.bak,

        输入“mvsam /tmp/sam.bak”

      4)、将/tmp目录中名为test的文件移动到/usr目录下,文件名仍然为test,

        输入“mv/tmp/test /usr”

      5)、将/usr目录中名为test的文件移动到/tmp目录下,并重命名为test.bak,

        输入“mv/usr/test /tmp/test.bak”

 

cat:查看文件内容

    基本格式:cat文件名

    例子:当前目录/home

      1)、查看当前目录下名为gif的文件,输入“cat gif”

      2)、查看/tmp目录下名为hill的文件,输入“cat hill”

 

head-n:查看文件前n行的内容

    基本格式:head-n 文件名

    例子:当前目录/home

      1)、查看当前目录下名为gif的文件前10行的内容,输入“head -10 gif”

      2)、查看/tmp目录下名为hill的文件前2行的内容,输入“head -2 hill”

 

tail-n:查看文件后n行的内容

    基本格式:tail-n 文件名

    例子:当前目录/home

      1)、查看当前目录下名为gif的文件后10行的内容,输入“tail -10 gif”

      2)、查看/tmp目录下名为hill的文件后2行的内容,输入“tail -2 hill”

 

tail-f:实时监控文件的变化

    基本格式:tail-f 文件名

 

more:向后分页查看文件内容

    基本格式:more文件名

    注意:使用该命令只能向后分页查看文件内容,向后翻页按空格键

 

less:向前向后分页查看文件内容

    基本格式:less文件名

    注意:使用该命令向前向后翻页按上下箭头

 

linux命令之cd,ls,vi进入及退出文件

一、cd用来进入指定的某个目录。

cd -          #回到上次所在目录,感觉还是比较有用,省略了很多输入。

cd !$          #把上个命令的参数作为输入。

cd           #回到主目录

cd ~         #同样也是回到主目录

 

二、ls列出当前目录下的文件。

 

ls命令是我们常用的几个命令,但是其中有一些很有用的参数我们往往不是很清楚,现在介绍如下:

 

  -t-c 按照时间顺序显示

 

  -p-F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOs;“=”表示套接字(sockets)。

 

  -r对目录反向排序。

 

  -s在每个文件名后输出该文件的大小。

 

  -u以文件上次被访问的时间排序。

 

  -S以文件大小排序。

 

  -d将目录象文件一样显示,而不是显示其下的文件。

 

  -X以文件的扩展名(最后一个. 后的字符)排序。

 

三、vi命令用来打开文件。

 

       vi filename :打开或新建文件,并将光标置于第一行首

 

  vi+n filename :打开文件,并将光标置于第n行首

 

  vi+ filename :打开文件,并将光标置于最后一行首

 

  vi+/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处

 

  vi-r filename :在上次正用vi编辑时发生系统崩溃,恢复filename

 

  vifilename....filename :打开多个文件,依次进行编辑

 

四、退出文件

 

       退出Vi

  

  当编辑完文件,准备退出Vi返回到shell时,可以使用以下几种方法之一。

  

  在命令模式中,连按两次大写字母Z,若当前编辑的文件曾被修改过,则Vi保存该文件后退出,返回到shell;若当前编辑的文件没被修改过,则Vi直接退出,返回到shell。

  

  在末行模式下,输入命令

  

  :wbitsCN.nET中国网管博客

  

  Vi保存当前编辑文件,但并不退出,而是继续等待用户输入命令。在使用w命令时,可以再给编辑文件起一个新的文件名。

        在末行模式下,输入命令

  

  :q

  

  系统退出Vi返回到shell。若在用此命令退出Vi时,编辑文件没有被保存,则Vi在显示窗口的最末行显示如下信息:

  

  Nowrite since last change (use! to overrides)

  

  提示用户该文件被修改后没有保存,然后Vi并不退出,继续等待用户命令。若用户就是不想保存被修改后的文件而要强行退出Vi时,可使用命令

  

  :q!

  

  Vi放弃所作修改而直接退到shell下。

  

  在末行模式下,输入命令

  

 

Play.bitsCN.com小游戏

 

 

  :wq

  

  Vi将先保存文件,然后退出Vi返回到shell。

 

修改文件的权限:

http://blog.youkuaiyun.com/sinat_30071459/article/details/51191693

https://www.cnblogs.com/avril/archive/2010/03/23/1692809.html

Linux修改文件属性和权限

在Linux下,和文件有关的身份有用户组,所有者,others,这三种身份又有三种权限,即r(读)、w(写)、x(执行)。

 

首先,文件权限描述由10个字符组成,例如,“-rwxr-xr--”、"drwxr-xr-x".

其中,第一个字符的含义为:

d:表示目录

-:表示文件

l:表示连接文件

b:表示设备文件里面的可供存储的接口设备

c:表示设备文件里面的串行端口设置,例如键盘、鼠标

 

接下来的9个字符,分为三组,每组三个字符,均为“rwx”的三个参数组合。这三个字符的位置不会改变,如果没有某权限,则出现‘-’号。

这三组字符中,第一组表示文件所有者的权限;第二组表示同用户组的权限;第三组表示others的权限。

 

1、修改文件所属用户组

命令:chgrp

例如,修改文件install.log的所属用户组为users,则输入命令:

[plain] view plain copy

# chgrp users install.log 

2、修改文件所有者

命令:chown

例如,修改install.log的所有者为bin,则输入命令:

[plain] view plain copy

# chown bin install.log 

3.修改权限

命令:chmod

我们知道,Linux文件的基本权限有9个,分别是owenr、group、others三种身份各自有自己的r、w和x。假如文件的权限字符为:“-rwxrwxrwx”,这9个权限是三个三个一组的,我们可以使用数字表示权限:

r->4

w->2

x->1

所以,当文件权限为“-rwxrwx---”时,分数是:

owner->4+2+1=7

group->4+2+1=7

others->0+0+0=0

此时文件的权限数字就是770.

 

假如有一文件bashrc,权限字符为“-rwxrwxrwx”,我们需要修改为“-rwxr-xr--”,计算得权限数字为754,所以,执行命令:

[plain] view plain copy

# chmod 754 bashrc 

 

还有一个改变权限的办法。我们知道文件有9个基本权限,分别是owner、group和others三种身份各自的三个权限,我们用u、g、o代表三种身份,用a(all)代表所有身份,得到下表:

 

例如,我们可以这样设置文件bashrc的权限:

[plain] view plain copy

# chmod u=rwx,go=rx bashrc 

 

即user权限为rwx,group和others的权限均为rx。

如果我们想让每个人都可对文件bashrc写入,则可以:

[plain] view plain copy

# chmod a+w bashrc 

 

而如果要将权限去掉,则用-。例如我们去掉全部人的执行权限:

[plain] view plain copy

# chmod a-x bashrc

 

 

roslaunch的语法为

Usage: roslaunch [options] [package] [arg_name:=value…]

roslaunch 包名文件名参数名:=

 

<think>我们正在处理一个关于ROS(Robot Operating System)的问题。用户询问如何撤销ROS中的命令操作。 根据问题,我们需要理解“撤销命令操作”在ROS上下文中的含义。ROS本身是一个框架,不提供通用的“撤销”命令,但我们可以根据具体操作来讨论如何撤销或回退。 分析用户问题: 用户可能执行了某些ROS命令(如启动文件、参数设置等)并希望撤销这些操作的效果。 可能的场景: 1. 撤销节点启动:通常通过Ctrl+C终止节点。 2. 撤销参数设置:ROS参数服务器上的参数可以通过删除或重新设置来撤销。 3. 撤销消息发布/订阅:停止发布节点或取消订阅。 4. 撤销launch文件启动的多个节点:终止整个launch文件(Ctrl+C)或使用rosnode kill。 5. 撤销通过命令行设置的环境变量等:关闭当前终端,重新打开。 由于引用中并没有直接提到“撤销命令”,但我们可以根据ROS的常规操作和引用中的一些信息来推断。 引用[1]提到“版本查询及回退”和“撤销修改/删除分支管理”,这可能是针对使用git管理的ROS包,而不是ROS运行时命令。 引用[2]提到了在vim编辑器中撤销操作(通过u命令),但这与ROS命令撤销无关。 引用[4]提到ros2 bag(录包)命令,但未提及撤销。 因此,我们需要根据不同的操作提供不同的撤销方法。 回答结构: 1. 解释ROS中没有通用的撤销命令,需要根据具体情况处理。 2. 分情况讨论如何撤销常见的ROS操作。 具体操作: 情况1:撤销节点运行 - 如果节点是在前台运行的(直接运行rosrun或ros2 run),按Ctrl+C即可终止。 - 如果节点在后台运行,使用`rosnode list`查看节点名称,然后使用`rosnode kill <node_name>`(ROS1)或`ros2 lifecycle set <node_name> shutdown`(ROS2)来终止节点。 情况2:撤销参数设置 - 在ROS1中,使用`rosparam delete <param_name>`删除参数。 - 在ROS2中,使用`ros2 param delete <node_name> <param_name>`删除参数,或者重新设置参数为之前的值。 情况3:撤销通过launch文件启动的多个节点 - 如果launch文件在前台运行,按Ctrl+C终止整个launch文件启动的所有节点。 - 如果launch文件在后台运行,需要找到每个节点并逐个终止,或者使用`rosnode kill`(ROS1)或`ros2 lifecycle set ... shutdown`(ROS2)来终止节点。 情况4:撤销话题或服务的操作 - 停止发布者:终止发布节点或使用`rostopic pub`(ROS1)或`ros2 topic pub`(ROS2)发布一次空消息(如果适用)来覆盖,但通常终止节点是直接的方法。 - 取消订阅:终止订阅节点。 情况5:撤销通过命令行设置的环境变量 - 环境变量只在当前终端会话有效,关闭终端再打开即可撤销。 情况6:撤销在参数服务器上的所有更改(ROS1) - 重启roscore:因为参数服务器在roscore中,重启roscore会清除所有参数。但这样会终止所有节点。 注意:在ROS2中,参数服务器被分布式取代,每个节点管理自己的参数。因此,删除参数或重启节点即可。 另外,引用[4]中提到了ros2 bag命令,如果用户录制了bag文件,想要撤销录制,只能手动删除录制的文件。 总结:撤销操作需要根据具体执行的命令采取不同的方法。 生成相关问题: 1. 如何终止ROS中正在运行的节点? 2. 如何删除ROS参数服务器上的参数? 3. 如何撤销ROS launch文件启动的所有节点? 4. ROS2中如何管理参数的生命周期? 5. 如何取消ROS话题的订阅? 根据以上分析,我们给出回答。</think>在 ROS 中,没有直接的"撤销命令"功能,但可以通过以下方式实现类似效果: ### 1. **终止运行中的节点/进程** - **前台运行的节点**:按 `Ctrl+C` 直接终止当前终端中的进程。 - **后台运行的节点**: ```bash # 查看所有节点 rosnode list # 终止指定节点 rosnode kill /node_name ``` - **终止整个 launch 文件**: ```bash # 查找 launch 文件进程 ID ps aux | grep roslaunch # 终止进程 kill -9 <process_id> ``` ### 2. **撤销参数修改** - **删除错误参数**: ```bash rosparam delete /param_name ``` - **恢复默认值**: ```bash # 从文件重新加载参数 rosparam load ~/.ros/params.yaml ``` ### 3. **撤销文件修改** - 如果误编辑了 ROS 文件(如 `CMakeLists.txt` 或 `package.xml`): ```bash # 使用 git 撤销更改(需版本控制) git checkout -- filename ``` > 引用[2]中提到:ROS 开发中常用 `git` 管理代码版本,通过 `git checkout` 可快速回退文件[^2]。 ### 4. **撤销环境变量设置** - 关闭当前终端并重新打开,或重置环境: ```bash source /opt/ros/noetic/setup.bash # ROS1 source /opt/ros/humble/setup.bash # ROS2 ``` ### 5. **可视化工具中的撤销** - 如 RViz 或 Gazebo: - 按 `Ctrl+Z` 撤销上一步操作(如模型移动) - 在 Gazebo 界面使用 **Undo** 按钮(部分版本支持) > 引用[3][5]指出:Gazebo 的"World"选项卡可重置模型位姿,部分工具支持完整撤销栈[^3][^5]。 --- ### 操作建议总结 | **操作类型** | **撤销方法** | 命令示例 | |--------------------|----------------------------------|-----------------------------------| | 运行中的节点 | 终止节点 | `rosnode kill /node_name` | | 参数修改 | 删除或重载参数 | `rosparam delete /param_name` | | 文件编辑错误 | Git 回退或手动恢复 | `git checkout -- CMakeLists.txt` | | Launch 文件启动 | 终止整个 launch 进程 | `kill -9 <roslaunch_pid>` | | 可视化工具操作 | 使用内置撤销功能 | Gazebo/RViz 的 `Undo` 按钮 | > **重要提示**:ROS 本身不提供全局撤销栈,关键操作前建议: > 1. 使用 `git` 管理代码[^2] > 2. 备份参数文件:`rosparam dump ~/backup.yaml` > 3. 复杂操作分段测试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值