02.ROS 空間、文件系統(tǒng)以及小烏龜

安裝好了ROS過后就可以開始下面ROS的工作環(huán)境了

主要參考下面文檔:CSDN ROS入門教程(一)

一、ROS的工作環(huán)境

1.1 管理ROS環(huán)境

確保ROS的環(huán)境變量已經(jīng)被設(shè)置

# bash 中輸入下面的信息,會輸出一大串關(guān)于ROS的環(huán)境信息
printenv | grep ROS

1.2 創(chuàng)建ROS工作空間

ROS Groovy發(fā)布于2012年,在這版本以及之后的都使用catkin進行創(chuàng)建ROS工作空間的工作。

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make

在工作空間首次運行 catkin_make 命令后,它會在 ./src 目錄下創(chuàng)建一個 CMakeLists.txt 文件。

jet@jet-vm:~/catkin_ws$ ls
# 輸出如下
build devel src

devel 文件夾中會有幾個 setup.sh* 文件。source 命令執(zhí)行其中的文件會覆蓋工作空間頂層的環(huán)境。

source devel/setup.bash   
# 因為我這里使用的是默認的bash環(huán)境,如果是zsh則是另外一個

查看是否修改了環(huán)境變量:

$echo $ROS_PACKAGE_PATH

jet@jet-vm:~/catkin_ws$ printenv | grep ROS

通過對比輸出可以發(fā)現(xiàn)環(huán)境變量中 ROS_PACKAGE_PATHROSLISP_PACKAGE_DIRECTORIES 發(fā)生了變化。

二、ROS文件系統(tǒng)

因為一開始安裝ROS的時候選項是 ros-kinetic-desktop-full 所以下面需要的文件系統(tǒng)已經(jīng)安裝完畢了。

2.1 文件系統(tǒng)的概念

  • Packages:Packages是ROS代碼的軟件單元的一種組織方式,每個Package可以包含庫,可執(zhí)行程序,腳本等。

  • Manifests(Package.xml):manifest是一個package的描述文件,它定義了包之間的依賴,并用來捕獲包的元信息(meta information,元數(shù)據(jù)是關(guān)于數(shù)據(jù)的組織、數(shù)據(jù)域及其關(guān)系的信息,簡言之,元數(shù)據(jù)就是關(guān)于數(shù)據(jù)的數(shù)據(jù)。),例如版本,維護者,證書等等。

2.3 文件系統(tǒng)工具

ROS代碼有獨有的包管理命令

  • rospack = ros+package

    rospack 可以獲取有關(guān)packages的信息,幫助命令是 rospack help

    jet@jet-vm:~/catkin_ws$ rospack find roscpp
    # 會輸出相關(guān)信息
    
  • roscd = ros+cd

    roscd 是 rosbash 的一部分,此命令可以切換到包的相關(guān)目錄中。

    jet@jet-vm:~/catkin_ws$ roscd roscpp
    jet@jet-vm:~/catkin_ws$ pwd
    

    注:ROS工具只尋找 ROS_PACKAGE_PATH 所列出路徑,其中的每個路徑用 ”:“ 進行分隔。

  • roscd log

    此命令會進入ROS的log文件夾,如果之前沒有運行過ROS程序則會報錯。

  • rosls = ros+ls

ROS工具中很多都是 ROS+XX組合的命令。

三、創(chuàng)建ROS Package

此章節(jié)使用 roscreate-pkgcatkin 創(chuàng)建一個新的package,并用rospack列出包的依賴關(guān)系。

3.1 一個catkin package的組成

  • 必須包含一個catkin兼容的package.xml文件

  • 必須包含一個使用catkin的CMakeLists.txt

  • 每個package必須有自己的文件夾:這意味著沒有嵌套的包,也沒有共享同一目錄的多個包。

    最簡單的package如下:

    my_package/
        CMakeLists.txt
        package.xml
    

3.2 catkin工作空間中的package

使用catkin packages工作的推薦方式的是使用catkin工作空間,當然也可以單獨建立一個catkin package。一個普通的工作空間大概如下:

