ROS学习笔记(1) 基本命令

1.Linux基本命令

$ ls                           #列出当前目录下的文件
$ ls -a                        #列出当前目录所有文件,包括隐藏的文件
$ mkdir directory              #创建名为directory的目录
$ cd directory                 #改变目录进入directory
$ cd .                         #当前目录
$ cd ..                        #父目录
$ pwd                          #打印绝对路径
$ cd ~                         #家目录
$ cp file1 file2               #复制file1并将其命名为file2
$ mv file1 file2               #将file1移动并重命名为file2
$ rm                          #删除文件
$ rmdir                        #删除目录
$ clear                       #清屏
$ cat file                     #显示文件内容
$ less file                    #一次显示一个页面的文件(q退出,'/'+内容,可以搜索)
$ head                         #显示文件前10行
$ tail                         #显示文件尾10行
$ grep text text.txt           #在text.txt中搜索文字,区分大小写
$ grep -i text text.txt        #不区分大小写搜索文字
$ grep -i 'word' text.txt      #不区分大小写搜索'word'
$ -v                           #反选
$ -n                           #在选中的行前显示行号
$ -c                           #打印选中的总的行数
$ grep -ivc text text.txt      #不含text或者text的行数
$ wc                           #计算单词数(word count)
$ wc -w text.txt               #计算文本里的字数(不是字节数)
$ wc -l text.txt               #计算文本里的行数
$ cat                          #重定向输出(本来是输出到终端,现在输出到文本中)
$ Cat > list1                  #添加到list1,会覆盖原来的内容
$ cat >>list1                  #添加到list1,不会覆盖原来的内容
$ cat list1 list2 > biglist    #将list1和list2的内容合并到biglist
$ sort                         #重定向输入(本来是在键盘输入,现在可以利用一个文件当做输入)
$ sort < biglist               #将biglist打印到屏幕
$ sort < biglist > slist       #输出到slist
$ who                          #查看系统上有哪些用户
$ pipe                         #管道(管道可以连接两个命令,将前一个命令的输出数据当做到后一个命令的输入,管道符号为  |(shift+\))
$ who | wc -l                  ##显示登录了多少用户
$ *                            #通配符
$ ls *.txt                     #列出所有txt格式的文件
$ ?                            #匹配一个字符(比如?ouse会匹配house或者mouse而不是grouse)
$ whatis wc                    #显示wc的单行的帮助,省略选项等其他信息。命名文件和目录的时候尽量不要使用空格,应使用字母,数字,字符(即_)和.(句点)。不要使用有特殊含义的字符。文件名以字母开头后面跟 . 再跟表示文件类型的字母。如C程序,以  .c结尾。这样查找所有C文件时,只要输入ls *.c就可以。
$ man wc                       #显示详细的帮助文档
$ apropos keyword              #打印出所有含有关键字的命令
$ ls-l                         #列出目录信息,如 -rwxrw-r-- 1 ee51ab beng95 2450 Sept29 11:52 file1 ;从左到右,第一个字符是文档属性,然后是三组共九个权限,分别是拥有者、用户组、其他用户的读(r)、写(w)、执行(x)的权限,没有权限用'-'代替,之后是用户名,用户组名,文件大小,创建时间和文件名。
$ chmod                        #改变权限
$ chmod a+rw biglist           #将biglist的读写权限授予所有人
$ quota                        #显示磁盘使用情况和限额
$ df .                        #显示文件系统的剩余空间
$ du                          #显示每个子目录使用的kb数。常用来查看哪个文件最大
$ ps                           #查看进程
$ &                            #后台运行命令
$ sleep                        #等待
$ sleep 10 &                   #后台等待10秒,可用ctrl+z暂停一个进程,然后用bg使它在后台运行
$ jobs                         #查看暂停或者在后台运行的进程
$ fg %jobnumber               #激活暂停的进程
$ fg                           #只输入fg则激活最近暂停的进程
$ kill %jobnumber              #用jobnumber杀死进程
$ kill [PID号]                 #用进程编号杀死进程
$ kill -9 [PID号]              #强制杀死进程
$ gzip                         #压缩
$ gunzip                       #解压
$ zcat                         #阅读压缩的文件内容,无需解压
$ file                         #根据数据类型对文件进行分类
$ diff                         #比较两个文件内容并显示差异
$ find                         #查找
$ find  -name  "*.txt"  -print #从当前目录开始,遍历所有目录,查询以.txt为扩展名的文件,然后将文件名称打印到屏幕上
$ find  -size +1M -ls          #查找大小大于1M的文件,并将其结果显示为长列表。
$ history                      #显示输入的历史命令
$ !!                          #重新调用上一个命令
$ !-3                          #重新调用倒数第三个命令
$ !5                          #重新调用第五个命令
$ !grep                        #重新调用以grep开头的命令

2.ROS命令

2.1 功能包

2.1.1 安装功能包(通过apt-get)

