pick and place 예제코드와 master slave 예제를 하나하나 보고 있는 중에 궁금한 것이 있어서 질문을 드립니다.
두 부분의 마지막에 있는 메인함수의 형태는 이러합니다
[pick and palce]
int main(int argc, char **argv)
{
// Init ROS node
ros::init(argc, argv, "open_manipulator_pick_and_place");
ros::NodeHandle node_handle("");
OpenManipulatorPickandPlace open_manipulator_pick_and_place;
ros::Timer publish_timer = node_handle.createTimer(ros::Duration(0.100)/*100ms*/, &OpenManipulatorPickandPlace::publishCallback, &open_manipulator_pick_and_place);
while (ros::ok())
{
ros::spinOnce();
}
return 0;
}
[master and slave]
int main(int argc, char **argv)
{
// Init ROS node
ros::init(argc, argv, "open_manipulator_master_slave");
ros::NodeHandle node_handle("");
std::string usb_port = "/dev/ttyUSB0";
std::string baud_rate = "1000000";
if (argc < 3)
{
log::error("Please set '-port_name' and '-baud_rate' arguments for connected Dynamixels");
return 0;
}
else
{
usb_port = argv[1];
baud_rate = argv[2];
}
OpenManipulatorMaster open_manipulator_master(usb_port, baud_rate);
ros::Timer publish_timer = node_handle.createTimer(ros::Duration(open_manipulator_master.getServiceCallPeriod()), &OpenManipulatorMaster::publishCallback, &open_manipulator_master);
while (ros::ok())
{
ros::spinOnce();
}
return 0;
}
이 부분에서
공통적으로 ros::Timer publish_timer = node_handle.createTimer 이 부분이 있는 부분의 명령어가 잘 이해가 가지 않습니다.
ros::Timer publish_timer = node_handle.createTimer(ros::Duration(0.100)/*100ms*/, &OpenManipulatorPickandPlace::publishCallback, &open_manipulator_pick_and_place);
ros::Timer publish_timer = node_handle.createTimer(ros::Duration(open_manipulator_master.getServiceCallPeriod()), &OpenManipulatorMaster::publishCallback, &open_manipulator_master);
이 두 명령어는 어떻게 운영이 되고 저기안에 있는 변수들에 대해서 어떻게 운영이 되는 지 무엇을 의미하는 건지 알려주실 수 있으신가요?
추가적으로 ros::Timer publish_timer = node_handle.createTimer 이 명령어의 역할도 알려주시면 감사하겠습니다.
그리고 마지막 질문인데 ros자체를 반복되게 하는 명령어가
while (ros::ok())
{
ros::spinOnce();
}
이 부분인가요? 아니면 ros cpp 파일 자체에 loop기능이 있는건가요?
![]() |
2022-02-23 16:00:32 |
n163663707802425 |
안녕하세요.
코드 관련으로는 따로 설명을 해드리기 어렵습니다.
ROS.Wiki의 Timer 관련 내용입니다. 참고해주세요.
기본적으로 터틀봇3는 ROS 기반으로 ROS.Wiki를 참고하시면 됩니다.
감사합니다.
![]() |
2022-02-24 10:50:24 |
ykw4463 |