jet@jet-vm:~/catkin_ws$ tree
.
├── build
│   ├── atomic_configure
│   │   ├── env.sh
│   │   ├── local_setup.bash
│   │   ├── local_setup.sh
│   │   ├── local_setup.zsh
│   │   ├── setup.bash
│   │   ├── setup.sh
│   │   ├── _setup_util.py
│   │   └── setup.zsh
│   ├── catkin
│   │   └── catkin_generated
│   │       └── version
│   │           └── package.cmake
│   ├── catkin_generated
│   │   ├── env_cached.sh
│   │   ├── generate_cached_setup.py
│   │   ├── installspace
│   │   │   ├── env.sh
│   │   │   ├── local_setup.bash
│   │   │   ├── local_setup.sh
│   │   │   ├── local_setup.zsh
│   │   │   ├── setup.bash
│   │   │   ├── setup.sh
│   │   │   ├── _setup_util.py
│   │   │   └── setup.zsh
│   │   ├── order_packages.cmake
│   │   ├── order_packages.py
│   │   ├── setup_cached.sh
│   │   └── stamps
│   │       └── Project
│   │           ├── interrogate_setup_dot_py.py.stamp
│   │           ├── order_packages.cmake.em.stamp
│   │           ├── package.xml.stamp
│   │           └── _setup_util.py.stamp
│   ├── CATKIN_IGNORE
│   ├── catkin_make.cache
│   ├── CMakeCache.txt
│   ├── CMakeFiles
│   │   ├── 3.5.1
│   │   │   ├── CMakeCCompiler.cmake
│   │   │   ├── CMakeCXXCompiler.cmake
│   │   │   ├── CMakeDetermineCompilerABI_C.bin
│   │   │   ├── CMakeDetermineCompilerABI_CXX.bin
│   │   │   ├── CMakeSystem.cmake
│   │   │   ├── CompilerIdC
│   │   │   │   ├── a.out
│   │   │   │   └── CMakeCCompilerId.c
│   │   │   └── CompilerIdCXX
│   │   │       ├── a.out
│   │   │       └── CMakeCXXCompilerId.cpp
│   │   ├── clean_test_results.dir
│   │   │   ├── build.make
│   │   │   ├── cmake_clean.cmake
│   │   │   ├── DependInfo.cmake
│   │   │   └── progress.make
│   │   ├── cmake.check_cache
│   │   ├── CMakeDirectoryInformation.cmake
│   │   ├── CMakeError.log
│   │   ├── CMakeOutput.log
│   │   ├── CMakeRuleHashes.txt
│   │   ├── CMakeTmp
│   │   ├── download_extra_data.dir
│   │   │   ├── build.make
│   │   │   ├── cmake_clean.cmake
│   │   │   ├── DependInfo.cmake
│   │   │   └── progress.make
│   │   ├── doxygen.dir
│   │   │   ├── build.make
│   │   │   ├── cmake_clean.cmake
│   │   │   ├── DependInfo.cmake
│   │   │   └── progress.make
│   │   ├── feature_tests.bin
│   │   ├── feature_tests.c
│   │   ├── feature_tests.cxx
│   │   ├── Makefile2
│   │   ├── Makefile.cmake
│   │   ├── progress.marks
│   │   ├── run_tests.dir
│   │   │   ├── build.make
│   │   │   ├── cmake_clean.cmake
│   │   │   ├── DependInfo.cmake
│   │   │   └── progress.make
│   │   ├── TargetDirectories.txt
│   │   └── tests.dir
│   │       ├── build.make
│   │       ├── cmake_clean.cmake
│   │       ├── DependInfo.cmake
│   │       └── progress.make
│   ├── cmake_install.cmake
│   ├── CTestConfiguration.ini
│   ├── CTestCustom.cmake
│   ├── CTestTestfile.cmake
│   ├── gtest
│   │   ├── CMakeFiles
│   │   │   ├── CMakeDirectoryInformation.cmake
│   │   │   ├── gmock.dir
│   │   │   │   ├── build.make
│   │   │   │   ├── cmake_clean.cmake
│   │   │   │   ├── DependInfo.cmake
│   │   │   │   ├── depend.make
│   │   │   │   ├── flags.make
│   │   │   │   ├── link.txt
│   │   │   │   ├── progress.make
│   │   │   │   ├── src
│   │   │   │   └── usr
│   │   │   │       └── src
│   │   │   │           └── gtest
│   │   │   │               └── src
│   │   │   ├── gmock_main.dir
│   │   │   │   ├── build.make
│   │   │   │   ├── cmake_clean.cmake
│   │   │   │   ├── DependInfo.cmake
│   │   │   │   ├── depend.make
│   │   │   │   ├── flags.make
│   │   │   │   ├── link.txt
│   │   │   │   ├── progress.make
│   │   │   │   ├── src
│   │   │   │   └── usr
│   │   │   │       └── src
│   │   │   │           └── gtest
│   │   │   │               └── src
│   │   │   └── progress.marks
│   │   ├── cmake_install.cmake
│   │   ├── CTestTestfile.cmake
│   │   ├── gtest
│   │   │   ├── CMakeFiles
│   │   │   │   ├── CMakeDirectoryInformation.cmake
│   │   │   │   ├── gtest.dir
│   │   │   │   │   ├── build.make
│   │   │   │   │   ├── cmake_clean.cmake
│   │   │   │   │   ├── DependInfo.cmake
│   │   │   │   │   ├── depend.make
│   │   │   │   │   ├── flags.make
│   │   │   │   │   ├── link.txt
│   │   │   │   │   ├── progress.make
│   │   │   │   │   └── src
│   │   │   │   ├── gtest_main.dir
│   │   │   │   │   ├── build.make
│   │   │   │   │   ├── cmake_clean.cmake
│   │   │   │   │   ├── DependInfo.cmake
│   │   │   │   │   ├── depend.make
│   │   │   │   │   ├── flags.make
│   │   │   │   │   ├── link.txt
│   │   │   │   │   ├── progress.make
│   │   │   │   │   └── src
│   │   │   │   └── progress.marks
│   │   │   ├── cmake_install.cmake
│   │   │   ├── CTestTestfile.cmake
│   │   │   └── Makefile
│   │   └── Makefile
│   ├── Makefile
│   └── test_results
├── devel
│   ├── cmake.lock
│   ├── env.sh
│   ├── lib
│   ├── local_setup.bash
│   ├── local_setup.sh
│   ├── local_setup.zsh
│   ├── setup.bash
│   ├── setup.sh
│   ├── _setup_util.py
│   └── setup.zsh
└── src
    └── CMakeLists.txt -> /opt/ros/kinetic/share/catkin/cmake/toplevel.cmake

