日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

ROS系统 参数的获取和设置

發(fā)布時(shí)間:2025/5/22 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ROS系统 参数的获取和设置 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
cd ~/catkin_ws/src catkin_create_pkg learning_parameter roscpp rospy std_srvs

rosparam
  • 列出當(dāng)前所有參數(shù):rosparam list
  • 顯示某個(gè)參數(shù)值:rosparam get param_key
  • 設(shè)置某個(gè)參數(shù)值:rosparam set param_key param_value
  • 保存參數(shù)到文件:rosparam dump file_name
  • 從文件讀取參數(shù):rosparam load file_name
  • 刪除參數(shù):rosparam delete param_key

啟動(dòng)ROS Master

roscore

啟動(dòng)小海龜仿真器

rosrun turtlesim turtlesim_node

列出當(dāng)前所有參數(shù)

rosparam list

  • 背景顏色
    • /turtlesim/background_b
    • /turtlesim/background_g
    • /turtlesim/background_r
  • ros版本號(hào)
    • /rosversion
  • 當(dāng)前進(jìn)程的id
    • /run_id
  • 管理 ROS分布及其包含的 ROS堆棧的文件格式
    • rosdistro

獲取 /turtlesim/background_b、/turtlesim/background_g、/turtlesim/background_r的參數(shù)。

rosparam get /turtlesim/background_b rosparam get /turtlesim/background_g rosparam get /turtlesim/background_r

獲取ROS的發(fā)行版

rosparam get /rosdistro


獲取ROS的版本

rosparam get /rosversion

修改小海龜仿真器的背景顏色

rosparam set /turtlesim/background_b 100 rosparam get /turtlesim/background_brosservice call /clear "{}"


使用 rosservice call 發(fā)送請(qǐng)求,當(dāng)rgb的值發(fā)生改變會(huì)刷新背景顏色。

小海龜仿真器的背景顏色變?yōu)榘咨?/p> rosparam set /turtlesim/background_r 255 rosparam set /turtlesim/background_b 255 rosparam set /turtlesim/background_g 255rosservice call /clear "{}"

將參數(shù)的內(nèi)容保存在文件中

rosparam dump param.yaml


然后可以對(duì)通過在文件中去修改一些參數(shù)。

從文件讀取參數(shù)

rosparam load param.yaml

發(fā)送指令刷新讀取的值

rosservice call /clear "{}"

從參數(shù)列表中刪除一個(gè)參數(shù):

rosparam delete /turtlesim/background_r rosparam listrosservice call /clear "{}"

刪除后,使用 rosparam list 命令,會(huì)看到列表中的 /turtlesim/background_r 參數(shù)已經(jīng)消失。

如何通過代碼獲取/設(shè)置參數(shù)

  • 初始化ROS節(jié)點(diǎn)
  • get函數(shù)獲取參數(shù)
  • set函數(shù)設(shè)置參數(shù)

以下是通過C++代碼實(shí)現(xiàn)以上操作參數(shù)的增刪改查。

在 learning_parameter 目錄中的src文件夾下創(chuàng)建一個(gè) cpp文件

cd ~/catkin_ws/src/learning_parameter/src touch parameter_config.cpp

在 parameter_config.cpp 文件中寫入以下代碼。
下面代碼實(shí)現(xiàn)功能:設(shè)置/讀取海龜例程中的參數(shù)