$ sudo apt-get install package-name     #安装软件包package-name

2.1.2 功能包创建与编译

2.1.2.1 创建 

$ cd ~/catkin_ws/src                    #进入workspace
$ catkin_create_pkg package-name        #创建一个存放功能包的目录,并在其下生成两个配置文件,分别为package.xml和CMakeLists.txt

2.1.2.2 写程序(C++)

#include <ros / ros.h>

int main(int argc, char ** argv){      
ros::init(argc, argv, "hello_ros");    //初始化ROS系统
ros::NodeHandle nh;                    //将该程序设置为ROS节点(节点句柄)
ROS_INFO_STREAM("Hello, ROS!");        //以日志消息的形式输出
}

注:NodeHandle 类维护一个引用计数,仅仅在第一个NodeHandle 对象创建时才会在节点管理器注册新的节点。同样,只有当所有的 NodeHandle 对象都销毁后,节点才会注销。 

2.1.2.3 声明

声明依赖库:编辑包目录下的 CMakeLists.txt 文件

find_package(catkin REQUIRED COMPONENTS roscpp)    #添加roscpp依赖库以执行C++文件
#在包的清单文件中列出依赖库
<build_depend>package-name</build_depend>          #编译依赖
<run_depend>package-name</run_depend>              #运行依赖

声明可执行文件:在CMakeLists.txt文件中添加两行

add_executable(executable-name source-files)                 #声明可执行文件的文件名,以及生成此可执行文件所需的源文件列表
target_link_libraries(executable-name ${catkin_LIBRARIES})   #告诉Cmake当链接此可执行文件时需要链接哪些库(在上面的 find_package 中定义)

2.1.2.4 编译

$ cd ~/catkin_ws             #回到工作区目录
$ catkin_make                #编译所有包中的可执行文件
$ source devel/setup.bash    #执行setup.bash脚本文件

 setup.bash是catkin_make 在工作区的 devel 子目录下生成的。这个自动生成的脚本文件设置了若干环境变量,从而使 ROS 能够找到所创建的功能包和新生成的可执行文件。

注:大部分功能包( 已经更新为使用新的 catkin 编译构建系统的功能包 )编译产生的可执行文件并未存放在功能包目录下,而是存放在一个单独的标准化目录层次结构中。对于使用 apt-get 安装的功能包,其所在根目录为/opt/ros/melodic。可执行文件存储在这个根目录下的 lib 子目录里。

2.1.3 功能包操作 

$ rospack package-name          #获取软件包package-name的信息
$ rospack list                  #获取所有已安装的ROS软件包列表清单
$ rospack find package-name     #寻找软件包package-name所在的目录
$ rosls package-name            #查看软件包package-name目录下的文件
$ roscd package-name            #将当前目录切换至package-name软件包目录

2.2 节点

2.2.1 节点运行

$ roscore                              #启动节点管理器
$ rosrun package-name executable-name  #启动节点/运行ROS程序

2.2.2 节点操作

$ rosnode info node-name       #这个命令的输出包括话题列表、服务列表、其Linux 进程标识(process identifier,PID)以及与其他节点的所有连接
$ rosnode kill node-name       #终止节点
$ rosnode list                 #获得运行节点列表

注:在运行节点列表中通常会出现" /rosout ",rosout 节点是一个特殊的节点,通过 roscore 自动启动,其作用类似于控制台程序中使用的标准输出(即 std::cout)。

2.2.3 节点通信

$ rqt_graph                      #图像显示节点之间的发布-订阅关系(rqt_graph本身就是一个节点)
$ rostopic echo topic-name       #查看话题发布的消息
$ rostopic hz topic-name         #测量消息发布的频率
$ rostopic bw topic-name         #测量发布消息所占用的带宽
$ rostopic info topic-name       #获取更多关于话题的信息,包括消息类型及发布者订阅者
$ rosmsg show message-type-name  #查看消息类型的详情
$ rostopic pub –r rate-in-hz topic-name message-type message-content   #用命令行手动发布消息,其中message-content应该按顺序提供消息类型中所有域的参数值,例如rostopic pub –r 1 /turtle1/cmd_vel geometry_msgs/Twist ’[2,0,0]’ ’[0,0,0]’

注:所有的节点发布都向话题/rosout 发布消息,该话题由同名的 /rosout 节点订阅,这个话题用来生成各个节点的文本日志消息。

注:每条消息类型都属于一个特定的包。消息类型名总会包含一个斜杠,斜杠前面的名字是包含它的包: package-name/type-name,这样把包的名字包含在消息类型名里能避免命名冲突。

*2.2.4 问题检查 

$ roswtf        #进行全面而深入的检测,包括检测环境变量、安装的文件以及运行的节点
#例如,roswtf将会检测在安装过程中rosdep初始化是否完成,任何节点是否出现了意外的挂起或者终止,以及活跃节点是否正确地和其他节点相连接等

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值