43 directories, 123 files
jet@jet-vm:~/catkin_ws$ 

3.3 創(chuàng)建一個catkin Package

  • 創(chuàng)建工作空間的方法在章節(jié):1.2 創(chuàng)建ROS的工作環(huán)境

  • 創(chuàng)建package代碼:

    # 示例
    catkin_create_pkg <package_name> [depend1][depend2][depend3]
    #具體命令
    $ cd ~/catkin_ws/src
    
    jet@jet-vm:~/catkin_ws/src$ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
    Created file beginner_tutorials/package.xml
    Created file beginner_tutorials/CMakeLists.txt
    Created folder beginner_tutorials/include/beginner_tutorials
    Created folder beginner_tutorials/src
    Successfully created files in /home/jet/catkin_ws/src/beginner_tutorials. Please adjust the values in package.xml.
    jet@jet-vm:~/catkin_ws/src$ 
    

3.4 編譯catkin工作空間并source

//主要命令如下
$ cd ~/catkin_ws
$ catkin_make 
$ . ~/catkin_ws/devel/setup.bash
jet@jet-vm:~/catkin_ws/src$ cd ..
jet@jet-vm:~/catkin_ws$ catkin_make
Base path: /home/jet/catkin_ws
Source space: /home/jet/catkin_ws/src
Build space: /home/jet/catkin_ws/build
Devel space: /home/jet/catkin_ws/devel
Install space: /home/jet/catkin_ws/install
####
#### Running command: "cmake /home/jet/catkin_ws/src -DCATKIN_DEVEL_PREFIX=/home/jet/catkin_ws/devel -DCMAKE_INSTALL_PREFIX=/home/jet/catkin_ws/install -G Unix Makefiles" in "/home/jet/catkin_ws/build"
####
-- Using CATKIN_DEVEL_PREFIX: /home/jet/catkin_ws/devel
-- Using CMAKE_PREFIX_PATH: /opt/ros/kinetic
-- This workspace overlays: /opt/ros/kinetic
-- Using PYTHON_EXECUTABLE: /usr/bin/python
-- Using Debian Python package layout
-- Using empy: /usr/bin/empy
-- Using CATKIN_ENABLE_TESTING: ON
-- Call enable_testing()
-- Using CATKIN_TEST_RESULTS_DIR: /home/jet/catkin_ws/build/test_results
-- Found gmock sources under '/usr/src/gmock': gmock will be built
-- Found gtest sources under '/usr/src/gmock': gtests will be built
-- Using Python nosetests: /usr/bin/nosetests-2.7
-- catkin 0.7.18
-- BUILD_SHARED_LIBS is on
-- BUILD_SHARED_LIBS is on
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- ~~  traversing 1 packages in topological order:
-- ~~  - beginner_tutorials
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- +++ processing catkin package: 'beginner_tutorials'
-- ==> add_subdirectory(beginner_tutorials)
-- Configuring done
-- Generating done
-- Build files have been written to: /home/jet/catkin_ws/build
####
#### Running command: "make -j2 -l2" in "/home/jet/catkin_ws/build"
####
jet@jet-vm:~/catkin_ws$ . ~/catkin_ws/devel/setup.bash 
jet@jet-vm:~/catkin_ws$ 

