From 0af0d2218e54c3a6101ec3d2a398eae8b336d78f Mon Sep 17 00:00:00 2001 From: RonaldsonBellande Date: Mon, 13 Nov 2023 17:55:45 -0500 Subject: [PATCH 01/17] latest pushes --- README.md | 24 +- .../CMakeLists.txt | 83 +++ .../package.xml | 81 +++ .../CHANGELOG.rst | 110 ++++ .../CMakeLists.txt | 51 ++ .../devices/dynamixel/GRIPPER.device | 73 +++ .../devices/dynamixel/GRIPPER_TORQUE.device | 74 +++ .../devices/dynamixel/H42-20-S300-R(A).device | 92 ++++ .../devices/dynamixel/H42-20-S300-R.device | 76 +++ .../devices/dynamixel/H42P-020-S300-R.device | 92 ++++ .../dynamixel/H54-100-B210-R-NR.device | 76 +++ .../dynamixel/H54-100-S500-R(A).device | 92 ++++ .../devices/dynamixel/H54-100-S500-R.device | 76 +++ .../devices/dynamixel/H54-200-B500-R.device | 76 +++ .../dynamixel/H54-200-S500-R(A).device | 92 ++++ .../devices/dynamixel/H54-200-S500-R.device | 76 +++ .../devices/dynamixel/H54P-100-S500-R.device | 92 ++++ .../devices/dynamixel/H54P-200-B500-R.device | 92 ++++ .../devices/dynamixel/H54P-200-S500-R.device | 92 ++++ .../devices/dynamixel/L42-10-S300-R.device | 73 +++ .../devices/dynamixel/L54-30-S400-R.device | 74 +++ .../devices/dynamixel/L54-30-S500-R.device | 74 +++ .../devices/dynamixel/L54-50-S290-R.device | 74 +++ .../devices/dynamixel/L54-50-S500-R.device | 74 +++ .../devices/dynamixel/M42-10-S260-R.device | 74 +++ .../devices/dynamixel/M54-40-S250-R.device | 74 +++ .../devices/dynamixel/M54-60-S250-R.device | 74 +++ .../devices/dynamixel/MX-106.device | 66 +++ .../devices/dynamixel/MX-28.device | 62 +++ .../devices/dynamixel/MX-64.device | 66 +++ .../devices/dynamixel/PH42-020-S300-R.device | 92 ++++ .../devices/dynamixel/PH54-100-S500-R.device | 92 ++++ .../devices/dynamixel/PH54-200-S500-R.device | 92 ++++ .../devices/dynamixel/RH-P12-RN(A).device | 90 ++++ .../devices/dynamixel/RH-P12-RN.device | 73 +++ .../devices/dynamixel/XM-430.device | 82 +++ .../devices/dynamixel/XM430-W210.device | 83 +++ .../devices/dynamixel/XM430-W350.device | 83 +++ .../devices/dynamixel/XM540-W150.device | 89 ++++ .../devices/dynamixel/XM540-W270.device | 89 ++++ .../devices/sensor/CM-740.device | 25 + .../devices/sensor/OPEN-CR.device | 30 ++ .../control_table_item.h | 54 ++ .../device.h | 54 ++ .../dynamixel.h | 83 +++ .../dynamixel_state.h | 82 +++ .../robot.h | 72 +++ .../sensor.h | 49 ++ .../sensor_state.h | 50 ++ .../time_stamp.h | 39 ++ .../package.xml | 38 ++ .../dynamixel.cpp | 119 +++++ .../robot.cpp | 480 ++++++++++++++++++ .../sensor.cpp | 39 ++ 54 files changed, 4372 insertions(+), 12 deletions(-) create mode 100755 humanoid_robot_intelligence_control_system_controller/CMakeLists.txt create mode 100755 humanoid_robot_intelligence_control_system_controller/package.xml create mode 100755 humanoid_robot_intelligence_control_system_device/CHANGELOG.rst create mode 100755 humanoid_robot_intelligence_control_system_device/CMakeLists.txt create mode 100755 humanoid_robot_intelligence_control_system_device/devices/dynamixel/GRIPPER.device create mode 100755 humanoid_robot_intelligence_control_system_device/devices/dynamixel/GRIPPER_TORQUE.device create mode 100644 humanoid_robot_intelligence_control_system_device/devices/dynamixel/H42-20-S300-R(A).device create mode 100755 humanoid_robot_intelligence_control_system_device/devices/dynamixel/H42-20-S300-R.device create mode 100644 humanoid_robot_intelligence_control_system_device/devices/dynamixel/H42P-020-S300-R.device create mode 100755 humanoid_robot_intelligence_control_system_device/devices/dynamixel/H54-100-B210-R-NR.device create mode 100644 humanoid_robot_intelligence_control_system_device/devices/dynamixel/H54-100-S500-R(A).device create mode 100755 humanoid_robot_intelligence_control_system_device/devices/dynamixel/H54-100-S500-R.device create mode 100755 humanoid_robot_intelligence_control_system_device/devices/dynamixel/H54-200-B500-R.device create mode 100644 humanoid_robot_intelligence_control_system_device/devices/dynamixel/H54-200-S500-R(A).device create mode 100755 humanoid_robot_intelligence_control_system_device/devices/dynamixel/H54-200-S500-R.device create mode 100644 humanoid_robot_intelligence_control_system_device/devices/dynamixel/H54P-100-S500-R.device create mode 100644 humanoid_robot_intelligence_control_system_device/devices/dynamixel/H54P-200-B500-R.device create mode 100644 humanoid_robot_intelligence_control_system_device/devices/dynamixel/H54P-200-S500-R.device create mode 100755 humanoid_robot_intelligence_control_system_device/devices/dynamixel/L42-10-S300-R.device create mode 100755 humanoid_robot_intelligence_control_system_device/devices/dynamixel/L54-30-S400-R.device create mode 100755 humanoid_robot_intelligence_control_system_device/devices/dynamixel/L54-30-S500-R.device create mode 100755 humanoid_robot_intelligence_control_system_device/devices/dynamixel/L54-50-S290-R.device create mode 100755 humanoid_robot_intelligence_control_system_device/devices/dynamixel/L54-50-S500-R.device create mode 100755 humanoid_robot_intelligence_control_system_device/devices/dynamixel/M42-10-S260-R.device create mode 100755 humanoid_robot_intelligence_control_system_device/devices/dynamixel/M54-40-S250-R.device create mode 100755 humanoid_robot_intelligence_control_system_device/devices/dynamixel/M54-60-S250-R.device create mode 100755 humanoid_robot_intelligence_control_system_device/devices/dynamixel/MX-106.device create mode 100755 humanoid_robot_intelligence_control_system_device/devices/dynamixel/MX-28.device create mode 100755 humanoid_robot_intelligence_control_system_device/devices/dynamixel/MX-64.device create mode 100644 humanoid_robot_intelligence_control_system_device/devices/dynamixel/PH42-020-S300-R.device create mode 100644 humanoid_robot_intelligence_control_system_device/devices/dynamixel/PH54-100-S500-R.device create mode 100644 humanoid_robot_intelligence_control_system_device/devices/dynamixel/PH54-200-S500-R.device create mode 100644 humanoid_robot_intelligence_control_system_device/devices/dynamixel/RH-P12-RN(A).device create mode 100755 humanoid_robot_intelligence_control_system_device/devices/dynamixel/RH-P12-RN.device create mode 100755 humanoid_robot_intelligence_control_system_device/devices/dynamixel/XM-430.device create mode 100644 humanoid_robot_intelligence_control_system_device/devices/dynamixel/XM430-W210.device create mode 100644 humanoid_robot_intelligence_control_system_device/devices/dynamixel/XM430-W350.device create mode 100755 humanoid_robot_intelligence_control_system_device/devices/dynamixel/XM540-W150.device create mode 100755 humanoid_robot_intelligence_control_system_device/devices/dynamixel/XM540-W270.device create mode 100755 humanoid_robot_intelligence_control_system_device/devices/sensor/CM-740.device create mode 100755 humanoid_robot_intelligence_control_system_device/devices/sensor/OPEN-CR.device create mode 100755 humanoid_robot_intelligence_control_system_device/include/humanoid_robot_intelligence_control_system_device/control_table_item.h create mode 100755 humanoid_robot_intelligence_control_system_device/include/humanoid_robot_intelligence_control_system_device/device.h create mode 100755 humanoid_robot_intelligence_control_system_device/include/humanoid_robot_intelligence_control_system_device/dynamixel.h create mode 100755 humanoid_robot_intelligence_control_system_device/include/humanoid_robot_intelligence_control_system_device/dynamixel_state.h create mode 100755 humanoid_robot_intelligence_control_system_device/include/humanoid_robot_intelligence_control_system_device/robot.h create mode 100755 humanoid_robot_intelligence_control_system_device/include/humanoid_robot_intelligence_control_system_device/sensor.h create mode 100755 humanoid_robot_intelligence_control_system_device/include/humanoid_robot_intelligence_control_system_device/sensor_state.h create mode 100755 humanoid_robot_intelligence_control_system_device/include/humanoid_robot_intelligence_control_system_device/time_stamp.h create mode 100755 humanoid_robot_intelligence_control_system_device/package.xml create mode 100755 humanoid_robot_intelligence_control_system_device/src/humanoid_robot_intelligence_control_system_device/dynamixel.cpp create mode 100755 humanoid_robot_intelligence_control_system_device/src/humanoid_robot_intelligence_control_system_device/robot.cpp create mode 100755 humanoid_robot_intelligence_control_system_device/src/humanoid_robot_intelligence_control_system_device/sensor.cpp diff --git a/README.md b/README.md index 9968397..8b0d5d4 100755 --- a/README.md +++ b/README.md @@ -5,27 +5,27 @@ [![Sponsor](https://img.shields.io/badge/Sponsor-Robotics%20Sensors%20Research-red?style=for-the-badge&logo=github)](https://github.com/sponsors/Robotics-Sensors) # Stats -[![GitHub stars](https://img.shields.io/github/stars/Robotics-Sensors/humanoid_robot_framework.svg?style=social)](https://github.com/Robotics-Sensors/humanoid_robot_framework/stargazers) -[![GitHub forks](https://img.shields.io/github/forks/Robotics-Sensors/humanoid_robot_framework.svg?style=social)](https://github.com/Robotics-Sensors/humanoid_robot_framework/network) -[![GitHub watchers](https://img.shields.io/github/watchers/Robotics-Sensors/humanoid_robot_framework.svg?style=social)](https://github.com/Robotics-Sensors/humanoid_robot_framework/watchers) +[![GitHub stars](https://img.shields.io/github/stars/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework.svg?style=social)](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework/stargazers) +[![GitHub forks](https://img.shields.io/github/forks/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework.svg?style=social)](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework/network) +[![GitHub watchers](https://img.shields.io/github/watchers/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework.svg?style=social)](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework/watchers) -[![GitHub issues](https://img.shields.io/github/issues/Robotics-Sensors/humanoid_robot_framework.svg)](https://github.com/Robotics-Sensors/humanoid_robot_framework/issues) -[![GitHub pull requests](https://img.shields.io/github/issues-pr/Robotics-Sensors/humanoid_robot_framework.svg)](https://github.com/Robotics-Sensors/humanoid_robot_framework/pulls) -[![GitHub license](https://img.shields.io/github/license/Robotics-Sensors/humanoid_robot_framework.svg)](https://github.com/Robotics-Sensors/humanoid_robot_framework/blob/main/LICENSE) +[![GitHub issues](https://img.shields.io/github/issues/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework.svg)](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework/issues) +[![GitHub pull requests](https://img.shields.io/github/issues-pr/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework.svg)](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework/pulls) +[![GitHub license](https://img.shields.io/github/license/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework.svg)](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework/blob/main/LICENSE) -[![GitHub last commit](https://img.shields.io/github/last-commit/Robotics-Sensors/humanoid_robot_framework.svg)](https://github.com/Robotics-Sensors/humanoid_robot_framework/commits) -[![Visitor & Github Clones](https://img.shields.io/badge/dynamic/json?color=2e8b57&label=Visitor%20%26%20GitHub%20Clones&query=$.count&url=https://api.github.com/repos/Robotics-Sensors/humanoid_robot_framework/traffic)](https://github.com/Robotics-Sensors/humanoid_robot_framework) +[![GitHub last commit](https://img.shields.io/github/last-commit/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework.svg)](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework/commits) +[![Visitor & Github Clones](https://img.shields.io/badge/dynamic/json?color=2e8b57&label=Visitor%20%26%20GitHub%20Clones&query=$.count&url=https://api.github.com/repos/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework/traffic)](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework) -------------------------------------------------------------------------------------------------------- # Repository Website -https://robotics-sensors.github.io/humanoid_robot_framework +https://robotics-sensors.github.io/humanoid_robot_intelligence_control_system_framework -------------------------------------------------------------------------------------------------------- -Updated Version [humanoid_robot_framework](https://github.com/Robotics-Sensors/humanoid_robot_framework) readme. +Updated Version [humanoid_robot_intelligence_control_system_framework](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework) readme. Old Version/Previous Used for Different Context [ROBOTIS-Framework](https://github.com/ROBOTIS-GIT/ROBOTIS-Framework) readme. # Release -[![Latest Release](https://img.shields.io/github/v/release/Robotics-Sensors/humanoid_robot_tools?style=for-the-badge&color=yellow)](https://github.com/Robotics-Sensors/humanoid_robot_framework/releases/) +[![Latest Release](https://img.shields.io/github/v/release/Robotics-Sensors/humanoid_robot_intelligence_control_system_tools?style=for-the-badge&color=yellow)](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework/releases/) # Contact Depeding on the repository, If you are interested in accessing the complete version or other repository related to this repository, we kindly request that you reach out to the organization's director or the company behind this project. We invite you to explore the USE CASE to understand the specific terms and conditions for usage. To utilize this repository, it is imperative that you adhere to the guidelines outlined in the USE CASE. For those interested in showing their support, becoming a sponsor of the organization is an option, and detailed information can be found within the USE CASE and License documents. Furthermore, we encourage you to join our official Discord community, where you can engage with like-minded individuals, contribute to the project, and stay up-to-date with the latest developments. It's worth noting that while a fraction of research is publicly accessible, the majority remains private. To gain insights into the wealth of knowledge held by the Company or the organization's director, we recommend direct contact for more information. @@ -48,4 +48,4 @@ Latest versions and Maintainer is on organization https://github.com/Robotics-Se * Ronaldson Bellande ## License -This SDK is distributed under the [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0), see [LICENSE](https://github.com/Robotics-Sensors/humanoid_robot_framework/blob/main/LICENSE) and [NOTICE](https://github.com/Robotics-Sensors/humanoid_robot_framework/blob/main/LICENSE) for more information. +This SDK is distributed under the [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0), see [LICENSE](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework/blob/main/LICENSE) and [NOTICE](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework/blob/main/LICENSE) for more information. diff --git a/humanoid_robot_intelligence_control_system_controller/CMakeLists.txt b/humanoid_robot_intelligence_control_system_controller/CMakeLists.txt new file mode 100755 index 0000000..c69c671 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_controller/CMakeLists.txt @@ -0,0 +1,83 @@ +cmake_minimum_required(VERSION 3.8) +project(humanoid_robot_intelligence_control_system_controller) + +## Compile as C++11, supported in ROS Kinetic and newer +add_compile_options(-std=c++11) + + +if($ENV{ROS_VERSION} EQUAL 1) + find_package(catkin REQUIRED COMPONENTS + roscpp + roslib + std_msgs + sensor_msgs + humanoid_robot_intelligence_control_system_controller_msgs + dynamixel_sdk + humanoid_robot_intelligence_control_system_device + humanoid_robot_intelligence_control_system_framework_common + cmake_modules + ) + + find_package(Boost REQUIRED) + + find_package(PkgConfig REQUIRED) +else() + find_package(ament_cmake REQUIRED) +endif() + + +pkg_check_modules(YAML_CPP REQUIRED yaml-cpp) +find_path(YAML_CPP_INCLUDE_DIR + NAMES yaml_cpp.h + PATHS ${YAML_CPP_INCLUDE_DIRS} +) +find_library(YAML_CPP_LIBRARY + NAMES YAML_CPP + PATHS ${YAML_CPP_LIBRARY_DIRS} +) +link_directories(${YAML_CPP_LIBRARY_DIRS}) + +if(NOT ${YAML_CPP_VERSION} VERSION_LESS "0.5") +add_definitions(-DHAVE_NEW_YAMLCPP) +endif(NOT ${YAML_CPP_VERSION} VERSION_LESS "0.5") + + +if($ENV{ROS_VERSION} EQUAL 1) + catkin_package( + INCLUDE_DIRS include + LIBRARIES humanoid_robot_intelligence_control_system_controller + CATKIN_DEPENDS + roscpp + roslib + std_msgs + sensor_msgs + humanoid_robot_intelligence_control_system_controller_msgs + dynamixel_sdk + humanoid_robot_intelligence_control_system_device + humanoid_robot_intelligence_control_system_framework_common + cmake_modules + DEPENDS Boost + ) +endif() + + +include_directories( + include + ${catkin_INCLUDE_DIRS} + ${Boost_INCLUDE_DIRS} + ${YAML_CPP_INCLUDE_DIRS} +) + +add_library(humanoid_robot_intelligence_control_system_controller src/humanoid_robot_intelligence_control_system_controller/humanoid_robot_intelligence_control_system_controller.cpp) +add_dependencies(humanoid_robot_intelligence_control_system_controller ${catkin_EXPORTED_TARGETS}) +target_link_libraries(humanoid_robot_intelligence_control_system_controller ${catkin_LIBRARIES} ${Boost_LIBRARIES} ${YAML_CPP_LIBRARIES}) + +install(TARGETS humanoid_robot_intelligence_control_system_controller + ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} + LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} + RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} +) + +install(DIRECTORY include/${PROJECT_NAME}/ + DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} +) diff --git a/humanoid_robot_intelligence_control_system_controller/package.xml b/humanoid_robot_intelligence_control_system_controller/package.xml new file mode 100755 index 0000000..302552d --- /dev/null +++ b/humanoid_robot_intelligence_control_system_controller/package.xml @@ -0,0 +1,81 @@ + + + humanoid_robot_intelligence_control_system_controller + 0.3.2 + humanoid_robot_intelligence_control_system_controller package for ROBOTIS's platform like Manipulator-H, THORMANG and OP series + Apache 2.0 + Ronaldson Bellande + + + catkin + + roscpp + roslib + std_msgs + sensor_msgs + humanoid_robot_intelligence_control_system_controller_msgs + dynamixel_sdk + humanoid_robot_intelligence_control_system_device + humanoid_robot_intelligence_control_system_framework_common + cmake_modules + yaml-cpp + + roscpp + roslib + std_msgs + sensor_msgs + humanoid_robot_intelligence_control_system_controller_msgs + dynamixel_sdk + humanoid_robot_intelligence_control_system_device + humanoid_robot_intelligence_control_system_framework_common + cmake_modules + yaml-cpp + + roscpp + roslib + std_msgs + sensor_msgs + humanoid_robot_intelligence_control_system_controller_msgs + dynamixel_sdk + humanoid_robot_intelligence_control_system_device + humanoid_robot_intelligence_control_system_framework_common + cmake_modules + yaml-cpp + + + ament_cmake + + roscpp + roslib + std_msgs + sensor_msgs + humanoid_robot_intelligence_control_system_controller_msgs + dynamixel_sdk + humanoid_robot_intelligence_control_system_device + humanoid_robot_intelligence_control_system_framework_common + cmake_modules + yaml-cpp + + roscpp + roslib + std_msgs + sensor_msgs + humanoid_robot_intelligence_control_system_controller_msgs + dynamixel_sdk + humanoid_robot_intelligence_control_system_device + humanoid_robot_intelligence_control_system_framework_common + cmake_modules + yaml-cpp + + roscpp + roslib + std_msgs + sensor_msgs + humanoid_robot_intelligence_control_system_controller_msgs + dynamixel_sdk + humanoid_robot_intelligence_control_system_device + humanoid_robot_intelligence_control_system_framework_common + cmake_modules + yaml-cpp + + diff --git a/humanoid_robot_intelligence_control_system_device/CHANGELOG.rst b/humanoid_robot_intelligence_control_system_device/CHANGELOG.rst new file mode 100755 index 0000000..10a041c --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/CHANGELOG.rst @@ -0,0 +1,110 @@ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Changelog for package humanoid_robot_intelligence_control_system_device +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +0.3.2 (2023-10-03) +------------------ +* Make it compatible for ROS1/ROS2 +* Fix bugs +* Update package.xml and CMakeList.txt for to the latest versions +* Contributors & Maintainer: Ronaldson Bellande + +0.3.1 (2023-09-27) +------------------ +* Starting from this point it under a new license +* Fix errors and Issues +* Rename Repository for a completely different purpose +* Make it compatible with ROS/ROS2 +* Upgrade version of all builds and make it more compatible +* Update package.xml and CMakeList.txt for to the latest versions +* Contributors & Maintainer: Ronaldson Bellande + +0.3.0 (2021-05-03) +------------------ +* Update package.xml and CMakeList.txt for noetic branch +* Contributors: Ronaldson Bellande + +0.2.9 (2018-03-22) +------------------ +* modified to prevent duplicate indirect address write +* fixed a bug that occure when handling bulk read item that does not exist +* Contributors: Zerom + +0.2.8 (2018-03-20) +------------------ +* added RH-P12-RN.device file +* Contributors: Zerom, Pyo + +0.2.7 (2018-03-15) +------------------ +* fixed a bug that occur when handling bulk read item that does not exist +* changed the License and package format to version 2 +* Contributors: SCH, Pyo + +0.2.6 (2017-08-09) +------------------ +* OpenCR control table item name changed. (torque_enable -> dynamixel_power) +* fixed to not update update_time_stamp\_ if bulk read fails. +* Contributors: Zerom + +0.2.5 (2017-06-09) +------------------ +* none + +0.2.4 (2017-06-07) +------------------ +* none + +0.2.3 (2017-05-23) +------------------ +* updated the cmake file for ros install +* Contributors: SCH + +0.2.2 (2017-04-24) +------------------ +* added a deivce: OpenCR +* changed to read control cycle from .robot file +* Contributors: Zerom, Kayman + +0.2.1 (2016-11-23) +------------------ +* Merge the changes and update +* mode change debugging +* - convertRadian2Value / convertValue2Radian : commented out the code that limits the maximum/minimum value. +* - modified dependency problem. +* Contributors: Jay Song, Pyo, Zerom, SCH + +0.2.0 (2016-08-31) +------------------ +* bug fixed (position pid gain & velocity pid gain sync write). +* added velocity_to_value_ratio to DXL Pro-H series. +* added velocity p/i/d gain and position i/d gain sync_write code. +* fixed humanoid_robot_intelligence_control_system_device build_depend. +* added XM-430-W210 / XM-430-W350 device file. +* rename (present_current\_ -> present_torque\_) +* modified torque control code +* added device file for MX-64 / MX-106 +* adjusted position min/max value. (MX-28, XM-430) +* Contributors: Zerom, Pyo + +0.1.1 (2016-08-18) +------------------ +* updated the package information +* Contributors: Zerom + +0.1.0 (2016-08-12) +------------------ +* first public release for Kinetic +* modified the package information for release +* develop branch -> master branch +* Setting the license to BSD. +* add SensorState + add Singleton template +* XM-430 / CM-740 device file added. + Sensor device added. +* modified. +* variable name changed. + ConvertRadian2Value / ConvertValue2Radian function bug fixed. +* added code to support the gazebo simulator +* renewal +* Contributors: Zerom diff --git a/humanoid_robot_intelligence_control_system_device/CMakeLists.txt b/humanoid_robot_intelligence_control_system_device/CMakeLists.txt new file mode 100755 index 0000000..a9c5f39 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/CMakeLists.txt @@ -0,0 +1,51 @@ +cmake_minimum_required(VERSION 3.8) +project(humanoid_robot_intelligence_control_system_device) + + +if($ENV{ROS_VERSION} EQUAL 1) + find_package(catkin REQUIRED COMPONENTS + roscpp + dynamixel_sdk + ) +else() + find_package(ament_cmake REQUIRED) +endif() + + +if($ENV{ROS_VERSION} EQUAL 1) + catkin_package( + INCLUDE_DIRS include + LIBRARIES humanoid_robot_intelligence_control_system_device + CATKIN_DEPENDS + roscpp + dynamixel_sdk + ) +endif() + + +include_directories( + include + ${catkin_INCLUDE_DIRS} +) + +add_library(humanoid_robot_intelligence_control_system_device + src/humanoid_robot_intelligence_control_system_device/robot.cpp + src/humanoid_robot_intelligence_control_system_device/sensor.cpp + src/humanoid_robot_intelligence_control_system_device/dynamixel.cpp +) +add_dependencies(humanoid_robot_intelligence_control_system_device ${catkin_EXPORTED_TARGETS}) +target_link_libraries(humanoid_robot_intelligence_control_system_device ${catkin_LIBRARIES}) + +install(TARGETS humanoid_robot_intelligence_control_system_device + ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} + LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} + RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} +) + +install(DIRECTORY include/${PROJECT_NAME}/ + DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} +) + +install(DIRECTORY devices + DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} +) diff --git a/humanoid_robot_intelligence_control_system_device/devices/dynamixel/GRIPPER.device b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/GRIPPER.device new file mode 100755 index 0000000..7e0846d --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/GRIPPER.device @@ -0,0 +1,73 @@ +[device info] +model_name = GRIPPER +device_type = dynamixel + +[type info] +value_of_0_radian_position = 0 +value_of_min_radian_position = 0 +value_of_max_radian_position = 750 +min_radian = 0 +max_radian = 1.150767 + +torque_enable_item_name = torque_enable +present_position_item_name = present_position +present_velocity_item_name = present_velocity +present_current_item_name = present_current +goal_position_item_name = goal_position +goal_velocity_item_name = goal_velocity +goal_current_item_name = goal_torque +position_d_gain_item_name = +position_i_gain_item_name = +position_p_gain_item_name = position_p_gain +velocity_d_gain_item_name = +velocity_i_gain_item_name = velocity_i_gain +velocity_p_gain_item_name = velocity_p_gain + +[control table] +# addr | item name | length | access | memory | min value | max value | signed + 0 | model_number | 2 | R | EEPROM | 0 | 65535 | N + 6 | version_of_firmware | 1 | R | EEPROM | 0 | 254 | N + 7 | ID | 1 | RW | EEPROM | 0 | 252 | N + 8 | baudrate | 1 | RW | EEPROM | 0 | 8 | N + 9 | return_delay_time | 1 | RW | EEPROM | 0 | 254 | N + 11 | operating_mode | 1 | RW | EEPROM | 0 | 4 | N + 17 | moving_threshold | 4 | RW | EEPROM | 0 | 2147483647 | N + 21 | max_temperature_limit | 1 | RW | EEPROM | 0 | 100 | N + 22 | max_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 24 | min_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 26 | acceleration_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 30 | torque_limit | 2 | RW | EEPROM | 0 | 32767 | N + 32 | velocity_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 36 | max_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 40 | min_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 44 | external_port_mod_1 | 1 | RW | EEPROM | 0 | 3 | N + 45 | external_port_mod_2 | 1 | RW | EEPROM | 0 | 3 | N + 46 | external_port_mod_3 | 1 | RW | EEPROM | 0 | 3 | N + 47 | external_port_mod_4 | 1 | RW | EEPROM | 0 | 3 | N + 48 | shutdown | 1 | RW | EEPROM | 0 | 255 | N + 49 | indirect_address_1 | 2 | RW | EEPROM | 0 | 65535 | N + 562 | torque_enable | 1 | RW | RAM | 0 | 1 | N + 563 | LED_RED | 1 | RW | RAM | 0 | 255 | N + 564 | LED_GREEN | 1 | RW | RAM | 0 | 255 | N + 565 | LED_BLUE | 1 | RW | RAM | 0 | 255 | N + 586 | velocity_i_gain | 2 | RW | RAM | 0 | 2047 | N + 588 | velocity_p_gain | 2 | RW | RAM | 0 | 2047 | N + 594 | position_p_gain | 2 | RW | RAM | 0 | 2047 | N + 596 | goal_position | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 600 | goal_velocity | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 604 | goal_torque | 2 | RW | RAM | -32768 | 32767 | Y + 606 | goal_acceleration | 4 | RW | RAM | 0 | 2147483647 | N + 610 | is_moving | 1 | R | RAM | 0 | 1 | N + 611 | present_position | 4 | R | RAM | -2147483648 | 2147483647 | Y + 615 | present_velocity | 4 | R | RAM | -2147483648 | 2147483647 | Y + 621 | present_current | 2 | R | RAM | -32768 | 32767 | Y + 623 | present_voltage | 2 | R | RAM | 0 | 500 | N + 625 | present_temperature | 1 | R | RAM | 0 | 200 | N + 626 | external_port_data_1 | 2 | RW | RAM | 0 | 4095 | N + 628 | external_port_data_2 | 2 | RW | RAM | 0 | 4095 | N + 630 | external_port_data_3 | 2 | RW | RAM | 0 | 4095 | N + 632 | external_port_data_4 | 2 | RW | RAM | 0 | 4095 | N + 634 | indirect_data_1 | 1 | RW | RAM | 0 | 255 | N + 890 | registerd_instruction | 1 | R | RAM | 0 | 1 | N + 891 | status_return_level | 1 | RW | RAM | 0 | 2 | N + 892 | hardware_error_status | 2 | R | RAM | 0 | 31 | N diff --git a/humanoid_robot_intelligence_control_system_device/devices/dynamixel/GRIPPER_TORQUE.device b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/GRIPPER_TORQUE.device new file mode 100755 index 0000000..208b7cb --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/GRIPPER_TORQUE.device @@ -0,0 +1,74 @@ +[device info] +model_name = GRIPPER +device_type = dynamixel + +[type info] +value_of_0_radian_position = 0 +value_of_min_radian_position = 0 +value_of_max_radian_position = 750 +min_radian = 0 +max_radian = 1.150767 + +torque_enable_item_name = torque_enable +present_position_item_name = present_position +present_velocity_item_name = present_velocity +present_current_item_name = present_current +goal_position_item_name = goal_position +goal_velocity_item_name = goal_velocity +goal_current_item_name = goal_torque +position_d_gain_item_name = +position_i_gain_item_name = +position_p_gain_item_name = position_p_gain +velocity_d_gain_item_name = +velocity_i_gain_item_name = velocity_i_gain +velocity_p_gain_item_name = velocity_p_gain + +[control table] +# addr | item name | length | access | memory | min value | max value | signed + 0 | model_number | 2 | R | EEPROM | 0 | 65535 | N + 6 | version_of_firmware | 1 | R | EEPROM | 0 | 254 | N + 7 | ID | 1 | RW | EEPROM | 0 | 252 | N + 8 | baudrate | 1 | RW | EEPROM | 0 | 8 | N + 9 | return_delay_time | 1 | RW | EEPROM | 0 | 254 | N + 11 | operating_mode | 1 | RW | EEPROM | 0 | 4 | N + 17 | moving_threshold | 4 | RW | EEPROM | 0 | 2147483647 | N + 21 | max_temperature_limit | 1 | RW | EEPROM | 0 | 100 | N + 22 | max_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 24 | min_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 26 | acceleration_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 30 | torque_limit | 2 | RW | EEPROM | 0 | 32767 | N + 32 | velocity_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 36 | max_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 40 | min_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 44 | external_port_mod_1 | 1 | RW | EEPROM | 0 | 3 | N + 45 | external_port_mod_2 | 1 | RW | EEPROM | 0 | 3 | N + 46 | external_port_mod_3 | 1 | RW | EEPROM | 0 | 3 | N + 47 | external_port_mod_4 | 1 | RW | EEPROM | 0 | 3 | N + 48 | shutdown | 1 | RW | EEPROM | 0 | 255 | N + 49 | indirect_address_1 | 2 | RW | EEPROM | 0 | 65535 | N + 562 | torque_enable | 1 | RW | RAM | 0 | 1 | N + 563 | LED_RED | 1 | RW | RAM | 0 | 255 | N + 564 | LED_GREEN | 1 | RW | RAM | 0 | 255 | N + 565 | LED_BLUE | 1 | RW | RAM | 0 | 255 | N + 586 | velocity_i_gain | 2 | RW | RAM | 0 | 2047 | N + 588 | velocity_p_gain | 2 | RW | RAM | 0 | 2047 | N + 590 | position_d_gain | 2 | RW | RAM | 0 | 2047 | N + 594 | position_p_gain | 2 | RW | RAM | 0 | 2047 | N + 596 | goal_position | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 600 | goal_velocity | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 604 | goal_torque | 2 | RW | RAM | -32768 | 32767 | Y + 606 | goal_acceleration | 4 | RW | RAM | 0 | 2147483647 | N + 610 | is_moving | 1 | R | RAM | 0 | 1 | N + 611 | present_position | 4 | R | RAM | -2147483648 | 2147483647 | Y + 615 | present_velocity | 4 | R | RAM | -2147483648 | 2147483647 | Y + 621 | present_current | 2 | R | RAM | -32768 | 32767 | Y + 623 | present_voltage | 2 | R | RAM | 0 | 500 | N + 625 | present_temperature | 1 | R | RAM | 0 | 200 | N + 626 | external_port_data_1 | 2 | RW | RAM | 0 | 4095 | N + 628 | external_port_data_2 | 2 | RW | RAM | 0 | 4095 | N + 630 | external_port_data_3 | 2 | RW | RAM | 0 | 4095 | N + 632 | external_port_data_4 | 2 | RW | RAM | 0 | 4095 | N + 634 | indirect_data_1 | 1 | RW | RAM | 0 | 255 | N + 890 | registerd_instruction | 1 | R | RAM | 0 | 1 | N + 891 | status_return_level | 1 | RW | RAM | 0 | 2 | N + 892 | hardware_error_status | 2 | R | RAM | 0 | 31 | N diff --git a/humanoid_robot_intelligence_control_system_device/devices/dynamixel/H42-20-S300-R(A).device b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/H42-20-S300-R(A).device new file mode 100644 index 0000000..a6f523c --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/H42-20-S300-R(A).device @@ -0,0 +1,92 @@ +[device info] +model_name = H42-20-S300-R(A) +device_type = dynamixel + +[type info] +torque_to_current_value_ratio = 109.3747778 +velocity_to_value_ratio = 954.93 +value_of_0_radian_position = 0 +value_of_min_radian_position = -303750 +value_of_max_radian_position = 303750 +min_radian = -3.14159265 +max_radian = 3.14159265 + +torque_enable_item_name = torque_enable +present_position_item_name = present_position +present_velocity_item_name = present_velocity +present_current_item_name = present_current +goal_position_item_name = goal_position +goal_velocity_item_name = goal_velocity +goal_current_item_name = goal_current +position_d_gain_item_name = position_d_gain +position_i_gain_item_name = position_i_gain +position_p_gain_item_name = position_p_gain +velocity_d_gain_item_name = +velocity_i_gain_item_name = velocity_i_gain +velocity_p_gain_item_name = velocity_p_gain + +[control table] +# addr | item name | length | access | memory | min value | max value | signed + 0 | model_number | 2 | R | EEPROM | 0 | 65535 | N + 6 | version_of_firmware | 1 | R | EEPROM | 0 | 254 | N + 7 | ID | 1 | RW | EEPROM | 0 | 252 | N + 8 | baudrate | 1 | RW | EEPROM | 0 | 8 | N + 9 | return_delay_time | 1 | RW | EEPROM | 0 | 254 | N + 10 | drive_mode | 1 | RW | EEPROM | 0 | 3 | N + 11 | operating_mode | 1 | RW | EEPROM | 0 | 4 | N + 12 | secondary_id | 1 | RW | EEPROM | 0 | 255 | N + 13 | protocol_version | 1 | RW | EEPROM | 1 | 2 | N + 20 | homing_offset | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 24 | moving_threshold | 4 | RW | EEPROM | 0 | 2147483647 | N + 31 | max_temperature_limit | 1 | RW | EEPROM | 0 | 100 | N + 32 | max_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 34 | min_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 36 | pwm_limit | 2 | RW | EEPROM | 0 | 885 | N + 38 | current_limit | 2 | RW | EEPROM | 0 | 32767 | N + 40 | acceleration_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 44 | velocity_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 48 | max_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 52 | min_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 56 | external_port_mod_1 | 1 | RW | EEPROM | 0 | 3 | N + 57 | external_port_mod_2 | 1 | RW | EEPROM | 0 | 3 | N + 58 | external_port_mod_3 | 1 | RW | EEPROM | 0 | 3 | N + 59 | external_port_mod_4 | 1 | RW | EEPROM | 0 | 3 | N + 63 | shutdown | 1 | RW | EEPROM | 0 | 255 | N + 168 | indirect_address_1 | 2 | RW | EEPROM | 0 | 65535 | N + 512 | torque_enable | 1 | RW | RAM | 0 | 1 | N + 513 | LED_RED | 1 | RW | RAM | 0 | 255 | N + 514 | LED_GREEN | 1 | RW | RAM | 0 | 255 | N + 515 | LED_BLUE | 1 | RW | RAM | 0 | 255 | N + 516 | status_return_level | 1 | RW | RAM | 0 | 2 | N + 517 | registerd_instruction | 1 | R | RAM | 0 | 1 | N + 518 | hardware_error_status | 1 | R | RAM | 0 | 31 | N + 524 | velocity_i_gain | 2 | RW | RAM | 0 | 2047 | N + 526 | velocity_p_gain | 2 | RW | RAM | 0 | 2047 | N + 528 | position_d_gain | 2 | RW | RAM | 0 | 2047 | N + 530 | position_i_gain | 2 | RW | RAM | 0 | 2047 | N + 532 | position_p_gain | 2 | RW | RAM | 0 | 2047 | N + 536 | feedforward_2nd_gain | 2 | RW | RAM | 0 | 32767 | N + 538 | feedforward_1st_gain | 2 | RW | RAM | 0 | 32767 | N + 546 | bus_watchdog | 1 | RW | RAM | -1 | 127 | Y + 548 | goal_pwm | 2 | RW | RAM | -2100 | 2100 | Y + 550 | goal_current | 2 | RW | RAM | -32768 | 32767 | Y + 552 | goal_velocity | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 556 | profile_acceleration | 4 | RW | RAM | 0 | 32767 | N + 560 | profile_velocity | 4 | RW | RAM | 0 | 1023 | N + 564 | goal_position | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 568 | realtime_tick | 2 | R | RAM | 0 | 32767 | N + 570 | moving | 1 | R | RAM | 0 | 1 | N + 571 | moving_status | 1 | R | RAM | 0 | 255 | N + 572 | present_pwm | 2 | R | RAM | -2100 | 2100 | Y + 574 | present_current | 2 | R | RAM | -32768 | 32767 | Y + 576 | present_velocity | 4 | R | RAM | -2147483648 | 2147483647 | Y + 580 | present_position | 4 | R | RAM | -2147483648 | 2147483647 | Y + 584 | velocity_trajectory | 4 | R | RAM | 0 | 1023 | N + 588 | position_trajectory | 4 | R | RAM | 0 | 4095 | N + 592 | present_voltage | 2 | R | RAM | 0 | 500 | N + 594 | present_temperature | 1 | R | RAM | 0 | 200 | N + 600 | external_port_data_1 | 2 | RW | RAM | 0 | 4095 | N + 602 | external_port_data_2 | 2 | RW | RAM | 0 | 4095 | N + 604 | external_port_data_3 | 2 | RW | RAM | 0 | 4095 | N + 606 | external_port_data_4 | 2 | RW | RAM | 0 | 4095 | N + 634 | indirect_data_1 | 1 | RW | RAM | 0 | 255 | N diff --git a/humanoid_robot_intelligence_control_system_device/devices/dynamixel/H42-20-S300-R.device b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/H42-20-S300-R.device new file mode 100755 index 0000000..ab7aecb --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/H42-20-S300-R.device @@ -0,0 +1,76 @@ +[device info] +model_name = H42-20-S300-R +device_type = dynamixel + +[type info] +torque_to_current_value_ratio = 27.15146 +velocity_to_value_ratio = 2900.59884 +value_of_0_radian_position = 0 +value_of_min_radian_position = -151900 +value_of_max_radian_position = 151900 +min_radian = -3.14159265 +max_radian = 3.14159265 + +torque_enable_item_name = torque_enable +present_position_item_name = present_position +present_velocity_item_name = present_velocity +present_current_item_name = present_current +goal_position_item_name = goal_position +goal_velocity_item_name = goal_velocity +goal_current_item_name = goal_torque +position_d_gain_item_name = +position_i_gain_item_name = +position_p_gain_item_name = position_p_gain +velocity_d_gain_item_name = +velocity_i_gain_item_name = velocity_i_gain +velocity_p_gain_item_name = velocity_p_gain + +[control table] +# addr | item name | length | access | memory | min value | max value | signed + 0 | model_number | 2 | R | EEPROM | 0 | 65535 | N + 6 | version_of_firmware | 1 | R | EEPROM | 0 | 254 | N + 7 | ID | 1 | RW | EEPROM | 0 | 252 | N + 8 | baudrate | 1 | RW | EEPROM | 0 | 8 | N + 9 | return_delay_time | 1 | RW | EEPROM | 0 | 254 | N + 11 | operating_mode | 1 | RW | EEPROM | 0 | 4 | N + 13 | homing_offset | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 17 | moving_threshold | 4 | RW | EEPROM | 0 | 2147483647 | N + 21 | max_temperature_limit | 1 | RW | EEPROM | 0 | 100 | N + 22 | max_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 24 | min_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 26 | acceleration_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 30 | torque_limit | 2 | RW | EEPROM | 0 | 32767 | N + 32 | velocity_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 36 | max_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 40 | min_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 44 | external_port_mod_1 | 1 | RW | EEPROM | 0 | 3 | N + 45 | external_port_mod_2 | 1 | RW | EEPROM | 0 | 3 | N + 46 | external_port_mod_3 | 1 | RW | EEPROM | 0 | 3 | N + 47 | external_port_mod_4 | 1 | RW | EEPROM | 0 | 3 | N + 48 | shutdown | 1 | RW | EEPROM | 0 | 255 | N + 49 | indirect_address_1 | 2 | RW | EEPROM | 0 | 65535 | N + 562 | torque_enable | 1 | RW | RAM | 0 | 1 | N + 563 | LED_RED | 1 | RW | RAM | 0 | 255 | N + 564 | LED_GREEN | 1 | RW | RAM | 0 | 255 | N + 565 | LED_BLUE | 1 | RW | RAM | 0 | 255 | N + 586 | velocity_i_gain | 2 | RW | RAM | 0 | 2047 | N + 588 | velocity_p_gain | 2 | RW | RAM | 0 | 2047 | N + 594 | position_p_gain | 2 | RW | RAM | 0 | 2047 | N + 596 | goal_position | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 600 | goal_velocity | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 604 | goal_torque | 2 | RW | RAM | -32768 | 32767 | Y + 606 | goal_acceleration | 4 | RW | RAM | 0 | 2147483647 | N + 610 | is_moving | 1 | R | RAM | 0 | 1 | N + 611 | present_position | 4 | R | RAM | -2147483648 | 2147483647 | Y + 615 | present_velocity | 4 | R | RAM | -2147483648 | 2147483647 | Y + 621 | present_current | 2 | R | RAM | -32768 | 32767 | Y + 623 | present_voltage | 2 | R | RAM | 0 | 500 | N + 625 | present_temperature | 1 | R | RAM | 0 | 200 | N + 626 | external_port_data_1 | 2 | RW | RAM | 0 | 4095 | N + 628 | external_port_data_2 | 2 | RW | RAM | 0 | 4095 | N + 630 | external_port_data_3 | 2 | RW | RAM | 0 | 4095 | N + 632 | external_port_data_4 | 2 | RW | RAM | 0 | 4095 | N + 634 | indirect_data_1 | 1 | RW | RAM | 0 | 255 | N + 890 | registerd_instruction | 1 | R | RAM | 0 | 1 | N + 891 | status_return_level | 1 | RW | RAM | 0 | 2 | N + 892 | hardware_error_status | 2 | R | RAM | 0 | 31 | N diff --git a/humanoid_robot_intelligence_control_system_device/devices/dynamixel/H42P-020-S300-R.device b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/H42P-020-S300-R.device new file mode 100644 index 0000000..92d405a --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/H42P-020-S300-R.device @@ -0,0 +1,92 @@ +[device info] +model_name = H42P-020-S300-R +device_type = dynamixel + +[type info] +torque_to_current_value_ratio = 109.3747778 +velocity_to_value_ratio = 954.93 +value_of_0_radian_position = 0 +value_of_min_radian_position = -303750 +value_of_max_radian_position = 303750 +min_radian = -3.14159265 +max_radian = 3.14159265 + +torque_enable_item_name = torque_enable +present_position_item_name = present_position +present_velocity_item_name = present_velocity +present_current_item_name = present_current +goal_position_item_name = goal_position +goal_velocity_item_name = goal_velocity +goal_current_item_name = goal_current +position_d_gain_item_name = position_d_gain +position_i_gain_item_name = position_i_gain +position_p_gain_item_name = position_p_gain +velocity_d_gain_item_name = +velocity_i_gain_item_name = velocity_i_gain +velocity_p_gain_item_name = velocity_p_gain + +[control table] +# addr | item name | length | access | memory | min value | max value | signed + 0 | model_number | 2 | R | EEPROM | 0 | 65535 | N + 6 | version_of_firmware | 1 | R | EEPROM | 0 | 254 | N + 7 | ID | 1 | RW | EEPROM | 0 | 252 | N + 8 | baudrate | 1 | RW | EEPROM | 0 | 8 | N + 9 | return_delay_time | 1 | RW | EEPROM | 0 | 254 | N + 10 | drive_mode | 1 | RW | EEPROM | 0 | 3 | N + 11 | operating_mode | 1 | RW | EEPROM | 0 | 4 | N + 12 | secondary_id | 1 | RW | EEPROM | 0 | 255 | N + 13 | protocol_version | 1 | RW | EEPROM | 1 | 2 | N + 20 | homing_offset | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 24 | moving_threshold | 4 | RW | EEPROM | 0 | 2147483647 | N + 31 | max_temperature_limit | 1 | RW | EEPROM | 0 | 100 | N + 32 | max_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 34 | min_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 36 | pwm_limit | 2 | RW | EEPROM | 0 | 885 | N + 38 | current_limit | 2 | RW | EEPROM | 0 | 32767 | N + 40 | acceleration_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 44 | velocity_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 48 | max_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 52 | min_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 56 | external_port_mod_1 | 1 | RW | EEPROM | 0 | 3 | N + 57 | external_port_mod_2 | 1 | RW | EEPROM | 0 | 3 | N + 58 | external_port_mod_3 | 1 | RW | EEPROM | 0 | 3 | N + 59 | external_port_mod_4 | 1 | RW | EEPROM | 0 | 3 | N + 63 | shutdown | 1 | RW | EEPROM | 0 | 255 | N + 168 | indirect_address_1 | 2 | RW | EEPROM | 0 | 65535 | N + 512 | torque_enable | 1 | RW | RAM | 0 | 1 | N + 513 | LED_RED | 1 | RW | RAM | 0 | 255 | N + 514 | LED_GREEN | 1 | RW | RAM | 0 | 255 | N + 515 | LED_BLUE | 1 | RW | RAM | 0 | 255 | N + 516 | status_return_level | 1 | RW | RAM | 0 | 2 | N + 517 | registerd_instruction | 1 | R | RAM | 0 | 1 | N + 518 | hardware_error_status | 1 | R | RAM | 0 | 31 | N + 524 | velocity_i_gain | 2 | RW | RAM | 0 | 2047 | N + 526 | velocity_p_gain | 2 | RW | RAM | 0 | 2047 | N + 528 | position_d_gain | 2 | RW | RAM | 0 | 2047 | N + 530 | position_i_gain | 2 | RW | RAM | 0 | 2047 | N + 532 | position_p_gain | 2 | RW | RAM | 0 | 2047 | N + 536 | feedforward_2nd_gain | 2 | RW | RAM | 0 | 32767 | N + 538 | feedforward_1st_gain | 2 | RW | RAM | 0 | 32767 | N + 546 | bus_watchdog | 1 | RW | RAM | -1 | 127 | Y + 548 | goal_pwm | 2 | RW | RAM | -2100 | 2100 | Y + 550 | goal_current | 2 | RW | RAM | -32768 | 32767 | Y + 552 | goal_velocity | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 556 | profile_acceleration | 4 | RW | RAM | 0 | 32767 | N + 560 | profile_velocity | 4 | RW | RAM | 0 | 1023 | N + 564 | goal_position | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 568 | realtime_tick | 2 | R | RAM | 0 | 32767 | N + 570 | moving | 1 | R | RAM | 0 | 1 | N + 571 | moving_status | 1 | R | RAM | 0 | 255 | N + 572 | present_pwm | 2 | R | RAM | -2100 | 2100 | Y + 574 | present_current | 2 | R | RAM | -32768 | 32767 | Y + 576 | present_velocity | 4 | R | RAM | -2147483648 | 2147483647 | Y + 580 | present_position | 4 | R | RAM | -2147483648 | 2147483647 | Y + 584 | velocity_trajectory | 4 | R | RAM | 0 | 1023 | N + 588 | position_trajectory | 4 | R | RAM | 0 | 4095 | N + 592 | present_voltage | 2 | R | RAM | 0 | 500 | N + 594 | present_temperature | 1 | R | RAM | 0 | 200 | N + 600 | external_port_data_1 | 2 | RW | RAM | 0 | 4095 | N + 602 | external_port_data_2 | 2 | RW | RAM | 0 | 4095 | N + 604 | external_port_data_3 | 2 | RW | RAM | 0 | 4095 | N + 606 | external_port_data_4 | 2 | RW | RAM | 0 | 4095 | N + 634 | indirect_data_1 | 1 | RW | RAM | 0 | 255 | N diff --git a/humanoid_robot_intelligence_control_system_device/devices/dynamixel/H54-100-B210-R-NR.device b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/H54-100-B210-R-NR.device new file mode 100755 index 0000000..42342ae --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/H54-100-B210-R-NR.device @@ -0,0 +1,76 @@ +[device info] +model_name = H54-100-B210-R-NR +device_type = dynamixel + +[type info] +torque_to_current_value_ratio = 9.09201 +velocity_to_value_ratio = 2046.2777 +value_of_0_radian_position = 0 +value_of_min_radian_position = -250950 +value_of_max_radian_position = 250950 +min_radian = -3.14159265 +max_radian = 3.14159265 + +torque_enable_item_name = torque_enable +present_position_item_name = present_position +present_velocity_item_name = present_velocity +present_current_item_name = present_current +goal_position_item_name = goal_position +goal_velocity_item_name = goal_velocity +goal_current_item_name = goal_torque +position_d_gain_item_name = +position_i_gain_item_name = +position_p_gain_item_name = position_p_gain +velocity_d_gain_item_name = +velocity_i_gain_item_name = velocity_i_gain +velocity_p_gain_item_name = velocity_p_gain + +[control table] +# addr | item name | length | access | memory | min value | max value | signed + 0 | model_number | 2 | R | EEPROM | 0 | 65535 | N + 6 | version_of_firmware | 1 | R | EEPROM | 0 | 254 | N + 7 | ID | 1 | RW | EEPROM | 0 | 252 | N + 8 | baudrate | 1 | RW | EEPROM | 0 | 8 | N + 9 | return_delay_time | 1 | RW | EEPROM | 0 | 254 | N + 11 | operating_mode | 1 | RW | EEPROM | 0 | 4 | N + 13 | homing_offset | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 17 | moving_threshold | 4 | RW | EEPROM | 0 | 2147483647 | N + 21 | max_temperature_limit | 1 | RW | EEPROM | 0 | 100 | N + 22 | max_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 24 | min_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 26 | acceleration_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 30 | torque_limit | 2 | RW | EEPROM | 0 | 32767 | N + 32 | velocity_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 36 | max_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 40 | min_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 44 | external_port_mod_1 | 1 | RW | EEPROM | 0 | 3 | N + 45 | external_port_mod_2 | 1 | RW | EEPROM | 0 | 3 | N + 46 | external_port_mod_3 | 1 | RW | EEPROM | 0 | 3 | N + 47 | external_port_mod_4 | 1 | RW | EEPROM | 0 | 3 | N + 48 | shutdown | 1 | RW | EEPROM | 0 | 255 | N + 49 | indirect_address_1 | 2 | RW | EEPROM | 0 | 65535 | N + 562 | torque_enable | 1 | RW | RAM | 0 | 1 | N + 563 | LED_RED | 1 | RW | RAM | 0 | 255 | N + 564 | LED_GREEN | 1 | RW | RAM | 0 | 255 | N + 565 | LED_BLUE | 1 | RW | RAM | 0 | 255 | N + 586 | velocity_i_gain | 2 | RW | RAM | 0 | 2047 | N + 588 | velocity_p_gain | 2 | RW | RAM | 0 | 2047 | N + 594 | position_p_gain | 2 | RW | RAM | 0 | 2047 | N + 596 | goal_position | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 600 | goal_velocity | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 604 | goal_torque | 2 | RW | RAM | -32768 | 32767 | Y + 606 | goal_acceleration | 4 | RW | RAM | 0 | 2147483647 | N + 610 | is_moving | 1 | R | RAM | 0 | 1 | N + 611 | present_position | 4 | R | RAM | -2147483648 | 2147483647 | Y + 615 | present_velocity | 4 | R | RAM | -2147483648 | 2147483647 | Y + 621 | present_current | 2 | R | RAM | -32768 | 32767 | Y + 623 | present_voltage | 2 | R | RAM | 0 | 500 | N + 625 | present_temperature | 1 | R | RAM | 0 | 200 | N + 626 | external_port_data_1 | 2 | RW | RAM | 0 | 4095 | N + 628 | external_port_data_2 | 2 | RW | RAM | 0 | 4095 | N + 630 | external_port_data_3 | 2 | RW | RAM | 0 | 4095 | N + 632 | external_port_data_4 | 2 | RW | RAM | 0 | 4095 | N + 634 | indirect_data_1 | 1 | RW | RAM | 0 | 255 | N + 890 | registerd_instruction | 1 | R | RAM | 0 | 1 | N + 891 | status_return_level | 1 | RW | RAM | 0 | 2 | N + 892 | hardware_error_status | 2 | R | RAM | 0 | 31 | N diff --git a/humanoid_robot_intelligence_control_system_device/devices/dynamixel/H54-100-S500-R(A).device b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/H54-100-S500-R(A).device new file mode 100644 index 0000000..fe706cc --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/H54-100-S500-R(A).device @@ -0,0 +1,92 @@ +[device info] +model_name = H54-100-S500-R(A) +device_type = dynamixel + +[type info] +torque_to_current_value_ratio = 155.658486 +velocity_to_value_ratio = 954.93 +value_of_0_radian_position = 0 +value_of_min_radian_position = -501923 +value_of_max_radian_position = 501923 +min_radian = -3.14159265 +max_radian = 3.14159265 + +torque_enable_item_name = torque_enable +present_position_item_name = present_position +present_velocity_item_name = present_velocity +present_current_item_name = present_current +goal_position_item_name = goal_position +goal_velocity_item_name = goal_velocity +goal_current_item_name = goal_current +position_d_gain_item_name = position_d_gain +position_i_gain_item_name = position_i_gain +position_p_gain_item_name = position_p_gain +velocity_d_gain_item_name = +velocity_i_gain_item_name = velocity_i_gain +velocity_p_gain_item_name = velocity_p_gain + +[control table] +# addr | item name | length | access | memory | min value | max value | signed + 0 | model_number | 2 | R | EEPROM | 0 | 65535 | N + 6 | version_of_firmware | 1 | R | EEPROM | 0 | 254 | N + 7 | ID | 1 | RW | EEPROM | 0 | 252 | N + 8 | baudrate | 1 | RW | EEPROM | 0 | 8 | N + 9 | return_delay_time | 1 | RW | EEPROM | 0 | 254 | N + 10 | drive_mode | 1 | RW | EEPROM | 0 | 3 | N + 11 | operating_mode | 1 | RW | EEPROM | 0 | 4 | N + 12 | secondary_id | 1 | RW | EEPROM | 0 | 255 | N + 13 | protocol_version | 1 | RW | EEPROM | 1 | 2 | N + 20 | homing_offset | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 24 | moving_threshold | 4 | RW | EEPROM | 0 | 2147483647 | N + 31 | max_temperature_limit | 1 | RW | EEPROM | 0 | 100 | N + 32 | max_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 34 | min_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 36 | pwm_limit | 2 | RW | EEPROM | 0 | 885 | N + 38 | current_limit | 2 | RW | EEPROM | 0 | 32767 | N + 40 | acceleration_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 44 | velocity_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 48 | max_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 52 | min_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 56 | external_port_mod_1 | 1 | RW | EEPROM | 0 | 3 | N + 57 | external_port_mod_2 | 1 | RW | EEPROM | 0 | 3 | N + 58 | external_port_mod_3 | 1 | RW | EEPROM | 0 | 3 | N + 59 | external_port_mod_4 | 1 | RW | EEPROM | 0 | 3 | N + 63 | shutdown | 1 | RW | EEPROM | 0 | 255 | N + 168 | indirect_address_1 | 2 | RW | EEPROM | 0 | 65535 | N + 512 | torque_enable | 1 | RW | RAM | 0 | 1 | N + 513 | LED_RED | 1 | RW | RAM | 0 | 255 | N + 514 | LED_GREEN | 1 | RW | RAM | 0 | 255 | N + 515 | LED_BLUE | 1 | RW | RAM | 0 | 255 | N + 516 | status_return_level | 1 | RW | RAM | 0 | 2 | N + 517 | registerd_instruction | 1 | R | RAM | 0 | 1 | N + 518 | hardware_error_status | 1 | R | RAM | 0 | 31 | N + 524 | velocity_i_gain | 2 | RW | RAM | 0 | 2047 | N + 526 | velocity_p_gain | 2 | RW | RAM | 0 | 2047 | N + 528 | position_d_gain | 2 | RW | RAM | 0 | 2047 | N + 530 | position_i_gain | 2 | RW | RAM | 0 | 2047 | N + 532 | position_p_gain | 2 | RW | RAM | 0 | 2047 | N + 536 | feedforward_2nd_gain | 2 | RW | RAM | 0 | 32767 | N + 538 | feedforward_1st_gain | 2 | RW | RAM | 0 | 32767 | N + 546 | bus_watchdog | 1 | RW | RAM | -1 | 127 | Y + 548 | goal_pwm | 2 | RW | RAM | -2100 | 2100 | Y + 550 | goal_current | 2 | RW | RAM | -32768 | 32767 | Y + 552 | goal_velocity | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 556 | profile_acceleration | 4 | RW | RAM | 0 | 32767 | N + 560 | profile_velocity | 4 | RW | RAM | 0 | 1023 | N + 564 | goal_position | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 568 | realtime_tick | 2 | R | RAM | 0 | 32767 | N + 570 | moving | 1 | R | RAM | 0 | 1 | N + 571 | moving_status | 1 | R | RAM | 0 | 255 | N + 572 | present_pwm | 2 | R | RAM | -2100 | 2100 | Y + 574 | present_current | 2 | R | RAM | -32768 | 32767 | Y + 576 | present_velocity | 4 | R | RAM | -2147483648 | 2147483647 | Y + 580 | present_position | 4 | R | RAM | -2147483648 | 2147483647 | Y + 584 | velocity_trajectory | 4 | R | RAM | 0 | 1023 | N + 588 | position_trajectory | 4 | R | RAM | 0 | 4095 | N + 592 | present_voltage | 2 | R | RAM | 0 | 500 | N + 594 | present_temperature | 1 | R | RAM | 0 | 200 | N + 600 | external_port_data_1 | 2 | RW | RAM | 0 | 4095 | N + 602 | external_port_data_2 | 2 | RW | RAM | 0 | 4095 | N + 604 | external_port_data_3 | 2 | RW | RAM | 0 | 4095 | N + 606 | external_port_data_4 | 2 | RW | RAM | 0 | 4095 | N + 634 | indirect_data_1 | 1 | RW | RAM | 0 | 255 | N diff --git a/humanoid_robot_intelligence_control_system_device/devices/dynamixel/H54-100-S500-R.device b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/H54-100-S500-R.device new file mode 100755 index 0000000..b042f27 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/H54-100-S500-R.device @@ -0,0 +1,76 @@ +[device info] +model_name = H54-100-S500-R +device_type = dynamixel + +[type info] +torque_to_current_value_ratio = 9.66026 +velocity_to_value_ratio = 4793.01226 +value_of_0_radian_position = 0 +value_of_min_radian_position = -250950 +value_of_max_radian_position = 250950 +min_radian = -3.14159265 +max_radian = 3.14159265 + +torque_enable_item_name = torque_enable +present_position_item_name = present_position +present_velocity_item_name = present_velocity +present_current_item_name = present_current +goal_position_item_name = goal_position +goal_velocity_item_name = goal_velocity +goal_current_item_name = goal_torque +position_d_gain_item_name = +position_i_gain_item_name = +position_p_gain_item_name = position_p_gain +velocity_d_gain_item_name = +velocity_i_gain_item_name = velocity_i_gain +velocity_p_gain_item_name = velocity_p_gain + +[control table] +# addr | item name | length | access | memory | min value | max value | signed + 0 | model_number | 2 | R | EEPROM | 0 | 65535 | N + 6 | version_of_firmware | 1 | R | EEPROM | 0 | 254 | N + 7 | ID | 1 | RW | EEPROM | 0 | 252 | N + 8 | baudrate | 1 | RW | EEPROM | 0 | 8 | N + 9 | return_delay_time | 1 | RW | EEPROM | 0 | 254 | N + 11 | operating_mode | 1 | RW | EEPROM | 0 | 4 | N + 13 | homing_offset | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 17 | moving_threshold | 4 | RW | EEPROM | 0 | 2147483647 | N + 21 | max_temperature_limit | 1 | RW | EEPROM | 0 | 100 | N + 22 | max_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 24 | min_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 26 | acceleration_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 30 | torque_limit | 2 | RW | EEPROM | 0 | 32767 | N + 32 | velocity_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 36 | max_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 40 | min_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 44 | external_port_mod_1 | 1 | RW | EEPROM | 0 | 3 | N + 45 | external_port_mod_2 | 1 | RW | EEPROM | 0 | 3 | N + 46 | external_port_mod_3 | 1 | RW | EEPROM | 0 | 3 | N + 47 | external_port_mod_4 | 1 | RW | EEPROM | 0 | 3 | N + 48 | shutdown | 1 | RW | EEPROM | 0 | 255 | N + 49 | indirect_address_1 | 2 | RW | EEPROM | 0 | 65535 | N + 562 | torque_enable | 1 | RW | RAM | 0 | 1 | N + 563 | LED_RED | 1 | RW | RAM | 0 | 255 | N + 564 | LED_GREEN | 1 | RW | RAM | 0 | 255 | N + 565 | LED_BLUE | 1 | RW | RAM | 0 | 255 | N + 586 | velocity_i_gain | 2 | RW | RAM | 0 | 2047 | N + 588 | velocity_p_gain | 2 | RW | RAM | 0 | 2047 | N + 594 | position_p_gain | 2 | RW | RAM | 0 | 2047 | N + 596 | goal_position | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 600 | goal_velocity | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 604 | goal_torque | 2 | RW | RAM | -32768 | 32767 | Y + 606 | goal_acceleration | 4 | RW | RAM | 0 | 2147483647 | N + 610 | is_moving | 1 | R | RAM | 0 | 1 | N + 611 | present_position | 4 | R | RAM | -2147483648 | 2147483647 | Y + 615 | present_velocity | 4 | R | RAM | -2147483648 | 2147483647 | Y + 621 | present_current | 2 | R | RAM | -32768 | 32767 | Y + 623 | present_voltage | 2 | R | RAM | 0 | 500 | N + 625 | present_temperature | 1 | R | RAM | 0 | 200 | N + 626 | external_port_data_1 | 2 | RW | RAM | 0 | 4095 | N + 628 | external_port_data_2 | 2 | RW | RAM | 0 | 4095 | N + 630 | external_port_data_3 | 2 | RW | RAM | 0 | 4095 | N + 632 | external_port_data_4 | 2 | RW | RAM | 0 | 4095 | N + 634 | indirect_data_1 | 1 | RW | RAM | 0 | 255 | N + 890 | registerd_instruction | 1 | R | RAM | 0 | 1 | N + 891 | status_return_level | 1 | RW | RAM | 0 | 2 | N + 892 | hardware_error_status | 2 | R | RAM | 0 | 31 | N diff --git a/humanoid_robot_intelligence_control_system_device/devices/dynamixel/H54-200-B500-R.device b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/H54-200-B500-R.device new file mode 100755 index 0000000..ca52162 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/H54-200-B500-R.device @@ -0,0 +1,76 @@ +[device info] +model_name = H54-200-B500-R +device_type = dynamixel + +[type info] +torque_to_current_value_ratio = 9.09201 +velocity_to_value_ratio = 4793.01226 +value_of_0_radian_position = 0 +value_of_min_radian_position = -250950 +value_of_max_radian_position = 250950 +min_radian = -3.14159265 +max_radian = 3.14159265 + +torque_enable_item_name = torque_enable +present_position_item_name = present_position +present_velocity_item_name = present_velocity +present_current_item_name = present_current +goal_position_item_name = goal_position +goal_velocity_item_name = goal_velocity +goal_current_item_name = goal_torque +position_d_gain_item_name = +position_i_gain_item_name = +position_p_gain_item_name = position_p_gain +velocity_d_gain_item_name = +velocity_i_gain_item_name = velocity_i_gain +velocity_p_gain_item_name = velocity_p_gain + +[control table] +# addr | item name | length | access | memory | min value | max value | signed + 0 | model_number | 2 | R | EEPROM | 0 | 65535 | N + 6 | version_of_firmware | 1 | R | EEPROM | 0 | 254 | N + 7 | ID | 1 | RW | EEPROM | 0 | 252 | N + 8 | baudrate | 1 | RW | EEPROM | 0 | 8 | N + 9 | return_delay_time | 1 | RW | EEPROM | 0 | 254 | N + 11 | operating_mode | 1 | RW | EEPROM | 0 | 4 | N + 13 | homing_offset | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 17 | moving_threshold | 4 | RW | EEPROM | 0 | 2147483647 | N + 21 | max_temperature_limit | 1 | RW | EEPROM | 0 | 100 | N + 22 | max_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 24 | min_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 26 | acceleration_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 30 | torque_limit | 2 | RW | EEPROM | 0 | 32767 | N + 32 | velocity_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 36 | max_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 40 | min_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 44 | external_port_mod_1 | 1 | RW | EEPROM | 0 | 3 | N + 45 | external_port_mod_2 | 1 | RW | EEPROM | 0 | 3 | N + 46 | external_port_mod_3 | 1 | RW | EEPROM | 0 | 3 | N + 47 | external_port_mod_4 | 1 | RW | EEPROM | 0 | 3 | N + 48 | shutdown | 1 | RW | EEPROM | 0 | 255 | N + 49 | indirect_address_1 | 2 | RW | EEPROM | 0 | 65535 | N + 562 | torque_enable | 1 | RW | RAM | 0 | 1 | N + 563 | LED_RED | 1 | RW | RAM | 0 | 255 | N + 564 | LED_GREEN | 1 | RW | RAM | 0 | 255 | N + 565 | LED_BLUE | 1 | RW | RAM | 0 | 255 | N + 586 | velocity_i_gain | 2 | RW | RAM | 0 | 2047 | N + 588 | velocity_p_gain | 2 | RW | RAM | 0 | 2047 | N + 594 | position_p_gain | 2 | RW | RAM | 0 | 2047 | N + 596 | goal_position | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 600 | goal_velocity | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 604 | goal_torque | 2 | RW | RAM | -32768 | 32767 | Y + 606 | goal_acceleration | 4 | RW | RAM | 0 | 2147483647 | N + 610 | is_moving | 1 | R | RAM | 0 | 1 | N + 611 | present_position | 4 | R | RAM | -2147483648 | 2147483647 | Y + 615 | present_velocity | 4 | R | RAM | -2147483648 | 2147483647 | Y + 621 | present_current | 2 | R | RAM | -32768 | 32767 | Y + 623 | present_voltage | 2 | R | RAM | 0 | 500 | N + 625 | present_temperature | 1 | R | RAM | 0 | 200 | N + 626 | external_port_data_1 | 2 | RW | RAM | 0 | 4095 | N + 628 | external_port_data_2 | 2 | RW | RAM | 0 | 4095 | N + 630 | external_port_data_3 | 2 | RW | RAM | 0 | 4095 | N + 632 | external_port_data_4 | 2 | RW | RAM | 0 | 4095 | N + 634 | indirect_data_1 | 1 | RW | RAM | 0 | 255 | N + 890 | registerd_instruction | 1 | R | RAM | 0 | 1 | N + 891 | status_return_level | 1 | RW | RAM | 0 | 2 | N + 892 | hardware_error_status | 2 | R | RAM | 0 | 31 | N diff --git a/humanoid_robot_intelligence_control_system_device/devices/dynamixel/H54-200-S500-R(A).device b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/H54-200-S500-R(A).device new file mode 100644 index 0000000..3cfb758 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/H54-200-S500-R(A).device @@ -0,0 +1,92 @@ +[device info] +model_name = H54-200-S500-R(A) +device_type = dynamixel + +[type info] +torque_to_current_value_ratio = 146.502114 +velocity_to_value_ratio = 954.93 +value_of_0_radian_position = 0 +value_of_min_radian_position = -501923 +value_of_max_radian_position = 501923 +min_radian = -3.14159265 +max_radian = 3.14159265 + +torque_enable_item_name = torque_enable +present_position_item_name = present_position +present_velocity_item_name = present_velocity +present_current_item_name = present_current +goal_position_item_name = goal_position +goal_velocity_item_name = goal_velocity +goal_current_item_name = goal_current +position_d_gain_item_name = position_d_gain +position_i_gain_item_name = position_i_gain +position_p_gain_item_name = position_p_gain +velocity_d_gain_item_name = +velocity_i_gain_item_name = velocity_i_gain +velocity_p_gain_item_name = velocity_p_gain + +[control table] +# addr | item name | length | access | memory | min value | max value | signed + 0 | model_number | 2 | R | EEPROM | 0 | 65535 | N + 6 | version_of_firmware | 1 | R | EEPROM | 0 | 254 | N + 7 | ID | 1 | RW | EEPROM | 0 | 252 | N + 8 | baudrate | 1 | RW | EEPROM | 0 | 8 | N + 9 | return_delay_time | 1 | RW | EEPROM | 0 | 254 | N + 10 | drive_mode | 1 | RW | EEPROM | 0 | 3 | N + 11 | operating_mode | 1 | RW | EEPROM | 0 | 4 | N + 12 | secondary_id | 1 | RW | EEPROM | 0 | 255 | N + 13 | protocol_version | 1 | RW | EEPROM | 1 | 2 | N + 20 | homing_offset | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 24 | moving_threshold | 4 | RW | EEPROM | 0 | 2147483647 | N + 31 | max_temperature_limit | 1 | RW | EEPROM | 0 | 100 | N + 32 | max_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 34 | min_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 36 | pwm_limit | 2 | RW | EEPROM | 0 | 885 | N + 38 | current_limit | 2 | RW | EEPROM | 0 | 32767 | N + 40 | acceleration_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 44 | velocity_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 48 | max_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 52 | min_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 56 | external_port_mod_1 | 1 | RW | EEPROM | 0 | 3 | N + 57 | external_port_mod_2 | 1 | RW | EEPROM | 0 | 3 | N + 58 | external_port_mod_3 | 1 | RW | EEPROM | 0 | 3 | N + 59 | external_port_mod_4 | 1 | RW | EEPROM | 0 | 3 | N + 63 | shutdown | 1 | RW | EEPROM | 0 | 255 | N + 168 | indirect_address_1 | 2 | RW | EEPROM | 0 | 65535 | N + 512 | torque_enable | 1 | RW | RAM | 0 | 1 | N + 513 | LED_RED | 1 | RW | RAM | 0 | 255 | N + 514 | LED_GREEN | 1 | RW | RAM | 0 | 255 | N + 515 | LED_BLUE | 1 | RW | RAM | 0 | 255 | N + 516 | status_return_level | 1 | RW | RAM | 0 | 2 | N + 517 | registerd_instruction | 1 | R | RAM | 0 | 1 | N + 518 | hardware_error_status | 1 | R | RAM | 0 | 31 | N + 524 | velocity_i_gain | 2 | RW | RAM | 0 | 2047 | N + 526 | velocity_p_gain | 2 | RW | RAM | 0 | 2047 | N + 528 | position_d_gain | 2 | RW | RAM | 0 | 2047 | N + 530 | position_i_gain | 2 | RW | RAM | 0 | 2047 | N + 532 | position_p_gain | 2 | RW | RAM | 0 | 2047 | N + 536 | feedforward_2nd_gain | 2 | RW | RAM | 0 | 32767 | N + 538 | feedforward_1st_gain | 2 | RW | RAM | 0 | 32767 | N + 546 | bus_watchdog | 1 | RW | RAM | -1 | 127 | Y + 548 | goal_pwm | 2 | RW | RAM | -2100 | 2100 | Y + 550 | goal_current | 2 | RW | RAM | -32768 | 32767 | Y + 552 | goal_velocity | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 556 | profile_acceleration | 4 | RW | RAM | 0 | 32767 | N + 560 | profile_velocity | 4 | RW | RAM | 0 | 1023 | N + 564 | goal_position | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 568 | realtime_tick | 2 | R | RAM | 0 | 32767 | N + 570 | moving | 1 | R | RAM | 0 | 1 | N + 571 | moving_status | 1 | R | RAM | 0 | 255 | N + 572 | present_pwm | 2 | R | RAM | -2100 | 2100 | Y + 574 | present_current | 2 | R | RAM | -32768 | 32767 | Y + 576 | present_velocity | 4 | R | RAM | -2147483648 | 2147483647 | Y + 580 | present_position | 4 | R | RAM | -2147483648 | 2147483647 | Y + 584 | velocity_trajectory | 4 | R | RAM | 0 | 1023 | N + 588 | position_trajectory | 4 | R | RAM | 0 | 4095 | N + 592 | present_voltage | 2 | R | RAM | 0 | 500 | N + 594 | present_temperature | 1 | R | RAM | 0 | 200 | N + 600 | external_port_data_1 | 2 | RW | RAM | 0 | 4095 | N + 602 | external_port_data_2 | 2 | RW | RAM | 0 | 4095 | N + 604 | external_port_data_3 | 2 | RW | RAM | 0 | 4095 | N + 606 | external_port_data_4 | 2 | RW | RAM | 0 | 4095 | N + 634 | indirect_data_1 | 1 | RW | RAM | 0 | 255 | N diff --git a/humanoid_robot_intelligence_control_system_device/devices/dynamixel/H54-200-S500-R.device b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/H54-200-S500-R.device new file mode 100755 index 0000000..4f81222 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/H54-200-S500-R.device @@ -0,0 +1,76 @@ +[device info] +model_name = H54-200-S500-R +device_type = dynamixel + +[type info] +torque_to_current_value_ratio = 9.09201 +velocity_to_value_ratio = 4793.01226 +value_of_0_radian_position = 0 +value_of_min_radian_position = -250950 +value_of_max_radian_position = 250950 +min_radian = -3.14159265 +max_radian = 3.14159265 + +torque_enable_item_name = torque_enable +present_position_item_name = present_position +present_velocity_item_name = present_velocity +present_current_item_name = present_current +goal_position_item_name = goal_position +goal_velocity_item_name = goal_velocity +goal_current_item_name = goal_torque +position_d_gain_item_name = +position_i_gain_item_name = +position_p_gain_item_name = position_p_gain +velocity_d_gain_item_name = +velocity_i_gain_item_name = velocity_i_gain +velocity_p_gain_item_name = velocity_p_gain + +[control table] +# addr | item name | length | access | memory | min value | max value | signed + 0 | model_number | 2 | R | EEPROM | 0 | 65535 | N + 6 | version_of_firmware | 1 | R | EEPROM | 0 | 254 | N + 7 | ID | 1 | RW | EEPROM | 0 | 252 | N + 8 | baudrate | 1 | RW | EEPROM | 0 | 8 | N + 9 | return_delay_time | 1 | RW | EEPROM | 0 | 254 | N + 11 | operating_mode | 1 | RW | EEPROM | 0 | 4 | N + 13 | homing_offset | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 17 | moving_threshold | 4 | RW | EEPROM | 0 | 2147483647 | N + 21 | max_temperature_limit | 1 | RW | EEPROM | 0 | 100 | N + 22 | max_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 24 | min_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 26 | acceleration_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 30 | torque_limit | 2 | RW | EEPROM | 0 | 32767 | N + 32 | velocity_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 36 | max_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 40 | min_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 44 | external_port_mod_1 | 1 | RW | EEPROM | 0 | 3 | N + 45 | external_port_mod_2 | 1 | RW | EEPROM | 0 | 3 | N + 46 | external_port_mod_3 | 1 | RW | EEPROM | 0 | 3 | N + 47 | external_port_mod_4 | 1 | RW | EEPROM | 0 | 3 | N + 48 | shutdown | 1 | RW | EEPROM | 0 | 255 | N + 49 | indirect_address_1 | 2 | RW | EEPROM | 0 | 65535 | N + 562 | torque_enable | 1 | RW | RAM | 0 | 1 | N + 563 | LED_RED | 1 | RW | RAM | 0 | 255 | N + 564 | LED_GREEN | 1 | RW | RAM | 0 | 255 | N + 565 | LED_BLUE | 1 | RW | RAM | 0 | 255 | N + 586 | velocity_i_gain | 2 | RW | RAM | 0 | 2047 | N + 588 | velocity_p_gain | 2 | RW | RAM | 0 | 2047 | N + 594 | position_p_gain | 2 | RW | RAM | 0 | 2047 | N + 596 | goal_position | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 600 | goal_velocity | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 604 | goal_torque | 2 | RW | RAM | -32768 | 32767 | Y + 606 | goal_acceleration | 4 | RW | RAM | 0 | 2147483647 | N + 610 | is_moving | 1 | R | RAM | 0 | 1 | N + 611 | present_position | 4 | R | RAM | -2147483648 | 2147483647 | Y + 615 | present_velocity | 4 | R | RAM | -2147483648 | 2147483647 | Y + 621 | present_current | 2 | R | RAM | -32768 | 32767 | Y + 623 | present_voltage | 2 | R | RAM | 0 | 500 | N + 625 | present_temperature | 1 | R | RAM | 0 | 200 | N + 626 | external_port_data_1 | 2 | RW | RAM | 0 | 4095 | N + 628 | external_port_data_2 | 2 | RW | RAM | 0 | 4095 | N + 630 | external_port_data_3 | 2 | RW | RAM | 0 | 4095 | N + 632 | external_port_data_4 | 2 | RW | RAM | 0 | 4095 | N + 634 | indirect_data_1 | 1 | RW | RAM | 0 | 255 | N + 890 | registerd_instruction | 1 | R | RAM | 0 | 1 | N + 891 | status_return_level | 1 | RW | RAM | 0 | 2 | N + 892 | hardware_error_status | 2 | R | RAM | 0 | 31 | N diff --git a/humanoid_robot_intelligence_control_system_device/devices/dynamixel/H54P-100-S500-R.device b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/H54P-100-S500-R.device new file mode 100644 index 0000000..e9661e0 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/H54P-100-S500-R.device @@ -0,0 +1,92 @@ +[device info] +model_name = H54P-100-S500-R +device_type = dynamixel + +[type info] +torque_to_current_value_ratio = 155.658486 +velocity_to_value_ratio = 954.93 +value_of_0_radian_position = 0 +value_of_min_radian_position = -501923 +value_of_max_radian_position = 501923 +min_radian = -3.14159265 +max_radian = 3.14159265 + +torque_enable_item_name = torque_enable +present_position_item_name = present_position +present_velocity_item_name = present_velocity +present_current_item_name = present_current +goal_position_item_name = goal_position +goal_velocity_item_name = goal_velocity +goal_current_item_name = goal_current +position_d_gain_item_name = position_d_gain +position_i_gain_item_name = position_i_gain +position_p_gain_item_name = position_p_gain +velocity_d_gain_item_name = +velocity_i_gain_item_name = velocity_i_gain +velocity_p_gain_item_name = velocity_p_gain + +[control table] +# addr | item name | length | access | memory | min value | max value | signed + 0 | model_number | 2 | R | EEPROM | 0 | 65535 | N + 6 | version_of_firmware | 1 | R | EEPROM | 0 | 254 | N + 7 | ID | 1 | RW | EEPROM | 0 | 252 | N + 8 | baudrate | 1 | RW | EEPROM | 0 | 8 | N + 9 | return_delay_time | 1 | RW | EEPROM | 0 | 254 | N + 10 | drive_mode | 1 | RW | EEPROM | 0 | 3 | N + 11 | operating_mode | 1 | RW | EEPROM | 0 | 4 | N + 12 | secondary_id | 1 | RW | EEPROM | 0 | 255 | N + 13 | protocol_version | 1 | RW | EEPROM | 1 | 2 | N + 20 | homing_offset | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 24 | moving_threshold | 4 | RW | EEPROM | 0 | 2147483647 | N + 31 | max_temperature_limit | 1 | RW | EEPROM | 0 | 100 | N + 32 | max_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 34 | min_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 36 | pwm_limit | 2 | RW | EEPROM | 0 | 885 | N + 38 | current_limit | 2 | RW | EEPROM | 0 | 32767 | N + 40 | acceleration_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 44 | velocity_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 48 | max_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 52 | min_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 56 | external_port_mod_1 | 1 | RW | EEPROM | 0 | 3 | N + 57 | external_port_mod_2 | 1 | RW | EEPROM | 0 | 3 | N + 58 | external_port_mod_3 | 1 | RW | EEPROM | 0 | 3 | N + 59 | external_port_mod_4 | 1 | RW | EEPROM | 0 | 3 | N + 63 | shutdown | 1 | RW | EEPROM | 0 | 255 | N + 168 | indirect_address_1 | 2 | RW | EEPROM | 0 | 65535 | N + 512 | torque_enable | 1 | RW | RAM | 0 | 1 | N + 513 | LED_RED | 1 | RW | RAM | 0 | 255 | N + 514 | LED_GREEN | 1 | RW | RAM | 0 | 255 | N + 515 | LED_BLUE | 1 | RW | RAM | 0 | 255 | N + 516 | status_return_level | 1 | RW | RAM | 0 | 2 | N + 517 | registerd_instruction | 1 | R | RAM | 0 | 1 | N + 518 | hardware_error_status | 1 | R | RAM | 0 | 31 | N + 524 | velocity_i_gain | 2 | RW | RAM | 0 | 2047 | N + 526 | velocity_p_gain | 2 | RW | RAM | 0 | 2047 | N + 528 | position_d_gain | 2 | RW | RAM | 0 | 2047 | N + 530 | position_i_gain | 2 | RW | RAM | 0 | 2047 | N + 532 | position_p_gain | 2 | RW | RAM | 0 | 2047 | N + 536 | feedforward_2nd_gain | 2 | RW | RAM | 0 | 32767 | N + 538 | feedforward_1st_gain | 2 | RW | RAM | 0 | 32767 | N + 546 | bus_watchdog | 1 | RW | RAM | -1 | 127 | Y + 548 | goal_pwm | 2 | RW | RAM | -2100 | 2100 | Y + 550 | goal_current | 2 | RW | RAM | -32768 | 32767 | Y + 552 | goal_velocity | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 556 | profile_acceleration | 4 | RW | RAM | 0 | 32767 | N + 560 | profile_velocity | 4 | RW | RAM | 0 | 1023 | N + 564 | goal_position | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 568 | realtime_tick | 2 | R | RAM | 0 | 32767 | N + 570 | moving | 1 | R | RAM | 0 | 1 | N + 571 | moving_status | 1 | R | RAM | 0 | 255 | N + 572 | present_pwm | 2 | R | RAM | -2100 | 2100 | Y + 574 | present_current | 2 | R | RAM | -32768 | 32767 | Y + 576 | present_velocity | 4 | R | RAM | -2147483648 | 2147483647 | Y + 580 | present_position | 4 | R | RAM | -2147483648 | 2147483647 | Y + 584 | velocity_trajectory | 4 | R | RAM | 0 | 1023 | N + 588 | position_trajectory | 4 | R | RAM | 0 | 4095 | N + 592 | present_voltage | 2 | R | RAM | 0 | 500 | N + 594 | present_temperature | 1 | R | RAM | 0 | 200 | N + 600 | external_port_data_1 | 2 | RW | RAM | 0 | 4095 | N + 602 | external_port_data_2 | 2 | RW | RAM | 0 | 4095 | N + 604 | external_port_data_3 | 2 | RW | RAM | 0 | 4095 | N + 606 | external_port_data_4 | 2 | RW | RAM | 0 | 4095 | N + 634 | indirect_data_1 | 1 | RW | RAM | 0 | 255 | N diff --git a/humanoid_robot_intelligence_control_system_device/devices/dynamixel/H54P-200-B500-R.device b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/H54P-200-B500-R.device new file mode 100644 index 0000000..97f44c5 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/H54P-200-B500-R.device @@ -0,0 +1,92 @@ +[device info] +model_name = H54P-200-B500-R +device_type = dynamixel + +[type info] +torque_to_current_value_ratio = 146.502114 +velocity_to_value_ratio = 954.93 +value_of_0_radian_position = 0 +value_of_min_radian_position = -501923 +value_of_max_radian_position = 501923 +min_radian = -3.14159265 +max_radian = 3.14159265 + +torque_enable_item_name = torque_enable +present_position_item_name = present_position +present_velocity_item_name = present_velocity +present_current_item_name = present_current +goal_position_item_name = goal_position +goal_velocity_item_name = goal_velocity +goal_current_item_name = goal_current +position_d_gain_item_name = position_d_gain +position_i_gain_item_name = position_i_gain +position_p_gain_item_name = position_p_gain +velocity_d_gain_item_name = +velocity_i_gain_item_name = velocity_i_gain +velocity_p_gain_item_name = velocity_p_gain + +[control table] +# addr | item name | length | access | memory | min value | max value | signed + 0 | model_number | 2 | R | EEPROM | 0 | 65535 | N + 6 | version_of_firmware | 1 | R | EEPROM | 0 | 254 | N + 7 | ID | 1 | RW | EEPROM | 0 | 252 | N + 8 | baudrate | 1 | RW | EEPROM | 0 | 8 | N + 9 | return_delay_time | 1 | RW | EEPROM | 0 | 254 | N + 10 | drive_mode | 1 | RW | EEPROM | 0 | 3 | N + 11 | operating_mode | 1 | RW | EEPROM | 0 | 4 | N + 12 | secondary_id | 1 | RW | EEPROM | 0 | 255 | N + 13 | protocol_version | 1 | RW | EEPROM | 1 | 2 | N + 20 | homing_offset | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 24 | moving_threshold | 4 | RW | EEPROM | 0 | 2147483647 | N + 31 | max_temperature_limit | 1 | RW | EEPROM | 0 | 100 | N + 32 | max_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 34 | min_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 36 | pwm_limit | 2 | RW | EEPROM | 0 | 885 | N + 38 | current_limit | 2 | RW | EEPROM | 0 | 32767 | N + 40 | acceleration_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 44 | velocity_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 48 | max_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 52 | min_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 56 | external_port_mod_1 | 1 | RW | EEPROM | 0 | 3 | N + 57 | external_port_mod_2 | 1 | RW | EEPROM | 0 | 3 | N + 58 | external_port_mod_3 | 1 | RW | EEPROM | 0 | 3 | N + 59 | external_port_mod_4 | 1 | RW | EEPROM | 0 | 3 | N + 63 | shutdown | 1 | RW | EEPROM | 0 | 255 | N + 168 | indirect_address_1 | 2 | RW | EEPROM | 0 | 65535 | N + 512 | torque_enable | 1 | RW | RAM | 0 | 1 | N + 513 | LED_RED | 1 | RW | RAM | 0 | 255 | N + 514 | LED_GREEN | 1 | RW | RAM | 0 | 255 | N + 515 | LED_BLUE | 1 | RW | RAM | 0 | 255 | N + 516 | status_return_level | 1 | RW | RAM | 0 | 2 | N + 517 | registerd_instruction | 1 | R | RAM | 0 | 1 | N + 518 | hardware_error_status | 1 | R | RAM | 0 | 31 | N + 524 | velocity_i_gain | 2 | RW | RAM | 0 | 2047 | N + 526 | velocity_p_gain | 2 | RW | RAM | 0 | 2047 | N + 528 | position_d_gain | 2 | RW | RAM | 0 | 2047 | N + 530 | position_i_gain | 2 | RW | RAM | 0 | 2047 | N + 532 | position_p_gain | 2 | RW | RAM | 0 | 2047 | N + 536 | feedforward_2nd_gain | 2 | RW | RAM | 0 | 32767 | N + 538 | feedforward_1st_gain | 2 | RW | RAM | 0 | 32767 | N + 546 | bus_watchdog | 1 | RW | RAM | -1 | 127 | Y + 548 | goal_pwm | 2 | RW | RAM | -2100 | 2100 | Y + 550 | goal_current | 2 | RW | RAM | -32768 | 32767 | Y + 552 | goal_velocity | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 556 | profile_acceleration | 4 | RW | RAM | 0 | 32767 | N + 560 | profile_velocity | 4 | RW | RAM | 0 | 1023 | N + 564 | goal_position | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 568 | realtime_tick | 2 | R | RAM | 0 | 32767 | N + 570 | moving | 1 | R | RAM | 0 | 1 | N + 571 | moving_status | 1 | R | RAM | 0 | 255 | N + 572 | present_pwm | 2 | R | RAM | -2100 | 2100 | Y + 574 | present_current | 2 | R | RAM | -32768 | 32767 | Y + 576 | present_velocity | 4 | R | RAM | -2147483648 | 2147483647 | Y + 580 | present_position | 4 | R | RAM | -2147483648 | 2147483647 | Y + 584 | velocity_trajectory | 4 | R | RAM | 0 | 1023 | N + 588 | position_trajectory | 4 | R | RAM | 0 | 4095 | N + 592 | present_voltage | 2 | R | RAM | 0 | 500 | N + 594 | present_temperature | 1 | R | RAM | 0 | 200 | N + 600 | external_port_data_1 | 2 | RW | RAM | 0 | 4095 | N + 602 | external_port_data_2 | 2 | RW | RAM | 0 | 4095 | N + 604 | external_port_data_3 | 2 | RW | RAM | 0 | 4095 | N + 606 | external_port_data_4 | 2 | RW | RAM | 0 | 4095 | N + 634 | indirect_data_1 | 1 | RW | RAM | 0 | 255 | N diff --git a/humanoid_robot_intelligence_control_system_device/devices/dynamixel/H54P-200-S500-R.device b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/H54P-200-S500-R.device new file mode 100644 index 0000000..c58460e --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/H54P-200-S500-R.device @@ -0,0 +1,92 @@ +[device info] +model_name = H54P-200-S500-R +device_type = dynamixel + +[type info] +torque_to_current_value_ratio = 146.502114 +velocity_to_value_ratio = 954.93 +value_of_0_radian_position = 0 +value_of_min_radian_position = -501923 +value_of_max_radian_position = 501923 +min_radian = -3.14159265 +max_radian = 3.14159265 + +torque_enable_item_name = torque_enable +present_position_item_name = present_position +present_velocity_item_name = present_velocity +present_current_item_name = present_current +goal_position_item_name = goal_position +goal_velocity_item_name = goal_velocity +goal_current_item_name = goal_current +position_d_gain_item_name = position_d_gain +position_i_gain_item_name = position_i_gain +position_p_gain_item_name = position_p_gain +velocity_d_gain_item_name = +velocity_i_gain_item_name = velocity_i_gain +velocity_p_gain_item_name = velocity_p_gain + +[control table] +# addr | item name | length | access | memory | min value | max value | signed + 0 | model_number | 2 | R | EEPROM | 0 | 65535 | N + 6 | version_of_firmware | 1 | R | EEPROM | 0 | 254 | N + 7 | ID | 1 | RW | EEPROM | 0 | 252 | N + 8 | baudrate | 1 | RW | EEPROM | 0 | 8 | N + 9 | return_delay_time | 1 | RW | EEPROM | 0 | 254 | N + 10 | drive_mode | 1 | RW | EEPROM | 0 | 3 | N + 11 | operating_mode | 1 | RW | EEPROM | 0 | 4 | N + 12 | secondary_id | 1 | RW | EEPROM | 0 | 255 | N + 13 | protocol_version | 1 | RW | EEPROM | 1 | 2 | N + 20 | homing_offset | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 24 | moving_threshold | 4 | RW | EEPROM | 0 | 2147483647 | N + 31 | max_temperature_limit | 1 | RW | EEPROM | 0 | 100 | N + 32 | max_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 34 | min_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 36 | pwm_limit | 2 | RW | EEPROM | 0 | 885 | N + 38 | current_limit | 2 | RW | EEPROM | 0 | 32767 | N + 40 | acceleration_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 44 | velocity_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 48 | max_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 52 | min_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 56 | external_port_mod_1 | 1 | RW | EEPROM | 0 | 3 | N + 57 | external_port_mod_2 | 1 | RW | EEPROM | 0 | 3 | N + 58 | external_port_mod_3 | 1 | RW | EEPROM | 0 | 3 | N + 59 | external_port_mod_4 | 1 | RW | EEPROM | 0 | 3 | N + 63 | shutdown | 1 | RW | EEPROM | 0 | 255 | N + 168 | indirect_address_1 | 2 | RW | EEPROM | 0 | 65535 | N + 512 | torque_enable | 1 | RW | RAM | 0 | 1 | N + 513 | LED_RED | 1 | RW | RAM | 0 | 255 | N + 514 | LED_GREEN | 1 | RW | RAM | 0 | 255 | N + 515 | LED_BLUE | 1 | RW | RAM | 0 | 255 | N + 516 | status_return_level | 1 | RW | RAM | 0 | 2 | N + 517 | registerd_instruction | 1 | R | RAM | 0 | 1 | N + 518 | hardware_error_status | 1 | R | RAM | 0 | 31 | N + 524 | velocity_i_gain | 2 | RW | RAM | 0 | 2047 | N + 526 | velocity_p_gain | 2 | RW | RAM | 0 | 2047 | N + 528 | position_d_gain | 2 | RW | RAM | 0 | 2047 | N + 530 | position_i_gain | 2 | RW | RAM | 0 | 2047 | N + 532 | position_p_gain | 2 | RW | RAM | 0 | 2047 | N + 536 | feedforward_2nd_gain | 2 | RW | RAM | 0 | 32767 | N + 538 | feedforward_1st_gain | 2 | RW | RAM | 0 | 32767 | N + 546 | bus_watchdog | 1 | RW | RAM | -1 | 127 | Y + 548 | goal_pwm | 2 | RW | RAM | -2100 | 2100 | Y + 550 | goal_current | 2 | RW | RAM | -32768 | 32767 | Y + 552 | goal_velocity | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 556 | profile_acceleration | 4 | RW | RAM | 0 | 32767 | N + 560 | profile_velocity | 4 | RW | RAM | 0 | 1023 | N + 564 | goal_position | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 568 | realtime_tick | 2 | R | RAM | 0 | 32767 | N + 570 | moving | 1 | R | RAM | 0 | 1 | N + 571 | moving_status | 1 | R | RAM | 0 | 255 | N + 572 | present_pwm | 2 | R | RAM | -2100 | 2100 | Y + 574 | present_current | 2 | R | RAM | -32768 | 32767 | Y + 576 | present_velocity | 4 | R | RAM | -2147483648 | 2147483647 | Y + 580 | present_position | 4 | R | RAM | -2147483648 | 2147483647 | Y + 584 | velocity_trajectory | 4 | R | RAM | 0 | 1023 | N + 588 | position_trajectory | 4 | R | RAM | 0 | 4095 | N + 592 | present_voltage | 2 | R | RAM | 0 | 500 | N + 594 | present_temperature | 1 | R | RAM | 0 | 200 | N + 600 | external_port_data_1 | 2 | RW | RAM | 0 | 4095 | N + 602 | external_port_data_2 | 2 | RW | RAM | 0 | 4095 | N + 604 | external_port_data_3 | 2 | RW | RAM | 0 | 4095 | N + 606 | external_port_data_4 | 2 | RW | RAM | 0 | 4095 | N + 634 | indirect_data_1 | 1 | RW | RAM | 0 | 255 | N diff --git a/humanoid_robot_intelligence_control_system_device/devices/dynamixel/L42-10-S300-R.device b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/L42-10-S300-R.device new file mode 100755 index 0000000..8d861f1 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/L42-10-S300-R.device @@ -0,0 +1,73 @@ +[device info] +model_name = L42-10-S300-R +device_type = dynamixel + +[type info] +value_of_0_radian_position = 0 +value_of_min_radian_position = -2047 +value_of_max_radian_position = 2048 +min_radian = -3.14159265 +max_radian = 3.14159265 + +torque_enable_item_name = torque_enable +present_position_item_name = present_position +present_velocity_item_name = present_velocity +present_current_item_name = present_current +goal_position_item_name = goal_position +goal_velocity_item_name = goal_velocity +goal_current_item_name = goal_torque +position_d_gain_item_name = +position_i_gain_item_name = +position_p_gain_item_name = position_p_gain +velocity_d_gain_item_name = +velocity_i_gain_item_name = velocity_i_gain +velocity_p_gain_item_name = velocity_p_gain + +[control table] +# addr | item name | length | access | memory | min value | max value | signed + 0 | model_number | 2 | R | EEPROM | 0 | 65535 | N + 6 | version_of_firmware | 1 | R | EEPROM | 0 | 254 | N + 7 | ID | 1 | RW | EEPROM | 0 | 252 | N + 8 | baudrate | 1 | RW | EEPROM | 0 | 8 | N + 9 | return_delay_time | 1 | RW | EEPROM | 0 | 254 | N + 11 | operating_mode | 1 | RW | EEPROM | 0 | 4 | N + 17 | moving_threshold | 4 | RW | EEPROM | 0 | 2147483647 | N + 21 | max_temperature_limit | 1 | RW | EEPROM | 0 | 100 | N + 22 | max_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 24 | min_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 26 | acceleration_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 30 | torque_limit | 2 | RW | EEPROM | 0 | 32767 | N + 32 | velocity_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 36 | max_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 40 | min_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 44 | external_port_mod_1 | 1 | RW | EEPROM | 0 | 3 | N + 45 | external_port_mod_2 | 1 | RW | EEPROM | 0 | 3 | N + 46 | external_port_mod_3 | 1 | RW | EEPROM | 0 | 3 | N + 47 | external_port_mod_4 | 1 | RW | EEPROM | 0 | 3 | N + 48 | shutdown | 1 | RW | EEPROM | 0 | 255 | N + 49 | indirect_address_1 | 2 | RW | EEPROM | 0 | 65535 | N + 562 | torque_enable | 1 | RW | RAM | 0 | 1 | N + 563 | LED_RED | 1 | RW | RAM | 0 | 255 | N + 564 | LED_GREEN | 1 | RW | RAM | 0 | 255 | N + 565 | LED_BLUE | 1 | RW | RAM | 0 | 255 | N + 586 | velocity_i_gain | 2 | RW | RAM | 0 | 2047 | N + 588 | velocity_p_gain | 2 | RW | RAM | 0 | 2047 | N + 594 | position_p_gain | 2 | RW | RAM | 0 | 2047 | N + 596 | goal_position | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 600 | goal_velocity | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 604 | goal_torque | 2 | RW | RAM | -32768 | 32767 | Y + 606 | goal_acceleration | 4 | RW | RAM | 0 | 2147483647 | N + 610 | is_moving | 1 | R | RAM | 0 | 1 | N + 611 | present_position | 4 | R | RAM | -2147483648 | 2147483647 | Y + 615 | present_velocity | 4 | R | RAM | -2147483648 | 2147483647 | Y + 621 | present_current | 2 | R | RAM | -32768 | 32767 | Y + 623 | present_voltage | 2 | R | RAM | 0 | 500 | N + 625 | present_temperature | 1 | R | RAM | 0 | 200 | N + 626 | external_port_data_1 | 2 | RW | RAM | 0 | 4095 | N + 628 | external_port_data_2 | 2 | RW | RAM | 0 | 4095 | N + 630 | external_port_data_3 | 2 | RW | RAM | 0 | 4095 | N + 632 | external_port_data_4 | 2 | RW | RAM | 0 | 4095 | N + 634 | indirect_data_1 | 1 | RW | RAM | 0 | 255 | N + 890 | registerd_instruction | 1 | R | RAM | 0 | 1 | N + 891 | status_return_level | 1 | RW | RAM | 0 | 2 | N + 892 | hardware_error_status | 2 | R | RAM | 0 | 31 | N diff --git a/humanoid_robot_intelligence_control_system_device/devices/dynamixel/L54-30-S400-R.device b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/L54-30-S400-R.device new file mode 100755 index 0000000..71fa09d --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/L54-30-S400-R.device @@ -0,0 +1,74 @@ +[device info] +model_name = L54-30-S400-R +device_type = dynamixel + +[type info] +value_of_0_radian_position = 0 +value_of_min_radian_position = -144198 +value_of_max_radian_position = 144198 +min_radian = -3.14159265 +max_radian = 3.14159265 + +torque_enable_item_name = torque_enable +present_position_item_name = present_position +present_velocity_item_name = present_velocity +present_current_item_name = present_current +goal_position_item_name = goal_position +goal_velocity_item_name = goal_velocity +goal_current_item_name = goal_torque +position_d_gain_item_name = +position_i_gain_item_name = +position_p_gain_item_name = position_p_gain +velocity_d_gain_item_name = +velocity_i_gain_item_name = velocity_i_gain +velocity_p_gain_item_name = velocity_p_gain + +[control table] +# addr | item name | length | access | memory | min value | max value | signed + 0 | model_number | 2 | R | EEPROM | 0 | 65535 | N + 6 | version_of_firmware | 1 | R | EEPROM | 0 | 254 | N + 7 | ID | 1 | RW | EEPROM | 0 | 252 | N + 8 | baudrate | 1 | RW | EEPROM | 0 | 8 | N + 9 | return_delay_time | 1 | RW | EEPROM | 0 | 254 | N + 11 | operating_mode | 1 | RW | EEPROM | 0 | 4 | N + 13 | homing_offset | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 17 | moving_threshold | 4 | RW | EEPROM | 0 | 2147483647 | N + 21 | max_temperature_limit | 1 | RW | EEPROM | 0 | 100 | N + 22 | max_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 24 | min_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 26 | acceleration_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 30 | torque_limit | 2 | RW | EEPROM | 0 | 32767 | N + 32 | velocity_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 36 | max_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 40 | min_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 44 | external_port_mod_1 | 1 | RW | EEPROM | 0 | 3 | N + 45 | external_port_mod_2 | 1 | RW | EEPROM | 0 | 3 | N + 46 | external_port_mod_3 | 1 | RW | EEPROM | 0 | 3 | N + 47 | external_port_mod_4 | 1 | RW | EEPROM | 0 | 3 | N + 48 | shutdown | 1 | RW | EEPROM | 0 | 255 | N + 49 | indirect_address_1 | 2 | RW | EEPROM | 0 | 65535 | N + 562 | torque_enable | 1 | RW | RAM | 0 | 1 | N + 563 | LED_RED | 1 | RW | RAM | 0 | 255 | N + 564 | LED_GREEN | 1 | RW | RAM | 0 | 255 | N + 565 | LED_BLUE | 1 | RW | RAM | 0 | 255 | N + 586 | velocity_i_gain | 2 | RW | RAM | 0 | 2047 | N + 588 | velocity_p_gain | 2 | RW | RAM | 0 | 2047 | N + 594 | position_p_gain | 2 | RW | RAM | 0 | 2047 | N + 596 | goal_position | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 600 | goal_velocity | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 604 | goal_torque | 2 | RW | RAM | -32768 | 32767 | Y + 606 | goal_acceleration | 4 | RW | RAM | 0 | 2147483647 | N + 610 | is_moving | 1 | R | RAM | 0 | 1 | N + 611 | present_position | 4 | R | RAM | -2147483648 | 2147483647 | Y + 615 | present_velocity | 4 | R | RAM | -2147483648 | 2147483647 | Y + 621 | present_current | 2 | R | RAM | -32768 | 32767 | Y + 623 | present_voltage | 2 | R | RAM | 0 | 500 | N + 625 | present_temperature | 1 | R | RAM | 0 | 200 | N + 626 | external_port_data_1 | 2 | RW | RAM | 0 | 4095 | N + 628 | external_port_data_2 | 2 | RW | RAM | 0 | 4095 | N + 630 | external_port_data_3 | 2 | RW | RAM | 0 | 4095 | N + 632 | external_port_data_4 | 2 | RW | RAM | 0 | 4095 | N + 634 | indirect_data_1 | 1 | RW | RAM | 0 | 255 | N + 890 | registerd_instruction | 1 | R | RAM | 0 | 1 | N + 891 | status_return_level | 1 | RW | RAM | 0 | 2 | N + 892 | hardware_error_status | 2 | R | RAM | 0 | 31 | N diff --git a/humanoid_robot_intelligence_control_system_device/devices/dynamixel/L54-30-S500-R.device b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/L54-30-S500-R.device new file mode 100755 index 0000000..5a8add7 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/L54-30-S500-R.device @@ -0,0 +1,74 @@ +[device info] +model_name = L54-30-S500-R +device_type = dynamixel + +[type info] +value_of_0_radian_position = 0 +value_of_min_radian_position = -180684 +value_of_max_radian_position = 180684 +min_radian = -3.14159265 +max_radian = 3.14159265 + +torque_enable_item_name = torque_enable +present_position_item_name = present_position +present_velocity_item_name = present_velocity +present_current_item_name = present_current +goal_position_item_name = goal_position +goal_velocity_item_name = goal_velocity +goal_current_item_name = goal_torque +position_d_gain_item_name = +position_i_gain_item_name = +position_p_gain_item_name = position_p_gain +velocity_d_gain_item_name = +velocity_i_gain_item_name = velocity_i_gain +velocity_p_gain_item_name = velocity_p_gain + +[control table] +# addr | item name | length | access | memory | min value | max value | signed + 0 | model_number | 2 | R | EEPROM | 0 | 65535 | N + 6 | version_of_firmware | 1 | R | EEPROM | 0 | 254 | N + 7 | ID | 1 | RW | EEPROM | 0 | 252 | N + 8 | baudrate | 1 | RW | EEPROM | 0 | 8 | N + 9 | return_delay_time | 1 | RW | EEPROM | 0 | 254 | N + 11 | operating_mode | 1 | RW | EEPROM | 0 | 4 | N + 13 | homing_offset | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 17 | moving_threshold | 4 | RW | EEPROM | 0 | 2147483647 | N + 21 | max_temperature_limit | 1 | RW | EEPROM | 0 | 100 | N + 22 | max_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 24 | min_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 26 | acceleration_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 30 | torque_limit | 2 | RW | EEPROM | 0 | 32767 | N + 32 | velocity_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 36 | max_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 40 | min_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 44 | external_port_mod_1 | 1 | RW | EEPROM | 0 | 3 | N + 45 | external_port_mod_2 | 1 | RW | EEPROM | 0 | 3 | N + 46 | external_port_mod_3 | 1 | RW | EEPROM | 0 | 3 | N + 47 | external_port_mod_4 | 1 | RW | EEPROM | 0 | 3 | N + 48 | shutdown | 1 | RW | EEPROM | 0 | 255 | N + 49 | indirect_address_1 | 2 | RW | EEPROM | 0 | 65535 | N + 562 | torque_enable | 1 | RW | RAM | 0 | 1 | N + 563 | LED_RED | 1 | RW | RAM | 0 | 255 | N + 564 | LED_GREEN | 1 | RW | RAM | 0 | 255 | N + 565 | LED_BLUE | 1 | RW | RAM | 0 | 255 | N + 586 | velocity_i_gain | 2 | RW | RAM | 0 | 2047 | N + 588 | velocity_p_gain | 2 | RW | RAM | 0 | 2047 | N + 594 | position_p_gain | 2 | RW | RAM | 0 | 2047 | N + 596 | goal_position | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 600 | goal_velocity | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 604 | goal_torque | 2 | RW | RAM | -32768 | 32767 | Y + 606 | goal_acceleration | 4 | RW | RAM | 0 | 2147483647 | N + 610 | is_moving | 1 | R | RAM | 0 | 1 | N + 611 | present_position | 4 | R | RAM | -2147483648 | 2147483647 | Y + 615 | present_velocity | 4 | R | RAM | -2147483648 | 2147483647 | Y + 621 | present_current | 2 | R | RAM | -32768 | 32767 | Y + 623 | present_voltage | 2 | R | RAM | 0 | 500 | N + 625 | present_temperature | 1 | R | RAM | 0 | 200 | N + 626 | external_port_data_1 | 2 | RW | RAM | 0 | 4095 | N + 628 | external_port_data_2 | 2 | RW | RAM | 0 | 4095 | N + 630 | external_port_data_3 | 2 | RW | RAM | 0 | 4095 | N + 632 | external_port_data_4 | 2 | RW | RAM | 0 | 4095 | N + 634 | indirect_data_1 | 1 | RW | RAM | 0 | 255 | N + 890 | registerd_instruction | 1 | R | RAM | 0 | 1 | N + 891 | status_return_level | 1 | RW | RAM | 0 | 2 | N + 892 | hardware_error_status | 2 | R | RAM | 0 | 31 | N diff --git a/humanoid_robot_intelligence_control_system_device/devices/dynamixel/L54-50-S290-R.device b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/L54-50-S290-R.device new file mode 100755 index 0000000..7af9c22 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/L54-50-S290-R.device @@ -0,0 +1,74 @@ +[device info] +model_name = L54-50-S290-R +device_type = dynamixel + +[type info] +value_of_0_radian_position = 0 +value_of_min_radian_position = -103860 +value_of_max_radian_position = 103860 +min_radian = -3.14159265 +max_radian = 3.14159265 + +torque_enable_item_name = torque_enable +present_position_item_name = present_position +present_velocity_item_name = present_velocity +present_current_item_name = present_current +goal_position_item_name = goal_position +goal_velocity_item_name = goal_velocity +goal_current_item_name = goal_torque +position_d_gain_item_name = +position_i_gain_item_name = +position_p_gain_item_name = position_p_gain +velocity_d_gain_item_name = +velocity_i_gain_item_name = velocity_i_gain +velocity_p_gain_item_name = velocity_p_gain + +[control table] +# addr | item name | length | access | memory | min value | max value | signed + 0 | model_number | 2 | R | EEPROM | 0 | 65535 | N + 6 | version_of_firmware | 1 | R | EEPROM | 0 | 254 | N + 7 | ID | 1 | RW | EEPROM | 0 | 252 | N + 8 | baudrate | 1 | RW | EEPROM | 0 | 8 | N + 9 | return_delay_time | 1 | RW | EEPROM | 0 | 254 | N + 11 | operating_mode | 1 | RW | EEPROM | 0 | 4 | N + 13 | homing_offset | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 17 | moving_threshold | 4 | RW | EEPROM | 0 | 2147483647 | N + 21 | max_temperature_limit | 1 | RW | EEPROM | 0 | 100 | N + 22 | max_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 24 | min_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 26 | acceleration_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 30 | torque_limit | 2 | RW | EEPROM | 0 | 32767 | N + 32 | velocity_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 36 | max_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 40 | min_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 44 | external_port_mod_1 | 1 | RW | EEPROM | 0 | 3 | N + 45 | external_port_mod_2 | 1 | RW | EEPROM | 0 | 3 | N + 46 | external_port_mod_3 | 1 | RW | EEPROM | 0 | 3 | N + 47 | external_port_mod_4 | 1 | RW | EEPROM | 0 | 3 | N + 48 | shutdown | 1 | RW | EEPROM | 0 | 255 | N + 49 | indirect_address_1 | 2 | RW | EEPROM | 0 | 65535 | N + 562 | torque_enable | 1 | RW | RAM | 0 | 1 | N + 563 | LED_RED | 1 | RW | RAM | 0 | 255 | N + 564 | LED_GREEN | 1 | RW | RAM | 0 | 255 | N + 565 | LED_BLUE | 1 | RW | RAM | 0 | 255 | N + 586 | velocity_i_gain | 2 | RW | RAM | 0 | 2047 | N + 588 | velocity_p_gain | 2 | RW | RAM | 0 | 2047 | N + 594 | position_p_gain | 2 | RW | RAM | 0 | 2047 | N + 596 | goal_position | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 600 | goal_velocity | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 604 | goal_torque | 2 | RW | RAM | -32768 | 32767 | Y + 606 | goal_acceleration | 4 | RW | RAM | 0 | 2147483647 | N + 610 | is_moving | 1 | R | RAM | 0 | 1 | N + 611 | present_position | 4 | R | RAM | -2147483648 | 2147483647 | Y + 615 | present_velocity | 4 | R | RAM | -2147483648 | 2147483647 | Y + 621 | present_current | 2 | R | RAM | -32768 | 32767 | Y + 623 | present_voltage | 2 | R | RAM | 0 | 500 | N + 625 | present_temperature | 1 | R | RAM | 0 | 200 | N + 626 | external_port_data_1 | 2 | RW | RAM | 0 | 4095 | N + 628 | external_port_data_2 | 2 | RW | RAM | 0 | 4095 | N + 630 | external_port_data_3 | 2 | RW | RAM | 0 | 4095 | N + 632 | external_port_data_4 | 2 | RW | RAM | 0 | 4095 | N + 634 | indirect_data_1 | 1 | RW | RAM | 0 | 255 | N + 890 | registerd_instruction | 1 | R | RAM | 0 | 1 | N + 891 | status_return_level | 1 | RW | RAM | 0 | 2 | N + 892 | hardware_error_status | 2 | R | RAM | 0 | 31 | N diff --git a/humanoid_robot_intelligence_control_system_device/devices/dynamixel/L54-50-S500-R.device b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/L54-50-S500-R.device new file mode 100755 index 0000000..11d63b3 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/L54-50-S500-R.device @@ -0,0 +1,74 @@ +[device info] +model_name = L54-50-S500-R +device_type = dynamixel + +[type info] +value_of_0_radian_position = 0 +value_of_min_radian_position = -180684 +value_of_max_radian_position = 180684 +min_radian = -3.14159265 +max_radian = 3.14159265 + +torque_enable_item_name = torque_enable +present_position_item_name = present_position +present_velocity_item_name = present_velocity +present_current_item_name = present_current +goal_position_item_name = goal_position +goal_velocity_item_name = goal_velocity +goal_current_item_name = goal_torque +position_d_gain_item_name = +position_i_gain_item_name = +position_p_gain_item_name = position_p_gain +velocity_d_gain_item_name = +velocity_i_gain_item_name = velocity_i_gain +velocity_p_gain_item_name = velocity_p_gain + +[control table] +# addr | item name | length | access | memory | min value | max value | signed + 0 | model_number | 2 | R | EEPROM | 0 | 65535 | N + 6 | version_of_firmware | 1 | R | EEPROM | 0 | 254 | N + 7 | ID | 1 | RW | EEPROM | 0 | 252 | N + 8 | baudrate | 1 | RW | EEPROM | 0 | 8 | N + 9 | return_delay_time | 1 | RW | EEPROM | 0 | 254 | N + 11 | operating_mode | 1 | RW | EEPROM | 0 | 4 | N + 13 | homing_offset | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 17 | moving_threshold | 4 | RW | EEPROM | 0 | 2147483647 | N + 21 | max_temperature_limit | 1 | RW | EEPROM | 0 | 100 | N + 22 | max_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 24 | min_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 26 | acceleration_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 30 | torque_limit | 2 | RW | EEPROM | 0 | 32767 | N + 32 | velocity_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 36 | max_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 40 | min_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 44 | external_port_mod_1 | 1 | RW | EEPROM | 0 | 3 | N + 45 | external_port_mod_2 | 1 | RW | EEPROM | 0 | 3 | N + 46 | external_port_mod_3 | 1 | RW | EEPROM | 0 | 3 | N + 47 | external_port_mod_4 | 1 | RW | EEPROM | 0 | 3 | N + 48 | shutdown | 1 | RW | EEPROM | 0 | 255 | N + 49 | indirect_address_1 | 2 | RW | EEPROM | 0 | 65535 | N + 562 | torque_enable | 1 | RW | RAM | 0 | 1 | N + 563 | LED_RED | 1 | RW | RAM | 0 | 255 | N + 564 | LED_GREEN | 1 | RW | RAM | 0 | 255 | N + 565 | LED_BLUE | 1 | RW | RAM | 0 | 255 | N + 586 | velocity_i_gain | 2 | RW | RAM | 0 | 2047 | N + 588 | velocity_p_gain | 2 | RW | RAM | 0 | 2047 | N + 594 | position_p_gain | 2 | RW | RAM | 0 | 2047 | N + 596 | goal_position | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 600 | goal_velocity | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 604 | goal_torque | 2 | RW | RAM | -32768 | 32767 | Y + 606 | goal_acceleration | 4 | RW | RAM | 0 | 2147483647 | N + 610 | is_moving | 1 | R | RAM | 0 | 1 | N + 611 | present_position | 4 | R | RAM | -2147483648 | 2147483647 | Y + 615 | present_velocity | 4 | R | RAM | -2147483648 | 2147483647 | Y + 621 | present_current | 2 | R | RAM | -32768 | 32767 | Y + 623 | present_voltage | 2 | R | RAM | 0 | 500 | N + 625 | present_temperature | 1 | R | RAM | 0 | 200 | N + 626 | external_port_data_1 | 2 | RW | RAM | 0 | 4095 | N + 628 | external_port_data_2 | 2 | RW | RAM | 0 | 4095 | N + 630 | external_port_data_3 | 2 | RW | RAM | 0 | 4095 | N + 632 | external_port_data_4 | 2 | RW | RAM | 0 | 4095 | N + 634 | indirect_data_1 | 1 | RW | RAM | 0 | 255 | N + 890 | registerd_instruction | 1 | R | RAM | 0 | 1 | N + 891 | status_return_level | 1 | RW | RAM | 0 | 2 | N + 892 | hardware_error_status | 2 | R | RAM | 0 | 31 | N diff --git a/humanoid_robot_intelligence_control_system_device/devices/dynamixel/M42-10-S260-R.device b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/M42-10-S260-R.device new file mode 100755 index 0000000..ba205bb --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/M42-10-S260-R.device @@ -0,0 +1,74 @@ +[device info] +model_name = M42-10-S260-R +device_type = dynamixel + +[type info] +value_of_0_radian_position = 0 +value_of_min_radian_position = -131584 +value_of_max_radian_position = 131584 +min_radian = -3.14159265 +max_radian = 3.14159265 + +torque_enable_item_name = torque_enable +present_position_item_name = present_position +present_velocity_item_name = present_velocity +present_current_item_name = present_current +goal_position_item_name = goal_position +goal_velocity_item_name = goal_velocity +goal_current_item_name = goal_torque +position_d_gain_item_name = +position_i_gain_item_name = +position_p_gain_item_name = position_p_gain +velocity_d_gain_item_name = +velocity_i_gain_item_name = velocity_i_gain +velocity_p_gain_item_name = velocity_p_gain + +[control table] +# addr | item name | length | access | memory | min value | max value | signed + 0 | model_number | 2 | R | EEPROM | 0 | 65535 | N + 6 | version_of_firmware | 1 | R | EEPROM | 0 | 254 | N + 7 | ID | 1 | RW | EEPROM | 0 | 252 | N + 8 | baudrate | 1 | RW | EEPROM | 0 | 8 | N + 9 | return_delay_time | 1 | RW | EEPROM | 0 | 254 | N + 11 | operating_mode | 1 | RW | EEPROM | 0 | 4 | N + 13 | homing_offset | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 17 | moving_threshold | 4 | RW | EEPROM | 0 | 2147483647 | N + 21 | max_temperature_limit | 1 | RW | EEPROM | 0 | 100 | N + 22 | max_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 24 | min_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 26 | acceleration_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 30 | torque_limit | 2 | RW | EEPROM | 0 | 32767 | N + 32 | velocity_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 36 | max_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 40 | min_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 44 | external_port_mod_1 | 1 | RW | EEPROM | 0 | 3 | N + 45 | external_port_mod_2 | 1 | RW | EEPROM | 0 | 3 | N + 46 | external_port_mod_3 | 1 | RW | EEPROM | 0 | 3 | N + 47 | external_port_mod_4 | 1 | RW | EEPROM | 0 | 3 | N + 48 | shutdown | 1 | RW | EEPROM | 0 | 255 | N + 49 | indirect_address_1 | 2 | RW | EEPROM | 0 | 65535 | N + 562 | torque_enable | 1 | RW | RAM | 0 | 1 | N + 563 | LED_RED | 1 | RW | RAM | 0 | 255 | N + 564 | LED_GREEN | 1 | RW | RAM | 0 | 255 | N + 565 | LED_BLUE | 1 | RW | RAM | 0 | 255 | N + 586 | velocity_i_gain | 2 | RW | RAM | 0 | 2047 | N + 588 | velocity_p_gain | 2 | RW | RAM | 0 | 2047 | N + 594 | position_p_gain | 2 | RW | RAM | 0 | 2047 | N + 596 | goal_position | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 600 | goal_velocity | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 604 | goal_torque | 2 | RW | RAM | -32768 | 32767 | Y + 606 | goal_acceleration | 4 | RW | RAM | 0 | 2147483647 | N + 610 | is_moving | 1 | R | RAM | 0 | 1 | N + 611 | present_position | 4 | R | RAM | -2147483648 | 2147483647 | Y + 615 | present_velocity | 4 | R | RAM | -2147483648 | 2147483647 | Y + 621 | present_current | 2 | R | RAM | -32768 | 32767 | Y + 623 | present_voltage | 2 | R | RAM | 0 | 500 | N + 625 | present_temperature | 1 | R | RAM | 0 | 200 | N + 626 | external_port_data_1 | 2 | RW | RAM | 0 | 4095 | N + 628 | external_port_data_2 | 2 | RW | RAM | 0 | 4095 | N + 630 | external_port_data_3 | 2 | RW | RAM | 0 | 4095 | N + 632 | external_port_data_4 | 2 | RW | RAM | 0 | 4095 | N + 634 | indirect_data_1 | 1 | RW | RAM | 0 | 255 | N + 890 | registerd_instruction | 1 | R | RAM | 0 | 1 | N + 891 | status_return_level | 1 | RW | RAM | 0 | 2 | N + 892 | hardware_error_status | 2 | R | RAM | 0 | 31 | N diff --git a/humanoid_robot_intelligence_control_system_device/devices/dynamixel/M54-40-S250-R.device b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/M54-40-S250-R.device new file mode 100755 index 0000000..62f9990 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/M54-40-S250-R.device @@ -0,0 +1,74 @@ +[device info] +model_name = M54-40-S250-R +device_type = dynamixel + +[type info] +value_of_0_radian_position = 0 +value_of_min_radian_position = -125700 +value_of_max_radian_position = 125700 +min_radian = -3.14159265 +max_radian = 3.14159265 + +torque_enable_item_name = torque_enable +present_position_item_name = present_position +present_velocity_item_name = present_velocity +present_current_item_name = present_current +goal_position_item_name = goal_position +goal_velocity_item_name = goal_velocity +goal_current_item_name = goal_torque +position_d_gain_item_name = +position_i_gain_item_name = +position_p_gain_item_name = position_p_gain +velocity_d_gain_item_name = +velocity_i_gain_item_name = velocity_i_gain +velocity_p_gain_item_name = velocity_p_gain + +[control table] +# addr | item name | length | access | memory | min value | max value | signed + 0 | model_number | 2 | R | EEPROM | 0 | 65535 | N + 6 | version_of_firmware | 1 | R | EEPROM | 0 | 254 | N + 7 | ID | 1 | RW | EEPROM | 0 | 252 | N + 8 | baudrate | 1 | RW | EEPROM | 0 | 8 | N + 9 | return_delay_time | 1 | RW | EEPROM | 0 | 254 | N + 11 | operating_mode | 1 | RW | EEPROM | 0 | 4 | N + 13 | homing_offset | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 17 | moving_threshold | 4 | RW | EEPROM | 0 | 2147483647 | N + 21 | max_temperature_limit | 1 | RW | EEPROM | 0 | 100 | N + 22 | max_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 24 | min_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 26 | acceleration_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 30 | torque_limit | 2 | RW | EEPROM | 0 | 32767 | N + 32 | velocity_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 36 | max_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 40 | min_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 44 | external_port_mod_1 | 1 | RW | EEPROM | 0 | 3 | N + 45 | external_port_mod_2 | 1 | RW | EEPROM | 0 | 3 | N + 46 | external_port_mod_3 | 1 | RW | EEPROM | 0 | 3 | N + 47 | external_port_mod_4 | 1 | RW | EEPROM | 0 | 3 | N + 48 | shutdown | 1 | RW | EEPROM | 0 | 255 | N + 49 | indirect_address_1 | 2 | RW | EEPROM | 0 | 65535 | N + 562 | torque_enable | 1 | RW | RAM | 0 | 1 | N + 563 | LED_RED | 1 | RW | RAM | 0 | 255 | N + 564 | LED_GREEN | 1 | RW | RAM | 0 | 255 | N + 565 | LED_BLUE | 1 | RW | RAM | 0 | 255 | N + 586 | velocity_i_gain | 2 | RW | RAM | 0 | 2047 | N + 588 | velocity_p_gain | 2 | RW | RAM | 0 | 2047 | N + 594 | position_p_gain | 2 | RW | RAM | 0 | 2047 | N + 596 | goal_position | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 600 | goal_velocity | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 604 | goal_torque | 2 | RW | RAM | -32768 | 32767 | Y + 606 | goal_acceleration | 4 | RW | RAM | 0 | 2147483647 | N + 610 | is_moving | 1 | R | RAM | 0 | 1 | N + 611 | present_position | 4 | R | RAM | -2147483648 | 2147483647 | Y + 615 | present_velocity | 4 | R | RAM | -2147483648 | 2147483647 | Y + 621 | present_current | 2 | R | RAM | -32768 | 32767 | Y + 623 | present_voltage | 2 | R | RAM | 0 | 500 | N + 625 | present_temperature | 1 | R | RAM | 0 | 200 | N + 626 | external_port_data_1 | 2 | RW | RAM | 0 | 4095 | N + 628 | external_port_data_2 | 2 | RW | RAM | 0 | 4095 | N + 630 | external_port_data_3 | 2 | RW | RAM | 0 | 4095 | N + 632 | external_port_data_4 | 2 | RW | RAM | 0 | 4095 | N + 634 | indirect_data_1 | 1 | RW | RAM | 0 | 255 | N + 890 | registerd_instruction | 1 | R | RAM | 0 | 1 | N + 891 | status_return_level | 1 | RW | RAM | 0 | 2 | N + 892 | hardware_error_status | 2 | R | RAM | 0 | 31 | N diff --git a/humanoid_robot_intelligence_control_system_device/devices/dynamixel/M54-60-S250-R.device b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/M54-60-S250-R.device new file mode 100755 index 0000000..dd2efde --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/M54-60-S250-R.device @@ -0,0 +1,74 @@ +[device info] +model_name = M54-60-S250-R +device_type = dynamixel + +[type info] +value_of_0_radian_position = 0 +value_of_min_radian_position = -125700 +value_of_max_radian_position = 125700 +min_radian = -3.14159265 +max_radian = 3.14159265 + +torque_enable_item_name = torque_enable +present_position_item_name = present_position +present_velocity_item_name = present_velocity +present_current_item_name = present_current +goal_position_item_name = goal_position +goal_velocity_item_name = goal_velocity +goal_current_item_name = goal_torque +position_d_gain_item_name = +position_i_gain_item_name = +position_p_gain_item_name = position_p_gain +velocity_d_gain_item_name = +velocity_i_gain_item_name = velocity_i_gain +velocity_p_gain_item_name = velocity_p_gain + +[control table] +# addr | item name | length | access | memory | min value | max value | signed + 0 | model_number | 2 | R | EEPROM | 0 | 65535 | N + 6 | version_of_firmware | 1 | R | EEPROM | 0 | 254 | N + 7 | ID | 1 | RW | EEPROM | 0 | 252 | N + 8 | baudrate | 1 | RW | EEPROM | 0 | 8 | N + 9 | return_delay_time | 1 | RW | EEPROM | 0 | 254 | N + 11 | operating_mode | 1 | RW | EEPROM | 0 | 4 | N + 13 | homing_offset | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 17 | moving_threshold | 4 | RW | EEPROM | 0 | 2147483647 | N + 21 | max_temperature_limit | 1 | RW | EEPROM | 0 | 100 | N + 22 | max_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 24 | min_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 26 | acceleration_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 30 | torque_limit | 2 | RW | EEPROM | 0 | 32767 | N + 32 | velocity_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 36 | max_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 40 | min_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 44 | external_port_mod_1 | 1 | RW | EEPROM | 0 | 3 | N + 45 | external_port_mod_2 | 1 | RW | EEPROM | 0 | 3 | N + 46 | external_port_mod_3 | 1 | RW | EEPROM | 0 | 3 | N + 47 | external_port_mod_4 | 1 | RW | EEPROM | 0 | 3 | N + 48 | shutdown | 1 | RW | EEPROM | 0 | 255 | N + 49 | indirect_address_1 | 2 | RW | EEPROM | 0 | 65535 | N + 562 | torque_enable | 1 | RW | RAM | 0 | 1 | N + 563 | LED_RED | 1 | RW | RAM | 0 | 255 | N + 564 | LED_GREEN | 1 | RW | RAM | 0 | 255 | N + 565 | LED_BLUE | 1 | RW | RAM | 0 | 255 | N + 586 | velocity_i_gain | 2 | RW | RAM | 0 | 2047 | N + 588 | velocity_p_gain | 2 | RW | RAM | 0 | 2047 | N + 594 | position_p_gain | 2 | RW | RAM | 0 | 2047 | N + 596 | goal_position | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 600 | goal_velocity | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 604 | goal_torque | 2 | RW | RAM | -32768 | 32767 | Y + 606 | goal_acceleration | 4 | RW | RAM | 0 | 2147483647 | N + 610 | is_moving | 1 | R | RAM | 0 | 1 | N + 611 | present_position | 4 | R | RAM | -2147483648 | 2147483647 | Y + 615 | present_velocity | 4 | R | RAM | -2147483648 | 2147483647 | Y + 621 | present_current | 2 | R | RAM | -32768 | 32767 | Y + 623 | present_voltage | 2 | R | RAM | 0 | 500 | N + 625 | present_temperature | 1 | R | RAM | 0 | 200 | N + 626 | external_port_data_1 | 2 | RW | RAM | 0 | 4095 | N + 628 | external_port_data_2 | 2 | RW | RAM | 0 | 4095 | N + 630 | external_port_data_3 | 2 | RW | RAM | 0 | 4095 | N + 632 | external_port_data_4 | 2 | RW | RAM | 0 | 4095 | N + 634 | indirect_data_1 | 1 | RW | RAM | 0 | 255 | N + 890 | registerd_instruction | 1 | R | RAM | 0 | 1 | N + 891 | status_return_level | 1 | RW | RAM | 0 | 2 | N + 892 | hardware_error_status | 2 | R | RAM | 0 | 31 | N diff --git a/humanoid_robot_intelligence_control_system_device/devices/dynamixel/MX-106.device b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/MX-106.device new file mode 100755 index 0000000..a122831 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/MX-106.device @@ -0,0 +1,66 @@ +[device info] +model_name = MX-106 +device_type = dynamixel + +[type info] +value_of_0_radian_position = 2048 +value_of_min_radian_position = 0 +value_of_max_radian_position = 4095 +min_radian = -3.14159265 +max_radian = 3.14159265 + +torque_enable_item_name = torque_enable +present_position_item_name = present_position +present_velocity_item_name = present_velocity +present_current_item_name = +goal_position_item_name = goal_position +goal_velocity_item_name = goal_velocity +goal_current_item_name = +position_d_gain_item_name = position_d_gain +position_i_gain_item_name = position_i_gain +position_p_gain_item_name = position_p_gain +velocity_d_gain_item_name = +velocity_i_gain_item_name = +velocity_p_gain_item_name = + +[control table] +# addr | item name | length | access | memory | min value | max value | signed + 0 | model_number | 2 | R | EEPROM | 0 | 65535 | N + 2 | version_of_firmware | 1 | R | EEPROM | 0 | 254 | N + 3 | ID | 1 | RW | EEPROM | 0 | 252 | N + 4 | baudrate | 1 | RW | EEPROM | 0 | 252 | N + 5 | return_delay_time | 1 | RW | EEPROM | 0 | 254 | N + 6 | CW_angle_limit | 2 | RW | EEPROM | 0 | 4095 | N + 8 | CCW_angle_limit | 2 | RW | EEPROM | 0 | 4095 | N + 10 | drive_mode | 1 | RW | EEPROM | 0 | 3 | N + 11 | max_temperature_limit | 1 | RW | EEPROM | 0 | 99 | N + 12 | min_voltage_limit | 1 | RW | EEPROM | 0 | 250 | N + 13 | max_voltage_limit | 1 | RW | EEPROM | 0 | 250 | N + 14 | max_torque | 2 | RW | EEPROM | 0 | 1023 | N + 16 | status_return_level | 1 | RW | EEPROM | 0 | 2 | N + 17 | alarm_LED | 1 | RW | EEPROM | 0 | 127 | N + 18 | alarm_shutdown | 1 | RW | EEPROM | 0 | 127 | N + 20 | multi_turn_offset | 2 | RW | EEPROM | -26624 | 26624 | Y + 22 | resolution_dividor | 1 | RW | EEPROM | 1 | 255 | N + 24 | torque_enable | 1 | RW | RAM | 0 | 1 | N + 25 | LED | 1 | RW | RAM | 0 | 1 | N + 26 | position_d_gain | 1 | RW | RAM | 0 | 254 | N + 27 | position_i_gain | 1 | RW | RAM | 0 | 254 | N + 28 | position_p_gain | 1 | RW | RAM | 0 | 254 | N + 30 | goal_position | 2 | RW | RAM | -28672 | 28672 | Y + 32 | goal_velocity | 2 | RW | RAM | 0 | 1023 | N + 34 | goal_torque | 2 | RW | RAM | 0 | 1023 | N + 36 | present_position | 2 | R | RAM | -32768 | 32767 | Y + 38 | present_velocity | 2 | R | RAM | 0 | 2048 | N + 40 | present_load | 2 | R | RAM | 0 | 2048 | N + 42 | present_voltage | 1 | R | RAM | 50 | 250 | N + 43 | present_temperature | 1 | R | RAM | 0 | 99 | N + 44 | registered_instruction | 1 | R | RAM | 0 | 1 | N + 46 | is_moving | 1 | R | RAM | 0 | 1 | N + 47 | EEPROM_lock | 1 | RW | RAM | 0 | 1 | N + 48 | punch | 2 | RW | RAM | 0 | 1023 | N + 68 | current_consumption | 2 | RW | RAM | 0 | 4095 | N + 70 | torque_control_mode | 1 | RW | RAM | 0 | 1 | N + 71 | torque_control_goal | 2 | RW | RAM | 0 | 2047 | N + 73 | goal_acceleration | 1 | RW | RAM | 0 | 254 | N + diff --git a/humanoid_robot_intelligence_control_system_device/devices/dynamixel/MX-28.device b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/MX-28.device new file mode 100755 index 0000000..ae1f877 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/MX-28.device @@ -0,0 +1,62 @@ +[device info] +model_name = MX-28 +device_type = dynamixel + +[type info] +value_of_0_radian_position = 2048 +value_of_min_radian_position = 0 +value_of_max_radian_position = 4095 +min_radian = -3.14159265 +max_radian = 3.14159265 + +torque_enable_item_name = torque_enable +present_position_item_name = present_position +present_velocity_item_name = present_velocity +present_current_item_name = +goal_position_item_name = goal_position +goal_velocity_item_name = goal_velocity +goal_current_item_name = +position_d_gain_item_name = position_d_gain +position_i_gain_item_name = position_i_gain +position_p_gain_item_name = position_p_gain +velocity_d_gain_item_name = +velocity_i_gain_item_name = +velocity_p_gain_item_name = + +[control table] +# addr | item name | length | access | memory | min value | max value | signed + 0 | model_number | 2 | R | EEPROM | 0 | 65535 | N + 2 | version_of_firmware | 1 | R | EEPROM | 0 | 254 | N + 3 | ID | 1 | RW | EEPROM | 0 | 252 | N + 4 | baudrate | 1 | RW | EEPROM | 0 | 252 | N + 5 | return_delay_time | 1 | RW | EEPROM | 0 | 254 | N + 6 | CW_angle_limit | 2 | RW | EEPROM | 0 | 4095 | N + 8 | CCW_angle_limit | 2 | RW | EEPROM | 0 | 4095 | N + 10 | drive_mode | 1 | RW | EEPROM | 0 | 3 | N + 11 | max_temperature_limit | 1 | RW | EEPROM | 0 | 99 | N + 12 | min_voltage_limit | 1 | RW | EEPROM | 0 | 250 | N + 13 | max_voltage_limit | 1 | RW | EEPROM | 0 | 250 | N + 14 | max_torque | 2 | RW | EEPROM | 0 | 1023 | N + 16 | status_return_level | 1 | RW | EEPROM | 0 | 2 | N + 17 | alarm_LED | 1 | RW | EEPROM | 0 | 127 | N + 18 | alarm_shutdown | 1 | RW | EEPROM | 0 | 127 | N + 20 | multi_turn_offset | 2 | RW | EEPROM | -26624 | 26624 | Y + 22 | resolution_dividor | 1 | RW | EEPROM | 1 | 255 | N + 24 | torque_enable | 1 | RW | RAM | 0 | 1 | N + 25 | LED | 1 | RW | RAM | 0 | 1 | N + 26 | position_d_gain | 1 | RW | RAM | 0 | 254 | N + 27 | position_i_gain | 1 | RW | RAM | 0 | 254 | N + 28 | position_p_gain | 1 | RW | RAM | 0 | 254 | N + 30 | goal_position | 2 | RW | RAM | -28672 | 28672 | Y + 32 | goal_velocity | 2 | RW | RAM | 0 | 1023 | N + 34 | goal_torque | 2 | RW | RAM | 0 | 1023 | N + 36 | present_position | 2 | R | RAM | -32768 | 32767 | Y + 38 | present_velocity | 2 | R | RAM | 0 | 2048 | N + 40 | present_load | 2 | R | RAM | 0 | 2048 | N + 42 | present_voltage | 1 | R | RAM | 50 | 250 | N + 43 | present_temperature | 1 | R | RAM | 0 | 99 | N + 44 | registered_instruction | 1 | R | RAM | 0 | 1 | N + 46 | is_moving | 1 | R | RAM | 0 | 1 | N + 47 | EEPROM_lock | 1 | RW | RAM | 0 | 1 | N + 48 | punch | 2 | RW | RAM | 0 | 1023 | N + 73 | goal_acceleration | 1 | RW | RAM | 0 | 254 | N diff --git a/humanoid_robot_intelligence_control_system_device/devices/dynamixel/MX-64.device b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/MX-64.device new file mode 100755 index 0000000..c6a50de --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/MX-64.device @@ -0,0 +1,66 @@ +[device info] +model_name = MX-64 +device_type = dynamixel + +[type info] +value_of_0_radian_position = 2048 +value_of_min_radian_position = 0 +value_of_max_radian_position = 4095 +min_radian = -3.14159265 +max_radian = 3.14159265 + +torque_enable_item_name = torque_enable +present_position_item_name = present_position +present_velocity_item_name = present_velocity +present_current_item_name = +goal_position_item_name = goal_position +goal_velocity_item_name = goal_velocity +goal_current_item_name = +position_d_gain_item_name = position_d_gain +position_i_gain_item_name = position_i_gain +position_p_gain_item_name = position_p_gain +velocity_d_gain_item_name = +velocity_i_gain_item_name = +velocity_p_gain_item_name = + +[control table] +# addr | item name | length | access | memory | min value | max value | signed + 0 | model_number | 2 | R | EEPROM | 0 | 65535 | N + 2 | version_of_firmware | 1 | R | EEPROM | 0 | 254 | N + 3 | ID | 1 | RW | EEPROM | 0 | 252 | N + 4 | baudrate | 1 | RW | EEPROM | 0 | 252 | N + 5 | return_delay_time | 1 | RW | EEPROM | 0 | 254 | N + 6 | CW_angle_limit | 2 | RW | EEPROM | 0 | 4095 | N + 8 | CCW_angle_limit | 2 | RW | EEPROM | 0 | 4095 | N + 10 | drive_mode | 1 | RW | EEPROM | 0 | 3 | N + 11 | max_temperature_limit | 1 | RW | EEPROM | 0 | 99 | N + 12 | min_voltage_limit | 1 | RW | EEPROM | 0 | 250 | N + 13 | max_voltage_limit | 1 | RW | EEPROM | 0 | 250 | N + 14 | max_torque | 2 | RW | EEPROM | 0 | 1023 | N + 16 | status_return_level | 1 | RW | EEPROM | 0 | 2 | N + 17 | alarm_LED | 1 | RW | EEPROM | 0 | 127 | N + 18 | alarm_shutdown | 1 | RW | EEPROM | 0 | 127 | N + 20 | multi_turn_offset | 2 | RW | EEPROM | -26624 | 26624 | Y + 22 | resolution_dividor | 1 | RW | EEPROM | 1 | 255 | N + 24 | torque_enable | 1 | RW | RAM | 0 | 1 | N + 25 | LED | 1 | RW | RAM | 0 | 1 | N + 26 | position_d_gain | 1 | RW | RAM | 0 | 254 | N + 27 | position_i_gain | 1 | RW | RAM | 0 | 254 | N + 28 | position_p_gain | 1 | RW | RAM | 0 | 254 | N + 30 | goal_position | 2 | RW | RAM | -28672 | 28672 | Y + 32 | goal_velocity | 2 | RW | RAM | 0 | 1023 | N + 34 | goal_torque | 2 | RW | RAM | 0 | 1023 | N + 36 | present_position | 2 | R | RAM | -32768 | 32767 | Y + 38 | present_velocity | 2 | R | RAM | 0 | 2048 | N + 40 | present_load | 2 | R | RAM | 0 | 2048 | N + 42 | present_voltage | 1 | R | RAM | 50 | 250 | N + 43 | present_temperature | 1 | R | RAM | 0 | 99 | N + 44 | registered_instruction | 1 | R | RAM | 0 | 1 | N + 46 | is_moving | 1 | R | RAM | 0 | 1 | N + 47 | EEPROM_lock | 1 | RW | RAM | 0 | 1 | N + 48 | punch | 2 | RW | RAM | 0 | 1023 | N + 68 | current_consumption | 2 | RW | RAM | 0 | 4095 | N + 70 | torque_control_mode | 1 | RW | RAM | 0 | 1 | N + 71 | torque_control_goal | 2 | RW | RAM | 0 | 2047 | N + 73 | goal_acceleration | 1 | RW | RAM | 0 | 254 | N + diff --git a/humanoid_robot_intelligence_control_system_device/devices/dynamixel/PH42-020-S300-R.device b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/PH42-020-S300-R.device new file mode 100644 index 0000000..92e9df6 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/PH42-020-S300-R.device @@ -0,0 +1,92 @@ +[device info] +model_name = PH42-020-S300-R +device_type = dynamixel + +[type info] +torque_to_current_value_ratio = 109.3747778 +velocity_to_value_ratio = 954.93 +value_of_0_radian_position = 0 +value_of_min_radian_position = -303750 +value_of_max_radian_position = 303750 +min_radian = -3.14159265 +max_radian = 3.14159265 + +torque_enable_item_name = torque_enable +present_position_item_name = present_position +present_velocity_item_name = present_velocity +present_current_item_name = present_current +goal_position_item_name = goal_position +goal_velocity_item_name = goal_velocity +goal_current_item_name = goal_current +position_d_gain_item_name = position_d_gain +position_i_gain_item_name = position_i_gain +position_p_gain_item_name = position_p_gain +velocity_d_gain_item_name = +velocity_i_gain_item_name = velocity_i_gain +velocity_p_gain_item_name = velocity_p_gain + +[control table] +# addr | item name | length | access | memory | min value | max value | signed + 0 | model_number | 2 | R | EEPROM | 0 | 65535 | N + 6 | version_of_firmware | 1 | R | EEPROM | 0 | 254 | N + 7 | ID | 1 | RW | EEPROM | 0 | 252 | N + 8 | baudrate | 1 | RW | EEPROM | 0 | 8 | N + 9 | return_delay_time | 1 | RW | EEPROM | 0 | 254 | N + 10 | drive_mode | 1 | RW | EEPROM | 0 | 3 | N + 11 | operating_mode | 1 | RW | EEPROM | 0 | 4 | N + 12 | secondary_id | 1 | RW | EEPROM | 0 | 255 | N + 13 | protocol_version | 1 | RW | EEPROM | 1 | 2 | N + 20 | homing_offset | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 24 | moving_threshold | 4 | RW | EEPROM | 0 | 2147483647 | N + 31 | max_temperature_limit | 1 | RW | EEPROM | 0 | 100 | N + 32 | max_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 34 | min_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 36 | pwm_limit | 2 | RW | EEPROM | 0 | 885 | N + 38 | current_limit | 2 | RW | EEPROM | 0 | 32767 | N + 40 | acceleration_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 44 | velocity_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 48 | max_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 52 | min_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 56 | external_port_mod_1 | 1 | RW | EEPROM | 0 | 3 | N + 57 | external_port_mod_2 | 1 | RW | EEPROM | 0 | 3 | N + 58 | external_port_mod_3 | 1 | RW | EEPROM | 0 | 3 | N + 59 | external_port_mod_4 | 1 | RW | EEPROM | 0 | 3 | N + 63 | shutdown | 1 | RW | EEPROM | 0 | 255 | N + 168 | indirect_address_1 | 2 | RW | EEPROM | 0 | 65535 | N + 512 | torque_enable | 1 | RW | RAM | 0 | 1 | N + 513 | LED_RED | 1 | RW | RAM | 0 | 255 | N + 514 | LED_GREEN | 1 | RW | RAM | 0 | 255 | N + 515 | LED_BLUE | 1 | RW | RAM | 0 | 255 | N + 516 | status_return_level | 1 | RW | RAM | 0 | 2 | N + 517 | registerd_instruction | 1 | R | RAM | 0 | 1 | N + 518 | hardware_error_status | 1 | R | RAM | 0 | 31 | N + 524 | velocity_i_gain | 2 | RW | RAM | 0 | 2047 | N + 526 | velocity_p_gain | 2 | RW | RAM | 0 | 2047 | N + 528 | position_d_gain | 2 | RW | RAM | 0 | 2047 | N + 530 | position_i_gain | 2 | RW | RAM | 0 | 2047 | N + 532 | position_p_gain | 2 | RW | RAM | 0 | 2047 | N + 536 | feedforward_2nd_gain | 2 | RW | RAM | 0 | 32767 | N + 538 | feedforward_1st_gain | 2 | RW | RAM | 0 | 32767 | N + 546 | bus_watchdog | 1 | RW | RAM | -1 | 127 | Y + 548 | goal_pwm | 2 | RW | RAM | -2100 | 2100 | Y + 550 | goal_current | 2 | RW | RAM | -32768 | 32767 | Y + 552 | goal_velocity | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 556 | profile_acceleration | 4 | RW | RAM | 0 | 32767 | N + 560 | profile_velocity | 4 | RW | RAM | 0 | 1023 | N + 564 | goal_position | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 568 | realtime_tick | 2 | R | RAM | 0 | 32767 | N + 570 | moving | 1 | R | RAM | 0 | 1 | N + 571 | moving_status | 1 | R | RAM | 0 | 255 | N + 572 | present_pwm | 2 | R | RAM | -2100 | 2100 | Y + 574 | present_current | 2 | R | RAM | -32768 | 32767 | Y + 576 | present_velocity | 4 | R | RAM | -2147483648 | 2147483647 | Y + 580 | present_position | 4 | R | RAM | -2147483648 | 2147483647 | Y + 584 | velocity_trajectory | 4 | R | RAM | 0 | 1023 | N + 588 | position_trajectory | 4 | R | RAM | 0 | 4095 | N + 592 | present_voltage | 2 | R | RAM | 0 | 500 | N + 594 | present_temperature | 1 | R | RAM | 0 | 200 | N + 600 | external_port_data_1 | 2 | RW | RAM | 0 | 4095 | N + 602 | external_port_data_2 | 2 | RW | RAM | 0 | 4095 | N + 604 | external_port_data_3 | 2 | RW | RAM | 0 | 4095 | N + 606 | external_port_data_4 | 2 | RW | RAM | 0 | 4095 | N + 634 | indirect_data_1 | 1 | RW | RAM | 0 | 255 | N diff --git a/humanoid_robot_intelligence_control_system_device/devices/dynamixel/PH54-100-S500-R.device b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/PH54-100-S500-R.device new file mode 100644 index 0000000..6dd1ece --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/PH54-100-S500-R.device @@ -0,0 +1,92 @@ +[device info] +model_name = PH54-100-S500-R +device_type = dynamixel + +[type info] +torque_to_current_value_ratio = 155.658486 +velocity_to_value_ratio = 954.93 +value_of_0_radian_position = 0 +value_of_min_radian_position = -501923 +value_of_max_radian_position = 501923 +min_radian = -3.14159265 +max_radian = 3.14159265 + +torque_enable_item_name = torque_enable +present_position_item_name = present_position +present_velocity_item_name = present_velocity +present_current_item_name = present_current +goal_position_item_name = goal_position +goal_velocity_item_name = goal_velocity +goal_current_item_name = goal_current +position_d_gain_item_name = position_d_gain +position_i_gain_item_name = position_i_gain +position_p_gain_item_name = position_p_gain +velocity_d_gain_item_name = +velocity_i_gain_item_name = velocity_i_gain +velocity_p_gain_item_name = velocity_p_gain + +[control table] +# addr | item name | length | access | memory | min value | max value | signed + 0 | model_number | 2 | R | EEPROM | 0 | 65535 | N + 6 | version_of_firmware | 1 | R | EEPROM | 0 | 254 | N + 7 | ID | 1 | RW | EEPROM | 0 | 252 | N + 8 | baudrate | 1 | RW | EEPROM | 0 | 8 | N + 9 | return_delay_time | 1 | RW | EEPROM | 0 | 254 | N + 10 | drive_mode | 1 | RW | EEPROM | 0 | 3 | N + 11 | operating_mode | 1 | RW | EEPROM | 0 | 4 | N + 12 | secondary_id | 1 | RW | EEPROM | 0 | 255 | N + 13 | protocol_version | 1 | RW | EEPROM | 1 | 2 | N + 20 | homing_offset | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 24 | moving_threshold | 4 | RW | EEPROM | 0 | 2147483647 | N + 31 | max_temperature_limit | 1 | RW | EEPROM | 0 | 100 | N + 32 | max_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 34 | min_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 36 | pwm_limit | 2 | RW | EEPROM | 0 | 885 | N + 38 | current_limit | 2 | RW | EEPROM | 0 | 32767 | N + 40 | acceleration_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 44 | velocity_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 48 | max_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 52 | min_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 56 | external_port_mod_1 | 1 | RW | EEPROM | 0 | 3 | N + 57 | external_port_mod_2 | 1 | RW | EEPROM | 0 | 3 | N + 58 | external_port_mod_3 | 1 | RW | EEPROM | 0 | 3 | N + 59 | external_port_mod_4 | 1 | RW | EEPROM | 0 | 3 | N + 63 | shutdown | 1 | RW | EEPROM | 0 | 255 | N + 168 | indirect_address_1 | 2 | RW | EEPROM | 0 | 65535 | N + 512 | torque_enable | 1 | RW | RAM | 0 | 1 | N + 513 | LED_RED | 1 | RW | RAM | 0 | 255 | N + 514 | LED_GREEN | 1 | RW | RAM | 0 | 255 | N + 515 | LED_BLUE | 1 | RW | RAM | 0 | 255 | N + 516 | status_return_level | 1 | RW | RAM | 0 | 2 | N + 517 | registerd_instruction | 1 | R | RAM | 0 | 1 | N + 518 | hardware_error_status | 1 | R | RAM | 0 | 31 | N + 524 | velocity_i_gain | 2 | RW | RAM | 0 | 2047 | N + 526 | velocity_p_gain | 2 | RW | RAM | 0 | 2047 | N + 528 | position_d_gain | 2 | RW | RAM | 0 | 2047 | N + 530 | position_i_gain | 2 | RW | RAM | 0 | 2047 | N + 532 | position_p_gain | 2 | RW | RAM | 0 | 2047 | N + 536 | feedforward_2nd_gain | 2 | RW | RAM | 0 | 32767 | N + 538 | feedforward_1st_gain | 2 | RW | RAM | 0 | 32767 | N + 546 | bus_watchdog | 1 | RW | RAM | -1 | 127 | Y + 548 | goal_pwm | 2 | RW | RAM | -2100 | 2100 | Y + 550 | goal_current | 2 | RW | RAM | -32768 | 32767 | Y + 552 | goal_velocity | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 556 | profile_acceleration | 4 | RW | RAM | 0 | 32767 | N + 560 | profile_velocity | 4 | RW | RAM | 0 | 1023 | N + 564 | goal_position | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 568 | realtime_tick | 2 | R | RAM | 0 | 32767 | N + 570 | moving | 1 | R | RAM | 0 | 1 | N + 571 | moving_status | 1 | R | RAM | 0 | 255 | N + 572 | present_pwm | 2 | R | RAM | -2100 | 2100 | Y + 574 | present_current | 2 | R | RAM | -32768 | 32767 | Y + 576 | present_velocity | 4 | R | RAM | -2147483648 | 2147483647 | Y + 580 | present_position | 4 | R | RAM | -2147483648 | 2147483647 | Y + 584 | velocity_trajectory | 4 | R | RAM | 0 | 1023 | N + 588 | position_trajectory | 4 | R | RAM | 0 | 4095 | N + 592 | present_voltage | 2 | R | RAM | 0 | 500 | N + 594 | present_temperature | 1 | R | RAM | 0 | 200 | N + 600 | external_port_data_1 | 2 | RW | RAM | 0 | 4095 | N + 602 | external_port_data_2 | 2 | RW | RAM | 0 | 4095 | N + 604 | external_port_data_3 | 2 | RW | RAM | 0 | 4095 | N + 606 | external_port_data_4 | 2 | RW | RAM | 0 | 4095 | N + 634 | indirect_data_1 | 1 | RW | RAM | 0 | 255 | N diff --git a/humanoid_robot_intelligence_control_system_device/devices/dynamixel/PH54-200-S500-R.device b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/PH54-200-S500-R.device new file mode 100644 index 0000000..b758315 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/PH54-200-S500-R.device @@ -0,0 +1,92 @@ +[device info] +model_name = PH54-200-S500-R +device_type = dynamixel + +[type info] +torque_to_current_value_ratio = 146.502114 +velocity_to_value_ratio = 954.93 +value_of_0_radian_position = 0 +value_of_min_radian_position = -501923 +value_of_max_radian_position = 501923 +min_radian = -3.14159265 +max_radian = 3.14159265 + +torque_enable_item_name = torque_enable +present_position_item_name = present_position +present_velocity_item_name = present_velocity +present_current_item_name = present_current +goal_position_item_name = goal_position +goal_velocity_item_name = goal_velocity +goal_current_item_name = goal_current +position_d_gain_item_name = position_d_gain +position_i_gain_item_name = position_i_gain +position_p_gain_item_name = position_p_gain +velocity_d_gain_item_name = +velocity_i_gain_item_name = velocity_i_gain +velocity_p_gain_item_name = velocity_p_gain + +[control table] +# addr | item name | length | access | memory | min value | max value | signed + 0 | model_number | 2 | R | EEPROM | 0 | 65535 | N + 6 | version_of_firmware | 1 | R | EEPROM | 0 | 254 | N + 7 | ID | 1 | RW | EEPROM | 0 | 252 | N + 8 | baudrate | 1 | RW | EEPROM | 0 | 8 | N + 9 | return_delay_time | 1 | RW | EEPROM | 0 | 254 | N + 10 | drive_mode | 1 | RW | EEPROM | 0 | 3 | N + 11 | operating_mode | 1 | RW | EEPROM | 0 | 4 | N + 12 | secondary_id | 1 | RW | EEPROM | 0 | 255 | N + 13 | protocol_version | 1 | RW | EEPROM | 1 | 2 | N + 20 | homing_offset | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 24 | moving_threshold | 4 | RW | EEPROM | 0 | 2147483647 | N + 31 | max_temperature_limit | 1 | RW | EEPROM | 0 | 100 | N + 32 | max_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 34 | min_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 36 | pwm_limit | 2 | RW | EEPROM | 0 | 885 | N + 38 | current_limit | 2 | RW | EEPROM | 0 | 32767 | N + 40 | acceleration_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 44 | velocity_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 48 | max_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 52 | min_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 56 | external_port_mod_1 | 1 | RW | EEPROM | 0 | 3 | N + 57 | external_port_mod_2 | 1 | RW | EEPROM | 0 | 3 | N + 58 | external_port_mod_3 | 1 | RW | EEPROM | 0 | 3 | N + 59 | external_port_mod_4 | 1 | RW | EEPROM | 0 | 3 | N + 63 | shutdown | 1 | RW | EEPROM | 0 | 255 | N + 168 | indirect_address_1 | 2 | RW | EEPROM | 0 | 65535 | N + 512 | torque_enable | 1 | RW | RAM | 0 | 1 | N + 513 | LED_RED | 1 | RW | RAM | 0 | 255 | N + 514 | LED_GREEN | 1 | RW | RAM | 0 | 255 | N + 515 | LED_BLUE | 1 | RW | RAM | 0 | 255 | N + 516 | status_return_level | 1 | RW | RAM | 0 | 2 | N + 517 | registerd_instruction | 1 | R | RAM | 0 | 1 | N + 518 | hardware_error_status | 1 | R | RAM | 0 | 31 | N + 524 | velocity_i_gain | 2 | RW | RAM | 0 | 2047 | N + 526 | velocity_p_gain | 2 | RW | RAM | 0 | 2047 | N + 528 | position_d_gain | 2 | RW | RAM | 0 | 2047 | N + 530 | position_i_gain | 2 | RW | RAM | 0 | 2047 | N + 532 | position_p_gain | 2 | RW | RAM | 0 | 2047 | N + 536 | feedforward_2nd_gain | 2 | RW | RAM | 0 | 32767 | N + 538 | feedforward_1st_gain | 2 | RW | RAM | 0 | 32767 | N + 546 | bus_watchdog | 1 | RW | RAM | -1 | 127 | Y + 548 | goal_pwm | 2 | RW | RAM | -2100 | 2100 | Y + 550 | goal_current | 2 | RW | RAM | -32768 | 32767 | Y + 552 | goal_velocity | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 556 | profile_acceleration | 4 | RW | RAM | 0 | 32767 | N + 560 | profile_velocity | 4 | RW | RAM | 0 | 1023 | N + 564 | goal_position | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 568 | realtime_tick | 2 | R | RAM | 0 | 32767 | N + 570 | moving | 1 | R | RAM | 0 | 1 | N + 571 | moving_status | 1 | R | RAM | 0 | 255 | N + 572 | present_pwm | 2 | R | RAM | -2100 | 2100 | Y + 574 | present_current | 2 | R | RAM | -32768 | 32767 | Y + 576 | present_velocity | 4 | R | RAM | -2147483648 | 2147483647 | Y + 580 | present_position | 4 | R | RAM | -2147483648 | 2147483647 | Y + 584 | velocity_trajectory | 4 | R | RAM | 0 | 1023 | N + 588 | position_trajectory | 4 | R | RAM | 0 | 4095 | N + 592 | present_voltage | 2 | R | RAM | 0 | 500 | N + 594 | present_temperature | 1 | R | RAM | 0 | 200 | N + 600 | external_port_data_1 | 2 | RW | RAM | 0 | 4095 | N + 602 | external_port_data_2 | 2 | RW | RAM | 0 | 4095 | N + 604 | external_port_data_3 | 2 | RW | RAM | 0 | 4095 | N + 606 | external_port_data_4 | 2 | RW | RAM | 0 | 4095 | N + 634 | indirect_data_1 | 1 | RW | RAM | 0 | 255 | N diff --git a/humanoid_robot_intelligence_control_system_device/devices/dynamixel/RH-P12-RN(A).device b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/RH-P12-RN(A).device new file mode 100644 index 0000000..31d253b --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/RH-P12-RN(A).device @@ -0,0 +1,90 @@ +[device info] +model_name = RH-P12-RN(A) +device_type = dynamixel + +[type info] +value_of_0_radian_position = 0 +value_of_min_radian_position = 0 +value_of_max_radian_position = 740 +min_radian = 0 +max_radian = 1.150767 + +torque_enable_item_name = torque_enable +present_position_item_name = present_position +present_velocity_item_name = present_velocity +present_current_item_name = present_current +goal_position_item_name = goal_position +goal_velocity_item_name = goal_velocity +goal_current_item_name = goal_current +position_d_gain_item_name = position_d_gain +position_i_gain_item_name = position_i_gain +position_p_gain_item_name = position_p_gain +velocity_d_gain_item_name = +velocity_i_gain_item_name = velocity_i_gain +velocity_p_gain_item_name = velocity_p_gain + +[control table] +# addr | item name | length | access | memory | min value | max value | signed + 0 | model_number | 2 | R | EEPROM | 0 | 65535 | N + 6 | version_of_firmware | 1 | R | EEPROM | 0 | 254 | N + 7 | ID | 1 | RW | EEPROM | 0 | 252 | N + 8 | baudrate | 1 | RW | EEPROM | 0 | 9 | N + 9 | return_delay_time | 1 | RW | EEPROM | 0 | 254 | N + 10 | drive_mode | 1 | RW | EEPROM | 0 | 1 | N + 11 | operating_mode | 1 | RW | EEPROM | 0 | 4 | N + 12 | secondary_ID | 1 | RW | EEPROM | 0 | 255 | N + 20 | homing_offset | 4 | RW | EEPROM | -1150 | 1150 | Y + 24 | moving_threshold | 4 | RW | EEPROM | 0 | 2970 | N + 31 | max_temperature_limit | 1 | RW | EEPROM | 0 | 100 | N + 32 | max_voltage_limit | 2 | RW | EEPROM | 0 | 350 | N + 34 | min_voltage_limit | 2 | RW | EEPROM | 0 | 350 | N + 36 | pwm_limit | 2 | RW | EEPROM | 0 | 2009 | N + 38 | current_limit | 2 | RW | EEPROM | 0 | 1984 | N + 40 | acceleration_limit | 4 | RW | EEPROM | 0 | 1378788 | N + 44 | velocity_limit | 4 | RW | EEPROM | 0 | 2970 | N + 48 | max_position_limit | 4 | RW | EEPROM | 0 | 1150 | N + 52 | min_position_limit | 4 | RW | EEPROM | 0 | 1150 | N + 56 | external_port_mod_1 | 1 | RW | EEPROM | 0 | 3 | N + 57 | external_port_mod_2 | 1 | RW | EEPROM | 0 | 3 | N + 58 | external_port_mod_3 | 1 | RW | EEPROM | 0 | 3 | N + 59 | external_port_mod_4 | 1 | RW | EEPROM | 0 | 3 | N + 63 | shutdown | 1 | RW | EEPROM | 0 | 255 | N + 168 | indirect_address_1 | 2 | RW | EEPROM | 512 | 1023 | N + 512 | torque_enable | 1 | RW | RAM | 0 | 1 | N + 513 | LED_RED | 1 | RW | RAM | 0 | 255 | N + 514 | LED_GREEN | 1 | RW | RAM | 0 | 255 | N + 515 | LED_BLUE | 1 | RW | RAM | 0 | 255 | N + 516 | status_return_level | 1 | RW | RAM | 0 | 2 | N + 517 | registerd_instruction | 1 | R | RAM | 0 | 1 | N + 518 | hardware_error_status | 2 | R | RAM | 0 | 63 | N + 524 | velocity_i_gain | 2 | RW | RAM | 0 | 32767 | N + 526 | velocity_p_gain | 2 | RW | RAM | 0 | 32767 | N + 528 | position_d_gain | 2 | RW | RAM | 0 | 32767 | N + 530 | position_i_gain | 2 | RW | RAM | 0 | 32767 | N + 532 | position_p_gain | 2 | RW | RAM | 0 | 32767 | N + 536 | feedforward_2nd_gain | 2 | RW | RAM | 0 | 32767 | N + 538 | feedforward_1st_gain | 2 | RW | RAM | 0 | 32767 | N + 546 | bus_watchdog | 1 | RW | RAM | -1 | 127 | Y + 548 | goal_pwm | 2 | RW | RAM | -2009 | 2009 | Y + 550 | goal_current | 2 | RW | RAM | -1984 | 1984 | Y + 552 | goal_velocity | 4 | RW | RAM | -2970 | 2970 | Y + 556 | profile_acceleration | 4 | RW | RAM | 0 | 1378788 | N + 560 | profile_velocity | 4 | RW | RAM | 0 | 2970 | N + 564 | goal_position | 4 | RW | RAM | 0 | 1150 | N + 568 | realtime_tick | 2 | R | RAM | 0 | 32767 | N + 570 | is_moving | 1 | R | RAM | 0 | 1 | N + 571 | moving_status | 1 | R | RAM | 0 | 255 | N + 572 | present_pwm | 2 | R | RAM | -2009 | 2009 | Y + 574 | present_current | 2 | R | RAM | -1984 | 1984 | Y + 576 | present_velocity | 4 | R | RAM | -2970 | 2970 | Y + 580 | present_position | 4 | R | RAM | -1150 | 1150 | Y + 584 | velocity_trajectory | 4 | R | RAM | -2147483648 | 2147483648 | Y + 588 | position_trajectory | 4 | R | RAM | -2147483648 | 2147483648 | Y + 592 | present_voltage | 2 | R | RAM | 0 | 350 | N + 594 | present_temperature | 1 | R | RAM | 0 | 100 | N + 595 | grip_detection | 1 | R | RAM | 0 | 1 | N + 600 | external_port_data_1 | 2 | RW | RAM | 0 | 4095 | N + 602 | external_port_data_2 | 2 | RW | RAM | 0 | 4095 | N + 604 | external_port_data_3 | 2 | RW | RAM | 0 | 4095 | N + 606 | external_port_data_4 | 2 | RW | RAM | 0 | 4095 | N + 634 | indirect_data_1 | 1 | RW | RAM | 0 | 255 | N diff --git a/humanoid_robot_intelligence_control_system_device/devices/dynamixel/RH-P12-RN.device b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/RH-P12-RN.device new file mode 100755 index 0000000..14ed73b --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/RH-P12-RN.device @@ -0,0 +1,73 @@ +[device info] +model_name = RH-P12-RN +device_type = dynamixel + +[type info] +value_of_0_radian_position = 0 +value_of_min_radian_position = 0 +value_of_max_radian_position = 740 +min_radian = 0 +max_radian = 1.150767 + +torque_enable_item_name = torque_enable +present_position_item_name = present_position +present_velocity_item_name = present_velocity +present_current_item_name = present_current +goal_position_item_name = goal_position +goal_velocity_item_name = goal_velocity +goal_current_item_name = goal_current +position_d_gain_item_name = position_d_gain +position_i_gain_item_name = position_i_gain +position_p_gain_item_name = position_p_gain +velocity_d_gain_item_name = +velocity_i_gain_item_name = +velocity_p_gain_item_name = + +[control table] +# addr | item name | length | access | memory | min value | max value | signed + 0 | model_number | 2 | R | EEPROM | 0 | 65535 | N + 6 | version_of_firmware | 1 | R | EEPROM | 0 | 254 | N + 7 | ID | 1 | RW | EEPROM | 0 | 252 | N + 8 | baudrate | 1 | RW | EEPROM | 0 | 8 | N + 9 | return_delay_time | 1 | RW | EEPROM | 0 | 254 | N + 11 | operating_mode | 1 | RW | EEPROM | 0 | 5 | N + 17 | moving_threshold | 4 | RW | EEPROM | 0 | 2147483647 | N + 21 | max_temperature_limit | 1 | RW | EEPROM | 0 | 100 | N + 22 | max_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 24 | min_voltage_limit | 2 | RW | EEPROM | 0 | 400 | N + 26 | acceleration_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 30 | current_limit | 2 | RW | EEPROM | 0 | 32767 | N + 32 | velocity_limit | 4 | RW | EEPROM | 0 | 2147483647 | N + 36 | max_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 40 | min_position_limit | 4 | RW | EEPROM | -2147483648 | 2147483647 | Y + 44 | external_port_mod_1 | 1 | RW | EEPROM | 0 | 3 | N + 45 | external_port_mod_2 | 1 | RW | EEPROM | 0 | 3 | N + 46 | external_port_mod_3 | 1 | RW | EEPROM | 0 | 3 | N + 47 | external_port_mod_4 | 1 | RW | EEPROM | 0 | 3 | N + 48 | shutdown | 1 | RW | EEPROM | 0 | 255 | N + 49 | indirect_address_1 | 2 | RW | EEPROM | 0 | 65535 | N + 562 | torque_enable | 1 | RW | RAM | 0 | 1 | N + 563 | LED_RED | 1 | RW | RAM | 0 | 255 | N + 564 | LED_GREEN | 1 | RW | RAM | 0 | 255 | N + 565 | LED_BLUE | 1 | RW | RAM | 0 | 255 | N + 590 | position_d_gain | 2 | RW | RAM | 0 | 2047 | N + 592 | position_i_gain | 2 | RW | RAM | 0 | 2047 | N + 594 | position_p_gain | 2 | RW | RAM | 0 | 2047 | N + 596 | goal_position | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 600 | goal_velocity | 4 | RW | RAM | -2147483648 | 2147483647 | Y + 604 | goal_current | 2 | RW | RAM | -32768 | 32767 | Y + 606 | goal_acceleration | 4 | RW | RAM | 0 | 2147483647 | N + 610 | is_moving | 1 | R | RAM | 0 | 1 | N + 611 | present_position | 4 | R | RAM | -2147483648 | 2147483647 | Y + 615 | present_velocity | 4 | R | RAM | -2147483648 | 2147483647 | Y + 621 | present_current | 2 | R | RAM | -32768 | 32767 | Y + 623 | present_voltage | 2 | R | RAM | 0 | 500 | N + 625 | present_temperature | 1 | R | RAM | 0 | 200 | N + 626 | external_port_data_1 | 2 | RW | RAM | 0 | 4095 | N + 628 | external_port_data_2 | 2 | RW | RAM | 0 | 4095 | N + 630 | external_port_data_3 | 2 | RW | RAM | 0 | 4095 | N + 632 | external_port_data_4 | 2 | RW | RAM | 0 | 4095 | N + 634 | indirect_data_1 | 1 | RW | RAM | 0 | 255 | N + 890 | registerd_instruction | 1 | R | RAM | 0 | 1 | N + 891 | status_return_level | 1 | RW | RAM | 0 | 2 | N + 892 | hardware_error_status | 2 | R | RAM | 0 | 31 | N diff --git a/humanoid_robot_intelligence_control_system_device/devices/dynamixel/XM-430.device b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/XM-430.device new file mode 100755 index 0000000..7dfe91d --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/XM-430.device @@ -0,0 +1,82 @@ +[device info] +model_name = XM-430 +device_type = dynamixel + +[type info] +torque_to_current_value_ratio = 149.795386991 + +value_of_0_radian_position = 2048 +value_of_min_radian_position = 0 +value_of_max_radian_position = 4095 +min_radian = -3.14159265 +max_radian = 3.14159265 + +torque_enable_item_name = torque_enable +present_position_item_name = present_position +present_velocity_item_name = present_velocity +present_current_item_name = present_current +goal_position_item_name = goal_position +goal_velocity_item_name = goal_velocity +goal_current_item_name = goal_current +position_d_gain_item_name = position_d_gain +position_i_gain_item_name = position_i_gain +position_p_gain_item_name = position_p_gain +velocity_d_gain_item_name = +velocity_i_gain_item_name = velocity_i_gain +velocity_p_gain_item_name = velocity_p_gain + +[control table] +# addr | item name | length | access | memory | min value | max value | signed + 0 | model_number | 2 | R | EEPROM | 0 | 65535 | N + 6 | version_of_firmware | 1 | R | EEPROM | 0 | 254 | N + 7 | ID | 1 | RW | EEPROM | 0 | 252 | N + 8 | baudrate | 1 | RW | EEPROM | 0 | 7 | N + 9 | return_delay_time | 1 | RW | EEPROM | 0 | 254 | N + 10 | drive_mode | 1 | RW | EEPROM | 0 | 1 | N + 11 | operating_mode | 1 | RW | EEPROM | 0 | 16 | N + 12 | secondary_id | 1 | RW | EEPROM | 0 | 255 | N + 20 | homing_offset | 4 | RW | EEPROM | -1044479 | 1044479 | Y + 24 | moving_threshold | 4 | RW | EEPROM | 0 | 1023 | N + 31 | max_temperature_limit | 1 | RW | EEPROM | 0 | 100 | N + 32 | max_voltage_limit | 2 | RW | EEPROM | 95 | 160 | N + 34 | min_voltage_limit | 2 | RW | EEPROM | 95 | 160 | N + 36 | pwm_limit | 2 | RW | EEPROM | 0 | 885 | N + 38 | current_limit | 2 | RW | EEPROM | 0 | 1193 | N + 44 | velocity_limit | 4 | RW | EEPROM | 0 | 1023 | N + 48 | max_position_limit | 4 | RW | EEPROM | 0 | 4095 | N + 52 | min_position_limit | 4 | RW | EEPROM | 0 | 4095 | N + 63 | shutdown | 1 | RW | EEPROM | 0 | 255 | N + 64 | torque_enable | 1 | RW | RAM | 0 | 1 | N + 65 | LED | 1 | RW | RAM | 0 | 1 | N + 68 | status_return_level | 1 | RW | RAM | 0 | 2 | N + 69 | registered_instruction | 1 | R | RAM | 0 | 1 | N + 70 | hardware_error_status | 1 | R | RAM | 0 | 255 | N + 76 | velocity_i_gain | 2 | RW | RAM | 0 | 32767 | N + 78 | velocity_p_gain | 2 | RW | RAM | 0 | 32767 | N + 80 | position_d_gain | 2 | RW | RAM | 0 | 32767 | N + 82 | position_i_gain | 2 | RW | RAM | 0 | 32767 | N + 84 | position_p_gain | 2 | RW | RAM | 0 | 32767 | N + 88 | feedforward_2nd_gain | 2 | RW | RAM | 0 | 32767 | N + 90 | feedforward_1st_gain | 2 | RW | RAM | 0 | 32767 | N + 98 | bus_watchdog | 1 | RW | RAM | -1 | 127 | Y + 100 | goal_pwm | 2 | RW | RAM | 0 | 885 | N + 102 | goal_current | 2 | RW | RAM | 0 | 1193 | N + 104 | goal_velocity | 4 | RW | RAM | 0 | 1023 | N + 108 | profile_acceleration | 4 | RW | RAM | 0 | 32767 | N + 112 | profile_velocity | 4 | RW | RAM | 0 | 1023 | N + 116 | goal_position | 4 | RW | RAM | -1048575 | 1048575 | Y + 120 | realtime_tick | 2 | R | RAM | 0 | 32767 | N + 122 | moving | 1 | R | RAM | 0 | 1 | N + 123 | moving_status | 1 | R | RAM | 0 | 255 | N + 124 | present_pwm | 2 | R | RAM | 0 | 885 | N + 126 | present_current | 2 | R | RAM | 0 | 1193 | N + 128 | present_velocity | 4 | R | RAM | 0 | 1023 | N + 132 | present_position | 4 | R | RAM | -2147483648 | 2147483647 | Y + 136 | velocity_trajectory | 4 | R | RAM | 0 | 1023 | N + 140 | position_trajectory | 4 | R | RAM | 0 | 4095 | N + 144 | present_input_voltage | 2 | R | RAM | 95 | 160 | N + 146 | present_temperature | 1 | R | RAM | 0 | 100 | N + 168 | indirect_address_1 | 2 | RW | RAM | 0 | 65535 | N + 224 | indirect_data_1 | 1 | RW | RAM | 0 | 255 | N + 578 | indirect_address_29 | 2 | RW | RAM | 0 | 65535 | N + 634 | indirect_data_29 | 1 | RW | RAM | 0 | 255 | N diff --git a/humanoid_robot_intelligence_control_system_device/devices/dynamixel/XM430-W210.device b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/XM430-W210.device new file mode 100644 index 0000000..6113e04 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/XM430-W210.device @@ -0,0 +1,83 @@ +[device info] +model_name = XM430-W210 +device_type = dynamixel + +[type info] +torque_to_current_value_ratio = 235.53647082 +velocity_to_value_ratio = 41.707853 + +value_of_0_radian_position = 2048 +value_of_min_radian_position = 0 +value_of_max_radian_position = 4095 +min_radian = -3.14159265 +max_radian = 3.14159265 + +torque_enable_item_name = torque_enable +present_position_item_name = present_position +present_velocity_item_name = present_velocity +present_current_item_name = present_current +goal_position_item_name = goal_position +goal_velocity_item_name = goal_velocity +goal_current_item_name = goal_current +position_d_gain_item_name = position_d_gain +position_i_gain_item_name = position_i_gain +position_p_gain_item_name = position_p_gain +velocity_d_gain_item_name = +velocity_i_gain_item_name = velocity_i_gain +velocity_p_gain_item_name = velocity_p_gain + +[control table] +# addr | item name | length | access | memory | min value | max value | signed + 0 | model_number | 2 | R | EEPROM | 0 | 65535 | N + 6 | version_of_firmware | 1 | R | EEPROM | 0 | 254 | N + 7 | ID | 1 | RW | EEPROM | 0 | 252 | N + 8 | baudrate | 1 | RW | EEPROM | 0 | 7 | N + 9 | return_delay_time | 1 | RW | EEPROM | 0 | 254 | N + 10 | drive_mode | 1 | RW | EEPROM | 0 | 1 | N + 11 | operating_mode | 1 | RW | EEPROM | 0 | 16 | N + 12 | secondary_id | 1 | RW | EEPROM | 0 | 255 | N + 20 | homing_offset | 4 | RW | EEPROM | -1044479 | 1044479 | Y + 24 | moving_threshold | 4 | RW | EEPROM | 0 | 1023 | N + 31 | max_temperature_limit | 1 | RW | EEPROM | 0 | 100 | N + 32 | max_voltage_limit | 2 | RW | EEPROM | 95 | 160 | N + 34 | min_voltage_limit | 2 | RW | EEPROM | 95 | 160 | N + 36 | pwm_limit | 2 | RW | EEPROM | 0 | 885 | N + 38 | current_limit | 2 | RW | EEPROM | 0 | 1193 | N + 44 | velocity_limit | 4 | RW | EEPROM | 0 | 1023 | N + 48 | max_position_limit | 4 | RW | EEPROM | 0 | 4095 | N + 52 | min_position_limit | 4 | RW | EEPROM | 0 | 4095 | N + 63 | shutdown | 1 | RW | EEPROM | 0 | 255 | N + 64 | torque_enable | 1 | RW | RAM | 0 | 1 | N + 65 | LED | 1 | RW | RAM | 0 | 1 | N + 68 | status_return_level | 1 | RW | RAM | 0 | 2 | N + 69 | registered_instruction | 1 | R | RAM | 0 | 1 | N + 70 | hardware_error_status | 1 | R | RAM | 0 | 255 | N + 76 | velocity_i_gain | 2 | RW | RAM | 0 | 32767 | N + 78 | velocity_p_gain | 2 | RW | RAM | 0 | 32767 | N + 80 | position_d_gain | 2 | RW | RAM | 0 | 32767 | N + 82 | position_i_gain | 2 | RW | RAM | 0 | 32767 | N + 84 | position_p_gain | 2 | RW | RAM | 0 | 32767 | N + 88 | feedforward_2nd_gain | 2 | RW | RAM | 0 | 32767 | N + 90 | feedforward_1st_gain | 2 | RW | RAM | 0 | 32767 | N + 98 | bus_watchdog | 1 | RW | RAM | -1 | 127 | Y + 100 | goal_pwm | 2 | RW | RAM | 0 | 885 | N + 102 | goal_current | 2 | RW | RAM | 0 | 1193 | N + 104 | goal_velocity | 4 | RW | RAM | 0 | 1023 | N + 108 | profile_acceleration | 4 | RW | RAM | 0 | 32767 | N + 112 | profile_velocity | 4 | RW | RAM | 0 | 1023 | N + 116 | goal_position | 4 | RW | RAM | -1048575 | 1048575 | Y + 120 | realtime_tick | 2 | R | RAM | 0 | 32767 | N + 122 | moving | 1 | R | RAM | 0 | 1 | N + 123 | moving_status | 1 | R | RAM | 0 | 255 | N + 124 | present_pwm | 2 | R | RAM | 0 | 885 | N + 126 | present_current | 2 | R | RAM | 0 | 1193 | N + 128 | present_velocity | 4 | R | RAM | 0 | 1023 | N + 132 | present_position | 4 | R | RAM | -2147483648 | 2147483647 | Y + 136 | velocity_trajectory | 4 | R | RAM | 0 | 1023 | N + 140 | position_trajectory | 4 | R | RAM | 0 | 4095 | N + 144 | present_input_voltage | 2 | R | RAM | 95 | 160 | N + 146 | present_temperature | 1 | R | RAM | 0 | 100 | N + 168 | indirect_address_1 | 2 | RW | RAM | 0 | 65535 | N + 224 | indirect_data_1 | 1 | RW | RAM | 0 | 255 | N + 578 | indirect_address_29 | 2 | RW | RAM | 0 | 65535 | N + 634 | indirect_data_29 | 1 | RW | RAM | 0 | 255 | N diff --git a/humanoid_robot_intelligence_control_system_device/devices/dynamixel/XM430-W350.device b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/XM430-W350.device new file mode 100644 index 0000000..e1be362 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/XM430-W350.device @@ -0,0 +1,83 @@ +[device info] +model_name = XM430-W350 +device_type = dynamixel + +[type info] +torque_to_current_value_ratio = 149.795386991 +velocity_to_value_ratio = 41.707853 + +value_of_0_radian_position = 2048 +value_of_min_radian_position = 0 +value_of_max_radian_position = 4095 +min_radian = -3.14159265 +max_radian = 3.14159265 + +torque_enable_item_name = torque_enable +present_position_item_name = present_position +present_velocity_item_name = present_velocity +present_current_item_name = present_current +goal_position_item_name = goal_position +goal_velocity_item_name = goal_velocity +goal_current_item_name = goal_current +position_d_gain_item_name = position_d_gain +position_i_gain_item_name = position_i_gain +position_p_gain_item_name = position_p_gain +velocity_d_gain_item_name = +velocity_i_gain_item_name = velocity_i_gain +velocity_p_gain_item_name = velocity_p_gain + +[control table] +# addr | item name | length | access | memory | min value | max value | signed + 0 | model_number | 2 | R | EEPROM | 0 | 65535 | N + 6 | version_of_firmware | 1 | R | EEPROM | 0 | 254 | N + 7 | ID | 1 | RW | EEPROM | 0 | 252 | N + 8 | baudrate | 1 | RW | EEPROM | 0 | 7 | N + 9 | return_delay_time | 1 | RW | EEPROM | 0 | 254 | N + 10 | drive_mode | 1 | RW | EEPROM | 0 | 1 | N + 11 | operating_mode | 1 | RW | EEPROM | 0 | 16 | N + 12 | secondary_id | 1 | RW | EEPROM | 0 | 255 | N + 20 | homing_offset | 4 | RW | EEPROM | -1044479 | 1044479 | Y + 24 | moving_threshold | 4 | RW | EEPROM | 0 | 1023 | N + 31 | max_temperature_limit | 1 | RW | EEPROM | 0 | 100 | N + 32 | max_voltage_limit | 2 | RW | EEPROM | 95 | 160 | N + 34 | min_voltage_limit | 2 | RW | EEPROM | 95 | 160 | N + 36 | pwm_limit | 2 | RW | EEPROM | 0 | 885 | N + 38 | current_limit | 2 | RW | EEPROM | 0 | 1193 | N + 44 | velocity_limit | 4 | RW | EEPROM | 0 | 1023 | N + 48 | max_position_limit | 4 | RW | EEPROM | 0 | 4095 | N + 52 | min_position_limit | 4 | RW | EEPROM | 0 | 4095 | N + 63 | shutdown | 1 | RW | EEPROM | 0 | 255 | N + 64 | torque_enable | 1 | RW | RAM | 0 | 1 | N + 65 | LED | 1 | RW | RAM | 0 | 1 | N + 68 | status_return_level | 1 | RW | RAM | 0 | 2 | N + 69 | registered_instruction | 1 | R | RAM | 0 | 1 | N + 70 | hardware_error_status | 1 | R | RAM | 0 | 255 | N + 76 | velocity_i_gain | 2 | RW | RAM | 0 | 32767 | N + 78 | velocity_p_gain | 2 | RW | RAM | 0 | 32767 | N + 80 | position_d_gain | 2 | RW | RAM | 0 | 32767 | N + 82 | position_i_gain | 2 | RW | RAM | 0 | 32767 | N + 84 | position_p_gain | 2 | RW | RAM | 0 | 32767 | N + 88 | feedforward_2nd_gain | 2 | RW | RAM | 0 | 32767 | N + 90 | feedforward_1st_gain | 2 | RW | RAM | 0 | 32767 | N + 98 | bus_watchdog | 1 | RW | RAM | -1 | 127 | Y + 100 | goal_pwm | 2 | RW | RAM | 0 | 885 | N + 102 | goal_current | 2 | RW | RAM | 0 | 1193 | N + 104 | goal_velocity | 4 | RW | RAM | 0 | 1023 | N + 108 | profile_acceleration | 4 | RW | RAM | 0 | 32767 | N + 112 | profile_velocity | 4 | RW | RAM | 0 | 1023 | N + 116 | goal_position | 4 | RW | RAM | -1048575 | 1048575 | Y + 120 | realtime_tick | 2 | R | RAM | 0 | 32767 | N + 122 | moving | 1 | R | RAM | 0 | 1 | N + 123 | moving_status | 1 | R | RAM | 0 | 255 | N + 124 | present_pwm | 2 | R | RAM | 0 | 885 | N + 126 | present_current | 2 | R | RAM | 0 | 1193 | N + 128 | present_velocity | 4 | R | RAM | 0 | 1023 | N + 132 | present_position | 4 | R | RAM | -2147483648 | 2147483647 | Y + 136 | velocity_trajectory | 4 | R | RAM | 0 | 1023 | N + 140 | position_trajectory | 4 | R | RAM | 0 | 4095 | N + 144 | present_input_voltage | 2 | R | RAM | 95 | 160 | N + 146 | present_temperature | 1 | R | RAM | 0 | 100 | N + 168 | indirect_address_1 | 2 | RW | RAM | 0 | 65535 | N + 224 | indirect_data_1 | 1 | RW | RAM | 0 | 255 | N + 578 | indirect_address_29 | 2 | RW | RAM | 0 | 65535 | N + 634 | indirect_data_29 | 1 | RW | RAM | 0 | 255 | N diff --git a/humanoid_robot_intelligence_control_system_device/devices/dynamixel/XM540-W150.device b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/XM540-W150.device new file mode 100755 index 0000000..64fcf3b --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/XM540-W150.device @@ -0,0 +1,89 @@ +[device info] +model_name = XM540-W150 +device_type = dynamixel + +[type info] +torque_to_current_value_ratio = 289.13672036 +velocity_to_value_ratio = 41.707853 + +value_of_0_radian_position = 2048 +value_of_min_radian_position = 0 +value_of_max_radian_position = 4095 +min_radian = -3.14159265 +max_radian = 3.14159265 + +torque_enable_item_name = torque_enable +present_position_item_name = present_position +present_velocity_item_name = present_velocity +present_current_item_name = present_current +goal_position_item_name = goal_position +goal_velocity_item_name = goal_velocity +goal_current_item_name = goal_current +position_d_gain_item_name = position_d_gain +position_i_gain_item_name = position_i_gain +position_p_gain_item_name = position_p_gain +velocity_d_gain_item_name = +velocity_i_gain_item_name = velocity_i_gain +velocity_p_gain_item_name = velocity_p_gain + +[control table] +# addr | item name | length | access | memory | min value | max value | signed + 0 | model_number | 2 | R | EEPROM | 0 | 65535 | N + 6 | version_of_firmware | 1 | R | EEPROM | 0 | 254 | N + 7 | ID | 1 | RW | EEPROM | 0 | 252 | N + 8 | baudrate | 1 | RW | EEPROM | 0 | 7 | N + 9 | return_delay_time | 1 | RW | EEPROM | 0 | 254 | N + 10 | drive_mode | 1 | RW | EEPROM | 0 | 1 | N + 11 | operating_mode | 1 | RW | EEPROM | 0 | 16 | N + 12 | secondary_id | 1 | RW | EEPROM | 0 | 255 | N + 20 | homing_offset | 4 | RW | EEPROM | -1044479 | 1044479 | Y + 24 | moving_threshold | 4 | RW | EEPROM | 0 | 1023 | N + 31 | max_temperature_limit | 1 | RW | EEPROM | 0 | 100 | N + 32 | max_voltage_limit | 2 | RW | EEPROM | 95 | 160 | N + 34 | min_voltage_limit | 2 | RW | EEPROM | 95 | 160 | N + 36 | pwm_limit | 2 | RW | EEPROM | 0 | 885 | N + 38 | current_limit | 2 | RW | EEPROM | 0 | 1193 | N + 44 | velocity_limit | 4 | RW | EEPROM | 0 | 1023 | N + 48 | max_position_limit | 4 | RW | EEPROM | 0 | 4095 | N + 52 | min_position_limit | 4 | RW | EEPROM | 0 | 4095 | N + 56 | external_port_mod_1 | 1 | RW | EEPROM | 0 | 3 | N + 57 | external_port_mod_2 | 1 | RW | EEPROM | 0 | 3 | N + 58 | external_port_mod_3 | 1 | RW | EEPROM | 0 | 3 | N + 63 | shutdown | 1 | RW | EEPROM | 0 | 255 | N + 64 | torque_enable | 1 | RW | RAM | 0 | 1 | N + 65 | LED | 1 | RW | RAM | 0 | 1 | N + 68 | status_return_level | 1 | RW | RAM | 0 | 2 | N + 69 | registered_instruction | 1 | R | RAM | 0 | 1 | N + 70 | hardware_error_status | 1 | R | RAM | 0 | 255 | N + 76 | velocity_i_gain | 2 | RW | RAM | 0 | 32767 | N + 78 | velocity_p_gain | 2 | RW | RAM | 0 | 32767 | N + 80 | position_d_gain | 2 | RW | RAM | 0 | 32767 | N + 82 | position_i_gain | 2 | RW | RAM | 0 | 32767 | N + 84 | position_p_gain | 2 | RW | RAM | 0 | 32767 | N + 88 | feedforward_2nd_gain | 2 | RW | RAM | 0 | 32767 | N + 90 | feedforward_1st_gain | 2 | RW | RAM | 0 | 32767 | N + 98 | bus_watchdog | 1 | RW | RAM | -1 | 127 | Y + 100 | goal_pwm | 2 | RW | RAM | 0 | 885 | N + 102 | goal_current | 2 | RW | RAM | 0 | 1193 | N + 104 | goal_velocity | 4 | RW | RAM | 0 | 1023 | N + 108 | profile_acceleration | 4 | RW | RAM | 0 | 32767 | N + 112 | profile_velocity | 4 | RW | RAM | 0 | 1023 | N + 116 | goal_position | 4 | RW | RAM | -1048575 | 1048575 | Y + 120 | realtime_tick | 2 | R | RAM | 0 | 32767 | N + 122 | moving | 1 | R | RAM | 0 | 1 | N + 123 | moving_status | 1 | R | RAM | 0 | 255 | N + 124 | present_pwm | 2 | R | RAM | 0 | 885 | N + 126 | present_current | 2 | R | RAM | 0 | 1193 | N + 128 | present_velocity | 4 | R | RAM | 0 | 1023 | N + 132 | present_position | 4 | R | RAM | -2147483648 | 2147483647 | Y + 136 | velocity_trajectory | 4 | R | RAM | 0 | 1023 | N + 140 | position_trajectory | 4 | R | RAM | 0 | 4095 | N + 144 | present_input_voltage | 2 | R | RAM | 95 | 160 | N + 146 | present_temperature | 1 | R | RAM | 0 | 100 | N + 152 | external_port_data_1 | 2 | RW | RAM | 0 | 4095 | N + 154 | external_port_data_2 | 2 | RW | RAM | 0 | 4095 | N + 156 | external_port_data_3 | 2 | RW | RAM | 0 | 4095 | N + 168 | indirect_address_1 | 2 | RW | RAM | 0 | 65535 | N + 224 | indirect_data_1 | 1 | RW | RAM | 0 | 255 | N + 578 | indirect_address_29 | 2 | RW | RAM | 0 | 65535 | N + 634 | indirect_data_29 | 1 | RW | RAM | 0 | 255 | N diff --git a/humanoid_robot_intelligence_control_system_device/devices/dynamixel/XM540-W270.device b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/XM540-W270.device new file mode 100755 index 0000000..c787cba --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/devices/dynamixel/XM540-W270.device @@ -0,0 +1,89 @@ +[device info] +model_name = XM540-W270 +device_type = dynamixel + +[type info] +torque_to_current_value_ratio = 156.133829 +velocity_to_value_ratio = 41.707853 + +value_of_0_radian_position = 2048 +value_of_min_radian_position = 0 +value_of_max_radian_position = 4095 +min_radian = -3.14159265 +max_radian = 3.14159265 + +torque_enable_item_name = torque_enable +present_position_item_name = present_position +present_velocity_item_name = present_velocity +present_current_item_name = present_current +goal_position_item_name = goal_position +goal_velocity_item_name = goal_velocity +goal_current_item_name = goal_current +position_d_gain_item_name = position_d_gain +position_i_gain_item_name = position_i_gain +position_p_gain_item_name = position_p_gain +velocity_d_gain_item_name = +velocity_i_gain_item_name = velocity_i_gain +velocity_p_gain_item_name = velocity_p_gain + +[control table] +# addr | item name | length | access | memory | min value | max value | signed + 0 | model_number | 2 | R | EEPROM | 0 | 65535 | N + 6 | version_of_firmware | 1 | R | EEPROM | 0 | 254 | N + 7 | ID | 1 | RW | EEPROM | 0 | 252 | N + 8 | baudrate | 1 | RW | EEPROM | 0 | 7 | N + 9 | return_delay_time | 1 | RW | EEPROM | 0 | 254 | N + 10 | drive_mode | 1 | RW | EEPROM | 0 | 1 | N + 11 | operating_mode | 1 | RW | EEPROM | 0 | 16 | N + 12 | secondary_id | 1 | RW | EEPROM | 0 | 255 | N + 20 | homing_offset | 4 | RW | EEPROM | -1044479 | 1044479 | Y + 24 | moving_threshold | 4 | RW | EEPROM | 0 | 1023 | N + 31 | max_temperature_limit | 1 | RW | EEPROM | 0 | 100 | N + 32 | max_voltage_limit | 2 | RW | EEPROM | 95 | 160 | N + 34 | min_voltage_limit | 2 | RW | EEPROM | 95 | 160 | N + 36 | pwm_limit | 2 | RW | EEPROM | 0 | 885 | N + 38 | current_limit | 2 | RW | EEPROM | 0 | 1193 | N + 44 | velocity_limit | 4 | RW | EEPROM | 0 | 1023 | N + 48 | max_position_limit | 4 | RW | EEPROM | 0 | 4095 | N + 52 | min_position_limit | 4 | RW | EEPROM | 0 | 4095 | N + 56 | external_port_mod_1 | 1 | RW | EEPROM | 0 | 3 | N + 57 | external_port_mod_2 | 1 | RW | EEPROM | 0 | 3 | N + 58 | external_port_mod_3 | 1 | RW | EEPROM | 0 | 3 | N + 63 | shutdown | 1 | RW | EEPROM | 0 | 255 | N + 64 | torque_enable | 1 | RW | RAM | 0 | 1 | N + 65 | LED | 1 | RW | RAM | 0 | 1 | N + 68 | status_return_level | 1 | RW | RAM | 0 | 2 | N + 69 | registered_instruction | 1 | R | RAM | 0 | 1 | N + 70 | hardware_error_status | 1 | R | RAM | 0 | 255 | N + 76 | velocity_i_gain | 2 | RW | RAM | 0 | 32767 | N + 78 | velocity_p_gain | 2 | RW | RAM | 0 | 32767 | N + 80 | position_d_gain | 2 | RW | RAM | 0 | 32767 | N + 82 | position_i_gain | 2 | RW | RAM | 0 | 32767 | N + 84 | position_p_gain | 2 | RW | RAM | 0 | 32767 | N + 88 | feedforward_2nd_gain | 2 | RW | RAM | 0 | 32767 | N + 90 | feedforward_1st_gain | 2 | RW | RAM | 0 | 32767 | N + 98 | bus_watchdog | 1 | RW | RAM | -1 | 127 | Y + 100 | goal_pwm | 2 | RW | RAM | 0 | 885 | N + 102 | goal_current | 2 | RW | RAM | 0 | 1193 | N + 104 | goal_velocity | 4 | RW | RAM | 0 | 1023 | N + 108 | profile_acceleration | 4 | RW | RAM | 0 | 32767 | N + 112 | profile_velocity | 4 | RW | RAM | 0 | 1023 | N + 116 | goal_position | 4 | RW | RAM | -1048575 | 1048575 | Y + 120 | realtime_tick | 2 | R | RAM | 0 | 32767 | N + 122 | moving | 1 | R | RAM | 0 | 1 | N + 123 | moving_status | 1 | R | RAM | 0 | 255 | N + 124 | present_pwm | 2 | R | RAM | 0 | 885 | N + 126 | present_current | 2 | R | RAM | 0 | 1193 | N + 128 | present_velocity | 4 | R | RAM | 0 | 1023 | N + 132 | present_position | 4 | R | RAM | -2147483648 | 2147483647 | Y + 136 | velocity_trajectory | 4 | R | RAM | 0 | 1023 | N + 140 | position_trajectory | 4 | R | RAM | 0 | 4095 | N + 144 | present_input_voltage | 2 | R | RAM | 95 | 160 | N + 146 | present_temperature | 1 | R | RAM | 0 | 100 | N + 152 | external_port_data_1 | 2 | RW | RAM | 0 | 4095 | N + 154 | external_port_data_2 | 2 | RW | RAM | 0 | 4095 | N + 156 | external_port_data_3 | 2 | RW | RAM | 0 | 4095 | N + 168 | indirect_address_1 | 2 | RW | RAM | 0 | 65535 | N + 224 | indirect_data_1 | 1 | RW | RAM | 0 | 255 | N + 578 | indirect_address_29 | 2 | RW | RAM | 0 | 65535 | N + 634 | indirect_data_29 | 1 | RW | RAM | 0 | 255 | N diff --git a/humanoid_robot_intelligence_control_system_device/devices/sensor/CM-740.device b/humanoid_robot_intelligence_control_system_device/devices/sensor/CM-740.device new file mode 100755 index 0000000..5cdf45f --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/devices/sensor/CM-740.device @@ -0,0 +1,25 @@ +[device info] +model_name = CM-740 +device_type = sensor + +[control table] +# addr | item name | length | access | memory | min value | max value | signed + 0 | model_number | 2 | R | EEPROM | 0 | 65535 | N + 2 | version_of_firmware | 1 | R | EEPROM | 0 | 254 | N + 3 | ID | 1 | RW | EEPROM | 0 | 252 | N + 4 | baudrate | 1 | RW | EEPROM | 0 | 252 | N + 5 | return_delay_time | 1 | RW | EEPROM | 0 | 254 | N + 16 | status_return_level | 1 | RW | EEPROM | 0 | 2 | N + 24 | torque_enable | 1 | RW | RAM | 0 | 1 | N + 25 | LED | 1 | RW | RAM | 0 | 7 | N + 26 | LED_5 | 2 | RW | RAM | 0 | 32767 | N + 28 | LED_6 | 2 | RW | RAM | 0 | 32767 | N + 30 | button | 1 | RW | RAM | 0 | 3 | N + 38 | gyro_z | 2 | R | RAM | 0 | 1023 | N + 40 | gyro_y | 2 | R | RAM | 0 | 1023 | N + 42 | gyro_x | 2 | R | RAM | 0 | 1023 | N + 44 | acc_x | 2 | R | RAM | 0 | 1023 | N + 46 | acc_y | 2 | R | RAM | 0 | 1023 | N + 48 | acc_z | 2 | R | RAM | 0 | 1023 | N + 50 | present_voltage | 1 | R | RAM | 50 | 250 | N + \ No newline at end of file diff --git a/humanoid_robot_intelligence_control_system_device/devices/sensor/OPEN-CR.device b/humanoid_robot_intelligence_control_system_device/devices/sensor/OPEN-CR.device new file mode 100755 index 0000000..71cee8e --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/devices/sensor/OPEN-CR.device @@ -0,0 +1,30 @@ +[device info] +model_name = OPEN-CR +device_type = sensor + +[control table] +# addr | item name | length | access | memory | min value | max value | signed + 0 | model_number | 2 | R | EEPROM | 0 | 65535 | N + 2 | version_of_firmware | 1 | R | EEPROM | 0 | 254 | N + 3 | ID | 1 | RW | EEPROM | 0 | 252 | N + 4 | baudrate | 1 | RW | EEPROM | 0 | 252 | N + 5 | return_delay_time | 1 | RW | EEPROM | 0 | 254 | N + 16 | status_return_level | 1 | RW | EEPROM | 0 | 2 | N + 24 | dynamixel_power | 1 | RW | RAM | 0 | 1 | N + 25 | LED | 1 | RW | RAM | 0 | 7 | N + 26 | LED_RGB | 2 | RW | RAM | 0 | 32767 | N + 28 | buzzer | 2 | RW | RAM | 0 | 65535 | N + 30 | button | 1 | R | RAM | 0 | 15 | N + 31 | present_voltage | 1 | R | RAM | 50 | 250 | N + 32 | gyro_x | 2 | R | RAM | -32800 | 32800 | Y + 34 | gyro_y | 2 | R | RAM | -32800 | 32800 | Y + 36 | gyro_z | 2 | R | RAM | -32800 | 32800 | Y + 38 | acc_x | 2 | R | RAM | -32768 | 32768 | Y + 40 | acc_y | 2 | R | RAM | -32768 | 32768 | Y + 42 | acc_z | 2 | R | RAM | -32768 | 32768 | Y + 44 | roll | 2 | R | RAM | 0 | 4096 | N + 46 | pitch | 2 | R | RAM | 0 | 4096 | N + 48 | yaw | 2 | R | RAM | 0 | 4096 | N + 50 | imu_control | 1 | RW | RAM | 0 | 255 | N + + \ No newline at end of file diff --git a/humanoid_robot_intelligence_control_system_device/include/humanoid_robot_intelligence_control_system_device/control_table_item.h b/humanoid_robot_intelligence_control_system_device/include/humanoid_robot_intelligence_control_system_device/control_table_item.h new file mode 100755 index 0000000..9b0a878 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/include/humanoid_robot_intelligence_control_system_device/control_table_item.h @@ -0,0 +1,54 @@ +/******************************************************************************* + * Copyright 2018 ROBOTIS CO., LTD. + * + * 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. + *******************************************************************************/ + +/* + * control_table_item.h + * + * Created on: 2015. 12. 16. + * Author: zerom + */ + +#ifndef ROBOTIS_DEVICE_CONTROL_TABLE_ITEM_H_ +#define ROBOTIS_DEVICE_CONTROL_TABLE_ITEM_H_ + +#include + +namespace humanoid_robot_intelligence_control_system_framework { + +enum AccessType { Read, ReadWrite }; + +enum MemoryType { EEPROM, RAM }; + +class ControlTableItem { +public: + std::string item_name_; + uint16_t address_; + AccessType access_type_; + MemoryType memory_type_; + uint8_t data_length_; + int32_t data_min_value_; + int32_t data_max_value_; + bool is_signed_; + + ControlTableItem() + : item_name_(""), address_(0), access_type_(Read), memory_type_(RAM), + data_length_(0), data_min_value_(0), data_max_value_(0), + is_signed_(false) {} +}; + +} // namespace humanoid_robot_intelligence_control_system_framework + +#endif /* ROBOTIS_DEVICE_CONTROL_TABLE_ITEM_H_ */ diff --git a/humanoid_robot_intelligence_control_system_device/include/humanoid_robot_intelligence_control_system_device/device.h b/humanoid_robot_intelligence_control_system_device/include/humanoid_robot_intelligence_control_system_device/device.h new file mode 100755 index 0000000..c14deb0 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/include/humanoid_robot_intelligence_control_system_device/device.h @@ -0,0 +1,54 @@ +/******************************************************************************* +* Copyright 2018 ROBOTIS CO., LTD. +* +* 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. +*******************************************************************************/ + +/* + * device.h + * + * Created on: 2016. 5. 12. + * Author: zerom + */ + +#ifndef ROBOTIS_DEVICE_DEVICE_H_ +#define ROBOTIS_DEVICE_DEVICE_H_ + + +#include +#include +#include + +#include "control_table_item.h" + +namespace humanoid_robot_intelligence_control_system_framework +{ + +class Device +{ +public: + uint8_t id_; + float protocol_version_; + std::string model_name_; + std::string port_name_; + + std::map ctrl_table_; + std::vector bulk_read_items_; + + virtual ~Device() { } +}; + +} + + +#endif /* ROBOTIS_DEVICE_DEVICE_H_ */ diff --git a/humanoid_robot_intelligence_control_system_device/include/humanoid_robot_intelligence_control_system_device/dynamixel.h b/humanoid_robot_intelligence_control_system_device/include/humanoid_robot_intelligence_control_system_device/dynamixel.h new file mode 100755 index 0000000..329b626 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/include/humanoid_robot_intelligence_control_system_device/dynamixel.h @@ -0,0 +1,83 @@ +/******************************************************************************* +* Copyright 2018 ROBOTIS CO., LTD. +* +* 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. +*******************************************************************************/ + +/* + * dynamixel.h + * + * Created on: 2015. 12. 8. + * Author: zerom + */ + +#ifndef ROBOTIS_DEVICE_DYNAMIXEL_H_ +#define ROBOTIS_DEVICE_DYNAMIXEL_H_ + + +#include +#include +#include + +#include "control_table_item.h" +#include "device.h" +#include "dynamixel_state.h" + +namespace humanoid_robot_intelligence_control_system_framework +{ + +class Dynamixel : public Device +{ +public: + std::string ctrl_module_name_; + DynamixelState *dxl_state_; + + double velocity_to_value_ratio_; + double torque_to_current_value_ratio_; + + int32_t value_of_0_radian_position_; + int32_t value_of_min_radian_position_; + int32_t value_of_max_radian_position_; + double min_radian_; + double max_radian_; + + ControlTableItem *torque_enable_item_; + ControlTableItem *present_position_item_; + ControlTableItem *present_velocity_item_; + ControlTableItem *present_current_item_; + ControlTableItem *goal_position_item_; + ControlTableItem *goal_velocity_item_; + ControlTableItem *goal_current_item_; + ControlTableItem *position_p_gain_item_; + ControlTableItem *position_i_gain_item_; + ControlTableItem *position_d_gain_item_; + ControlTableItem *velocity_p_gain_item_; + ControlTableItem *velocity_i_gain_item_; + ControlTableItem *velocity_d_gain_item_; + + Dynamixel(int id, std::string model_name, float protocol_version); + + double convertValue2Radian(int32_t value); + int32_t convertRadian2Value(double radian); + + double convertValue2Velocity(int32_t value); + int32_t convertVelocity2Value(double velocity); + + double convertValue2Torque(int16_t value); + int16_t convertTorque2Value(double torque); +}; + +} + + +#endif /* ROBOTIS_DEVICE_DYNAMIXEL_H_ */ diff --git a/humanoid_robot_intelligence_control_system_device/include/humanoid_robot_intelligence_control_system_device/dynamixel_state.h b/humanoid_robot_intelligence_control_system_device/include/humanoid_robot_intelligence_control_system_device/dynamixel_state.h new file mode 100755 index 0000000..b915824 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/include/humanoid_robot_intelligence_control_system_device/dynamixel_state.h @@ -0,0 +1,82 @@ +/******************************************************************************* +* Copyright 2018 ROBOTIS CO., LTD. +* +* 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. +*******************************************************************************/ + +/* + * dynamixel_state.h + * + * Created on: 2015. 12. 8. + * Author: zerom + */ + +#ifndef ROBOTIS_DEVICE_DYNAMIXEL_STATE_H_ +#define ROBOTIS_DEVICE_DYNAMIXEL_STATE_H_ + +#include + +#include "time_stamp.h" + +#define INDIRECT_DATA_1 "indirect_data_1" +#define INDIRECT_ADDRESS_1 "indirect_address_1" + +namespace humanoid_robot_intelligence_control_system_framework +{ + +class DynamixelState +{ +public: + TimeStamp update_time_stamp_; + + double present_position_; + double present_velocity_; + double present_torque_; + double goal_position_; + double goal_velocity_; + double goal_torque_; + int position_p_gain_; + int position_i_gain_; + int position_d_gain_; + int velocity_p_gain_; + int velocity_i_gain_; + int velocity_d_gain_; + + std::map bulk_read_table_; + + double position_offset_; + + DynamixelState() + : update_time_stamp_(0, 0), + present_position_(0.0), + present_velocity_(0.0), + present_torque_(0.0), + goal_position_(0.0), + goal_velocity_(0.0), + goal_torque_(0.0), + position_p_gain_(65535), + position_i_gain_(65535), + position_d_gain_(65535), + velocity_p_gain_(65535), + velocity_i_gain_(65535), + velocity_d_gain_(65535), + position_offset_(0) + { + bulk_read_table_.clear(); + } +}; + +} + + +#endif /* ROBOTIS_DEVICE_DYNAMIXEL_STATE_H_ */ diff --git a/humanoid_robot_intelligence_control_system_device/include/humanoid_robot_intelligence_control_system_device/robot.h b/humanoid_robot_intelligence_control_system_device/include/humanoid_robot_intelligence_control_system_device/robot.h new file mode 100755 index 0000000..15350bd --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/include/humanoid_robot_intelligence_control_system_device/robot.h @@ -0,0 +1,72 @@ +/******************************************************************************* +* Copyright 2018 ROBOTIS CO., LTD. +* +* 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. +*******************************************************************************/ + +/* + * robot.h + * + * Created on: 2015. 12. 11. + * Author: zerom + */ + +#ifndef ROBOTIS_DEVICE_ROBOT_H_ +#define ROBOTIS_DEVICE_ROBOT_H_ + + +#include + +#include "sensor.h" +#include "dynamixel.h" +#include "dynamixel_sdk/port_handler.h" + +#define DYNAMIXEL "dynamixel" +#define SENSOR "sensor" + +#define SESSION_CONTROL_INFO "control info" +#define SESSION_PORT_INFO "port info" +#define SESSION_DEVICE_INFO "device info" + +#define SESSION_TYPE_INFO "type info" +#define SESSION_CONTROL_TABLE "control table" + +#define DEFAULT_CONTROL_CYCLE 8 // milliseconds + +namespace humanoid_robot_intelligence_control_system_framework +{ + +class Robot +{ +private: + int control_cycle_msec_; + +public: + std::map ports_; // string: port name + std::map port_default_device_; // port name, default device name + + std::map dxls_; // string: joint name + std::map sensors_; // string: sensor name + + Robot(std::string robot_file_path, std::string dev_desc_dir_path); + + Sensor *getSensor(std::string path, int id, std::string port, float protocol_version); + Dynamixel *getDynamixel(std::string path, int id, std::string port, float protocol_version); + + int getControlCycle(); +}; + +} + + +#endif /* ROBOTIS_DEVICE_ROBOT_H_ */ diff --git a/humanoid_robot_intelligence_control_system_device/include/humanoid_robot_intelligence_control_system_device/sensor.h b/humanoid_robot_intelligence_control_system_device/include/humanoid_robot_intelligence_control_system_device/sensor.h new file mode 100755 index 0000000..32abe6c --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/include/humanoid_robot_intelligence_control_system_device/sensor.h @@ -0,0 +1,49 @@ +/******************************************************************************* +* Copyright 2018 ROBOTIS CO., LTD. +* +* 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. +*******************************************************************************/ + +/* + * sensor.h + * + * Created on: 2015. 12. 16. + * Author: zerom + */ + +#ifndef ROBOTIS_DEVICE_SENSOR_H_ +#define ROBOTIS_DEVICE_SENSOR_H_ + +#include +#include +#include + +#include "device.h" +#include "sensor_state.h" +#include "control_table_item.h" + +namespace humanoid_robot_intelligence_control_system_framework +{ + +class Sensor : public Device +{ +public: + SensorState *sensor_state_; + + Sensor(int id, std::string model_name, float protocol_version); +}; + +} + + +#endif /* ROBOTIS_DEVICE_SENSOR_H_ */ diff --git a/humanoid_robot_intelligence_control_system_device/include/humanoid_robot_intelligence_control_system_device/sensor_state.h b/humanoid_robot_intelligence_control_system_device/include/humanoid_robot_intelligence_control_system_device/sensor_state.h new file mode 100755 index 0000000..08f61ba --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/include/humanoid_robot_intelligence_control_system_device/sensor_state.h @@ -0,0 +1,50 @@ +/******************************************************************************* +* Copyright 2018 ROBOTIS CO., LTD. +* +* 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. +*******************************************************************************/ + +/* + * sensor_state.h + * + * Created on: 2016. 5. 16. + * Author: zerom + */ + +#ifndef ROBOTIS_DEVICE_SENSOR_STATE_H_ +#define ROBOTIS_DEVICE_SENSOR_STATE_H_ + + +#include "time_stamp.h" + +namespace humanoid_robot_intelligence_control_system_framework +{ + +class SensorState +{ +public: + TimeStamp update_time_stamp_; + + std::map bulk_read_table_; + + SensorState() + : update_time_stamp_(0, 0) + { + bulk_read_table_.clear(); + } +}; + +} + + +#endif /* ROBOTIS_DEVICE_SENSOR_STATE_H_ */ diff --git a/humanoid_robot_intelligence_control_system_device/include/humanoid_robot_intelligence_control_system_device/time_stamp.h b/humanoid_robot_intelligence_control_system_device/include/humanoid_robot_intelligence_control_system_device/time_stamp.h new file mode 100755 index 0000000..87f59f4 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/include/humanoid_robot_intelligence_control_system_device/time_stamp.h @@ -0,0 +1,39 @@ +/******************************************************************************* + * Copyright 2018 ROBOTIS CO., LTD. + * + * 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. + *******************************************************************************/ + +/* + * time_stamp.h + * + * Created on: 2016. 5. 16. + * Author: zerom + */ + +#ifndef ROBOTIS_DEVICE_TIME_STAMP_H_ +#define ROBOTIS_DEVICE_TIME_STAMP_H_ + +namespace humanoid_robot_intelligence_control_system_framework { + +class TimeStamp { +public: + long sec_; + long nsec_; + + TimeStamp(long sec, long nsec) : sec_(sec), nsec_(nsec) {} +}; + +} // namespace humanoid_robot_intelligence_control_system_framework + +#endif /* ROBOTIS_DEVICE_TIME_STAMP_H_ */ diff --git a/humanoid_robot_intelligence_control_system_device/package.xml b/humanoid_robot_intelligence_control_system_device/package.xml new file mode 100755 index 0000000..b21c17d --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/package.xml @@ -0,0 +1,38 @@ + + + humanoid_robot_intelligence_control_system_device + 0.3.2 + + The package that manages device information of ROBOTIS robots. + This package is used when reading device information with the robot information file + from the humanoid_robot_intelligence_control_system_controller package. + + Apache 2.0 + + Ronaldson Bellande + + + catkin + + roscpp + dynamixel_sdk + + roscpp + dynamixel_sdk + + roscpp + dynamixel_sdk + + + ament_cmake + + roscpp + dynamixel_sdk + + roscpp + dynamixel_sdk + + roscpp + dynamixel_sdk + + diff --git a/humanoid_robot_intelligence_control_system_device/src/humanoid_robot_intelligence_control_system_device/dynamixel.cpp b/humanoid_robot_intelligence_control_system_device/src/humanoid_robot_intelligence_control_system_device/dynamixel.cpp new file mode 100755 index 0000000..95a01ca --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/src/humanoid_robot_intelligence_control_system_device/dynamixel.cpp @@ -0,0 +1,119 @@ +/******************************************************************************* + * Copyright 2018 ROBOTIS CO., LTD. + * + * 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. + *******************************************************************************/ + +/* + * dynamixel.cpp + * + * Created on: 2015. 12. 8. + * Author: zerom + */ + +#include "humanoid_robot_intelligence_control_system_device/dynamixel.h" + +using namespace humanoid_robot_intelligence_control_system_framework; + +Dynamixel::Dynamixel(int id, std::string model_name, float protocol_version) + : ctrl_module_name_("none"), torque_to_current_value_ratio_(1.0), + velocity_to_value_ratio_(1.0), value_of_0_radian_position_(0), + value_of_min_radian_position_(0), value_of_max_radian_position_(0), + min_radian_(-3.14159265), max_radian_(3.14159265), torque_enable_item_(0), + present_position_item_(0), present_velocity_item_(0), + present_current_item_(0), goal_position_item_(0), goal_velocity_item_(0), + goal_current_item_(0), position_p_gain_item_(0), position_i_gain_item_(0), + position_d_gain_item_(0), velocity_p_gain_item_(0), + velocity_i_gain_item_(0), velocity_d_gain_item_(0) { + this->id_ = id; + this->model_name_ = model_name; + this->port_name_ = ""; + this->protocol_version_ = protocol_version; + + ctrl_table_.clear(); + dxl_state_ = new DynamixelState(); + + bulk_read_items_.clear(); +} + +double Dynamixel::convertValue2Radian(int32_t value) { + double radian = 0.0; + if (value > value_of_0_radian_position_) { + if (max_radian_ <= 0) + return max_radian_; + + radian = + (double)(value - value_of_0_radian_position_) * max_radian_ / + (double)(value_of_max_radian_position_ - value_of_0_radian_position_); + } else if (value < value_of_0_radian_position_) { + if (min_radian_ >= 0) + return min_radian_; + + radian = + (double)(value - value_of_0_radian_position_) * min_radian_ / + (double)(value_of_min_radian_position_ - value_of_0_radian_position_); + } + + // if (radian > max_radian_) + // return max_radian_; + // else if (radian < min_radian_) + // return min_radian_; + + return radian; +} + +int32_t Dynamixel::convertRadian2Value(double radian) { + int32_t value = 0; + if (radian > 0) { + if (value_of_max_radian_position_ <= value_of_0_radian_position_) + return value_of_max_radian_position_; + + value = (radian * + (value_of_max_radian_position_ - value_of_0_radian_position_) / + max_radian_) + + value_of_0_radian_position_; + } else if (radian < 0) { + if (value_of_min_radian_position_ >= value_of_0_radian_position_) + return value_of_min_radian_position_; + + value = (radian * + (value_of_min_radian_position_ - value_of_0_radian_position_) / + min_radian_) + + value_of_0_radian_position_; + } else + value = value_of_0_radian_position_; + + // if (value > value_of_max_radian_position_) + // return value_of_max_radian_position_; + // else if (value < value_of_min_radian_position_) + // return value_of_min_radian_position_; + + return value; +} + +double Dynamixel::convertValue2Velocity(int32_t value) { + return (double)value / velocity_to_value_ratio_; +} + +int32_t Dynamixel::convertVelocity2Value(double velocity) { + return (int32_t)(velocity * velocity_to_value_ratio_); + ; +} + +double Dynamixel::convertValue2Torque(int16_t value) { + return (double)value / torque_to_current_value_ratio_; +} + +int16_t Dynamixel::convertTorque2Value(double torque) { + return (int16_t)(torque * torque_to_current_value_ratio_); +} diff --git a/humanoid_robot_intelligence_control_system_device/src/humanoid_robot_intelligence_control_system_device/robot.cpp b/humanoid_robot_intelligence_control_system_device/src/humanoid_robot_intelligence_control_system_device/robot.cpp new file mode 100755 index 0000000..c930e86 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/src/humanoid_robot_intelligence_control_system_device/robot.cpp @@ -0,0 +1,480 @@ +/******************************************************************************* + * Copyright 2018 ROBOTIS CO., LTD. + * + * 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. + *******************************************************************************/ + +/* + * robot.cpp + * + * Created on: 2015. 12. 11. + * Author: zerom + */ + +#include +#include +#include + +#include "humanoid_robot_intelligence_control_system_device/robot.h" + +using namespace humanoid_robot_intelligence_control_system_framework; + +static inline std::string <rim(std::string &s) { + s.erase(s.begin(), + std::find_if(s.begin(), s.end(), + std::not1(std::ptr_fun(std::isspace)))); + return s; +} +static inline std::string &rtrim(std::string &s) { + s.erase(std::find_if(s.rbegin(), s.rend(), + std::not1(std::ptr_fun(std::isspace))) + .base(), + s.end()); + return s; +} +static inline std::string &trim(std::string &s) { return ltrim(rtrim(s)); } + +static inline std::vector split(const std::string &text, + char sep) { + std::vector tokens; + std::size_t start = 0, end = 0; + + while ((end = text.find(sep, start)) != (std::string::npos)) { + tokens.push_back(text.substr(start, end - start)); + trim(tokens.back()); + start = end + 1; + } + tokens.push_back(text.substr(start)); + trim(tokens.back()); + + return tokens; +} + +Robot::Robot(std::string robot_file_path, std::string dev_desc_dir_path) + : control_cycle_msec_(DEFAULT_CONTROL_CYCLE) { + if (dev_desc_dir_path.compare(dev_desc_dir_path.size() - 1, 1, "/") != 0) + dev_desc_dir_path += "/"; + + std::ifstream file(robot_file_path.c_str()); + if (file.is_open()) { + std::string session = ""; + std::string input_str; + while (!file.eof()) { + std::getline(file, input_str); + + // remove comment ( # ) + std::size_t pos = input_str.find("#"); + if (pos != std::string::npos) + input_str = input_str.substr(0, pos); + + // trim + input_str = trim(input_str); + + // find session + if (!input_str.compare(0, 1, "[") && + !input_str.compare(input_str.size() - 1, 1, "]")) { + input_str = input_str.substr(1, input_str.size() - 2); + std::transform(input_str.begin(), input_str.end(), input_str.begin(), + ::tolower); + session = trim(input_str); + continue; + } + + if (session == SESSION_CONTROL_INFO) { + std::vector tokens = split(input_str, '='); + if (tokens.size() != 2) + continue; + + if (tokens[0] == "control_cycle") + control_cycle_msec_ = std::atoi(tokens[1].c_str()); + } else if (session == SESSION_PORT_INFO) { + std::vector tokens = split(input_str, '|'); + if (tokens.size() != 3) + continue; + + std::cout << tokens[0] << " added. (baudrate: " << tokens[1] << ")" + << std::endl; + + ports_[tokens[0]] = + dynamixel::PortHandler::getPortHandler(tokens[0].c_str()); + ports_[tokens[0]]->setBaudRate(std::atoi(tokens[1].c_str())); + port_default_device_[tokens[0]] = tokens[2]; + } else if (session == SESSION_DEVICE_INFO) { + std::vector tokens = split(input_str, '|'); + if (tokens.size() != 7) + continue; + + if (tokens[0] == DYNAMIXEL) { + std::string file_path = + dev_desc_dir_path + tokens[0] + "/" + tokens[3] + ".device"; + int id = std::atoi(tokens[2].c_str()); + std::string port = tokens[1]; + float protocol = std::atof(tokens[4].c_str()); + std::string dev_name = tokens[5]; + + dxls_[dev_name] = getDynamixel(file_path, id, port, protocol); + + Dynamixel *dxl = dxls_[dev_name]; + std::vector sub_tokens = split(tokens[6], ','); + if (sub_tokens.size() > 0 && sub_tokens[0] != "") { + std::map::iterator indirect_it = + dxl->ctrl_table_.find(INDIRECT_ADDRESS_1); + if (indirect_it != + dxl->ctrl_table_.end()) // INDIRECT_ADDRESS_1 exist + { + uint16_t indirect_data_addr = + dxl->ctrl_table_[INDIRECT_DATA_1]->address_; + for (int _i = 0; _i < sub_tokens.size(); _i++) { + std::map::iterator + bulkread_it = dxl->ctrl_table_.find(sub_tokens[_i]); + if (bulkread_it == dxl->ctrl_table_.end()) { + fprintf( + stderr, + "\n ##### BULK READ ITEM [ %s ] NOT FOUND!! #####\n\n", + sub_tokens[_i].c_str()); + continue; + } + + dxl->bulk_read_items_.push_back(new ControlTableItem()); + ControlTableItem *dest_item = dxl->bulk_read_items_[_i]; + ControlTableItem *src_item = dxl->ctrl_table_[sub_tokens[_i]]; + + dest_item->item_name_ = src_item->item_name_; + dest_item->address_ = indirect_data_addr; + dest_item->access_type_ = src_item->access_type_; + dest_item->memory_type_ = src_item->memory_type_; + dest_item->data_length_ = src_item->data_length_; + dest_item->data_min_value_ = src_item->data_min_value_; + dest_item->data_max_value_ = src_item->data_max_value_; + dest_item->is_signed_ = src_item->is_signed_; + + indirect_data_addr += dest_item->data_length_; + } + } else // INDIRECT_ADDRESS_1 not exist + { + for (int i = 0; i < sub_tokens.size(); i++) { + if (dxl->ctrl_table_[sub_tokens[i]] != NULL) + dxl->bulk_read_items_.push_back( + dxl->ctrl_table_[sub_tokens[i]]); + } + } + } + } else if (tokens[0] == SENSOR) { + std::string file_path = + dev_desc_dir_path + tokens[0] + "/" + tokens[3] + ".device"; + int id = std::atoi(tokens[2].c_str()); + std::string port = tokens[1]; + float protocol = std::atof(tokens[4].c_str()); + std::string dev_name = tokens[5]; + + sensors_[dev_name] = getSensor(file_path, id, port, protocol); + + Sensor *sensor = sensors_[dev_name]; + std::vector sub_tokens = split(tokens[6], ','); + if (sub_tokens.size() > 0 && sub_tokens[0] != "") { + std::map::iterator indirect_it = + sensor->ctrl_table_.find(INDIRECT_ADDRESS_1); + if (indirect_it != + sensor->ctrl_table_.end()) // INDIRECT_ADDRESS_1 exist + { + uint16_t indirect_data_addr = + sensor->ctrl_table_[INDIRECT_DATA_1]->address_; + for (int i = 0; i < sub_tokens.size(); i++) { + sensor->bulk_read_items_.push_back(new ControlTableItem()); + ControlTableItem *dest_item = sensor->bulk_read_items_[i]; + ControlTableItem *src_item = sensor->ctrl_table_[sub_tokens[i]]; + + dest_item->item_name_ = src_item->item_name_; + dest_item->address_ = indirect_data_addr; + dest_item->access_type_ = src_item->access_type_; + dest_item->memory_type_ = src_item->memory_type_; + dest_item->data_length_ = src_item->data_length_; + dest_item->data_min_value_ = src_item->data_min_value_; + dest_item->data_max_value_ = src_item->data_max_value_; + dest_item->is_signed_ = src_item->is_signed_; + + indirect_data_addr += dest_item->data_length_; + } + } else // INDIRECT_ADDRESS_1 exist + { + for (int i = 0; i < sub_tokens.size(); i++) + sensor->bulk_read_items_.push_back( + sensor->ctrl_table_[sub_tokens[i]]); + } + } + } + } + } + file.close(); + } else { + std::cout << "Unable to open file : " + robot_file_path << std::endl; + } +} + +Sensor *Robot::getSensor(std::string path, int id, std::string port, + float protocol_version) { + Sensor *sensor; + + // load file model_name.device + std::ifstream file(path.c_str()); + if (file.is_open()) { + std::string session = ""; + std::string input_str; + + while (!file.eof()) { + std::getline(file, input_str); + + // remove comment ( # ) + std::size_t pos = input_str.find("#"); + if (pos != std::string::npos) + input_str = input_str.substr(0, pos); + + // trim + input_str = trim(input_str); + if (input_str == "") + continue; + + // find _session + if (!input_str.compare(0, 1, "[") && + !input_str.compare(input_str.size() - 1, 1, "]")) { + input_str = input_str.substr(1, input_str.size() - 2); + std::transform(input_str.begin(), input_str.end(), input_str.begin(), + ::tolower); + session = trim(input_str); + continue; + } + + if (session == SESSION_DEVICE_INFO) { + std::vector tokens = split(input_str, '='); + if (tokens.size() != 2) + continue; + + if (tokens[0] == "model_name") + sensor = new Sensor(id, tokens[1], protocol_version); + } else if (session == SESSION_CONTROL_TABLE) { + std::vector tokens = split(input_str, '|'); + if (tokens.size() != 8) + continue; + + ControlTableItem *item = new ControlTableItem(); + item->item_name_ = tokens[1]; + item->address_ = std::atoi(tokens[0].c_str()); + item->data_length_ = std::atoi(tokens[2].c_str()); + + if (tokens[3] == "R") + item->access_type_ = Read; + else if (tokens[3] == "RW") + item->access_type_ = ReadWrite; + + if (tokens[4] == "EEPROM") + item->memory_type_ = EEPROM; + else if (tokens[4] == "RAM") + item->memory_type_ = RAM; + + item->data_min_value_ = std::atol(tokens[5].c_str()); + item->data_max_value_ = std::atol(tokens[6].c_str()); + + if (tokens[7] == "Y") + item->is_signed_ = true; + else if (tokens[7] == "N") + item->is_signed_ = false; + sensor->ctrl_table_[tokens[1]] = item; + } + } + sensor->port_name_ = port; + + fprintf(stderr, "(%s) [ID:%3d] %14s added. \n", port.c_str(), sensor->id_, + sensor->model_name_.c_str()); + // std::cout << "[ID:" << (int)(_sensor->id) << "] " << _sensor->model_name + // << " added. (" << port << ")" << std::endl; + file.close(); + } else + std::cout << "Unable to open file : " + path << std::endl; + + return sensor; +} + +Dynamixel *Robot::getDynamixel(std::string path, int id, std::string port, + float protocol_version) { + Dynamixel *dxl; + + // load file model_name.device + std::ifstream file(path.c_str()); + if (file.is_open()) { + std::string session = ""; + std::string input_str; + + std::string torque_enable_item_name = ""; + std::string present_position_item_name = ""; + std::string present_velocity_item_name = ""; + std::string present_current_item_name = ""; + std::string goal_position_item_name = ""; + std::string goal_velocity_item_name = ""; + std::string goal_current_item_name = ""; + std::string position_d_gain_item_name = ""; + std::string position_i_gain_item_name = ""; + std::string position_p_gain_item_name = ""; + std::string velocity_d_gain_item_name = ""; + std::string velocity_i_gain_item_name = ""; + std::string velocity_p_gain_item_name = ""; + + while (!file.eof()) { + std::getline(file, input_str); + + // remove comment ( # ) + std::size_t pos = input_str.find("#"); + if (pos != std::string::npos) + input_str = input_str.substr(0, pos); + + // trim + input_str = trim(input_str); + if (input_str == "") + continue; + + // find session + if (!input_str.compare(0, 1, "[") && + !input_str.compare(input_str.size() - 1, 1, "]")) { + input_str = input_str.substr(1, input_str.size() - 2); + std::transform(input_str.begin(), input_str.end(), input_str.begin(), + ::tolower); + session = trim(input_str); + continue; + } + + if (session == SESSION_DEVICE_INFO) { + std::vector tokens = split(input_str, '='); + if (tokens.size() != 2) + continue; + + if (tokens[0] == "model_name") + dxl = new Dynamixel(id, tokens[1], protocol_version); + } else if (session == SESSION_TYPE_INFO) { + std::vector tokens = split(input_str, '='); + if (tokens.size() != 2) + continue; + + if (tokens[0] == "torque_to_current_value_ratio") + dxl->torque_to_current_value_ratio_ = std::atof(tokens[1].c_str()); + else if (tokens[0] == "velocity_to_value_ratio") + dxl->velocity_to_value_ratio_ = std::atof(tokens[1].c_str()); + + else if (tokens[0] == "value_of_0_radian_position") + dxl->value_of_0_radian_position_ = std::atoi(tokens[1].c_str()); + else if (tokens[0] == "value_of_min_radian_position") + dxl->value_of_min_radian_position_ = std::atoi(tokens[1].c_str()); + else if (tokens[0] == "value_of_max_radian_position") + dxl->value_of_max_radian_position_ = std::atoi(tokens[1].c_str()); + else if (tokens[0] == "min_radian") + dxl->min_radian_ = std::atof(tokens[1].c_str()); + else if (tokens[0] == "max_radian") + dxl->max_radian_ = std::atof(tokens[1].c_str()); + + else if (tokens[0] == "torque_enable_item_name") + torque_enable_item_name = tokens[1]; + else if (tokens[0] == "present_position_item_name") + present_position_item_name = tokens[1]; + else if (tokens[0] == "present_velocity_item_name") + present_velocity_item_name = tokens[1]; + else if (tokens[0] == "present_current_item_name") + present_current_item_name = tokens[1]; + else if (tokens[0] == "goal_position_item_name") + goal_position_item_name = tokens[1]; + else if (tokens[0] == "goal_velocity_item_name") + goal_velocity_item_name = tokens[1]; + else if (tokens[0] == "goal_current_item_name") + goal_current_item_name = tokens[1]; + else if (tokens[0] == "position_d_gain_item_name") + position_d_gain_item_name = tokens[1]; + else if (tokens[0] == "position_i_gain_item_name") + position_i_gain_item_name = tokens[1]; + else if (tokens[0] == "position_p_gain_item_name") + position_p_gain_item_name = tokens[1]; + else if (tokens[0] == "velocity_d_gain_item_name") + velocity_d_gain_item_name = tokens[1]; + else if (tokens[0] == "velocity_i_gain_item_name") + velocity_i_gain_item_name = tokens[1]; + else if (tokens[0] == "velocity_p_gain_item_name") + velocity_p_gain_item_name = tokens[1]; + } else if (session == SESSION_CONTROL_TABLE) { + std::vector tokens = split(input_str, '|'); + if (tokens.size() != 8) + continue; + + ControlTableItem *item = new ControlTableItem(); + item->item_name_ = tokens[1]; + item->address_ = std::atoi(tokens[0].c_str()); + item->data_length_ = std::atoi(tokens[2].c_str()); + + if (tokens[3] == "R") + item->access_type_ = Read; + else if (tokens[3] == "RW") + item->access_type_ = ReadWrite; + + if (tokens[4] == "EEPROM") + item->memory_type_ = EEPROM; + else if (tokens[4] == "RAM") + item->memory_type_ = RAM; + + item->data_min_value_ = std::atol(tokens[5].c_str()); + item->data_max_value_ = std::atol(tokens[6].c_str()); + + if (tokens[7] == "Y") + item->is_signed_ = true; + else if (tokens[7] == "N") + item->is_signed_ = false; + dxl->ctrl_table_[tokens[1]] = item; + } + } + dxl->port_name_ = port; + + if (dxl->ctrl_table_[torque_enable_item_name] != NULL) + dxl->torque_enable_item_ = dxl->ctrl_table_[torque_enable_item_name]; + if (dxl->ctrl_table_[present_position_item_name] != NULL) + dxl->present_position_item_ = + dxl->ctrl_table_[present_position_item_name]; + if (dxl->ctrl_table_[present_velocity_item_name] != NULL) + dxl->present_velocity_item_ = + dxl->ctrl_table_[present_velocity_item_name]; + if (dxl->ctrl_table_[present_current_item_name] != NULL) + dxl->present_current_item_ = dxl->ctrl_table_[present_current_item_name]; + if (dxl->ctrl_table_[goal_position_item_name] != NULL) + dxl->goal_position_item_ = dxl->ctrl_table_[goal_position_item_name]; + if (dxl->ctrl_table_[goal_velocity_item_name] != NULL) + dxl->goal_velocity_item_ = dxl->ctrl_table_[goal_velocity_item_name]; + if (dxl->ctrl_table_[goal_current_item_name] != NULL) + dxl->goal_current_item_ = dxl->ctrl_table_[goal_current_item_name]; + if (dxl->ctrl_table_[position_d_gain_item_name] != NULL) + dxl->position_d_gain_item_ = dxl->ctrl_table_[position_d_gain_item_name]; + if (dxl->ctrl_table_[position_i_gain_item_name] != NULL) + dxl->position_i_gain_item_ = dxl->ctrl_table_[position_i_gain_item_name]; + if (dxl->ctrl_table_[position_p_gain_item_name] != NULL) + dxl->position_p_gain_item_ = dxl->ctrl_table_[position_p_gain_item_name]; + if (dxl->ctrl_table_[velocity_d_gain_item_name] != NULL) + dxl->velocity_d_gain_item_ = dxl->ctrl_table_[velocity_d_gain_item_name]; + if (dxl->ctrl_table_[velocity_i_gain_item_name] != NULL) + dxl->velocity_i_gain_item_ = dxl->ctrl_table_[velocity_i_gain_item_name]; + if (dxl->ctrl_table_[velocity_p_gain_item_name] != NULL) + dxl->velocity_p_gain_item_ = dxl->ctrl_table_[velocity_p_gain_item_name]; + + fprintf(stderr, "(%s) [ID:%3d] %14s added. \n", port.c_str(), dxl->id_, + dxl->model_name_.c_str()); + // std::cout << "[ID:" << (int)(_dxl->id) << "] " << _dxl->model_name << " + // added. (" << port << ")" << std::endl; + file.close(); + } else + std::cout << "Unable to open file : " + path << std::endl; + + return dxl; +} + +int Robot::getControlCycle() { return control_cycle_msec_; } diff --git a/humanoid_robot_intelligence_control_system_device/src/humanoid_robot_intelligence_control_system_device/sensor.cpp b/humanoid_robot_intelligence_control_system_device/src/humanoid_robot_intelligence_control_system_device/sensor.cpp new file mode 100755 index 0000000..6d5e619 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_device/src/humanoid_robot_intelligence_control_system_device/sensor.cpp @@ -0,0 +1,39 @@ +/******************************************************************************* + * Copyright 2018 ROBOTIS CO., LTD. + * + * 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. + *******************************************************************************/ + +/* + * sensor.cpp + * + * Created on: 2016. 5. 11. + * Author: zerom + */ + +#include "humanoid_robot_intelligence_control_system_device/sensor.h" + +using namespace humanoid_robot_intelligence_control_system_framework; + +Sensor::Sensor(int id, std::string model_name, float protocol_version) { + + this->id_ = id; + this->model_name_ = model_name; + this->port_name_ = ""; + this->protocol_version_ = protocol_version; + ctrl_table_.clear(); + + sensor_state_ = new SensorState(); + + bulk_read_items_.clear(); +} From 168da3fdcc084f30f861b9a11a6b8455870e1718 Mon Sep 17 00:00:00 2001 From: Ronaldson Bellande <47253433+RonaldsonBellande@users.noreply.github.com> Date: Thu, 30 Nov 2023 20:17:06 -0500 Subject: [PATCH 02/17] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8b0d5d4..0e48dcd 100755 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ROS/ROS2 Humanoid Robot Framework +# ROS/ROS2 Humanoid Robot Intelligence Control System Framework [![Website](https://img.shields.io/badge/Visit%20our-Website-0099cc?style=for-the-badge)](https://robotics-sensors.github.io) [![Discord](https://img.shields.io/badge/Join%20our-Discord-7289DA?logo=discord&style=for-the-badge)](https://discord.gg/Yc72nd4w) From 64ab8ed368abebbfec5290056b3b4189bfd2dee1 Mon Sep 17 00:00:00 2001 From: Ronaldson Bellande <47253433+RonaldsonBellande@users.noreply.github.com> Date: Thu, 30 Nov 2023 21:19:56 -0500 Subject: [PATCH 03/17] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0e48dcd..76173d3 100755 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ROS/ROS2 Humanoid Robot Intelligence Control System Framework +# ROS/ROS2 {BR&SRI} Humanoid Robot Intelligence Control System Framework [![Website](https://img.shields.io/badge/Visit%20our-Website-0099cc?style=for-the-badge)](https://robotics-sensors.github.io) [![Discord](https://img.shields.io/badge/Join%20our-Discord-7289DA?logo=discord&style=for-the-badge)](https://discord.gg/Yc72nd4w) From c09231f4b48b2309509efc91cc455868229cafc0 Mon Sep 17 00:00:00 2001 From: Ronaldson Bellande <47253433+RonaldsonBellande@users.noreply.github.com> Date: Wed, 6 Dec 2023 13:32:39 -0500 Subject: [PATCH 04/17] Update README.md --- README.md | 78 +++++++++++++++++++++++++++++++------------------------ 1 file changed, 44 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index 76173d3..9195865 100755 --- a/README.md +++ b/README.md @@ -1,51 +1,61 @@ -# ROS/ROS2 {BR&SRI} Humanoid Robot Intelligence Control System Framework +# Welcome to the {BR&SRI} Humanoid Robot Intelligence Control System Demos [![Website](https://img.shields.io/badge/Visit%20our-Website-0099cc?style=for-the-badge)](https://robotics-sensors.github.io) [![Discord](https://img.shields.io/badge/Join%20our-Discord-7289DA?logo=discord&style=for-the-badge)](https://discord.gg/Yc72nd4w) [![Sponsor](https://img.shields.io/badge/Sponsor-Robotics%20Sensors%20Research-red?style=for-the-badge&logo=github)](https://github.com/sponsors/Robotics-Sensors) -# Stats -[![GitHub stars](https://img.shields.io/github/stars/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework.svg?style=social)](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework/stargazers) -[![GitHub forks](https://img.shields.io/github/forks/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework.svg?style=social)](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework/network) -[![GitHub watchers](https://img.shields.io/github/watchers/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework.svg?style=social)](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework/watchers) +## 🤖 Explore Humanoid Robot Intelligence with Us! -[![GitHub issues](https://img.shields.io/github/issues/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework.svg)](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework/issues) -[![GitHub pull requests](https://img.shields.io/github/issues-pr/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework.svg)](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework/pulls) -[![GitHub license](https://img.shields.io/github/license/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework.svg)](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework/blob/main/LICENSE) +Welcome to the {BR&SRI} Humanoid Robot Intelligence Control System Demos repository! Here, we invite you to delve into the fascinating world of humanoid robotics, showcasing the innovative capabilities of our intelligent control system. -[![GitHub last commit](https://img.shields.io/github/last-commit/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework.svg)](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework/commits) -[![Visitor & Github Clones](https://img.shields.io/badge/dynamic/json?color=2e8b57&label=Visitor%20%26%20GitHub%20Clones&query=$.count&url=https://api.github.com/repos/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework/traffic)](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework) +### 🚀 Key Repository Stats --------------------------------------------------------------------------------------------------------- -# Repository Website -https://robotics-sensors.github.io/humanoid_robot_intelligence_control_system_framework +- ![GitHub stars](https://img.shields.io/github/stars/Robotics-Sensors/humanoid_robot_intelligence_control_system_demos.svg?style=social) Starred by the community +- ![GitHub forks](https://img.shields.io/github/forks/Robotics-Sensors/humanoid_robot_intelligence_control_system_demos.svg?style=social) Forked by enthusiasts +- ![GitHub watchers](https://img.shields.io/github/watchers/Robotics-Sensors/humanoid_robot_intelligence_control_system_demos.svg?style=social) Watched by curious minds --------------------------------------------------------------------------------------------------------- -Updated Version [humanoid_robot_intelligence_control_system_framework](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework) readme. -Old Version/Previous Used for Different Context [ROBOTIS-Framework](https://github.com/ROBOTIS-GIT/ROBOTIS-Framework) readme. +- ![GitHub issues](https://img.shields.io/github/issues/Robotics-Sensors/humanoid_robot_intelligence_control_system_demos.svg) Actively addressing issues +- ![GitHub pull requests](https://img.shields.io/github/issues-pr/Robotics-Sensors/humanoid_robot_intelligence_control_system_demos.svg) Welcoming contributions +- ![GitHub license](https://img.shields.io/github/license/Robotics-Sensors/humanoid_robot_intelligence_control_system_demos.svg) Licensed under Apache 2.0 -# Release -[![Latest Release](https://img.shields.io/github/v/release/Robotics-Sensors/humanoid_robot_intelligence_control_system_tools?style=for-the-badge&color=yellow)](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework/releases/) +- ![GitHub last commit](https://img.shields.io/github/last-commit/Robotics-Sensors/humanoid_robot_intelligence_control_system_demos.svg) Latest updates +- ![Visitor & Github Clones](https://img.shields.io/badge/dynamic/json?color=2e8b57&label=Visitor%20%26%20GitHub%20Clones&query=$.count&url=https://api.github.com/repos/Robotics-Sensors/humanoid_robot_intelligence_control_system_demos/traffic) Engaging with the community -# Contact -Depeding on the repository, If you are interested in accessing the complete version or other repository related to this repository, we kindly request that you reach out to the organization's director or the company behind this project. We invite you to explore the USE CASE to understand the specific terms and conditions for usage. To utilize this repository, it is imperative that you adhere to the guidelines outlined in the USE CASE. For those interested in showing their support, becoming a sponsor of the organization is an option, and detailed information can be found within the USE CASE and License documents. Furthermore, we encourage you to join our official Discord community, where you can engage with like-minded individuals, contribute to the project, and stay up-to-date with the latest developments. It's worth noting that while a fraction of research is publicly accessible, the majority remains private. To gain insights into the wealth of knowledge held by the Company or the organization's director, we recommend direct contact for more information. +--- --------------------------------------------------------------------------------------------------------- -## Important -The repository has diverged, as the old commits and codes are under the previous License and -the new commits and codes are under New License +## 🌐 Repository Website --------------------------------------------------------------------------------------------------------- -Latest versions and Maintainer is on organization https://github.com/Robotics-Sensors +Explore our [repository website](https://robotics-sensors.github.io/humanoid_robot_intelligence_control_system_demos) for detailed documentation, tutorials, and additional information about our humanoid robot intelligence control system. +--- -# USE CASE --------------------------------------------------------------------------------------------------------- -* Every repository within our organization is a valuable resource that can be utilized for educational purposes by individuals who actively contribute to the repository or choose to become sponsors of the organization. For those who wish to use our services conversationally, the acquisition of a license and subscription from our company website is mandatory. This ensures that the services are appropriately compensated for their use. Additionally, for the 90% of services designated as private, acquiring a license and subscription can be facilitated through our company website. We encourage interested parties to visit our website to explore and procure the necessary licenses and subscriptions for the diverse range of services and products we offer. Your support and commitment enable us to maintain and enhance the quality of our offerings, contributing to a thriving collaborative environment. --------------------------------------------------------------------------------------------------------- +### 🔄 Updates and Versions -### Maintainer -* Ronaldson Bellande +- **Updated Version:** [humanoid_robot_intelligence_control_system_module](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_demos) +- **Old Version/Previous Used for Different Context:** [ROBOTIS-OP3-Demo](https://github.com/ROBOTIS-GIT/ROBOTIS-OP3-Demo) -## License -This SDK is distributed under the [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0), see [LICENSE](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework/blob/main/LICENSE) and [NOTICE](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework/blob/main/LICENSE) for more information. +--- + +# 🎉 Latest Release + +[![Latest Release](https://img.shields.io/github/v/release/Robotics-Sensors/humanoid_robot_intelligence_control_system_tools?style=for-the-badge&color=yellow)](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_demos/releases/) + +--- + +## 📢 Important Announcement + +The repository has recently undergone significant updates. Older commits and codes are covered under the previous license, while new commits and codes fall under the new license. + +--- + +🚀 For the latest versions and updates, visit our organization: [Robotics-Sensors](https://github.com/Robotics-Sensors). + +### 🧑‍💼 Maintainer + +Meet our dedicated maintainer, **Ronaldson Bellande**. + +--- + +## 📄 License + +This SDK is distributed under the [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0). For detailed information, refer to [LICENSE](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_demos/blob/main/LICENSE) and [NOTICE](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_demos/blob/main/LICENSE). From 61f0da0c0f85a2add973265741ec630f7bc67d2a Mon Sep 17 00:00:00 2001 From: Ronaldson Bellande <47253433+RonaldsonBellande@users.noreply.github.com> Date: Wed, 6 Dec 2023 13:33:44 -0500 Subject: [PATCH 05/17] Update README.md --- README.md | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 9195865..347179d 100755 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Welcome to the {BR&SRI} Humanoid Robot Intelligence Control System Demos +# Welcome to the {BR&SRI} Humanoid Robot Intelligence Control System framework [![Website](https://img.shields.io/badge/Visit%20our-Website-0099cc?style=for-the-badge)](https://robotics-sensors.github.io) [![Discord](https://img.shields.io/badge/Join%20our-Discord-7289DA?logo=discord&style=for-the-badge)](https://discord.gg/Yc72nd4w) @@ -6,39 +6,39 @@ ## 🤖 Explore Humanoid Robot Intelligence with Us! -Welcome to the {BR&SRI} Humanoid Robot Intelligence Control System Demos repository! Here, we invite you to delve into the fascinating world of humanoid robotics, showcasing the innovative capabilities of our intelligent control system. +Welcome to the {BR&SRI} Humanoid Robot Intelligence Control System framework repository! Here, we invite you to delve into the fascinating world of humanoid robotics, showcasing the innovative capabilities of our intelligent control system. ### 🚀 Key Repository Stats -- ![GitHub stars](https://img.shields.io/github/stars/Robotics-Sensors/humanoid_robot_intelligence_control_system_demos.svg?style=social) Starred by the community -- ![GitHub forks](https://img.shields.io/github/forks/Robotics-Sensors/humanoid_robot_intelligence_control_system_demos.svg?style=social) Forked by enthusiasts -- ![GitHub watchers](https://img.shields.io/github/watchers/Robotics-Sensors/humanoid_robot_intelligence_control_system_demos.svg?style=social) Watched by curious minds +- ![GitHub stars](https://img.shields.io/github/stars/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework.svg?style=social) Starred by the community +- ![GitHub forks](https://img.shields.io/github/forks/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework.svg?style=social) Forked by enthusiasts +- ![GitHub watchers](https://img.shields.io/github/watchers/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework.svg?style=social) Watched by curious minds -- ![GitHub issues](https://img.shields.io/github/issues/Robotics-Sensors/humanoid_robot_intelligence_control_system_demos.svg) Actively addressing issues -- ![GitHub pull requests](https://img.shields.io/github/issues-pr/Robotics-Sensors/humanoid_robot_intelligence_control_system_demos.svg) Welcoming contributions -- ![GitHub license](https://img.shields.io/github/license/Robotics-Sensors/humanoid_robot_intelligence_control_system_demos.svg) Licensed under Apache 2.0 +- ![GitHub issues](https://img.shields.io/github/issues/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework.svg) Actively addressing issues +- ![GitHub pull requests](https://img.shields.io/github/issues-pr/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework.svg) Welcoming contributions +- ![GitHub license](https://img.shields.io/github/license/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework.svg) Licensed under Apache 2.0 -- ![GitHub last commit](https://img.shields.io/github/last-commit/Robotics-Sensors/humanoid_robot_intelligence_control_system_demos.svg) Latest updates -- ![Visitor & Github Clones](https://img.shields.io/badge/dynamic/json?color=2e8b57&label=Visitor%20%26%20GitHub%20Clones&query=$.count&url=https://api.github.com/repos/Robotics-Sensors/humanoid_robot_intelligence_control_system_demos/traffic) Engaging with the community +- ![GitHub last commit](https://img.shields.io/github/last-commit/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework.svg) Latest updates +- ![Visitor & Github Clones](https://img.shields.io/badge/dynamic/json?color=2e8b57&label=Visitor%20%26%20GitHub%20Clones&query=$.count&url=https://api.github.com/repos/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework/traffic) Engaging with the community --- ## 🌐 Repository Website -Explore our [repository website](https://robotics-sensors.github.io/humanoid_robot_intelligence_control_system_demos) for detailed documentation, tutorials, and additional information about our humanoid robot intelligence control system. +Explore our [repository website](https://robotics-sensors.github.io/humanoid_robot_intelligence_control_system_framework) for detailed documentation, tutorials, and additional information about our humanoid robot intelligence control system. --- ### 🔄 Updates and Versions -- **Updated Version:** [humanoid_robot_intelligence_control_system_module](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_demos) -- **Old Version/Previous Used for Different Context:** [ROBOTIS-OP3-Demo](https://github.com/ROBOTIS-GIT/ROBOTIS-OP3-Demo) +- **Updated Version:** [humanoid_robot_intelligence_control_system_module](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework) +- **Old Version/Previous Used for Different Context:** [ROBOTIS-Framework](https://github.com/ROBOTIS-GIT/ROBOTIS-Framework) --- # 🎉 Latest Release -[![Latest Release](https://img.shields.io/github/v/release/Robotics-Sensors/humanoid_robot_intelligence_control_system_tools?style=for-the-badge&color=yellow)](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_demos/releases/) +[![Latest Release](https://img.shields.io/github/v/release/Robotics-Sensors/humanoid_robot_intelligence_control_system_tools?style=for-the-badge&color=yellow)](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework/releases/) --- @@ -58,4 +58,4 @@ Meet our dedicated maintainer, **Ronaldson Bellande**. ## 📄 License -This SDK is distributed under the [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0). For detailed information, refer to [LICENSE](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_demos/blob/main/LICENSE) and [NOTICE](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_demos/blob/main/LICENSE). +This SDK is distributed under the [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0). For detailed information, refer to [LICENSE](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework/blob/main/LICENSE) and [NOTICE](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework/blob/main/LICENSE). From 71d0543ad2d69e82bee297baf525bfbb43e2e325 Mon Sep 17 00:00:00 2001 From: Ronaldson Bellande <47253433+RonaldsonBellande@users.noreply.github.com> Date: Thu, 8 Feb 2024 02:25:24 -0500 Subject: [PATCH 06/17] Update README.md --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 347179d..9c2bc38 100755 --- a/README.md +++ b/README.md @@ -8,6 +8,10 @@ Welcome to the {BR&SRI} Humanoid Robot Intelligence Control System framework repository! Here, we invite you to delve into the fascinating world of humanoid robotics, showcasing the innovative capabilities of our intelligent control system. +## 💻 Functionality To Switch from ROS to ROS2 Checkout The Below Repository + +[![Toggle ROS Versions](https://img.shields.io/badge/Toggle%20ROS%20Versions-Explore%20ROS%20and%20ROS2%20migration-blue?style=for-the-badge&logo=ros&color=blue)](https://github.com/Robotics-Sensors/ros_extension/) + ### 🚀 Key Repository Stats - ![GitHub stars](https://img.shields.io/github/stars/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework.svg?style=social) Starred by the community From 934b0d4181ffd5af631b0e5c6753eba415ba72c5 Mon Sep 17 00:00:00 2001 From: RonaldsonBellande Date: Mon, 29 Apr 2024 15:54:09 -0400 Subject: [PATCH 07/17] latest pushes --- .../package.xml | 61 ++++++++++++++----- .../package.xml | 16 +++++ 2 files changed, 62 insertions(+), 15 deletions(-) diff --git a/humanoid_robot_intelligence_control_system_controller/package.xml b/humanoid_robot_intelligence_control_system_controller/package.xml index 302552d..d2e9ca0 100755 --- a/humanoid_robot_intelligence_control_system_controller/package.xml +++ b/humanoid_robot_intelligence_control_system_controller/package.xml @@ -1,8 +1,25 @@ + + humanoid_robot_intelligence_control_system_controller 0.3.2 - humanoid_robot_intelligence_control_system_controller package for ROBOTIS's platform like Manipulator-H, THORMANG and OP series + humanoid_robot_intelligence_control_system_controller package for ROBOTIS's platform + like Manipulator-H, THORMANG and OP series Apache 2.0 Ronaldson Bellande @@ -13,10 +30,12 @@ roslib std_msgs sensor_msgs - humanoid_robot_intelligence_control_system_controller_msgs + + humanoid_robot_intelligence_control_system_controller_msgs dynamixel_sdk humanoid_robot_intelligence_control_system_device - humanoid_robot_intelligence_control_system_framework_common + + humanoid_robot_intelligence_control_system_framework_common cmake_modules yaml-cpp @@ -24,10 +43,13 @@ roslib std_msgs sensor_msgs - humanoid_robot_intelligence_control_system_controller_msgs + + humanoid_robot_intelligence_control_system_controller_msgs dynamixel_sdk - humanoid_robot_intelligence_control_system_device - humanoid_robot_intelligence_control_system_framework_common + + humanoid_robot_intelligence_control_system_device + + humanoid_robot_intelligence_control_system_framework_common cmake_modules yaml-cpp @@ -35,10 +57,12 @@ roslib std_msgs sensor_msgs - humanoid_robot_intelligence_control_system_controller_msgs + + humanoid_robot_intelligence_control_system_controller_msgs dynamixel_sdk humanoid_robot_intelligence_control_system_device - humanoid_robot_intelligence_control_system_framework_common + + humanoid_robot_intelligence_control_system_framework_common cmake_modules yaml-cpp @@ -49,10 +73,12 @@ roslib std_msgs sensor_msgs - humanoid_robot_intelligence_control_system_controller_msgs + + humanoid_robot_intelligence_control_system_controller_msgs dynamixel_sdk humanoid_robot_intelligence_control_system_device - humanoid_robot_intelligence_control_system_framework_common + + humanoid_robot_intelligence_control_system_framework_common cmake_modules yaml-cpp @@ -60,10 +86,13 @@ roslib std_msgs sensor_msgs - humanoid_robot_intelligence_control_system_controller_msgs + + humanoid_robot_intelligence_control_system_controller_msgs dynamixel_sdk - humanoid_robot_intelligence_control_system_device - humanoid_robot_intelligence_control_system_framework_common + + humanoid_robot_intelligence_control_system_device + + humanoid_robot_intelligence_control_system_framework_common cmake_modules yaml-cpp @@ -71,10 +100,12 @@ roslib std_msgs sensor_msgs - humanoid_robot_intelligence_control_system_controller_msgs + + humanoid_robot_intelligence_control_system_controller_msgs dynamixel_sdk humanoid_robot_intelligence_control_system_device - humanoid_robot_intelligence_control_system_framework_common + + humanoid_robot_intelligence_control_system_framework_common cmake_modules yaml-cpp diff --git a/humanoid_robot_intelligence_control_system_device/package.xml b/humanoid_robot_intelligence_control_system_device/package.xml index b21c17d..397f854 100755 --- a/humanoid_robot_intelligence_control_system_device/package.xml +++ b/humanoid_robot_intelligence_control_system_device/package.xml @@ -1,3 +1,19 @@ + + humanoid_robot_intelligence_control_system_device From 3b1feeb77e9da8a86d4cdf9406950a37926ec233 Mon Sep 17 00:00:00 2001 From: RonaldsonBellande Date: Mon, 29 Apr 2024 16:04:18 -0400 Subject: [PATCH 08/17] latest pushes --- .../CMakeLists.txt | 14 ++++++++++++++ .../CMakeLists.txt | 14 ++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/humanoid_robot_intelligence_control_system_controller/CMakeLists.txt b/humanoid_robot_intelligence_control_system_controller/CMakeLists.txt index c69c671..d90c748 100755 --- a/humanoid_robot_intelligence_control_system_controller/CMakeLists.txt +++ b/humanoid_robot_intelligence_control_system_controller/CMakeLists.txt @@ -1,3 +1,17 @@ +# Copyright (C) 2024 Bellande Robotics Sensors Research Innovation Center, Ronaldson Bellande +# +# 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. + cmake_minimum_required(VERSION 3.8) project(humanoid_robot_intelligence_control_system_controller) diff --git a/humanoid_robot_intelligence_control_system_device/CMakeLists.txt b/humanoid_robot_intelligence_control_system_device/CMakeLists.txt index a9c5f39..906a25f 100755 --- a/humanoid_robot_intelligence_control_system_device/CMakeLists.txt +++ b/humanoid_robot_intelligence_control_system_device/CMakeLists.txt @@ -1,3 +1,17 @@ +# Copyright (C) 2024 Bellande Robotics Sensors Research Innovation Center, Ronaldson Bellande +# +# 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. + cmake_minimum_required(VERSION 3.8) project(humanoid_robot_intelligence_control_system_device) From 4743132cdbd86e2502cd2fe7caa3c44e24aaa018 Mon Sep 17 00:00:00 2001 From: RonaldsonBellande Date: Tue, 7 May 2024 00:54:10 -0400 Subject: [PATCH 09/17] latest pushes --- .../package.xml | 4 ++-- humanoid_robot_intelligence_control_system_device/package.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/humanoid_robot_intelligence_control_system_controller/package.xml b/humanoid_robot_intelligence_control_system_controller/package.xml index d2e9ca0..63452d9 100755 --- a/humanoid_robot_intelligence_control_system_controller/package.xml +++ b/humanoid_robot_intelligence_control_system_controller/package.xml @@ -1,5 +1,6 @@ + - humanoid_robot_intelligence_control_system_controller 0.3.2 diff --git a/humanoid_robot_intelligence_control_system_device/package.xml b/humanoid_robot_intelligence_control_system_device/package.xml index 397f854..fcd6b2d 100755 --- a/humanoid_robot_intelligence_control_system_device/package.xml +++ b/humanoid_robot_intelligence_control_system_device/package.xml @@ -1,5 +1,6 @@ + - humanoid_robot_intelligence_control_system_device 0.3.2 From 41d5302091278e72224cff94fc49f66426826280 Mon Sep 17 00:00:00 2001 From: Ronaldson Bellande <47253433+RonaldsonBellande@users.noreply.github.com> Date: Tue, 7 May 2024 17:15:19 -0400 Subject: [PATCH 10/17] Update README.md --- README.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9c2bc38..7a802c5 100755 --- a/README.md +++ b/README.md @@ -8,10 +8,18 @@ Welcome to the {BR&SRI} Humanoid Robot Intelligence Control System framework repository! Here, we invite you to delve into the fascinating world of humanoid robotics, showcasing the innovative capabilities of our intelligent control system. +## 📢 Work with Bellande Algorithms and Models through Bellande's API! + +[![Bellande's Algorithm through Bellande API](https://img.shields.io/badge/Bellande's%20Algorithm%20through%20Bellande's%20API-Bellande%20API-blue?style=for-the-badge&logo=ros&color=blue)](https://github.com/Robotics-Sensors/Web-ROS-API) + +--- + ## 💻 Functionality To Switch from ROS to ROS2 Checkout The Below Repository [![Toggle ROS Versions](https://img.shields.io/badge/Toggle%20ROS%20Versions-Explore%20ROS%20and%20ROS2%20migration-blue?style=for-the-badge&logo=ros&color=blue)](https://github.com/Robotics-Sensors/ros_extension/) +--- + ### 🚀 Key Repository Stats - ![GitHub stars](https://img.shields.io/github/stars/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework.svg?style=social) Starred by the community @@ -56,7 +64,7 @@ The repository has recently undergone significant updates. Older commits and cod ### 🧑‍💼 Maintainer -Meet our dedicated maintainer, **Ronaldson Bellande**. +Meet our dedicated author & maintainer, **Ronaldson Bellande**. --- From faff37d6ce4b2f742897d274b86759aa3a85e583 Mon Sep 17 00:00:00 2001 From: Ronaldson Bellande <47253433+RonaldsonBellande@users.noreply.github.com> Date: Wed, 8 May 2024 23:44:32 -0400 Subject: [PATCH 11/17] Update README.md --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 7a802c5..ab4394d 100755 --- a/README.md +++ b/README.md @@ -14,6 +14,12 @@ Welcome to the {BR&SRI} Humanoid Robot Intelligence Control System framework rep --- +## 🧑‍💼 Work with Bellande Models through Bellande Framework! + +[![Bellande's Algorithm through Bellande API](https://img.shields.io/badge/Bellande's%20Models%20through%20Bellande's%20Framework-Bellande%20Framework-blue?style=for-the-badge&logo=ros&color=blue)](https://github.com/Robotics-Sensors/ROS-MODELS) + +--- + ## 💻 Functionality To Switch from ROS to ROS2 Checkout The Below Repository [![Toggle ROS Versions](https://img.shields.io/badge/Toggle%20ROS%20Versions-Explore%20ROS%20and%20ROS2%20migration-blue?style=for-the-badge&logo=ros&color=blue)](https://github.com/Robotics-Sensors/ros_extension/) From 57a9416fbd59fc55db77f679f4b2c3e1db229c30 Mon Sep 17 00:00:00 2001 From: Ronaldson Bellande <47253433+RonaldsonBellande@users.noreply.github.com> Date: Tue, 4 Jun 2024 21:40:55 -0400 Subject: [PATCH 12/17] Update README.md --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index ab4394d..b1db628 100755 --- a/README.md +++ b/README.md @@ -8,6 +8,11 @@ Welcome to the {BR&SRI} Humanoid Robot Intelligence Control System framework repository! Here, we invite you to delve into the fascinating world of humanoid robotics, showcasing the innovative capabilities of our intelligent control system. +## 🔄 Run and Experiment with the build Bellande's Humanoid Robot + +[![Bellande's Humanoid](https://img.shields.io/badge/Bellande's-Humanoid%20Robot%20Package-blue?style=for-the-badge&logo=ros&color=blue)](https://github.com/Robotics-Sensors/bellande_humanoid_robotics_package) + + ## 📢 Work with Bellande Algorithms and Models through Bellande's API! [![Bellande's Algorithm through Bellande API](https://img.shields.io/badge/Bellande's%20Algorithm%20through%20Bellande's%20API-Bellande%20API-blue?style=for-the-badge&logo=ros&color=blue)](https://github.com/Robotics-Sensors/Web-ROS-API) From a1c79e66078aae4dbfef805483cc3c5d5309e5b9 Mon Sep 17 00:00:00 2001 From: Ronaldson Bellande <47253433+RonaldsonBellande@users.noreply.github.com> Date: Wed, 12 Jun 2024 00:05:54 -0400 Subject: [PATCH 13/17] Update README.md Signed-off-by: Ronaldson Bellande <47253433+RonaldsonBellande@users.noreply.github.com> --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index b1db628..3490366 100755 --- a/README.md +++ b/README.md @@ -42,26 +42,26 @@ Welcome to the {BR&SRI} Humanoid Robot Intelligence Control System framework rep - ![GitHub license](https://img.shields.io/github/license/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework.svg) Licensed under Apache 2.0 - ![GitHub last commit](https://img.shields.io/github/last-commit/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework.svg) Latest updates -- ![Visitor & Github Clones](https://img.shields.io/badge/dynamic/json?color=2e8b57&label=Visitor%20%26%20GitHub%20Clones&query=$.count&url=https://api.github.com/repos/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework/traffic) Engaging with the community +- ![Visitor & Github Clones](https://img.shields.io/badge/dynamic/json?color=2e8b57&label=Visitor%20%26%20GitHub%20Clones&query=$.count&url=https://api.github.com/repos/Robotics-Sensors/bellande_humanoid_robot_intelligence_control_system_framework/traffic) Engaging with the community --- ## 🌐 Repository Website -Explore our [repository website](https://robotics-sensors.github.io/humanoid_robot_intelligence_control_system_framework) for detailed documentation, tutorials, and additional information about our humanoid robot intelligence control system. +Explore our [repository website](https://robotics-sensors.github.io/bellande_humanoid_robot_intelligence_control_system_framework) for detailed documentation, tutorials, and additional information about our humanoid robot intelligence control system. --- ### 🔄 Updates and Versions -- **Updated Version:** [humanoid_robot_intelligence_control_system_module](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework) +- **Updated Version:** [humanoid_robot_intelligence_control_system_module](https://github.com/Robotics-Sensors/bellande_humanoid_robot_intelligence_control_system_framework) - **Old Version/Previous Used for Different Context:** [ROBOTIS-Framework](https://github.com/ROBOTIS-GIT/ROBOTIS-Framework) --- # 🎉 Latest Release -[![Latest Release](https://img.shields.io/github/v/release/Robotics-Sensors/humanoid_robot_intelligence_control_system_tools?style=for-the-badge&color=yellow)](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework/releases/) +[![Latest Release](https://img.shields.io/github/v/release/Robotics-Sensors/bellande_humanoid_robot_intelligence_control_system_tools?style=for-the-badge&color=yellow)](https://github.com/Robotics-Sensors/bellande_humanoid_robot_intelligence_control_system_framework/releases/) --- @@ -81,4 +81,4 @@ Meet our dedicated author & maintainer, **Ronaldson Bellande**. ## 📄 License -This SDK is distributed under the [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0). For detailed information, refer to [LICENSE](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework/blob/main/LICENSE) and [NOTICE](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework/blob/main/LICENSE). +This SDK is distributed under the [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0). For detailed information, refer to [LICENSE](https://github.com/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework/blob/main/LICENSE) and [NOTICE](https://github.com/Robotics-Sensors/bellande_humanoid_robot_intelligence_control_system_framework/blob/main/LICENSE). From 83e577e3df8bffc17bc0ad4a5234a941dcc0c9dd Mon Sep 17 00:00:00 2001 From: RonaldsonBellande Date: Fri, 26 Jul 2024 15:17:09 -0400 Subject: [PATCH 14/17] latest pushes --- .../CMakeLists.txt | 157 +++++++----------- .../package.xml | 100 ++--------- .../setup.py | 26 +++ .../src/PIDController.py | 50 ++++++ .../CMakeLists.txt | 60 +++++++ .../package.xml | 46 +++++ .../setup.py | 26 +++ .../src/PIDController.py | 50 ++++++ .../CMakeLists.txt | 60 +++++++ .../package.xml | 46 +++++ .../setup.py | 26 +++ .../CMakeLists.txt | 71 ++++++++ .../object_detector_processor.launch.py | 108 ++++++++++++ .../ros1/object_detector_processor.launch | 41 +++++ .../package.xml | 61 +++++++ .../setup.py | 26 +++ .../src/object_detection_processor.py | 111 +++++++++++++ .../CMakeLists.txt | 71 ++++++++ .../ros1/speech_detector_processor.launch | 41 +++++ .../speech_detector_processor.launch.py | 108 ++++++++++++ .../package.xml | 61 +++++++ .../setup.py | 26 +++ .../src/speech_detection_processor.py | 111 +++++++++++++ 23 files changed, 1303 insertions(+), 180 deletions(-) mode change 100755 => 100644 humanoid_robot_intelligence_control_system_controller/CMakeLists.txt mode change 100755 => 100644 humanoid_robot_intelligence_control_system_controller/package.xml create mode 100644 humanoid_robot_intelligence_control_system_controller/setup.py create mode 100644 humanoid_robot_intelligence_control_system_controller/src/PIDController.py create mode 100644 humanoid_robot_intelligence_control_system_external_sensors/CMakeLists.txt create mode 100644 humanoid_robot_intelligence_control_system_external_sensors/package.xml create mode 100644 humanoid_robot_intelligence_control_system_external_sensors/setup.py create mode 100644 humanoid_robot_intelligence_control_system_external_sensors/src/PIDController.py create mode 100644 humanoid_robot_intelligence_control_system_internal_sensors/CMakeLists.txt create mode 100644 humanoid_robot_intelligence_control_system_internal_sensors/package.xml create mode 100644 humanoid_robot_intelligence_control_system_internal_sensors/setup.py create mode 100644 humanoid_robot_intelligence_control_system_object_detector/CMakeLists.txt create mode 100644 humanoid_robot_intelligence_control_system_object_detector/launch/object_detector_processor.launch.py create mode 100644 humanoid_robot_intelligence_control_system_object_detector/launch/ros1/object_detector_processor.launch create mode 100644 humanoid_robot_intelligence_control_system_object_detector/package.xml create mode 100644 humanoid_robot_intelligence_control_system_object_detector/setup.py create mode 100644 humanoid_robot_intelligence_control_system_object_detector/src/object_detection_processor.py create mode 100644 humanoid_robot_intelligence_control_system_speech_detector/CMakeLists.txt create mode 100644 humanoid_robot_intelligence_control_system_speech_detector/launch/ros1/speech_detector_processor.launch create mode 100644 humanoid_robot_intelligence_control_system_speech_detector/launch/speech_detector_processor.launch.py create mode 100644 humanoid_robot_intelligence_control_system_speech_detector/package.xml create mode 100644 humanoid_robot_intelligence_control_system_speech_detector/setup.py create mode 100644 humanoid_robot_intelligence_control_system_speech_detector/src/speech_detection_processor.py diff --git a/humanoid_robot_intelligence_control_system_controller/CMakeLists.txt b/humanoid_robot_intelligence_control_system_controller/CMakeLists.txt old mode 100755 new mode 100644 index d90c748..e7de26d --- a/humanoid_robot_intelligence_control_system_controller/CMakeLists.txt +++ b/humanoid_robot_intelligence_control_system_controller/CMakeLists.txt @@ -1,97 +1,60 @@ -# Copyright (C) 2024 Bellande Robotics Sensors Research Innovation Center, Ronaldson Bellande -# -# 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. - -cmake_minimum_required(VERSION 3.8) -project(humanoid_robot_intelligence_control_system_controller) - -## Compile as C++11, supported in ROS Kinetic and newer -add_compile_options(-std=c++11) - - -if($ENV{ROS_VERSION} EQUAL 1) - find_package(catkin REQUIRED COMPONENTS - roscpp - roslib - std_msgs - sensor_msgs - humanoid_robot_intelligence_control_system_controller_msgs - dynamixel_sdk - humanoid_robot_intelligence_control_system_device - humanoid_robot_intelligence_control_system_framework_common - cmake_modules - ) - - find_package(Boost REQUIRED) - - find_package(PkgConfig REQUIRED) -else() - find_package(ament_cmake REQUIRED) -endif() - - -pkg_check_modules(YAML_CPP REQUIRED yaml-cpp) -find_path(YAML_CPP_INCLUDE_DIR - NAMES yaml_cpp.h - PATHS ${YAML_CPP_INCLUDE_DIRS} -) -find_library(YAML_CPP_LIBRARY - NAMES YAML_CPP - PATHS ${YAML_CPP_LIBRARY_DIRS} -) -link_directories(${YAML_CPP_LIBRARY_DIRS}) - -if(NOT ${YAML_CPP_VERSION} VERSION_LESS "0.5") -add_definitions(-DHAVE_NEW_YAMLCPP) -endif(NOT ${YAML_CPP_VERSION} VERSION_LESS "0.5") - - -if($ENV{ROS_VERSION} EQUAL 1) - catkin_package( - INCLUDE_DIRS include - LIBRARIES humanoid_robot_intelligence_control_system_controller - CATKIN_DEPENDS - roscpp - roslib - std_msgs - sensor_msgs - humanoid_robot_intelligence_control_system_controller_msgs - dynamixel_sdk - humanoid_robot_intelligence_control_system_device - humanoid_robot_intelligence_control_system_framework_common - cmake_modules - DEPENDS Boost - ) -endif() - - -include_directories( - include - ${catkin_INCLUDE_DIRS} - ${Boost_INCLUDE_DIRS} - ${YAML_CPP_INCLUDE_DIRS} -) - -add_library(humanoid_robot_intelligence_control_system_controller src/humanoid_robot_intelligence_control_system_controller/humanoid_robot_intelligence_control_system_controller.cpp) -add_dependencies(humanoid_robot_intelligence_control_system_controller ${catkin_EXPORTED_TARGETS}) -target_link_libraries(humanoid_robot_intelligence_control_system_controller ${catkin_LIBRARIES} ${Boost_LIBRARIES} ${YAML_CPP_LIBRARIES}) - -install(TARGETS humanoid_robot_intelligence_control_system_controller - ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} - LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} - RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} -) - -install(DIRECTORY include/${PROJECT_NAME}/ - DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} -) +# Copyright (C) 2024 Bellande Robotics Sensors Research Innovation Center, Ronaldson Bellande +# +# 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. + +cmake_minimum_required(VERSION 3.0.2) +project(humanoid_robot_intelligence_control_system_controller) + +if($ENV{ROS_VERSION} EQUAL 1) + find_package(catkin REQUIRED COMPONENTS + rospy + ) + + catkin_package( + CATKIN_DEPENDS + rospy + ) + +else() + find_package(ament_cmake REQUIRED) + find_package(ament_cmake_python REQUIRED) + find_package(rclpy REQUIRED) + find_package(std_msgs REQUIRED) +endif() + +if($ENV{ROS_VERSION} EQUAL 1) + catkin_python_setup() + + catkin_install_python(PROGRAMS + src/PIDController.py + DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} + ) + + install(DIRECTORY config launch rviz + DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} + ) + +else() + ament_python_install_package(${PROJECT_NAME}) + + install(PROGRAMS + src/PIDController.py + DESTINATION lib/${PROJECT_NAME} + ) + + install(DIRECTORY config launch rviz + DESTINATION share/${PROJECT_NAME} + ) + + ament_package() +endif() diff --git a/humanoid_robot_intelligence_control_system_controller/package.xml b/humanoid_robot_intelligence_control_system_controller/package.xml old mode 100755 new mode 100644 index 63452d9..0ab0b27 --- a/humanoid_robot_intelligence_control_system_controller/package.xml +++ b/humanoid_robot_intelligence_control_system_controller/package.xml @@ -17,96 +17,30 @@ the License. humanoid_robot_intelligence_control_system_controller - 0.3.2 - humanoid_robot_intelligence_control_system_controller package for ROBOTIS's platform - like Manipulator-H, THORMANG and OP series + 0.0.1 + + This Package is for Detection Math + Apache 2.0 Ronaldson Bellande - catkin - - roscpp - roslib - std_msgs - sensor_msgs - - humanoid_robot_intelligence_control_system_controller_msgs - dynamixel_sdk - humanoid_robot_intelligence_control_system_device - - humanoid_robot_intelligence_control_system_framework_common - cmake_modules - yaml-cpp - - roscpp - roslib - std_msgs - sensor_msgs - - humanoid_robot_intelligence_control_system_controller_msgs - dynamixel_sdk - - humanoid_robot_intelligence_control_system_device - - humanoid_robot_intelligence_control_system_framework_common - cmake_modules - yaml-cpp - - roscpp - roslib - std_msgs - sensor_msgs - - humanoid_robot_intelligence_control_system_controller_msgs - dynamixel_sdk - humanoid_robot_intelligence_control_system_device - - humanoid_robot_intelligence_control_system_framework_common - cmake_modules - yaml-cpp - - ament_cmake + ament_cmake_python - roscpp - roslib - std_msgs - sensor_msgs - - humanoid_robot_intelligence_control_system_controller_msgs - dynamixel_sdk - humanoid_robot_intelligence_control_system_device - - humanoid_robot_intelligence_control_system_framework_common - cmake_modules - yaml-cpp + + rospy - roscpp - roslib - std_msgs - sensor_msgs - - humanoid_robot_intelligence_control_system_controller_msgs - dynamixel_sdk - - humanoid_robot_intelligence_control_system_device - - humanoid_robot_intelligence_control_system_framework_common - cmake_modules - yaml-cpp + + rclpy - roscpp - roslib - std_msgs - sensor_msgs - - humanoid_robot_intelligence_control_system_controller_msgs - dynamixel_sdk - humanoid_robot_intelligence_control_system_device - - humanoid_robot_intelligence_control_system_framework_common - cmake_modules - yaml-cpp + + python3-opencv + python3-yaml + usb_cam + + catkin + ament_cmake + diff --git a/humanoid_robot_intelligence_control_system_controller/setup.py b/humanoid_robot_intelligence_control_system_controller/setup.py new file mode 100644 index 0000000..cbd6630 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_controller/setup.py @@ -0,0 +1,26 @@ +# Copyright (C) 2024 Bellande Robotics Sensors Research Innovation Center, Ronaldson Bellande +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +from distutils.core import setup +from catkin_pkg.python_setup import generate_distutils_setup + +# fetch values from package.xml +setup_args = generate_distutils_setup( + scripts=['src/PIDController.py'], + packages=['humanoid_robot_intelligence_control_system_controller'], + package_dir={'': 'src'}, +) + +setup(**setup_args) diff --git a/humanoid_robot_intelligence_control_system_controller/src/PIDController.py b/humanoid_robot_intelligence_control_system_controller/src/PIDController.py new file mode 100644 index 0000000..0a87c58 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_controller/src/PIDController.py @@ -0,0 +1,50 @@ +#!/usr/bin/env python3 + +# Copyright (C) 2024 Bellande Robotics Sensors Research Innovation Center, Ronaldson Bellande +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import time +from typing import Dict, List, Tuple + +class PIDController: + def __init__(self, gains: Tuple[float, float, float], name: str, output_limits: Tuple[float, float] = (-float('inf'), float('inf'))): + self.kp, self.ki, self.kd = gains + self.name = name + self.output_limits = output_limits + self.reset() + + def reset(self): + self.last_error = 0 + self.integral = 0 + self.last_time = time.time() + + def compute(self, setpoint: float, process_variable: float) -> float: + current_time = time.time() + dt = current_time - self.last_time + error = setpoint - process_variable + + self.integral += error * dt + derivative = (error - self.last_error) / dt if dt > 0 else 0 + + output = self.kp * error + self.ki * self.integral + self.kd * derivative + output = max(min(output, self.output_limits[1]), self.output_limits[0]) + + self.last_error = error + self.last_time = current_time + + return output + + def update_config(self, gains: Tuple[float, float, float]): + self.kp, self.ki, self.kd = gains diff --git a/humanoid_robot_intelligence_control_system_external_sensors/CMakeLists.txt b/humanoid_robot_intelligence_control_system_external_sensors/CMakeLists.txt new file mode 100644 index 0000000..e7de26d --- /dev/null +++ b/humanoid_robot_intelligence_control_system_external_sensors/CMakeLists.txt @@ -0,0 +1,60 @@ +# Copyright (C) 2024 Bellande Robotics Sensors Research Innovation Center, Ronaldson Bellande +# +# 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. + +cmake_minimum_required(VERSION 3.0.2) +project(humanoid_robot_intelligence_control_system_controller) + +if($ENV{ROS_VERSION} EQUAL 1) + find_package(catkin REQUIRED COMPONENTS + rospy + ) + + catkin_package( + CATKIN_DEPENDS + rospy + ) + +else() + find_package(ament_cmake REQUIRED) + find_package(ament_cmake_python REQUIRED) + find_package(rclpy REQUIRED) + find_package(std_msgs REQUIRED) +endif() + +if($ENV{ROS_VERSION} EQUAL 1) + catkin_python_setup() + + catkin_install_python(PROGRAMS + src/PIDController.py + DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} + ) + + install(DIRECTORY config launch rviz + DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} + ) + +else() + ament_python_install_package(${PROJECT_NAME}) + + install(PROGRAMS + src/PIDController.py + DESTINATION lib/${PROJECT_NAME} + ) + + install(DIRECTORY config launch rviz + DESTINATION share/${PROJECT_NAME} + ) + + ament_package() +endif() diff --git a/humanoid_robot_intelligence_control_system_external_sensors/package.xml b/humanoid_robot_intelligence_control_system_external_sensors/package.xml new file mode 100644 index 0000000..0ab0b27 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_external_sensors/package.xml @@ -0,0 +1,46 @@ + + + + + humanoid_robot_intelligence_control_system_controller + 0.0.1 + + This Package is for Detection Math + + Apache 2.0 + Ronaldson Bellande + + catkin + ament_cmake + ament_cmake_python + + + rospy + + + rclpy + + + python3-opencv + python3-yaml + usb_cam + + + catkin + ament_cmake + + diff --git a/humanoid_robot_intelligence_control_system_external_sensors/setup.py b/humanoid_robot_intelligence_control_system_external_sensors/setup.py new file mode 100644 index 0000000..cbd6630 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_external_sensors/setup.py @@ -0,0 +1,26 @@ +# Copyright (C) 2024 Bellande Robotics Sensors Research Innovation Center, Ronaldson Bellande +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +from distutils.core import setup +from catkin_pkg.python_setup import generate_distutils_setup + +# fetch values from package.xml +setup_args = generate_distutils_setup( + scripts=['src/PIDController.py'], + packages=['humanoid_robot_intelligence_control_system_controller'], + package_dir={'': 'src'}, +) + +setup(**setup_args) diff --git a/humanoid_robot_intelligence_control_system_external_sensors/src/PIDController.py b/humanoid_robot_intelligence_control_system_external_sensors/src/PIDController.py new file mode 100644 index 0000000..0a87c58 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_external_sensors/src/PIDController.py @@ -0,0 +1,50 @@ +#!/usr/bin/env python3 + +# Copyright (C) 2024 Bellande Robotics Sensors Research Innovation Center, Ronaldson Bellande +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import time +from typing import Dict, List, Tuple + +class PIDController: + def __init__(self, gains: Tuple[float, float, float], name: str, output_limits: Tuple[float, float] = (-float('inf'), float('inf'))): + self.kp, self.ki, self.kd = gains + self.name = name + self.output_limits = output_limits + self.reset() + + def reset(self): + self.last_error = 0 + self.integral = 0 + self.last_time = time.time() + + def compute(self, setpoint: float, process_variable: float) -> float: + current_time = time.time() + dt = current_time - self.last_time + error = setpoint - process_variable + + self.integral += error * dt + derivative = (error - self.last_error) / dt if dt > 0 else 0 + + output = self.kp * error + self.ki * self.integral + self.kd * derivative + output = max(min(output, self.output_limits[1]), self.output_limits[0]) + + self.last_error = error + self.last_time = current_time + + return output + + def update_config(self, gains: Tuple[float, float, float]): + self.kp, self.ki, self.kd = gains diff --git a/humanoid_robot_intelligence_control_system_internal_sensors/CMakeLists.txt b/humanoid_robot_intelligence_control_system_internal_sensors/CMakeLists.txt new file mode 100644 index 0000000..e7de26d --- /dev/null +++ b/humanoid_robot_intelligence_control_system_internal_sensors/CMakeLists.txt @@ -0,0 +1,60 @@ +# Copyright (C) 2024 Bellande Robotics Sensors Research Innovation Center, Ronaldson Bellande +# +# 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. + +cmake_minimum_required(VERSION 3.0.2) +project(humanoid_robot_intelligence_control_system_controller) + +if($ENV{ROS_VERSION} EQUAL 1) + find_package(catkin REQUIRED COMPONENTS + rospy + ) + + catkin_package( + CATKIN_DEPENDS + rospy + ) + +else() + find_package(ament_cmake REQUIRED) + find_package(ament_cmake_python REQUIRED) + find_package(rclpy REQUIRED) + find_package(std_msgs REQUIRED) +endif() + +if($ENV{ROS_VERSION} EQUAL 1) + catkin_python_setup() + + catkin_install_python(PROGRAMS + src/PIDController.py + DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} + ) + + install(DIRECTORY config launch rviz + DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} + ) + +else() + ament_python_install_package(${PROJECT_NAME}) + + install(PROGRAMS + src/PIDController.py + DESTINATION lib/${PROJECT_NAME} + ) + + install(DIRECTORY config launch rviz + DESTINATION share/${PROJECT_NAME} + ) + + ament_package() +endif() diff --git a/humanoid_robot_intelligence_control_system_internal_sensors/package.xml b/humanoid_robot_intelligence_control_system_internal_sensors/package.xml new file mode 100644 index 0000000..0ab0b27 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_internal_sensors/package.xml @@ -0,0 +1,46 @@ + + + + + humanoid_robot_intelligence_control_system_controller + 0.0.1 + + This Package is for Detection Math + + Apache 2.0 + Ronaldson Bellande + + catkin + ament_cmake + ament_cmake_python + + + rospy + + + rclpy + + + python3-opencv + python3-yaml + usb_cam + + + catkin + ament_cmake + + diff --git a/humanoid_robot_intelligence_control_system_internal_sensors/setup.py b/humanoid_robot_intelligence_control_system_internal_sensors/setup.py new file mode 100644 index 0000000..cbd6630 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_internal_sensors/setup.py @@ -0,0 +1,26 @@ +# Copyright (C) 2024 Bellande Robotics Sensors Research Innovation Center, Ronaldson Bellande +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +from distutils.core import setup +from catkin_pkg.python_setup import generate_distutils_setup + +# fetch values from package.xml +setup_args = generate_distutils_setup( + scripts=['src/PIDController.py'], + packages=['humanoid_robot_intelligence_control_system_controller'], + package_dir={'': 'src'}, +) + +setup(**setup_args) diff --git a/humanoid_robot_intelligence_control_system_object_detector/CMakeLists.txt b/humanoid_robot_intelligence_control_system_object_detector/CMakeLists.txt new file mode 100644 index 0000000..55bba24 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_object_detector/CMakeLists.txt @@ -0,0 +1,71 @@ +# Copyright (C) 2024 Bellande Robotics Sensors Research Innovation Center, Ronaldson Bellande +# +# 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. + +cmake_minimum_required(VERSION 3.0.2) +project(humanoid_robot_intelligence_control_system_object_detector) + +if($ENV{ROS_VERSION} EQUAL 1) + find_package(catkin REQUIRED COMPONENTS + rospy + std_msgs + sensor_msgs + geometry_msgs + cv_bridge + ) + + catkin_package( + CATKIN_DEPENDS + rospy + std_msgs + sensor_msgs + geometry_msgs + cv_bridge + ) + +else() + find_package(ament_cmake REQUIRED) + find_package(ament_cmake_python REQUIRED) + find_package(rclpy REQUIRED) + find_package(std_msgs REQUIRED) + find_package(sensor_msgs REQUIRED) + find_package(geometry_msgs REQUIRED) + find_package(cv_bridge REQUIRED) +endif() + +if($ENV{ROS_VERSION} EQUAL 1) + catkin_python_setup() + + catkin_install_python(PROGRAMS + src/object_detection_processor.py + DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} + ) + + install(DIRECTORY config launch rviz + DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} + ) + +else() + ament_python_install_package(${PROJECT_NAME}) + + install(PROGRAMS + src/object_detection_processor.py + DESTINATION lib/${PROJECT_NAME} + ) + + install(DIRECTORY config launch rviz + DESTINATION share/${PROJECT_NAME} + ) + + ament_package() +endif() diff --git a/humanoid_robot_intelligence_control_system_object_detector/launch/object_detector_processor.launch.py b/humanoid_robot_intelligence_control_system_object_detector/launch/object_detector_processor.launch.py new file mode 100644 index 0000000..64ac1dd --- /dev/null +++ b/humanoid_robot_intelligence_control_system_object_detector/launch/object_detector_processor.launch.py @@ -0,0 +1,108 @@ +# Copyright (C) 2024 Bellande Robotics Sensors Research Innovation Center, Ronaldson Bellande +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import os +import sys +import subprocess +from launch import LaunchDescription +from launch_ros.actions import Node +from launch.actions import DeclareLaunchArgument +from launch.substitutions import LaunchConfiguration + +def ros1_launch_description(): + # Get command-line arguments + args = sys.argv[1:] + + # Construct the ROS 1 launch command + roslaunch_command = ["roslaunch", "humanoid_robot_intelligence_control_system_object_detector", "object_detector_processor.launch"] + args + + roslaunch_command.extend([ + "usb_cam", "usb_cam_node", "name:=camera", + "video_device:=/dev/video0", + "image_width:=640", + "image_height:=480", + "pixel_format:=yuyv", + "camera_frame_id:=usb_cam", + "io_method:=mmap" + ]) + + roslaunch_command.extend([ + "ros_web_api_bellande_2d_computer_vision", "bellande_2d_computer_vision_object_detection.py", "name:=object_detection_node" + ]) + + roslaunch_command.extend([ + "humanoid_robot_intelligence_control_system_detector", "object_detection_processor.py", "name:=object_detection_processor_node" + ]) + + roslaunch_command.extend([ + "rviz", "rviz", "name:=rviz", + "args:=-d $(find ros_web_api_bellande_2d_computer_vision)/rviz/visualization.rviz" + ]) + + # Execute the launch command + subprocess.call(roslaunch_command) + +def ros2_launch_description(): + nodes_to_launch = [] + + nodes_to_launch.append(Node( + package='usb_cam', + executable='usb_cam_node', + name='camera', + output='screen', + parameters=[{ + 'video_device': '/dev/video0', + 'image_width': 640, + 'image_height': 480, + 'pixel_format': 'yuyv', + 'camera_frame_id': 'usb_cam', + 'io_method': 'mmap' + }] + )) + + nodes_to_launch.append(Node( + package='ros_web_api_bellande_2d_computer_vision', + executable='bellande_2d_computer_vision_object_detection.py', + name='object_detection_node', + output='screen', + remappings=[('camera/image_raw', '/usb_cam/image_raw')] + )) + + nodes_to_launch.append(Node( + package='humanoid_robot_intelligence_control_system_object_detector', + executable='object_detection_processor.py', + name='object_detection_processor_node', + output='screen', + parameters=[{'yaml_path': '$(find ros_web_api_bellande_2d_computer_vision)/yaml/object_detection_params.yaml'}] + )) + + nodes_to_launch.append(Node( + package='rviz2', + executable='rviz2', + name='rviz', + arguments=['-d', '$(find ros_web_api_bellande_2d_computer_vision)/rviz/visualization.rviz'] + )) + + return LaunchDescription(nodes_to_launch) + +if __name__ == "__main__": + ros_version = os.getenv("ROS_VERSION") + if ros_version == "1": + ros1_launch_description() + elif ros_version == "2": + ros2_launch_description() + else: + print("Unsupported ROS version. Please set the ROS_VERSION environment variable to '1' for ROS 1 or '2' for ROS 2.") + sys.exit(1) diff --git a/humanoid_robot_intelligence_control_system_object_detector/launch/ros1/object_detector_processor.launch b/humanoid_robot_intelligence_control_system_object_detector/launch/ros1/object_detector_processor.launch new file mode 100644 index 0000000..6799e95 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_object_detector/launch/ros1/object_detector_processor.launch @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/humanoid_robot_intelligence_control_system_object_detector/package.xml b/humanoid_robot_intelligence_control_system_object_detector/package.xml new file mode 100644 index 0000000..706fe9e --- /dev/null +++ b/humanoid_robot_intelligence_control_system_object_detector/package.xml @@ -0,0 +1,61 @@ + + + + + humanoid_robot_intelligence_control_system_object_detector + 0.0.1 + + This Package is for Object Detection, detecting objects like tools, or utilities + + Apache 2.0 + Ronaldson Bellande + + catkin + ament_cmake + ament_cmake_python + + + rospy + std_msgs + sensor_msgs + geometry_msgs + cv_bridge + image_transport + dynamic_reconfigure + message_generation + message_runtime + + + rclpy + std_msgs + sensor_msgs + geometry_msgs + cv_bridge + image_transport + rosidl_default_generators + rosidl_default_runtime + + + python3-opencv + python3-yaml + usb_cam + + + catkin + ament_cmake + + diff --git a/humanoid_robot_intelligence_control_system_object_detector/setup.py b/humanoid_robot_intelligence_control_system_object_detector/setup.py new file mode 100644 index 0000000..a2eac39 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_object_detector/setup.py @@ -0,0 +1,26 @@ +# Copyright (C) 2024 Bellande Robotics Sensors Research Innovation Center, Ronaldson Bellande +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +from distutils.core import setup +from catkin_pkg.python_setup import generate_distutils_setup + +# fetch values from package.xml +setup_args = generate_distutils_setup( + scripts=['src/object_detection_processor.py'], + packages=['humanoid_robot_intelligence_control_system_object_detector'], + package_dir={'': 'src'}, +) + +setup(**setup_args) diff --git a/humanoid_robot_intelligence_control_system_object_detector/src/object_detection_processor.py b/humanoid_robot_intelligence_control_system_object_detector/src/object_detection_processor.py new file mode 100644 index 0000000..6f44d68 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_object_detector/src/object_detection_processor.py @@ -0,0 +1,111 @@ +#!/usr/bin/env python3 + +# Copyright (C) 2024 Bellande Robotics Sensors Research Innovation Center, Ronaldson Bellande +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import rospy +import cv2 +import numpy as np +from sensor_msgs.msg import Image, CameraInfo +from std_msgs.msg import Bool, String +from cv_bridge import CvBridge +import yaml + +class ObjectDetectionProcessor: + def __init__(self): + rospy.init_node('object_detection_processor') + self.bridge = CvBridge() + self.enable = True + self.new_image_flag = False + self.load_params() + self.setup_ros() + + def load_params(self): + param_path = rospy.get_param('~yaml_path', '') + if param_path: + with open(param_path, 'r') as file: + self.params = yaml.safe_load(file) + else: + self.set_default_params() + + def set_default_params(self): + self.params = { + 'debug': False, + 'ellipse_size': 2, + # Add other default parameters as needed + } + + def setup_ros(self): + self.image_pub = rospy.Publisher('image_out', Image, queue_size=10) + self.camera_info_pub = rospy.Publisher('camera_info', CameraInfo, queue_size=10) + + rospy.Subscriber('enable', Bool, self.enable_callback) + rospy.Subscriber('image_in', Image, self.image_callback) + rospy.Subscriber('cameraInfo_in', CameraInfo, self.camera_info_callback) + rospy.Subscriber('object_detection_result', String, self.object_detection_callback) + + def enable_callback(self, msg): + self.enable = msg.data + + def image_callback(self, msg): + if not self.enable: + return + self.cv_image = self.bridge.imgmsg_to_cv2(msg, "bgr8") + self.new_image_flag = True + self.image_header = msg.header + + def camera_info_callback(self, msg): + if not self.enable: + return + self.camera_info_msg = msg + + def object_detection_callback(self, msg): + if not self.enable or not hasattr(self, 'cv_image'): + return + + objects = eval(msg.data) # Assuming the data is a string representation of a list + self.process_detected_objects(objects) + + def process_detected_objects(self, objects): + output_image = self.cv_image.copy() + for obj in objects: + x, y, w, h = obj['bbox'] + cv2.rectangle(output_image, (int(x), int(y)), (int(x+w), int(y+h)), (0, 255, 0), 2) + cv2.putText(output_image, f"{obj['label']}: {obj['confidence']:.2f}", + (int(x), int(y-10)), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2) + + self.publish_image(output_image) + + def publish_image(self, image): + img_msg = self.bridge.cv2_to_imgmsg(image, encoding="bgr8") + img_msg.header = self.image_header + self.image_pub.publish(img_msg) + if hasattr(self, 'camera_info_msg'): + self.camera_info_pub.publish(self.camera_info_msg) + + def run(self): + rate = rospy.Rate(30) # 30 Hz + while not rospy.is_shutdown(): + if self.new_image_flag: + # The processing is done in object_detection_callback + self.new_image_flag = False + rate.sleep() + +if __name__ == '__main__': + try: + processor = ObjectDetectionProcessor() + processor.run() + except rospy.ROSInterruptException: + pass diff --git a/humanoid_robot_intelligence_control_system_speech_detector/CMakeLists.txt b/humanoid_robot_intelligence_control_system_speech_detector/CMakeLists.txt new file mode 100644 index 0000000..78abc20 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_speech_detector/CMakeLists.txt @@ -0,0 +1,71 @@ +# Copyright (C) 2024 Bellande Robotics Sensors Research Innovation Center, Ronaldson Bellande +# +# 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. + +cmake_minimum_required(VERSION 3.0.2) +project(humanoid_robot_intelligence_control_system_speech_detector) + +if($ENV{ROS_VERSION} EQUAL 1) + find_package(catkin REQUIRED COMPONENTS + rospy + std_msgs + sensor_msgs + geometry_msgs + cv_bridge + ) + + catkin_package( + CATKIN_DEPENDS + rospy + std_msgs + sensor_msgs + geometry_msgs + cv_bridge + ) + +else() + find_package(ament_cmake REQUIRED) + find_package(ament_cmake_python REQUIRED) + find_package(rclpy REQUIRED) + find_package(std_msgs REQUIRED) + find_package(sensor_msgs REQUIRED) + find_package(geometry_msgs REQUIRED) + find_package(cv_bridge REQUIRED) +endif() + +if($ENV{ROS_VERSION} EQUAL 1) + catkin_python_setup() + + catkin_install_python(PROGRAMS + src/speech_detection_processor.py + DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} + ) + + install(DIRECTORY config launch rviz + DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} + ) + +else() + ament_python_install_package(${PROJECT_NAME}) + + install(PROGRAMS + src/speech_detection_processor.py + DESTINATION lib/${PROJECT_NAME} + ) + + install(DIRECTORY config launch rviz + DESTINATION share/${PROJECT_NAME} + ) + + ament_package() +endif() diff --git a/humanoid_robot_intelligence_control_system_speech_detector/launch/ros1/speech_detector_processor.launch b/humanoid_robot_intelligence_control_system_speech_detector/launch/ros1/speech_detector_processor.launch new file mode 100644 index 0000000..014521f --- /dev/null +++ b/humanoid_robot_intelligence_control_system_speech_detector/launch/ros1/speech_detector_processor.launch @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/humanoid_robot_intelligence_control_system_speech_detector/launch/speech_detector_processor.launch.py b/humanoid_robot_intelligence_control_system_speech_detector/launch/speech_detector_processor.launch.py new file mode 100644 index 0000000..c11ca70 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_speech_detector/launch/speech_detector_processor.launch.py @@ -0,0 +1,108 @@ +# Copyright (C) 2024 Bellande Robotics Sensors Research Innovation Center, Ronaldson Bellande +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import os +import sys +import subprocess +from launch import LaunchDescription +from launch_ros.actions import Node +from launch.actions import DeclareLaunchArgument +from launch.substitutions import LaunchConfiguration + +def ros1_launch_description(): + # Get command-line arguments + args = sys.argv[1:] + + # Construct the ROS 1 launch command + roslaunch_command = ["roslaunch", "humanoid_robot_intelligence_control_system_speech_detector", "speech_detector_processor.launch"] + args + + roslaunch_command.extend([ + "usb_cam", "usb_cam_node", "name:=camera", + "video_device:=/dev/video0", + "image_width:=640", + "image_height:=480", + "pixel_format:=yuyv", + "camera_frame_id:=usb_cam", + "io_method:=mmap" + ]) + + roslaunch_command.extend([ + "ros_web_api_bellande_2d_computer_vision", "bellande_2d_computer_vision_speech_detection.py", "name:=speech_detection_node" + ]) + + roslaunch_command.extend([ + "humanoid_robot_intelligence_control_system_ball_detector", "speech_detection_processor.py", "name:=speech_detection_processor_node" + ]) + + roslaunch_command.extend([ + "rviz", "rviz", "name:=rviz", + "args:=-d $(find ros_web_api_bellande_2d_computer_vision)/rviz/visualization.rviz" + ]) + + # Execute the launch command + subprocess.call(roslaunch_command) + +def ros2_launch_description(): + nodes_to_launch = [] + + nodes_to_launch.append(Node( + package='usb_cam', + executable='usb_cam_node', + name='camera', + output='screen', + parameters=[{ + 'video_device': '/dev/video0', + 'image_width': 640, + 'image_height': 480, + 'pixel_format': 'yuyv', + 'camera_frame_id': 'usb_cam', + 'io_method': 'mmap' + }] + )) + + nodes_to_launch.append(Node( + package='ros_web_api_bellande_2d_computer_vision', + executable='bellande_2d_computer_vision_speech_detection.py', + name='speech_detection_node', + output='screen', + remappings=[('camera/image_raw', '/usb_cam/image_raw')] + )) + + nodes_to_launch.append(Node( + package='humanoid_robot_intelligence_control_system_speech_detector', + executable='speech_detection_processor.py', + name='speech_detection_processor_node', + output='screen', + parameters=[{'yaml_path': '$(find ros_web_api_bellande_2d_computer_vision)/yaml/speech_detection_params.yaml'}] + )) + + nodes_to_launch.append(Node( + package='rviz2', + executable='rviz2', + name='rviz', + arguments=['-d', '$(find ros_web_api_bellande_2d_computer_vision)/rviz/visualization.rviz'] + )) + + return LaunchDescription(nodes_to_launch) + +if __name__ == "__main__": + ros_version = os.getenv("ROS_VERSION") + if ros_version == "1": + ros1_launch_description() + elif ros_version == "2": + ros2_launch_description() + else: + print("Unsupported ROS version. Please set the ROS_VERSION environment variable to '1' for ROS 1 or '2' for ROS 2.") + sys.exit(1) diff --git a/humanoid_robot_intelligence_control_system_speech_detector/package.xml b/humanoid_robot_intelligence_control_system_speech_detector/package.xml new file mode 100644 index 0000000..416194b --- /dev/null +++ b/humanoid_robot_intelligence_control_system_speech_detector/package.xml @@ -0,0 +1,61 @@ + + + + + humanoid_robot_intelligence_control_system_speech_detector + 0.0.1 + + This Package is for Object Detection, detecting speechs like tools, or utilities + + Apache 2.0 + Ronaldson Bellande + + catkin + ament_cmake + ament_cmake_python + + + rospy + std_msgs + sensor_msgs + geometry_msgs + cv_bridge + image_transport + dynamic_reconfigure + message_generation + message_runtime + + + rclpy + std_msgs + sensor_msgs + geometry_msgs + cv_bridge + image_transport + rosidl_default_generators + rosidl_default_runtime + + + python3-opencv + python3-yaml + usb_cam + + + catkin + ament_cmake + + diff --git a/humanoid_robot_intelligence_control_system_speech_detector/setup.py b/humanoid_robot_intelligence_control_system_speech_detector/setup.py new file mode 100644 index 0000000..f4a55e3 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_speech_detector/setup.py @@ -0,0 +1,26 @@ +# Copyright (C) 2024 Bellande Robotics Sensors Research Innovation Center, Ronaldson Bellande +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +from distutils.core import setup +from catkin_pkg.python_setup import generate_distutils_setup + +# fetch values from package.xml +setup_args = generate_distutils_setup( + scripts=['src/speech_detection_processor.py'], + packages=['humanoid_robot_intelligence_control_system_speech_detector'], + package_dir={'': 'src'}, +) + +setup(**setup_args) diff --git a/humanoid_robot_intelligence_control_system_speech_detector/src/speech_detection_processor.py b/humanoid_robot_intelligence_control_system_speech_detector/src/speech_detection_processor.py new file mode 100644 index 0000000..fcc60d2 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_speech_detector/src/speech_detection_processor.py @@ -0,0 +1,111 @@ +#!/usr/bin/env python3 + +# Copyright (C) 2024 Bellande Robotics Sensors Research Innovation Center, Ronaldson Bellande +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import rospy +import cv2 +import numpy as np +from sensor_msgs.msg import Image, CameraInfo +from std_msgs.msg import Bool, String +from cv_bridge import CvBridge +import yaml + +class ObjectDetectionProcessor: + def __init__(self): + rospy.init_node('speech_detection_processor') + self.bridge = CvBridge() + self.enable = True + self.new_image_flag = False + self.load_params() + self.setup_ros() + + def load_params(self): + param_path = rospy.get_param('~yaml_path', '') + if param_path: + with open(param_path, 'r') as file: + self.params = yaml.safe_load(file) + else: + self.set_default_params() + + def set_default_params(self): + self.params = { + 'debug': False, + 'ellipse_size': 2, + # Add other default parameters as needed + } + + def setup_ros(self): + self.image_pub = rospy.Publisher('image_out', Image, queue_size=10) + self.camera_info_pub = rospy.Publisher('camera_info', CameraInfo, queue_size=10) + + rospy.Subscriber('enable', Bool, self.enable_callback) + rospy.Subscriber('image_in', Image, self.image_callback) + rospy.Subscriber('cameraInfo_in', CameraInfo, self.camera_info_callback) + rospy.Subscriber('speech_detection_result', String, self.speech_detection_callback) + + def enable_callback(self, msg): + self.enable = msg.data + + def image_callback(self, msg): + if not self.enable: + return + self.cv_image = self.bridge.imgmsg_to_cv2(msg, "bgr8") + self.new_image_flag = True + self.image_header = msg.header + + def camera_info_callback(self, msg): + if not self.enable: + return + self.camera_info_msg = msg + + def speech_detection_callback(self, msg): + if not self.enable or not hasattr(self, 'cv_image'): + return + + speechs = eval(msg.data) # Assuming the data is a string representation of a list + self.process_detected_speechs(speechs) + + def process_detected_speechs(self, speechs): + output_image = self.cv_image.copy() + for obj in speechs: + x, y, w, h = obj['bbox'] + cv2.rectangle(output_image, (int(x), int(y)), (int(x+w), int(y+h)), (0, 255, 0), 2) + cv2.putText(output_image, f"{obj['label']}: {obj['confidence']:.2f}", + (int(x), int(y-10)), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2) + + self.publish_image(output_image) + + def publish_image(self, image): + img_msg = self.bridge.cv2_to_imgmsg(image, encoding="bgr8") + img_msg.header = self.image_header + self.image_pub.publish(img_msg) + if hasattr(self, 'camera_info_msg'): + self.camera_info_pub.publish(self.camera_info_msg) + + def run(self): + rate = rospy.Rate(30) # 30 Hz + while not rospy.is_shutdown(): + if self.new_image_flag: + # The processing is done in speech_detection_callback + self.new_image_flag = False + rate.sleep() + +if __name__ == '__main__': + try: + processor = ObjectDetectionProcessor() + processor.run() + except rospy.ROSInterruptException: + pass From 719fccee0b244a730212a5f58cd1e62963008471 Mon Sep 17 00:00:00 2001 From: RonaldsonBellande Date: Fri, 26 Jul 2024 19:03:36 -0400 Subject: [PATCH 15/17] latest pushes --- .../CMakeLists.txt | 2 +- .../package.xml | 4 +- .../setup.py | 2 +- .../CMakeLists.txt | 2 +- .../package.xml | 4 +- .../setup.py | 2 +- .../CMakeLists.txt | 60 +++++++++++++++++++ .../package.xml | 46 ++++++++++++++ .../setup.py | 26 ++++++++ .../src/PIDController.py | 50 ++++++++++++++++ 10 files changed, 190 insertions(+), 8 deletions(-) create mode 100644 humanoid_robot_intelligence_control_system_structure_sensors/CMakeLists.txt create mode 100644 humanoid_robot_intelligence_control_system_structure_sensors/package.xml create mode 100644 humanoid_robot_intelligence_control_system_structure_sensors/setup.py create mode 100644 humanoid_robot_intelligence_control_system_structure_sensors/src/PIDController.py diff --git a/humanoid_robot_intelligence_control_system_external_sensors/CMakeLists.txt b/humanoid_robot_intelligence_control_system_external_sensors/CMakeLists.txt index e7de26d..3314559 100644 --- a/humanoid_robot_intelligence_control_system_external_sensors/CMakeLists.txt +++ b/humanoid_robot_intelligence_control_system_external_sensors/CMakeLists.txt @@ -13,7 +13,7 @@ # the License. cmake_minimum_required(VERSION 3.0.2) -project(humanoid_robot_intelligence_control_system_controller) +project(humanoid_robot_intelligence_control_system_external_sensors) if($ENV{ROS_VERSION} EQUAL 1) find_package(catkin REQUIRED COMPONENTS diff --git a/humanoid_robot_intelligence_control_system_external_sensors/package.xml b/humanoid_robot_intelligence_control_system_external_sensors/package.xml index 0ab0b27..df5cf0c 100644 --- a/humanoid_robot_intelligence_control_system_external_sensors/package.xml +++ b/humanoid_robot_intelligence_control_system_external_sensors/package.xml @@ -16,10 +16,10 @@ the License. --> - humanoid_robot_intelligence_control_system_controller + humanoid_robot_intelligence_control_system_external_sensors 0.0.1 - This Package is for Detection Math + This Package is for External Sensors Apache 2.0 Ronaldson Bellande diff --git a/humanoid_robot_intelligence_control_system_external_sensors/setup.py b/humanoid_robot_intelligence_control_system_external_sensors/setup.py index cbd6630..e411a0a 100644 --- a/humanoid_robot_intelligence_control_system_external_sensors/setup.py +++ b/humanoid_robot_intelligence_control_system_external_sensors/setup.py @@ -19,7 +19,7 @@ from catkin_pkg.python_setup import generate_distutils_setup # fetch values from package.xml setup_args = generate_distutils_setup( scripts=['src/PIDController.py'], - packages=['humanoid_robot_intelligence_control_system_controller'], + packages=['humanoid_robot_intelligence_control_system_external_sensors'], package_dir={'': 'src'}, ) diff --git a/humanoid_robot_intelligence_control_system_internal_sensors/CMakeLists.txt b/humanoid_robot_intelligence_control_system_internal_sensors/CMakeLists.txt index e7de26d..ef0d055 100644 --- a/humanoid_robot_intelligence_control_system_internal_sensors/CMakeLists.txt +++ b/humanoid_robot_intelligence_control_system_internal_sensors/CMakeLists.txt @@ -13,7 +13,7 @@ # the License. cmake_minimum_required(VERSION 3.0.2) -project(humanoid_robot_intelligence_control_system_controller) +project(humanoid_robot_intelligence_control_system_internal_sensors) if($ENV{ROS_VERSION} EQUAL 1) find_package(catkin REQUIRED COMPONENTS diff --git a/humanoid_robot_intelligence_control_system_internal_sensors/package.xml b/humanoid_robot_intelligence_control_system_internal_sensors/package.xml index 0ab0b27..51a94fe 100644 --- a/humanoid_robot_intelligence_control_system_internal_sensors/package.xml +++ b/humanoid_robot_intelligence_control_system_internal_sensors/package.xml @@ -16,10 +16,10 @@ the License. --> - humanoid_robot_intelligence_control_system_controller + humanoid_robot_intelligence_control_system_internal_sensors 0.0.1 - This Package is for Detection Math + This Package is for Internal Sensors Apache 2.0 Ronaldson Bellande diff --git a/humanoid_robot_intelligence_control_system_internal_sensors/setup.py b/humanoid_robot_intelligence_control_system_internal_sensors/setup.py index cbd6630..8f14186 100644 --- a/humanoid_robot_intelligence_control_system_internal_sensors/setup.py +++ b/humanoid_robot_intelligence_control_system_internal_sensors/setup.py @@ -19,7 +19,7 @@ from catkin_pkg.python_setup import generate_distutils_setup # fetch values from package.xml setup_args = generate_distutils_setup( scripts=['src/PIDController.py'], - packages=['humanoid_robot_intelligence_control_system_controller'], + packages=['humanoid_robot_intelligence_control_system_internal_sensors'], package_dir={'': 'src'}, ) diff --git a/humanoid_robot_intelligence_control_system_structure_sensors/CMakeLists.txt b/humanoid_robot_intelligence_control_system_structure_sensors/CMakeLists.txt new file mode 100644 index 0000000..9fb5e40 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_structure_sensors/CMakeLists.txt @@ -0,0 +1,60 @@ +# Copyright (C) 2024 Bellande Robotics Sensors Research Innovation Center, Ronaldson Bellande +# +# 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. + +cmake_minimum_required(VERSION 3.0.2) +project(humanoid_robot_intelligence_control_system_structure_sensors) + +if($ENV{ROS_VERSION} EQUAL 1) + find_package(catkin REQUIRED COMPONENTS + rospy + ) + + catkin_package( + CATKIN_DEPENDS + rospy + ) + +else() + find_package(ament_cmake REQUIRED) + find_package(ament_cmake_python REQUIRED) + find_package(rclpy REQUIRED) + find_package(std_msgs REQUIRED) +endif() + +if($ENV{ROS_VERSION} EQUAL 1) + catkin_python_setup() + + catkin_install_python(PROGRAMS + src/PIDController.py + DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} + ) + + install(DIRECTORY config launch rviz + DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} + ) + +else() + ament_python_install_package(${PROJECT_NAME}) + + install(PROGRAMS + src/PIDController.py + DESTINATION lib/${PROJECT_NAME} + ) + + install(DIRECTORY config launch rviz + DESTINATION share/${PROJECT_NAME} + ) + + ament_package() +endif() diff --git a/humanoid_robot_intelligence_control_system_structure_sensors/package.xml b/humanoid_robot_intelligence_control_system_structure_sensors/package.xml new file mode 100644 index 0000000..7262a2a --- /dev/null +++ b/humanoid_robot_intelligence_control_system_structure_sensors/package.xml @@ -0,0 +1,46 @@ + + + + + humanoid_robot_intelligence_control_system_structure_sensors + 0.0.1 + + This Package is for Internal Sensors + + Apache 2.0 + Ronaldson Bellande + + catkin + ament_cmake + ament_cmake_python + + + rospy + + + rclpy + + + python3-opencv + python3-yaml + usb_cam + + + catkin + ament_cmake + + diff --git a/humanoid_robot_intelligence_control_system_structure_sensors/setup.py b/humanoid_robot_intelligence_control_system_structure_sensors/setup.py new file mode 100644 index 0000000..0c55c1c --- /dev/null +++ b/humanoid_robot_intelligence_control_system_structure_sensors/setup.py @@ -0,0 +1,26 @@ +# Copyright (C) 2024 Bellande Robotics Sensors Research Innovation Center, Ronaldson Bellande +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +from distutils.core import setup +from catkin_pkg.python_setup import generate_distutils_setup + +# fetch values from package.xml +setup_args = generate_distutils_setup( + scripts=['src/PIDController.py'], + packages=['humanoid_robot_intelligence_control_system_structure_sensors'], + package_dir={'': 'src'}, +) + +setup(**setup_args) diff --git a/humanoid_robot_intelligence_control_system_structure_sensors/src/PIDController.py b/humanoid_robot_intelligence_control_system_structure_sensors/src/PIDController.py new file mode 100644 index 0000000..0a87c58 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_structure_sensors/src/PIDController.py @@ -0,0 +1,50 @@ +#!/usr/bin/env python3 + +# Copyright (C) 2024 Bellande Robotics Sensors Research Innovation Center, Ronaldson Bellande +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import time +from typing import Dict, List, Tuple + +class PIDController: + def __init__(self, gains: Tuple[float, float, float], name: str, output_limits: Tuple[float, float] = (-float('inf'), float('inf'))): + self.kp, self.ki, self.kd = gains + self.name = name + self.output_limits = output_limits + self.reset() + + def reset(self): + self.last_error = 0 + self.integral = 0 + self.last_time = time.time() + + def compute(self, setpoint: float, process_variable: float) -> float: + current_time = time.time() + dt = current_time - self.last_time + error = setpoint - process_variable + + self.integral += error * dt + derivative = (error - self.last_error) / dt if dt > 0 else 0 + + output = self.kp * error + self.ki * self.integral + self.kd * derivative + output = max(min(output, self.output_limits[1]), self.output_limits[0]) + + self.last_error = error + self.last_time = current_time + + return output + + def update_config(self, gains: Tuple[float, float, float]): + self.kp, self.ki, self.kd = gains From c40a83257fbec3432f78c21d77b357380f67a6f4 Mon Sep 17 00:00:00 2001 From: Ronaldson Bellande <47253433+RonaldsonBellande@users.noreply.github.com> Date: Sat, 27 Jul 2024 00:34:28 -0400 Subject: [PATCH 16/17] Update README.md --- README.md | 46 +++++++++++++++++++--------------------------- 1 file changed, 19 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index 3490366..05ad151 100755 --- a/README.md +++ b/README.md @@ -1,36 +1,36 @@ # Welcome to the {BR&SRI} Humanoid Robot Intelligence Control System framework +## 🤖 Explore Humanoid Robot Intelligence with Us! +Welcome to the {BR&SRI} Humanoid Robot Intelligence Control System architecture repository! Here, we invite you to delve into the fascinating world of humanoid robotics, showcasing the innovative capabilities of our intelligent control system. + + [![Website](https://img.shields.io/badge/Visit%20our-Website-0099cc?style=for-the-badge)](https://robotics-sensors.github.io) [![Discord](https://img.shields.io/badge/Join%20our-Discord-7289DA?logo=discord&style=for-the-badge)](https://discord.gg/Yc72nd4w) [![Sponsor](https://img.shields.io/badge/Sponsor-Robotics%20Sensors%20Research-red?style=for-the-badge&logo=github)](https://github.com/sponsors/Robotics-Sensors) -## 🤖 Explore Humanoid Robot Intelligence with Us! -Welcome to the {BR&SRI} Humanoid Robot Intelligence Control System framework repository! Here, we invite you to delve into the fascinating world of humanoid robotics, showcasing the innovative capabilities of our intelligent control system. +## 📢 Mobile and ROS Control System +- [![Bellande's Internal Sensor Mobile iOS API](https://img.shields.io/badge/Bellande's%20Internal%20Sensor%20Mobile%20iOS%20API-Bellande%20API-blue?style=for-the-badge&logo=swift&color=blue)](https://github.com/Application-UI-UX/bellande_internal_sensor_mobile_ios_api) +- [![Bellande's External Sensor Mobile iOS API](https://img.shields.io/badge/Bellande's%20External%20Sensor%20Mobile%20iOS%20API-Bellande%20API-blue?style=for-the-badge&logo=swift&color=blue)](https://github.com/Application-UI-UX/bellande_external_sensor_mobile_ios_api) +- [![Bellande's Functionality Mobile iOS API](https://img.shields.io/badge/Bellande's%20Functionality%20Mobile%20iOS%20API-Bellande%20API-blue?style=for-the-badge&logo=swift&color=blue)](https://github.com/Application-UI-UX/bellande_functionality_mobile_ios_api) +- [![Bellande's Internal Sensor Mobile Android API](https://img.shields.io/badge/Bellande's%20Internal%20Sensor%20Mobile%20Android%20API-Bellande%20API-blue?style=for-the-badge&logo=android&color=blue)](https://github.com/Application-UI-UX/bellande_internal_sensor_mobile_android_api) +- [![Bellande's External Sensor Mobile Android API](https://img.shields.io/badge/Bellande's%20External%20Sensor%20Mobile%20Android%20API-Bellande%20API-blue?style=for-the-badge&logo=android&color=blue)](https://github.com/Application-UI-UX/bellande_external_sensor_mobile_android_api) +- [![Bellande's Functionality Mobile Android API](https://img.shields.io/badge/Bellande's%20Functionality%20Mobile%20Android%20API-Bellande%20API-blue?style=for-the-badge&logo=android&color=blue)](https://github.com/Application-UI-UX/bellande_functionality_mobile_android_api) +- [![Bellande's Internal Sensor Web API](https://img.shields.io/badge/Bellande's%20Internal%20Sensor%20Web%20API-Bellande%20API-blue?style=for-the-badge&logo=javascript&color=blue)](https://github.com/Application-UI-UX/bellande_internal_sensor_web_api) +- [![Bellande's External Sensor Web API](https://img.shields.io/badge/Bellande's%20External%20Sensor%20Web%20API-Bellande%20API-blue?style=for-the-badge&logo=javascript&color=blue)](https://github.com/Application-UI-UX/bellande_external_sensor_web_api) +- [![Bellande's Functionality Web API](https://img.shields.io/badge/Bellande's%20Functionality%20Web%20API-Bellande%20API-blue?style=for-the-badge&logo=javascript&color=blue)](https://github.com/Application-UI-UX/bellande_functionality_web_api) +- [![Bellande's Algorithm through Bellande API](https://img.shields.io/badge/Bellande's%20Algorithm%20through%20Bellande's%20API-Bellande%20API-blue?style=for-the-badge&logo=ros&color=blue)](https://github.com/Robotics-Sensors/bellande_functionality_ros_api) +- [![Bellande's Algorithm through Bellande MODELS](https://img.shields.io/badge/Bellande's%20Algorithm%20through%20Bellande's%20API-Bellande%20MODELS-blue?style=for-the-badge&logo=ros&color=blue)](https://github.com/Robotics-Sensors/bellande_ros_models) + ## 🔄 Run and Experiment with the build Bellande's Humanoid Robot - [![Bellande's Humanoid](https://img.shields.io/badge/Bellande's-Humanoid%20Robot%20Package-blue?style=for-the-badge&logo=ros&color=blue)](https://github.com/Robotics-Sensors/bellande_humanoid_robotics_package) -## 📢 Work with Bellande Algorithms and Models through Bellande's API! - -[![Bellande's Algorithm through Bellande API](https://img.shields.io/badge/Bellande's%20Algorithm%20through%20Bellande's%20API-Bellande%20API-blue?style=for-the-badge&logo=ros&color=blue)](https://github.com/Robotics-Sensors/Web-ROS-API) - ---- - -## 🧑‍💼 Work with Bellande Models through Bellande Framework! - -[![Bellande's Algorithm through Bellande API](https://img.shields.io/badge/Bellande's%20Models%20through%20Bellande's%20Framework-Bellande%20Framework-blue?style=for-the-badge&logo=ros&color=blue)](https://github.com/Robotics-Sensors/ROS-MODELS) - ---- - ## 💻 Functionality To Switch from ROS to ROS2 Checkout The Below Repository - -[![Toggle ROS Versions](https://img.shields.io/badge/Toggle%20ROS%20Versions-Explore%20ROS%20and%20ROS2%20migration-blue?style=for-the-badge&logo=ros&color=blue)](https://github.com/Robotics-Sensors/ros_extension/) +[![Toggle ROS Versions](https://img.shields.io/badge/Toggle%20ROS%20Versions-Explore%20ROS%20and%20ROS2%20migration-blue?style=for-the-badge&logo=ros&color=blue)](https://github.com/Robotics-Sensors/ros_extension) --- - ### 🚀 Key Repository Stats - ![GitHub stars](https://img.shields.io/github/stars/Robotics-Sensors/humanoid_robot_intelligence_control_system_framework.svg?style=social) Starred by the community @@ -52,15 +52,7 @@ Explore our [repository website](https://robotics-sensors.github.io/bellande_hum --- -### 🔄 Updates and Versions - -- **Updated Version:** [humanoid_robot_intelligence_control_system_module](https://github.com/Robotics-Sensors/bellande_humanoid_robot_intelligence_control_system_framework) -- **Old Version/Previous Used for Different Context:** [ROBOTIS-Framework](https://github.com/ROBOTIS-GIT/ROBOTIS-Framework) - ---- - # 🎉 Latest Release - [![Latest Release](https://img.shields.io/github/v/release/Robotics-Sensors/bellande_humanoid_robot_intelligence_control_system_tools?style=for-the-badge&color=yellow)](https://github.com/Robotics-Sensors/bellande_humanoid_robot_intelligence_control_system_framework/releases/) --- @@ -73,7 +65,7 @@ The repository has recently undergone significant updates. Older commits and cod 🚀 For the latest versions and updates, visit our organization: [Robotics-Sensors](https://github.com/Robotics-Sensors). -### 🧑‍💼 Maintainer +### 🧑‍💼 Maintainer & Author Meet our dedicated author & maintainer, **Ronaldson Bellande**. From d238011484c2a43b73424927ca502eb8d5c5d979 Mon Sep 17 00:00:00 2001 From: RonaldsonBellande Date: Sat, 27 Jul 2024 08:13:07 -0400 Subject: [PATCH 17/17] latest pushes --- .../CMakeLists.txt | 2 + .../setup.py | 2 +- .../src/BellandeController.py | 69 +++++++++++++++++++ .../src/cpu.py | 50 ++++++++++++++ 4 files changed, 122 insertions(+), 1 deletion(-) create mode 100644 humanoid_robot_intelligence_control_system_controller/src/BellandeController.py create mode 100644 humanoid_robot_intelligence_control_system_internal_sensors/src/cpu.py diff --git a/humanoid_robot_intelligence_control_system_controller/CMakeLists.txt b/humanoid_robot_intelligence_control_system_controller/CMakeLists.txt index e7de26d..4ea5b7e 100644 --- a/humanoid_robot_intelligence_control_system_controller/CMakeLists.txt +++ b/humanoid_robot_intelligence_control_system_controller/CMakeLists.txt @@ -37,6 +37,7 @@ if($ENV{ROS_VERSION} EQUAL 1) catkin_install_python(PROGRAMS src/PIDController.py + src/BellandeController.py DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} ) @@ -49,6 +50,7 @@ else() install(PROGRAMS src/PIDController.py + src/BellandeController.py DESTINATION lib/${PROJECT_NAME} ) diff --git a/humanoid_robot_intelligence_control_system_controller/setup.py b/humanoid_robot_intelligence_control_system_controller/setup.py index cbd6630..5269c92 100644 --- a/humanoid_robot_intelligence_control_system_controller/setup.py +++ b/humanoid_robot_intelligence_control_system_controller/setup.py @@ -18,7 +18,7 @@ from catkin_pkg.python_setup import generate_distutils_setup # fetch values from package.xml setup_args = generate_distutils_setup( - scripts=['src/PIDController.py'], + scripts=['src/PIDController.py', "src/BellandeController.py"], packages=['humanoid_robot_intelligence_control_system_controller'], package_dir={'': 'src'}, ) diff --git a/humanoid_robot_intelligence_control_system_controller/src/BellandeController.py b/humanoid_robot_intelligence_control_system_controller/src/BellandeController.py new file mode 100644 index 0000000..2496dd5 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_controller/src/BellandeController.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python3 + +# Copyright (C) 2024 Bellande Robotics Sensors Research Innovation Center, Ronaldson Bellande +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import os +import time +from typing import Tuple + +ros_version = os.getenv("ROS_VERSION") + +if ros_version == "1": + import rospy + from std_msgs.msg import Float64 +elif ros_version == "2": + import rclpy + from rclpy.node import Node + from std_msgs.msg import Float64 +else: + raise ValueError("Invalid ROS version. Set ROS_VERSION environment variable to '1' or '2'.") + +class BellandeController: + def __init__(self, gains: Tuple[float, float, float], name: str, output_limits: Tuple[float, float] = (-float('inf'), float('inf'))): + self.kp, self.ki, self.kd = gains + self.name = name + self.output_limits = output_limits + self.reset() + + if ros_version == "1": + rospy.init_node('bellande_controller', anonymous=True) + self.subscriber = rospy.Subscriber('control_output', Float64, self.callback) + elif ros_version == "2": + rclpy.init() + self.node = Node('bellande_controller') + self.subscriber = self.node.create_subscription(Float64, 'control_output', self.callback, 10) + + def reset(self): + self.last_error = 0 + self.integral = 0 + self.last_time = time.time() + + def update_config(self, gains: Tuple[float, float, float]): + self.kp, self.ki, self.kd = gains + + def callback(self, msg): + print(f"Received control output: {msg.data}") + + def run(self): + if ros_version == "1": + rospy.spin() + elif ros_version == "2": + rclpy.spin(self.node) + + def shutdown(self): + if ros_version == "2": + self.node.destroy_node() + rclpy.shutdown() diff --git a/humanoid_robot_intelligence_control_system_internal_sensors/src/cpu.py b/humanoid_robot_intelligence_control_system_internal_sensors/src/cpu.py new file mode 100644 index 0000000..0a87c58 --- /dev/null +++ b/humanoid_robot_intelligence_control_system_internal_sensors/src/cpu.py @@ -0,0 +1,50 @@ +#!/usr/bin/env python3 + +# Copyright (C) 2024 Bellande Robotics Sensors Research Innovation Center, Ronaldson Bellande +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import time +from typing import Dict, List, Tuple + +class PIDController: + def __init__(self, gains: Tuple[float, float, float], name: str, output_limits: Tuple[float, float] = (-float('inf'), float('inf'))): + self.kp, self.ki, self.kd = gains + self.name = name + self.output_limits = output_limits + self.reset() + + def reset(self): + self.last_error = 0 + self.integral = 0 + self.last_time = time.time() + + def compute(self, setpoint: float, process_variable: float) -> float: + current_time = time.time() + dt = current_time - self.last_time + error = setpoint - process_variable + + self.integral += error * dt + derivative = (error - self.last_error) / dt if dt > 0 else 0 + + output = self.kp * error + self.ki * self.integral + self.kd * derivative + output = max(min(output, self.output_limits[1]), self.output_limits[0]) + + self.last_error = error + self.last_time = current_time + + return output + + def update_config(self, gains: Tuple[float, float, float]): + self.kp, self.ki, self.kd = gains