일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- while
- 오늘도 우라라
- publish
- 반복문
- 마리아 DB
- 토픽
- 등차수열
- LeetCode
- C++
- JungOl
- Subscribe
- 리눅스
- 환경설정
- 기초
- Linux
- install opencv-4.4.0 on ubuntu 22.04
- MSG
- 오늘도 우라라 공략
- 그랑사가
- 우분투
- topic
- ros
- 데이터 베이스
- ubuntu
- mysql
- mariaDB
- C언어
- 오늘도 우라라 펫
- 프로그래밍
- 오늘도 우라라 펫 공략
- Today
- Total
하루의 쉼터
[ROS] ros::init()에 관하여 본문
| ros::init()에 관하여
0. Where is ros::init()?
roscpp내에서 사용됨.
roscpp 내부는?
✓ ros::init()
✓ ros::NodeHandle
✓ ros::master
✓ ros::this_node
✓ ros::service
✓ ros::param
✓ ros::names
1. What is ros::init()?
요약 : roscpp사용 시 node에서 ROS Matster에게 현재 프로세스를 ros node로 등록하기 위해 사용됨
* roscpp 함수를 호출 하기전 하나의 ros::init은 있어야 함.
2. How is ros::init()?
2.1 설명
roscpp node 에서는 두가지 방법으로 초기화가 가능함.
2.1.1 ros::init()사용 노드 초기화
✓ 기본적인 사용
ros::init(argc, argv, "my_node_name");
구조 : int& argc, char** argv, const std::string& name
ros::init에 매개변수로 들어가는 int& argc, char** argv는 재매핑(Remapping)을 설정하는데 사용 됨.
* 평균적으로 main에서 받은 매개변수를 그대로 넣어줌.
name을 통하여 node name 설정
* 재매핑 시 동일한 노드 이름으로 할당하면 이전 노드는 자동으로 종료되며 여러개의 동일한 노드를 실행 하는 경우 아래와 같은 옵션을 사용.
✓ 옵션 사용
ros::init(argc, argv, "my_node_name", ros::init_options::AnonymousName);
구조 : int& argc, char** argv, const std::string& name, uint32_t option = 0
ros::init_options::NoSigintHandler : 노드가 종료되는 경우 올바르게 종료되도록 사용. 기능 처리 후 종료(SIGTERM)하려면 옵션 사용 하여야함.
* SIGINT Handler 설치 비추천
ros::init_options::AnnonymousName : 같은 노드를 다른 이름으로 사용할때 사용.
* 노드 이름 끝에 임의의 숫자를 추가하여 고유하게 만듬.
ros::init_options::NoRosout : /rosout 토픽에서 rosconsole로 브로드캐스트(전송) 하지 않게함.
✓ 재매핑 사용
void ros::init(<command line or remapping arguments>, std::string node_name, uint32_t options);
argc, argv를 사용하지 않고 재매핑 옵션을 사용하는 형태
std::map<std::string, std::string>, std::vector<std::string,std::string>을 사용할 수 있음.
1. A vector<pair<string, string> >
void ros::init( const VP_string & remapping_args, const std::string& name,
uint32_t options = 0
)
2. map<string, string>
void ros::init ( const M_string& remappings, const std::string& name,
uint32_t options = 0
)
ros::init() 호출 후 ros::master::check() 를 통하여 상태 확인 가능함.
2.1.2 ros::NodeHandle 생성을 통하여 초기화
자세한 내용은 차후 다른 문서를 통하여 게시
3. Use the Init
3.1 init.h File Functions list
ros::getDefaultMasterURI () | ros::init (const M_string &remappings, const std::string &name, uint32_t options=0) |
ros::getGlobalCallbackQueue () | ros::init (const VP_string &remapping_args, const std::string &name, uint32_t options=0) |
ros::getROSArg (int argc, const char *const *argv, const std::string &arg) | ros::init (int &argc, char **argv, const std::string &name, uint32_t options=0) |
ros::isInitialized () | ros::isShuttingDown () |
ros::isStarted () | ros::ok () |
ros::removeROSArgs (int argc, const char *const *argv, V_string &args_out) | ros::requestShutdown () |
ros::shutdown () | ros::spin () |
ros::spin (Spinner &spinner) | ros::spinOnce () |
ros::start () | ros::waitForShutdown () |
3.2 init.h Namespaces
ros |
ros::init_option |
3.3 Typedefs
typedef init_options::InitOption ros::InitOption |
3.4 Enumerations
enum InitOption |
Reference Site :
http://docs.ros.org/en/api/roscpp/html/init_8h.html
http://wiki.ros.org/roscpp/Overview/Initialization%20and%20Shutdown