3.5 package依賴

  • 一級依賴

    jet@jet-vm:~/catkin_ws$ rospack depends1 beginner_tutorials 
    roscpp
    rospy
    std_msgs
    jet@jet-vm:~/catkin_ws$ 
    # 此命令的輸出與創(chuàng)建package時傳入的參數(shù)一致,這些對packages的依賴存儲在package.xml 中
    
  • 間接依賴

    jet@jet-vm:~/catkin_ws$ rospack depends1 rospy
    genpy
    roscpp
    rosgraph
    rosgraph_msgs
    roslib
    std_msgs
    jet@jet-vm:~/catkin_ws$ 
    #一般情況下,一個依賴項目都有自己的依賴項,rospack可以遞歸檢測所有的嵌套依賴。
    

3.6 定制package

  • 定制package.xml

    包括description,maintainer,lincense,dependencies(包括了 buildtool_depend,build_depend,exec_depend)

  • 定制CMakeLists.txt

四、編譯Package

4.1 編譯package

  • catkin_make 可以看做是標準的cmake工作流程:cmake,make

    # In a CMake Project
    $ mkdir build
    $ cd build
    $ cmake ..
    $ make 
    $ make install  #(optionally)
    # In a catkin workspace
    $ catkin_make
    $ catkin_make install #(optionally)
    

    catkin_make 命令將編譯 src 目錄下的所有工程。對于源碼不再當前目錄下的使用方法為:

    # In a catkin workspace
    $ catkin_make --source my_src
    $ catkin_make install --source my_src #(optionally)
    
  • 編譯package

    在當前工作空間中(~/catkin_ws): catkin_make

五、ROS Nodes

本節(jié)引入ROS Graph的概念,并探討roscore,rosnode,rosrun的使用。

5.1 Graph的概念

  • Nodes:一個node表示一個使用ROS來與其他nodes進行通訊的可執(zhí)行程序。

  • Messages:ROS的數(shù)據(jù)類型

  • Topics:Nodes可以向topic發(fā)布消息,也可以訂閱topic來接收消息。

  • Master:Name sevice for ROS(幫助節(jié)點找到彼此)

  • rosout:ROS下的stdout/stderr。

  • roscore:Master + rosout + parameter server

5.2 Nodes

在ROS package中,一個Node實際上只不過是一個可執(zhí)行文件。ROS Nodes使用ROS client library與其他nodes進行通信。Nodes可以發(fā)布和訂閱一個Topic。Nodes也可以提供或使用一個sevice。

5.3 Client Libraries

ROS client library 允許使用不同編程語言寫出來的Nodes進行通信。

  • rospy = python client library

  • roscpp = C plus plus client library

5.4 roscore

roscore 是當你使用ROS時第一個應(yīng)該運行的核心程序。

5.5 使用rosnode

rosnode顯示當前正在運行的有關(guān)ROS nodes的信息

# 列出活躍狀態(tài)的nodes
jet@jet-vm:~$ rosnode list
/rosout
jet@jet-vm:~$ rosnode info /rosout
--------------------------------------------------------------------------------
Node [/rosout]
Publications: 
 * /rosout_agg [rosgraph_msgs/Log]

Subscriptions: 
 * /rosout [unknown type]

