.. _program_listing_file__tmp_ws_src_rt_manipulators_cpp_rt_manipulators_lib_include_dynamixel_p.hpp: Program Listing for File dynamixel_p.hpp ======================================== |exhale_lsh| :ref:`Return to documentation for file ` (``/tmp/ws/src/rt_manipulators_cpp/rt_manipulators_lib/include/dynamixel_p.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp // Copyright 2022 RT Corporation // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #ifndef RT_MANIPULATORS_LIB_INCLUDE_DYNAMIXEL_P_HPP_ #define RT_MANIPULATORS_LIB_INCLUDE_DYNAMIXEL_P_HPP_ #include #include #include "dynamixel_base.hpp" namespace dynamixel_p { class DynamixelP : public dynamixel_base::DynamixelBase { public: explicit DynamixelP(const uint8_t id, const int home_position = 0); bool read_operating_mode(const dynamixel_base::comm_t & comm, uint8_t & mode); bool write_operating_mode(const dynamixel_base::comm_t & comm, const uint8_t mode); bool read_current_limit(const dynamixel_base::comm_t & comm, double & limit_ampere); bool read_max_position_limit(const dynamixel_base::comm_t & comm, double & limit_radian); bool read_min_position_limit(const dynamixel_base::comm_t & comm, double & limit_radian); bool write_torque_enable(const dynamixel_base::comm_t & comm, const bool enable); bool write_velocity_i_gain(const dynamixel_base::comm_t & comm, const unsigned int gain); bool write_velocity_p_gain(const dynamixel_base::comm_t & comm, const unsigned int gain); bool write_position_d_gain(const dynamixel_base::comm_t & comm, const unsigned int gain); bool write_position_i_gain(const dynamixel_base::comm_t & comm, const unsigned int gain); bool write_position_p_gain(const dynamixel_base::comm_t & comm, const unsigned int gain); bool write_profile_acceleration( const dynamixel_base::comm_t & comm, const double acceleration_rpss); bool write_profile_velocity( const dynamixel_base::comm_t & comm, const double velocity_rps); unsigned int to_profile_acceleration(const double acceleration_rpss); unsigned int to_profile_velocity(const double velocity_rps); double to_position_radian(const int position); double to_velocity_rps(const int velocity); double to_current_ampere(const int current); double to_voltage_volt(const int voltage); unsigned int from_position_radian(const double position_rad); unsigned int from_velocity_rps(const double velocity_rps); unsigned int from_current_ampere(const double current_ampere); bool auto_set_indirect_address_of_present_position(const dynamixel_base::comm_t & comm); bool auto_set_indirect_address_of_present_velocity(const dynamixel_base::comm_t & comm); bool auto_set_indirect_address_of_present_current(const dynamixel_base::comm_t & comm); bool auto_set_indirect_address_of_present_input_voltage(const dynamixel_base::comm_t & comm); bool auto_set_indirect_address_of_present_temperature(const dynamixel_base::comm_t & comm); bool auto_set_indirect_address_of_goal_position(const dynamixel_base::comm_t & comm); bool auto_set_indirect_address_of_goal_velocity(const dynamixel_base::comm_t & comm); bool auto_set_indirect_address_of_goal_current(const dynamixel_base::comm_t & comm); unsigned int indirect_addr_of_present_position(void); unsigned int indirect_addr_of_present_velocity(void); unsigned int indirect_addr_of_present_current(void); unsigned int indirect_addr_of_present_input_voltage(void); unsigned int indirect_addr_of_present_temperature(void); unsigned int indirect_addr_of_goal_position(void); unsigned int indirect_addr_of_goal_velocity(void); unsigned int indirect_addr_of_goal_current(void); unsigned int start_address_for_indirect_read(void); unsigned int length_of_indirect_data_read(void); unsigned int next_indirect_addr_read(void) const; unsigned int start_address_for_indirect_write(void); unsigned int length_of_indirect_data_write(void); unsigned int next_indirect_addr_write(void) const; bool extract_present_position_from_sync_read( const dynamixel_base::comm_t & comm, const std::string & group_name, double & position_rad); bool extract_present_velocity_from_sync_read( const dynamixel_base::comm_t & comm, const std::string & group_name, double & velocity_rps); bool extract_present_current_from_sync_read( const dynamixel_base::comm_t & comm, const std::string & group_name, double & current_ampere); bool extract_present_input_voltage_from_sync_read( const dynamixel_base::comm_t & comm, const std::string & group_name, double & voltage_volt); bool extract_present_temperature_from_sync_read( const dynamixel_base::comm_t & comm, const std::string & group_name, int & temperature_deg); void push_back_position_for_sync_write( const double position_rad, std::vector & write_data); void push_back_velocity_for_sync_write( const double velocity_rps, std::vector & write_data); void push_back_current_for_sync_write( const double current_ampere, std::vector & write_data); protected: int HOME_POSITION_; unsigned int total_length_of_indirect_addr_read_; unsigned int total_length_of_indirect_addr_write_; uint16_t indirect_addr_of_present_position_; uint16_t indirect_addr_of_present_velocity_; uint16_t indirect_addr_of_present_current_; uint16_t indirect_addr_of_present_input_voltage_; uint16_t indirect_addr_of_present_temperature_; uint16_t indirect_addr_of_goal_position_; uint16_t indirect_addr_of_goal_velocity_; uint16_t indirect_addr_of_goal_current_; bool set_indirect_address_read( const dynamixel_base::comm_t & comm, const uint16_t addr, const uint16_t len, uint16_t & indirect_addr); bool set_indirect_address_write( const dynamixel_base::comm_t & comm, const uint16_t addr, const uint16_t len, uint16_t & indirect_addr); }; } // namespace dynamixel_p #endif // RT_MANIPULATORS_LIB_INCLUDE_DYNAMIXEL_P_HPP_