dynamixel_driver.h
Go to the documentation of this file.
1 /*******************************************************************************
2 * Copyright 2018 ROBOTIS CO., LTD.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 *******************************************************************************/
16 
17 /* Authors: Taehun Lim (Darby) */
18 
19 #ifndef DYNAMIXEL_DRIVER_H
20 #define DYNAMIXEL_DRIVER_H
21 
22 #include "dynamixel_tool.h"
23 
24 #if defined(__OPENCR__) || defined(__OPENCM904__)
25  #include <Arduino.h>
26  #include <DynamixelSDK.h>
27 #elif defined(__linux__) || defined(__APPLE__)
28  #include "unistd.h"
30 #endif
31 
32 #define MAX_DXL_SERIES_NUM 5
33 #define MAX_HANDLER_NUM 5
34 #define MAX_BULK_PARAMETER 20
35 
36 typedef struct
37 {
41 
42 typedef struct
43 {
47 
48 typedef struct
49 {
50  uint8_t id;
51  uint16_t address;
52  uint16_t data_length;
54 
55 typedef struct
56 {
60  uint8_t dxl_error;
61 } ErrorFromSDK;
62 
64 {
65  private:
68 
71 
75 
77 
78  uint8_t tools_cnt_;
82 
83  public:
86 
87  bool init(const char* device_name = "/dev/ttyUSB0",
88  uint32_t baud_rate = 57600,
89  const char **log = NULL);
90 
91  bool begin(const char* device_name = "/dev/ttyUSB0",
92  uint32_t baud_rate = 57600,
93  const char **log = NULL);
94 
95  bool setPortHandler(const char *device_name, const char **log = NULL);
96  bool setBaudrate(uint32_t baud_rate, const char **log = NULL);
97  bool setPacketHandler(float protocol_version, const char **log = NULL);
98 
99  float getProtocolVersion(void);
100  uint32_t getBaudrate(void);
101 
102  const char * getModelName(uint8_t id, const char **log = NULL);
103  uint16_t getModelNumber(uint8_t id, const char **log = NULL);
104  const ControlItem *getControlTable(uint8_t id, const char **log = NULL);
105  const ControlItem *getItemInfo(uint8_t id, const char *item_name, const char **log = NULL);
106  uint8_t getTheNumberOfControlItem(uint8_t id, const char **log = NULL);
107  const ModelInfo* getModelInfo(uint8_t id, const char **log = NULL);
108 
109  uint8_t getTheNumberOfSyncWriteHandler(void);
110  uint8_t getTheNumberOfSyncReadHandler(void);
111  uint8_t getTheNumberOfBulkReadParam(void);
112 
113  bool scan(uint8_t *get_id,
114  uint8_t *get_the_number_of_id,
115  uint8_t range = 253,
116  const char **log = NULL);
117 
118  bool scan(uint8_t *get_id,
119  uint8_t *get_the_number_of_id,
120  uint8_t start_number,
121  uint8_t end_number,
122  const char **log = NULL);
123 
124  bool ping(uint8_t id,
125  uint16_t *get_model_number,
126  const char **log = NULL);
127 
128  bool ping(uint8_t id,
129  const char **log = NULL);
130 
131  bool clearMultiTurn(uint8_t id, const char **log = NULL);
132 
133  bool reboot(uint8_t id, const char **log = NULL);
134  bool reset(uint8_t id, const char **log = NULL);
135 
136  bool writeRegister(uint8_t id, uint16_t address, uint16_t length, uint8_t* data, const char **log = NULL);
137  bool writeRegister(uint8_t id, const char *item_name, int32_t data, const char **log = NULL);
138 
139  bool writeOnlyRegister(uint8_t id, uint16_t address, uint16_t length, uint8_t *data, const char **log = NULL);
140  bool writeOnlyRegister(uint8_t id, const char *item_name, int32_t data, const char **log = NULL);
141 
142  bool readRegister(uint8_t id, uint16_t address, uint16_t length, uint32_t *data, const char **log = NULL);
143  bool readRegister(uint8_t id, const char *item_name, int32_t *data, const char **log = NULL);
144 
145  void getParam(int32_t data, uint8_t *param);
146 
147  bool addSyncWriteHandler(uint16_t address, uint16_t length, const char **log = NULL);
148  bool addSyncWriteHandler(uint8_t id, const char *item_name, const char **log = NULL);
149 
150  bool syncWrite(uint8_t index, int32_t *data, const char **log = NULL);
151  bool syncWrite(uint8_t index, uint8_t *id, uint8_t id_num, int32_t *data, uint8_t data_num_for_each_id, const char **log = NULL);
152 
153  bool addSyncReadHandler(uint16_t address, uint16_t length, const char **log = NULL);
154  bool addSyncReadHandler(uint8_t id, const char *item_name, const char **log = NULL);
155 
156  bool syncRead(uint8_t index, const char **log = NULL);
157  bool syncRead(uint8_t index, uint8_t *id, uint8_t id_num, const char **log = NULL);
158 
159  bool getSyncReadData(uint8_t index, int32_t *data, const char **log = NULL);
160  bool getSyncReadData(uint8_t index, uint8_t *id, uint8_t id_num, int32_t *data, const char **log = NULL);
161  bool getSyncReadData(uint8_t index, uint8_t *id, uint8_t id_num, uint16_t address, uint16_t length, int32_t *data, const char **log = NULL);
162 
163  bool initBulkWrite(const char **log = NULL);
164 
165  bool addBulkWriteParam(uint8_t id, uint16_t address, uint16_t length, int32_t data, const char **log = NULL);
166  bool addBulkWriteParam(uint8_t id, const char *item_name, int32_t data, const char **log = NULL);
167 
168  bool bulkWrite(const char **log = NULL);
169 
170  bool initBulkRead(const char **log = NULL);
171 
172  bool addBulkReadParam(uint8_t id, uint16_t address, uint16_t length, const char **log = NULL);
173  bool addBulkReadParam(uint8_t id, const char *item_name, const char **log = NULL);
174 
175  bool bulkRead(const char **log = NULL);
176 
177  bool getBulkReadData(int32_t *data, const char **log = NULL);
178  bool getBulkReadData(uint8_t *id, uint8_t id_num, uint16_t *address, uint16_t *length, int32_t *data, const char **log = NULL);
179 
180  bool clearBulkReadParam(void);
181 
182  private:
183  void initTools(void);
184  bool setTool(uint16_t model_number, uint8_t id, const char **log = NULL);
185  uint8_t getTool(uint8_t id, const char **log = NULL);
186 };
187 
188 #endif //DYNAMIXEL_DRIVER_H
DynamixelDriver::writeOnlyRegister
bool writeOnlyRegister(uint8_t id, uint16_t address, uint16_t length, uint8_t *data, const char **log=NULL)
Definition: dynamixel_driver.cpp:680
DynamixelDriver::addSyncWriteHandler
bool addSyncWriteHandler(uint16_t address, uint16_t length, const char **log=NULL)
Definition: dynamixel_driver.cpp:921
DynamixelDriver::writeRegister
bool writeRegister(uint8_t id, uint16_t address, uint16_t length, uint8_t *data, const char **log=NULL)
Definition: dynamixel_driver.cpp:569
DynamixelDriver::begin
bool begin(const char *device_name="/dev/ttyUSB0", uint32_t baud_rate=57600, const char **log=NULL)
Definition: dynamixel_driver.cpp:122
DynamixelDriver::getTheNumberOfSyncWriteHandler
uint8_t getTheNumberOfSyncWriteHandler(void)
Definition: dynamixel_driver.cpp:240
DynamixelDriver::ping
bool ping(uint8_t id, uint16_t *get_model_number, const char **log=NULL)
Definition: dynamixel_driver.cpp:334
DynamixelDriver::setPacketHandler
bool setPacketHandler(float protocol_version, const char **log=NULL)
Definition: dynamixel_driver.cpp:153
dynamixel_tool.h
DynamixelDriver::~DynamixelDriver
~DynamixelDriver()
Definition: dynamixel_driver.cpp:29
DynamixelDriver::packetHandler_
dynamixel::PacketHandler * packetHandler_
Definition: dynamixel_driver.h:67
SyncWriteHandler::groupSyncWrite
dynamixel::GroupSyncWrite * groupSyncWrite
Definition: dynamixel_driver.h:39
SyncWriteHandler
Definition: dynamixel_driver.h:36
DynamixelDriver::bulk_read_parameter_cnt_
uint8_t bulk_read_parameter_cnt_
Definition: dynamixel_driver.h:81
DynamixelDriver::sync_write_handler_cnt_
uint8_t sync_write_handler_cnt_
Definition: dynamixel_driver.h:79
DynamixelDriver::getItemInfo
const ControlItem * getItemInfo(uint8_t id, const char *item_name, const char **log=NULL)
Definition: dynamixel_driver.cpp:210
DynamixelDriver::getTheNumberOfSyncReadHandler
uint8_t getTheNumberOfSyncReadHandler(void)
Definition: dynamixel_driver.cpp:245
DynamixelDriver::getModelNumber
uint16_t getModelNumber(uint8_t id, const char **log=NULL)
Definition: dynamixel_driver.cpp:188
dynamixel::GroupBulkRead
SyncWriteHandler::control_item
const ControlItem * control_item
Definition: dynamixel_driver.h:38
dynamixel::GroupBulkWrite
DynamixelDriver::getBaudrate
uint32_t getBaudrate(void)
Definition: dynamixel_driver.cpp:172
DynamixelDriver::initBulkWrite
bool initBulkWrite(const char **log=NULL)
Definition: dynamixel_driver.cpp:1233
DynamixelDriver::clearBulkReadParam
bool clearBulkReadParam(void)
Definition: dynamixel_driver.cpp:1478
SyncReadHandler::groupSyncRead
dynamixel::GroupSyncRead * groupSyncRead
Definition: dynamixel_driver.h:45
DynamixelSDK.h
DynamixelDriver::bulk_read_param_
BulkParameter bulk_read_param_[MAX_BULK_PARAMETER]
Definition: dynamixel_driver.h:74
ErrorFromSDK
Definition: dynamixel_driver.h:55
DynamixelDriver::bulkRead
bool bulkRead(const char **log=NULL)
Definition: dynamixel_driver.cpp:1411
DynamixelDriver::initBulkRead
bool initBulkRead(const char **log=NULL)
Definition: dynamixel_driver.cpp:1321
DynamixelDriver::syncWriteHandler_
SyncWriteHandler syncWriteHandler_[MAX_HANDLER_NUM]
Definition: dynamixel_driver.h:69
DynamixelDriver::bulkWrite
bool bulkWrite(const char **log=NULL)
Definition: dynamixel_driver.cpp:1304
DynamixelDriver::getModelInfo
const ModelInfo * getModelInfo(uint8_t id, const char **log=NULL)
Definition: dynamixel_driver.cpp:232
DynamixelDriver::groupBulkWrite_
dynamixel::GroupBulkWrite * groupBulkWrite_
Definition: dynamixel_driver.h:73
DynamixelDriver::initTools
void initTools(void)
Definition: dynamixel_driver.cpp:42
dynamixel::PortHandler
DynamixelDriver::getSyncReadData
bool getSyncReadData(uint8_t index, int32_t *data, const char **log=NULL)
Definition: dynamixel_driver.cpp:1152
DynamixelDriver::reset
bool reset(uint8_t id, const char **log=NULL)
Definition: dynamixel_driver.cpp:449
ModelInfo
Definition: dynamixel_item.h:121
MAX_HANDLER_NUM
#define MAX_HANDLER_NUM
Definition: dynamixel_driver.h:33
DynamixelDriver::syncWrite
bool syncWrite(uint8_t index, int32_t *data, const char **log=NULL)
Definition: dynamixel_driver.cpp:971
BulkParameter::id
uint8_t id
Definition: dynamixel_driver.h:50
DynamixelDriver::addBulkReadParam
bool addBulkReadParam(uint8_t id, uint16_t address, uint16_t length, const char **log=NULL)
Definition: dynamixel_driver.cpp:1343
DynamixelDriver::syncReadHandler_
SyncReadHandler syncReadHandler_[MAX_HANDLER_NUM]
Definition: dynamixel_driver.h:70
DynamixelDriver::getTool
uint8_t getTool(uint8_t id, const char **log=NULL)
Definition: dynamixel_driver.cpp:89
DynamixelDriver::getTheNumberOfControlItem
uint8_t getTheNumberOfControlItem(uint8_t id, const char **log=NULL)
Definition: dynamixel_driver.cpp:224
DynamixelDriver::getParam
void getParam(int32_t data, uint8_t *param)
Definition: dynamixel_driver.cpp:913
DynamixelDriver::addSyncReadHandler
bool addSyncReadHandler(uint16_t address, uint16_t length, const char **log=NULL)
Definition: dynamixel_driver.cpp:1047
DynamixelDriver::setTool
bool setTool(uint16_t model_number, uint8_t id, const char **log=NULL)
Definition: dynamixel_driver.cpp:50
ErrorFromSDK::dxl_addparam_result
bool dxl_addparam_result
Definition: dynamixel_driver.h:58
DynamixelDriver::DynamixelDriver
DynamixelDriver()
Definition: dynamixel_driver.cpp:21
SyncReadHandler::control_item
const ControlItem * control_item
Definition: dynamixel_driver.h:44
DynamixelDriver::syncRead
bool syncRead(uint8_t index, const char **log=NULL)
Definition: dynamixel_driver.cpp:1097
DynamixelDriver::sync_read_handler_cnt_
uint8_t sync_read_handler_cnt_
Definition: dynamixel_driver.h:80
DynamixelDriver::getProtocolVersion
float getProtocolVersion(void)
Definition: dynamixel_driver.cpp:167
DynamixelDriver::getTheNumberOfBulkReadParam
uint8_t getTheNumberOfBulkReadParam(void)
Definition: dynamixel_driver.cpp:250
DynamixelDriver::addBulkWriteParam
bool addBulkWriteParam(uint8_t id, uint16_t address, uint16_t length, int32_t data, const char **log=NULL)
Definition: dynamixel_driver.cpp:1254
DynamixelDriver::clearMultiTurn
bool clearMultiTurn(uint8_t id, const char **log=NULL)
Definition: dynamixel_driver.cpp:387
get_id
uint8_t get_id[16]
Definition: p_Monitor.cpp:30
DynamixelDriver::groupBulkRead_
dynamixel::GroupBulkRead * groupBulkRead_
Definition: dynamixel_driver.h:72
DynamixelDriver::tools_cnt_
uint8_t tools_cnt_
Definition: dynamixel_driver.h:78
DynamixelDriver::getControlTable
const ControlItem * getControlTable(uint8_t id, const char **log=NULL)
Definition: dynamixel_driver.cpp:202
DynamixelDriver::getBulkReadData
bool getBulkReadData(int32_t *data, const char **log=NULL)
Definition: dynamixel_driver.cpp:1426
DynamixelDriver::reboot
bool reboot(uint8_t id, const char **log=NULL)
Definition: dynamixel_driver.cpp:411
DynamixelDriver::setBaudrate
bool setBaudrate(uint32_t baud_rate, const char **log=NULL)
Definition: dynamixel_driver.cpp:141
BulkParameter::address
uint16_t address
Definition: dynamixel_driver.h:51
ControlItem
Definition: dynamixel_item.h:113
ErrorFromSDK::dxl_comm_result
int dxl_comm_result
Definition: dynamixel_driver.h:57
MAX_DXL_SERIES_NUM
#define MAX_DXL_SERIES_NUM
Definition: dynamixel_driver.h:32
dynamixel::GroupSyncWrite
DynamixelTool
Definition: dynamixel_tool.h:27
DynamixelDriver
Definition: dynamixel_driver.h:63
dynamixel_sdk.h
DynamixelDriver::getModelName
const char * getModelName(uint8_t id, const char **log=NULL)
Definition: dynamixel_driver.cpp:177
DynamixelDriver::setPortHandler
bool setPortHandler(const char *device_name, const char **log=NULL)
Definition: dynamixel_driver.cpp:127
BulkParameter::data_length
uint16_t data_length
Definition: dynamixel_driver.h:52
BulkParameter
Definition: dynamixel_driver.h:48
dynamixel::GroupSyncRead
DynamixelDriver::tools_
DynamixelTool tools_[MAX_DXL_SERIES_NUM]
Definition: dynamixel_driver.h:76
ErrorFromSDK::dxl_getdata_result
bool dxl_getdata_result
Definition: dynamixel_driver.h:59
DynamixelDriver::portHandler_
dynamixel::PortHandler * portHandler_
Definition: dynamixel_driver.h:66
MAX_BULK_PARAMETER
#define MAX_BULK_PARAMETER
Definition: dynamixel_driver.h:34
SyncReadHandler
Definition: dynamixel_driver.h:42
dynamixel::PacketHandler
DynamixelDriver::init
bool init(const char *device_name="/dev/ttyUSB0", uint32_t baud_rate=57600, const char **log=NULL)
Definition: dynamixel_driver.cpp:106
DynamixelDriver::readRegister
bool readRegister(uint8_t id, uint16_t address, uint16_t length, uint32_t *data, const char **log=NULL)
Definition: dynamixel_driver.cpp:772
ErrorFromSDK::dxl_error
uint8_t dxl_error
Definition: dynamixel_driver.h:60
DynamixelDriver::scan
bool scan(uint8_t *get_id, uint8_t *get_the_number_of_id, uint8_t range=253, const char **log=NULL)
Definition: dynamixel_driver.cpp:329


dynamixel_workbench_toolbox
Author(s): Darby Lim , Ryan Shim
autogenerated on Wed Mar 2 2022 00:13:18