Services: 
 * /rosout/get_loggers
 * /rosout/set_logger_level


contacting node http://jet-vm:41897/ ...
Pid: 2381

jet@jet-vm:~$ 

5.6 使用rosrun

rosrun 允許使用package名來直接運行一個package中的node(不必知道package的路徑)。

# usage : rosrun [package_name] [nodename]
jet@jet-vm:~$ rosrun turtlesim turtlesim_node
[ INFO] [1565093878.731080946]: Starting turtlesim with node name /turtlesim
[ INFO] [1565093878.747198414]: Spawning turtle [turtle1] at x=[5.544445], y=[5.544445], theta=[0.000000]
# 彈出一個烏龜?shù)拇翱?

ROS支持為node重新指定名字

$ rosrun turtlesim turtlesim_node __name:=my_turtle
jet@jet-vm: ~ $ rosnode list
/my_turtle
/rosout

可以使用 rosnode 的 ping 參數(shù)來測試是否node正常運行。

jet@jet-vm:~$ rosnode ping turtlesim
rosnode: node is [/turtlesim]
pinging /turtlesim with a timeout of 3.0s
xmlrpc reply from http://jet-vm:36863/  time=0.334024ms
xmlrpc reply from http://jet-vm:36863/  time=2.504826ms
xmlrpc reply from http://jet-vm:36863/  time=1.864910ms
xmlrpc reply from http://jet-vm:36863/  time=1.274824ms
xmlrpc reply from http://jet-vm:36863/  time=1.255035ms
^Cping average: 1.446724ms
jet@jet-vm:~$ 

如果出現(xiàn)上面的輸出代表已經(jīng)成功運行了。

5.7 總結(jié)

  • roscore 是所有運行的核心 = ros + core: master(prodives name service for ROS) + rosout(stdout/stderr) +parameter server.

  • rosnode = ros + node : ROS tool to get Information about a node.

  • rosrun = ros + run: runs a node from a given package

六、ROS Topics

本節(jié)引入ROS topics,與此同時使用rostopic和rqt_plot工具

6.1 準備工作

  • 確保roscore在運行,在一個新打開的終端輸入roscore可進行測試。

  • 運行如下命令

    $ rosrun turtlesim turtlesim_node
    
  • 運行如下命令

    $ rosrun turtlesim turtle_teleop_key
    # 之后可以使用方向按鍵控制烏龜動起來了
    

6.2 ROS Topics

  • 使用 rqt-graph

    rqt-graph 創(chuàng)建系統(tǒng)的一個動態(tài)范圍。rqt-graphrqt package 的一部分,安裝方法如下:

    # 按照正常安裝全部的方法都是已經(jīng)安裝好了
    $ sudo apt-get install ros-kinetic-rqt
    $ sudo apt-get install ros-kinetic-rqt-common-plugins
    

    在終端中輸入以下命令會出現(xiàn)一個可視化窗口顯示nodes之間的關(guān)系。

    $ rosrun rqt_graph rqt_graph
    
  • 引入 rostopic

    rostopic 工具用來獲取 ROS topics。

  • 使用 rostopic echo

    rostopic echo 顯示發(fā)布在一個topic上的數(shù)據(jù),只有在運行之后有新的消息發(fā)布到topic上時才會有輸出

    # Usage
    $ rostopic echo [topic]
    $ rostopic echo /turtle1/cmd_vel
    
  • 使用**rostopic list **

    使用 $ rostopic list -v 列出所有的 topics

    jet@jet-vm:~$ rostopic list -v
    
    Published topics:
     * /turtle1/color_sensor [turtlesim/Color] 1 publisher
     * /turtle1/cmd_vel [geometry_msgs/Twist] 1 publisher
     * /rosout [rosgraph_msgs/Log] 3 publishers
     * /rosout_agg [rosgraph_msgs/Log] 1 publisher
     * /turtle1/pose [turtlesim/Pose] 1 publisher
    
    Subscribed topics:
     * /turtle1/cmd_vel [geometry_msgs/Twist] 2 subscribers
     * /rosout [rosgraph_msgs/Log] 1 subscriber
    
    jet@jet-vm:~$ 
    

6.3 ROS Messages

