ROS roslaunch 학습

11688 단어
roslaunch 용도: 여러 개의 rosnode 를 결합 하여 함께 실행 합 니 다.이렇게 하면 하나하나 운행 할 필요 가 없다.
roslaunch 형식 (add to. launch)
<launch>
        <arg name="a" default="1" />
        <arg name="b" default="2" />
    <node pkg="beginner_tutorials" name="add_two_ints_server" type="add_two_ints_server"/>
    <node pkg="beginner_tutorials" name="add_two_ints_client" type="add_two_ints_client" args="$(arg a) $(arg b)"/>
    <node name = "stage" pkg="stage_ros" type = "stageros" args="$(find stage_ros)/world/willow-erratic.world"/>
   </launch>

launch 파일 은 xml 형식 입 니 다.각 tag 의 형식 은 적어도 아래 세 부분 1. pkg = "your package name" 을 포함 합 니 다.
2. name = "your name" / / 일반적으로 실행 가능 한 파일 의 이름 을 실행 가능 한 파일 의 이름 은 robot 입 니 다.cleaner_node
3. type = "실행 가능 한 파일 의 이름" (즉, CMakeList. txt 의 add executable (node name src / c + file. cpp) 의 node name) 예 를 들 어 addexecutable (robot cleaner node src / robot cleaner move rotate. cpp) 의 robotcleaner_node
이 곳 의 type 은 실행 가능 한 파일 의 이름 이 고 name 은 임의로 제공 할 수 있 습 니 다. 기 존 파일 에 ros: init 가 지정 한 node name 을 덮어 씁 니 다.
4. (필요 하지 않 음) args 는 실행 시의 매개 변수 로 매개 변 수 를 정의 합 니 다. 기본 값 은 0 이 고 실행 할 때 다시 값 을 부여 할 수 있 습 니 다.매개 변수 b 를 정의 하고 값 은 2 이 며 실행 할 때 값 을 부여 할 수 없습니다.할당 에 오류 가 발생 할 수 있 습 니 다: 잘못된 태그: arg 'b' 를 재정의 할 수 없습니다. which has already been set.args="$(arg a) $(arg b)": a, b 는 매개 변수 로 노드 에 들 어 갑 니 다. 실행 할 때 a 를 다시 할당 할 수 있 고 할당 하지 않 고 기본 값 을 사용 할 수 있 습 니 다. 1.$(find package_name) package 찾기name 소재 경로 $(find stage_ros)/world/willow-erratic.world" 표시 / opt / ros / indigo / share / stageros / World / willow - erratic. world 실행: 1. (arg 가 정의 되 지 않 았 을 때) roslaunch beginnertutorials add_to. launch a: = 4b: = 5 2. (arg 정의 후) roslaunch beginnertutorials add_to. launch 또는 roslaunch beginnertutorials add_to. launch a: = 4 (a 에 게 만 할당, b 필요 없 음)
실행 후 출력 은 log 파일 에 저 장 됩 니 다: 예 를 들 어 log file: / home / server /. ros / log / e907e8c8 - 9be8 - 11e6 - bf00 - 74d 43562 c7a 3 / addtwo_ints_client - 2 *. log 는 콘 솔 에 나타 나 지 않 습 니 다. 콘 솔 에 출력 하려 면 output 속성 을 추가 하 십시오.
<node name = "my_stage" pkg = "my_stage" type = "my_stage"
output = "screen" />

5 모든 노드 의 출력 을 표시 하려 면 – screen 명령 줄 을 사용 하 십시오. $roslaunch –screen package_name launch_file_name 6
 respawn="true"
eg:<node pkg="turtlesim" name="sim" type="turtlesim_node"  respawn="true"/>

대표 적 으로 node 를 시작 할 때 roslaunch 는 이 를 감시 합 니 다. 닫 을 때, 예 를 들 어 turtlesim 노드 를 시작 합 니 다. turtlesim 창 을 닫 을 때 roslaunch 는 새로운 것 을 다시 시작 합 니 다.
7
required="true"

이 속성 은 이 노드 가 종료 되면 roslaunch 는 모든 노드 를 닫 고 종료 합 니 다.
8. 하나의 노드 를 단독 터미널 창 에서 시작 합 니 다. roslaunch 는 모든 노드 를 하나의 터미널 로 공유 합 니 다. 노드 가 자신의 터미널 이 있 으 려 면 사용 할 수 있 습 니 다.
launch-prefix="xterm -e"

9 네 임 스페이스 ns
ns="turtlesim1"

같은 노드 가 이 속성 을 사용 하면 무관 한 노드 두 개 를 만 들 수 있 습 니 다.eg:
<launch>
    <node
    name="turtlesim_node "
    pkg="turtlesim"
    type="turtlesim_node "
    ns="sim1"
    />
    <node
    pkg="turtlesim"
    type="turtle_teleop_key "
    name="teleop_key"
    required="true"
    launch −prefix="xterm −e"
    ns="sim1"
    />
    <node
    name="turtlesim_node "
    pkg="turtlesim"
    type="turtlesim_node "
    ns="sim2"
    />
    <node
    pkg="a gitr "
    type="pubvel"
    name="velocity_publisher "
    ns="sim2"
    />