#include <string> #include <ros/ros.h> #include <std_srvs/Empty.h>int main(int argc, char **argv) {int red, green, blue;// ROS節(jié)點(diǎn)初始化ros::init(argc, argv, "parameter_config");// 創(chuàng)建節(jié)點(diǎn)句柄ros::NodeHandle node;// 讀取背景顏色參數(shù)ros::param::get("/turtlesim/background_r", red);ros::param::get("/turtlesim/background_g", green);ros::param::get("/turtlesim/background_b", blue);ROS_INFO("Get Backgroud Color[%d, %d, %d]", red, green, blue);// 設(shè)置背景顏色參數(shù)ros::param::set("/turtlesim/background_r", 255);ros::param::set("/turtlesim/background_g", 255);ros::param::set("/turtlesim/background_b", 255);ROS_INFO("Set Backgroud Color[255, 255, 255]");// 讀取背景顏色參數(shù)ros::param::get("/turtlesim/background_r", red);ros::param::get("/turtlesim/background_g", green);ros::param::get("/turtlesim/background_b", blue);ROS_INFO("Re-get Backgroud Color[%d, %d, %d]", red, green, blue);// 調(diào)用服務(wù),刷新背景顏色ros::service::waitForService("/clear");ros::ServiceClient clear_background = node.serviceClient<std_srvs::Empty>("/clear");std_srvs::Empty srv;clear_background.call(srv);sleep(1);return 0; }

在CMakeLists.txt中添加以下代碼:

add_executable(parameter_config src/parameter_config.cpp) target_link_libraries(parameter_config ${catkin_LIBRARIES})


編譯項(xiàng)目

cd ~/catkin_ws catkin_make

設(shè)置環(huán)境變量,讓系統(tǒng)能夠找到該工作空間

source devel/setup.bash

啟動(dòng)ROS Master

roscore

啟動(dòng)小海龜仿真器

rosrun turtlesim turtlesim_node

啟動(dòng)自定義的節(jié)點(diǎn)

rosrun learning_parameter parameter_config


用Python代碼實(shí)現(xiàn)方式

cd ~/catkin_ws/src/learning_parameter

創(chuàng)建 scripts 文件夾

mkdir scripts cd scripts

創(chuàng)建 parameter_config.py Python文件

touch parameter_config.py

用Python修改參數(shù)的代碼:
以下代碼的功能:設(shè)置/讀取海龜例程中的參數(shù)

#!/usr/bin/env python # -*- coding: utf-8 -*-import sys import rospy from std_srvs.srv import Emptydef parameter_config():# ROS節(jié)點(diǎn)初始化rospy.init_node('parameter_config', anonymous=True)# 讀取背景顏色參數(shù)red = rospy.get_param('/turtlesim/background_r')green = rospy.get_param('/turtlesim/background_g')blue = rospy.get_param('/turtlesim/background_b')rospy.loginfo("Get Backgroud Color[%d, %d, %d]", red, green, blue)# 設(shè)置背景顏色參數(shù)rospy.set_param("/turtlesim/background_r", 255);rospy.set_param("/turtlesim/background_g", 192);rospy.set_param("/turtlesim/background_b", 203);rospy.loginfo("Set Backgroud Color[255, 192, 203]");# 讀取背景顏色參數(shù)red = rospy.get_param('/turtlesim/background_r')green = rospy.get_param('/turtlesim/background_g')blue = rospy.get_param('/turtlesim/background_b')rospy.loginfo("Get Backgroud Color[%d, %d, %d]", red, green, blue)# 發(fā)現(xiàn)/spawn服務(wù)后,創(chuàng)建一個(gè)服務(wù)客戶端,連接名為/spawn的servicerospy.wait_for_service('/clear')try:clear_background = rospy.ServiceProxy('/clear', Empty)# 請(qǐng)求服務(wù)調(diào)用,輸入請(qǐng)求數(shù)據(jù)response = clear_background()return responseexcept rospy.ServiceException, e:print "Service call failed: %s"%eif __name__ == "__main__":parameter_config()

注意:需要將Python設(shè)置為可執(zhí)行文件。

Python代碼不需要重新編譯,可以直接執(zhí)行。

rosrun learning_parameter parameter_config.py


注意:代碼中的路徑要和 rosparam list 命令顯示的路徑要對(duì)應(yīng)。


總結(jié)

以上是生活随笔為你收集整理的ROS系统 参数的获取和设置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。