ropics上的通訊是通過在nodes之間發(fā)送 ROS messages進行的。發(fā)布者和訂閱者必須發(fā)哦是那個和接收同種類型的消息。這意味著,topic的類型是由發(fā)布在其上的message類型定義的。message的類型可通過 rostopic type [topic] 來查詢。可以使用 rosmsg show type 查看信息格式。

jet@jet-vm:~$ rostopic list -v

Published topics:
 * /turtle1/color_sensor [turtlesim/Color] 1 publisher
 * /turtle1/cmd_vel [geometry_msgs/Twist] 1 publisher
 * /rosout [rosgraph_msgs/Log] 3 publishers
 * /rosout_agg [rosgraph_msgs/Log] 1 publisher
 * /turtle1/pose [turtlesim/Pose] 1 publisher

Subscribed topics:
 * /turtle1/cmd_vel [geometry_msgs/Twist] 2 subscribers
 * /rosout [rosgraph_msgs/Log] 1 subscriber

jet@jet-vm:~$ rostopic type /turtle1/cmd_vel
geometry_msgs/Twist
jet@jet-vm:~$ rosmsg show geometry_msgs/Twist
geometry_msgs/Vector3 linear
  float64 x
  float64 y
  float64 z
geometry_msgs/Vector3 angular
  float64 x
  float64 y
  float64 z

jet@jet-vm:~$ 

6.4 rostopic 續(xù)

  • rostopic pub可以在一個topic上發(fā)布數(shù)據(jù)

    # Usage: rostopic pub [topic] [msg_type] [args]
    # 雙短線表示后邊的不是命令選項而是參數(shù)
    jet@jet-vm:~$ rostopic pub -l /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0,0.0,0.0]' '[0.0,0.0,1.0]'
    publishing and latching message. Press ctrl-C to terminate
    
    # 此時可以看到烏龜動了,幾次執(zhí)行下來可以看到烏龜走了一個純圓。
    
1565098084483.png
  • rostopic hz 報告數(shù)據(jù)發(fā)布速率: $ rostopic hz [topic]
jet@jet-vm:~$ rostopic hz /turtle1/cmd_vel 
subscribed to [/turtle1/cmd_vel]
no new messages
no new messages
average rate: 4.828
    min: 0.144s max: 0.288s std dev: 0.04833s window: 6
average rate: 5.999
    min: 0.099s max: 0.288s std dev: 0.04975s window: 13
average rate: 7.209
    min: 0.042s max: 0.298s std dev: 0.06797s window: 23

當有數(shù)據(jù)變動的時候也就是有數(shù)據(jù)傳輸。

6.5 使用 rqt_plot

使用指令 $ rosrun rqt_plot rqt_plot ,添加需要查看的topic。

七、ROS Services and Parameters

本節(jié)介紹ROS Services and Parameters,與此同時使用使用 rosservicerosparam 命令行工具。services 是nodes間進行通信的另一種方式,services 允許nodes發(fā)送一個請求(request)和接收一個響應(yīng)(response)。

#Usage:
$ rosservice list [topic] #列出[topic]鎖提供的服務(wù)
$ rosservice type [service] # 顯示服務(wù)類型
$ rosservice call [service] [args] # 調(diào)用服務(wù)

# 查看帶參數(shù)的示例
rosservice find #find service by service type
rosservice uri  #print service ROSRPC uri
jet@jet-vm:~/work$ rosservice type /spawn | rossrv show
float32 x
float32 y
float32 theta
string name
---
string name

jet@jet-vm:~/work$ rosservice call /spawn 2 2 0.2 "" # name field is optional
name: "turtle2"

rosparam 循序我們存儲和操作 ROS parameter Server 上的數(shù)據(jù),Parameter Server

可以存儲整型,浮點型,布爾型,字典,列表。rosparam 使用 YAML 標記語言語法。

#Usage: 
rosparam set [param_name] #set parameter
# 設(shè)置參數(shù)過后使用 /clear 服務(wù)刷新操作
$ rosservice call /clear
rosparam get [param_name] # get parameter
rosparam load # load parameter from file
rosparam dump # dump parameters to file
rosparam delete # delete parameter
rosparam list # list parameter names
# Usage
rosparam dump [file_name] [namespace]
rosparam load [file_name] [namespace]
# write all the parameters to the file params.yaml
$ rosparam dump params.yaml
# load these yaml files into new namespaces, e.g. copy
$ rosparam load params.yaml copy
$ rosparam get /copy/background_b
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容