</launch>

10. reap: launch 파일 에서 이름 을 바 꿉 니 다. reap 요소 형식 을 사용 합 니 다. <remap from="original-name" to="new-name" /> 이 reap 이 launch 요소 의 child (하위 클래스) 라면 node 요소 와 같은 등급 이 고 launch 요소 의 맨 위 에 있 습 니 다.그러면 이 reapping 은 후속 적 인 모든 노드 에 작용 할 것 이다.turtle 1 / pose 를 tim 으로 이름 바 꾸 기 rosrun 명령 사용 rosrun turtlesim turtlesimnode turtle 1 / pose: = tim 사용 roslaunch
 <node pkg="turtlesim" type="turtlesim_node" name="turtlesim" >
        <remap from="turtle1/pose" to="tim" />
    </node>
  • including 이 속성 은 우리 가 포함 하고 자 하 는 파일 의 전체 경 로 를 추가 하 기 를 기대 합 니 다.그러나 대부분의 경우 include 요 소 는 하나의 find 명령 을 사용 하여 프로그램 패 키 지 를 검색 합 니 다. 명확 한 전체 경 로 를 대체 합 니 다.
  • <include file="$(find package-name)/launch-file-name" />

    roslaunch 명령 은 패키지 (package) 의 하위 디 렉 터 리 에서 launch 파일 을 검색 합 니 다.include 요 소 는 파일 의 특정한 경 로 를 지정 해 야 합 니 다. find 를 사용 하여 이 패 키 지 를 찾 을 수 있 지만 이 패 키 지 디 렉 터 리 에서 어떤 하위 디 렉 터 리 에 launch 파일 이 있 는 지 자동 으로 찾 을 수 없습니다.예:
           :<include file = "find learning_tutrols"/launch/start_demo.launch" / >        :<include file = "find learning_tutrols"/start_demo.launch" />

    include 요소 도 ns 속성 을 지원 합 니 다. 이 파일 의 내용 을 네 임 스페이스 로 보 낼 수 있 습 니 다.
    <include file=". . . " ns="namespace" />

    일반적으로 우 리 는 include 요소 에 ns 속성 을 설정 합 니 다.
    12. param 태그 wiki. ros. org / roslaunch / XML / param 은 매개 변수 서버 의 매개 변 수 를 정의 합 니 다. 속성 은 name: 매개 변수 이름 type: 매개 변수의 유형, "str | int | double | bool" value: 매개 변수의 값 입 니 다. value 를 제외 하고 다음 세 가지 textfile= $(find pkg-name)/path/file.txt 를 사용 할 수 있 습 니 다. 이 문서 의 내용 은 읽 고 문자열 로 저 장 됩 니 다. 이 파일 은 로 컬 이 어야 합 니 다.접근 가능.그래서 $(find pkg - name) 형식 을 사용 하 는 것 을 강력 추천 합 니 다.다른 기계 에서 파일 경 로 를 찾 지 못 하 는 것 을 피 하 는 데 실 패 했 습 니 다.binfile="$(find pkg-name)/path/file" 이 파일 의 내용 을 읽 고 Base 64 인 코딩 된 XML - RPC 바 이 너 리 대상 command="$(find pkg-name)/exe '$(find pkg-name)/arg.txt'" parameter server 인 자 는 상기 방법 을 제외 하고 명령 행 rosparam set / rosparam get 설정 코드 에서 roscpp: ros: param:: set / ros: param::: get rospy: setparam / get_param
    13. rosparam 태그 wiki. ros. org / roslaunch / XML / rosparam rosparam: rosparam YAML 파일 에서 불 러 오기, 삭제, dump, ROS 매개 변수 서버 매개 변수 rosparam 매개 변수: command = "load | dump | delete" (optional, default = load) file = "$(find pkg - name) / path / foo. yaml" (load or dump commands) param = "param - name" ns = "namespace"(optional) subst value = true | false (optional) Yml 텍스트 의 인 자 를 바 꿀 수 있 는 지 여부
    eg:
    <rosparam command="load" file="$(find rosparam)/example.yaml" />//        
    <rosparam command="delete" param="my/param" />//    
    
    <arg name="whitelist" default="[3, 2]"/>
    <rosparam param="whitelist" subst_value="True">$(arg whitelist)</rosparam> //  
    
    <rosparam param="a_list">[1, 2, 3, 4]</rosparam>
    <rosparam>
      a: 1
      b: 2
    </rosparam>

    참고: blog. csdn. net / fengmengdan / article / details / 42984429 blog. csdn. net / github 35160620 / article / details / 52618271

    좋은 웹페이지 즐겨찾기