ROS roslaunch 학습
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>
<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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.