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를 재 정의하여 사용하는 부분이 많다.