OP_Code_Explain - 8BitsCoding/RobotMentor GitHub Wiki
~/catkin_ws/src/robotis_manipulator
~/catkin_ws/src/open_manipulator/open_manipulator_libs
헷갈리는 부분이 open_manipulator_libs와 robotis_manipulator의 차이점이다
우선 OpenManipulatorController에서는 OpenManipulator를 사용한다.
namespace open_manipulator_controller
{
class OpenManipulatorController
{
// ...
// Related robotis_manipulator
OpenManipulator open_manipulator_;
// ...
}
OpenManipulator는 open_manipulator_libs내에 정의 되어 있다.
class OpenManipulator : public robotis_manipulator::RobotisManipulator
{
또한 OpenManipulator는 RobotisManipulator를 상속하여 사용하고
RobotisManipulator는 robotis_manipulator에 정의되어 있다.
namespace robotis_manipulator
{
class RobotisManipulator
{
// ...
std::map<Name, JointActuator *> joint_actuator_;
RobotisManipulator에서 사용되는 JointActuator는 robotis_manipulator의 robotis_manipulator_manager.h에 정의되어 있으며 순수가상함수로 재 정의 해서 사용해야한다.
class JointDynamixel : public robotis_manipulator::JointActuator
JointActuator의 재정의는 open_manipulator_libs의 dynamixel.h내에 되어 있다.
정리
~/catkin_ws/src/robotis_manipulator
: manipulator를 제어하기 위해서 만든 라이브러리
~/catkin_ws/src/open_manipulator/open_manipulator_libs
: mainpulator중 robotis사의 openmanipulator를 제어하기 위해서 만든 라이브러리, robotis_manipulator를 재 정의하여 사용하는 부분이 많다.