ROS가 노드에 파라미터를 전달하는 방법 요약(rosrun,launch)+(파라미터 서버,main 함수 파라미터)...

8172 단어

0. 맨 앞에 쓰기


ROS의 노드에는 많은 중호출 방식이 있는데 rosrun,launch, 직접 운행 등을 포함하고 노드 안에 파라미터를 전달하는 방식도 매우 많다. 여기서 총괄한다.
왼쪽 칼럼은 또 다른 ROS의 실용적인 기교를 갱신하고 있습니다. 견해가 있고 괜찮은 것 같습니다. 한 번 주목해 주시겠어요?

1. rosrun + 매개 변수 서버 전달

ros::init(argc, argv, "imu2txt");
ros::NodeHandle nh("~");
std::string file_name;
nh.param<std::string>("file_name", file_name, "./imu_data.txt");

먼저 노드가 초기화된 후에 매개 변수 서버의 매개 변수를 가져오고 초기 값을 설정합니다. 예를 들어 위의 프로그램은 매개 변수 서버의 공간(즉 노드 자체)에서 이름이 "file_name"인 매개 변수를 가져오고 기본 매개 변수는 뒤에 있습니다.
이어서 로스런이 될 거예요.다음은 명령std::string file_name여기서 rosrun package node _parameter:=value 노드 내의 매개 변수를 원하는 값으로 바꿀 수 있습니다.
주의:string은 더블 인용부호를 추가할 필요가 없습니다.string의 첫 번째 문자는 숫자가 될 수 없습니다

2. roslaunch + 매개 변수 서버 전달


마찬가지로 위의 예입니다. 만약roslaunch를 통해 호출하려면 아래와 같이 매개 변수를 node 사이에 놓을 수 있습니다.
<launch>
    <node name="imu2txt" pkg="data2txt" type="imu2txt" respawn="false" output="screen" >
        <param name="file_name"         type="string" value="/home/night_fury/Documents/record_bags/calibration/imudata_to_wall.txt"/>  
    node>
launch>

3. rosrun+main 매개 변수 전달

rosrun datatxt imu2txt _file_name:=~/Documents/test.txt
main 함수는 두 개의 매개 변수argc,argv가 있습니다.argc=length(argv),argv[0]는 프로그램의 이름이고,argv[1]에서argv[argc-1]는 프로그램에 전달되는 매개 변수이며, 빈칸에 따라 매개 변수를 분할한 후char바늘 형식으로 저장한다.이것은 C, C++의 특성입니다. 로스와 무관하게 당신이 작성한 C++ 프로그램도 이렇게 사용할 수 있습니다.당신이 작성한ros 프로그램은 rosrun이나roslaunch를 사용하지 않고 직접 실행할 수 있으며, 이러한 방식으로 매개 변수를 전달할 수 있습니다.
예를 들면 저희가 자주 쓰는 맵_서버,rosbag는 이런 매개 변수 전달 방식을 사용합니다.int main(int argc, char** argv) 또는 바이너리 파일을 직접 찾은 후rosrun map_server map_saver -f ~/Documents/test위와 같이 프로그램을 실행하면
argc=3  
argv[0]="map_server"  
argv[1]="-f"  
argv[0]="test"  

너는 프로그램에서 이 매개 변수들을 사용할 수 있다.

4. roslaunch+main 매개 변수 전달


이어서 만약main 매개 변수를 사용하여 전달한다면roslaunch에서는 어떻게 해야 합니까?사용map_saver -f ~/Documents/test:
<launch>
    <node name="map_server" pkg="map_server" type="map_server" args="$(find costmap_2d)/test/willow-full-0.025.pgm 0.025" />
    <node name="rosplay" pkg="rosbag" type="play"
        args="-s 5 -r 1 --clock --hz=10 $(find costmap_2d)/test/simple_driving_test_indexed.bag" />
launch>

참고


http://wiki.ros.org/rosbash#rosrun
내 글이 마음에 들면 Star 한 번 해봐. Star.
판권 성명: 본고는 백야행의 늑대 오리지널 문장으로 허락 없이 어떠한 형식으로도 전재할 수 없다
다음으로 전송:https://www.cnblogs.com/HaoQChen/p/11048581.html

좋은 웹페이지 즐겨찾기