source /opt/ros/noetic/setup.bash
添加到~/.bashrc
文件中,而不是每打开一个终端后输入一次该命令。catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3
编译。该命令将会配置catkin_make使用python3,而之后的构建中可以只使用catkin_make.$ echo $ROS_PACKAGE_PATH
/home/cold/liguang/specialpacks/ws_livox_camera_calib/src:/home/cold/liguang/ws_r3live/src:/home/co中ld/liguang/specialpacks/ws_livox_driver/src:/opt/ros/noetic/share
# 需要注意的是,以上的环境变量的顺序与/.bashrc中的路径顺序正好相反。
source /opt/ros/noetic/setup.bash
source /home/cold/liguang/specialpacks/ws_livox_driver/devel/setup.bash
source /home/cold/liguang/ws_r3live/devel/setup.bash
source /home/cold/liguang/specialpacks/ws_livox_camera_calib/devel/setup.bash
rosls roscd ros
程序代码散落在众多的ROS包中,使用linux的内置工具(cd ls)进行查询和导航会比较繁琐,由此ROS提供了专门的工具rospack find [package_name]
.| roscd允许我们直接将当前目录切换到某个软件包中。
需要注意的是,roscd只能切换到那些路径已经包含在ROS_PACKAGE_PATH环境变量中的软件包。因此将功能包的路径添加到/.bashrc中至关重要。
如果想要查看环境变量,可以使用echo $ROS_PACKAGE_PATH
.
如果想要打开当前路径的图形化界面,nautilus ./
。
关于环境变量,并不清楚ROS_PACKAGE_PATH定义在哪个文件中,似乎只要在bashrc中source开头的路径都会成为ROS_PACKAGE_PATH的一部分。
roscd除了可以进入一个软件包的目录中以外,还可以进入一个软件包的子目录中
roscd log 还可以进入存储ROS日志文件的目录,但是如果我们没有制定过任何ros程序,系统会告知该目录未被激活。
rosls允许我们直接使用软件包名称执行ls命令,而不用输入该软件包的绝对路径。
workspace_folder/ -- WORKSPACE
src/ -- SOURCE SPACE
CMakeLists.txt -- 'Toplevel' CMake file, provided by catkin
package_1/
CMakeLists.txt -- CMakeLists.txt file for package_1
package.xml -- Package manifest for package_1
...
package_n/
CMakeLists.txt -- CMakeLists.txt file for package_n
package.xml -- Package manifest for package_n
白话是,创建一个功能包,并注册到环境变量中,核心文件只有其他多个功能包的launch文件。从该功能上看,被创建的功能包属于集成型、应用型功能包。
参考指导教程:ROS系统 launch启动文件的使用方法
具体的创建过程:
工作空间名称_ws/src
工作空间名称_ws/src
文件夹下创建集成型功能包:catkin_create_pkg 功能包名称
,并在该功能包目录下创建launch文件夹mkdir launch
catkin_create_pkg 功能包名称/launch
创建launch文件。(launch文件也可以在编译工作空间后再创建也可以。)工作空间名称_ws
目录下,执行编译catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3
。sudo gedit ~/.bashrc
,输入该工作空间的setup.sh文件的路径。保存关闭文件,执行source ~/.bashrc
更新终端环境变量。创建的文件名名称:echo type;publish frequency;不同内参和外参配置;reconstruct_mesh的config文件的参数。
$ mkdir build
$ cd build
$ cmake ..
$ make
$ make install # (optionally)
上述命令将构建在src文件夹中找到的任何 catkin 项目.
注意功能包是由catkin_create_make命令创建的。
rosrun [package_name] [node_name]
,允许我们使用包名直接运行包内的节点(无需知道包的路径)。rosrun turtlesim turtlesim_node __name:=my_turtle
,ROS允许从命令行以参数的形式使用重映射参数来更改节点的名称。查看ROS系统中节点的动态图。rosrun rqt_graph rqt_graph
。
rostopic的子命令。
rostopic bw 显示主题使用的带宽
rostopic echo 将消息打印到屏幕(示在某个主题上发布的消息数据)
rostopic hz 显示主题的发布率
rostopic list 打印有关活动主题的信息
rostopic pub 将数据发布到主题
rostopic type 打印主题类型
如果执行rostopic echo [话题名称]
,则整个ROS系统会增加一个订阅者节点。
执行rostopic list -h
显示帮助信息;执行rostopic list -v
显示要发布和订阅的主题以及该主题的消息类型的详细列表。
rostopic type [话题名称]
返回话题的消息的类型。
rostopic pub [话题] [消息类型] [参数值]
服务作为一种节点和其他节点进行交流的另外一种方式。服务允许节点发送请求以及接受一个相应。
rosservice命令的使用:
rosservice list print information about active services(ROS的服务端的服务列表)
rosservice call call the service with the provided args (调用ROS系统中出现的服务)
rosservice type print service type (打印服务的类型)
rosservice find find services by service type (根据服务类型寻找相关的服务)
rosservice uri print service ROSRPC uri
rossrv
命令:显示ros服务类型消息信息的相关命令
服务的内容似乎没办法查看似的
rosparam
允许我们存储和操作ROS参数服务器中的数据。相关的使用命令:
rosparam set set parameter
rosparam get get parameter
rosparam load load parameters from file
rosparam dump dump parameters to file
rosparam delete delete parameter
rosparam list list parameter names
rosparam get /
允许我们查看当前ROS服务器中所有参数及其参数值。
rostopic list
查看ROS系统中所有的话题
rostopic list -v
查看ROS系统中所有的话题以及每个话题对应的消息的类型。
rosmsg show [消息名称]
查看该消息的所有属性。
(base) cold@cold-OMEN-by-HP-Laptop-15-dc1xxx:~$ rosmsg show turtlesim/Pose
float32 x
float32 y
float32 theta
float32 linear_velocity
float32 angular_velocity
rosparam load [file_name] [namespace]
实例:rosparam load params.yaml copy_turtle
。rosparam get /namespace/参数名称
查看namespace下存储的yaml文件中参数的参数值rosed [package_name] [filename]
调用vim编辑文件。export EDITOR='gedit -w'
可以切换rosed的编辑应用。int8, int16, int32, int64 (plus uint*)
float32, float64
string
time, duration
other msg files
variable-length array[] and fixed-length array[C]
There is also a special type in ROS: Header, the header contains a timestamp and coordinate frame information that are commonly used in ROS. You will frequently see the first line in a msg file have Header header.(ROS中还有一种特殊的类型:Header,Header中包含了ROS中常用的时间戳和坐标系信息。 您会经常看到 msg 文件的第一行有 Header 标头。)
rosbag record -a
a 表示所有发布的话题被录制在bag文件中。rosbag play -r 2
表示以二倍速进行播放。rosbag record --duration=30
表示自行录制一段时长为设置长度的bag文件。