Skip to content

Commit 317a7ee

Browse files
authored
Merge pull request #54 from haixuanTao/develop
Add support for `xl330` and `xl430` used in Alexander Koch/low_cost_robot
2 parents 7a3a9ab + 3b2930d commit 317a7ee

File tree

3 files changed

+151
-0
lines changed

3 files changed

+151
-0
lines changed

src/device/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,4 +92,6 @@ pub mod mx;
9292
pub mod orbita2dof_foc;
9393
pub mod orbita_foc;
9494
pub mod xl320;
95+
pub mod xl330;
96+
pub mod xl430;
9597
pub mod xm;

src/device/xl330.rs

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
//! XL-330 robotis register (protocol v2)
2+
//!
3+
//! See <https://emanual.robotis.com/docs/en/dxl/x/xl330-m077/> for details.
4+
5+
use crate::device::*;
6+
7+
reg_read_only!(model_number, 0, u16);
8+
reg_read_only!(model_information, 2, u32);
9+
reg_read_write!(firmware_version, 6, u8);
10+
reg_read_write!(id, 7, u8);
11+
reg_read_write!(baud_rate, 8, u8);
12+
reg_read_write!(return_delay_time, 9, u8);
13+
reg_read_write!(drive_mode, 10, u8);
14+
reg_read_write!(operating_mode, 11, u8);
15+
reg_read_write!(secondary_id, 12, u8);
16+
reg_read_write!(protocol_type, 13, u8);
17+
reg_read_write!(homing_offset, 20, i32);
18+
reg_read_write!(moving_threshold, 24, u32);
19+
reg_read_write!(temperature_limit, 31, u8);
20+
reg_read_write!(max_voltage_limit, 32, u16);
21+
reg_read_write!(min_voltage_limit, 34, u16);
22+
reg_read_write!(pwm_limit, 36, u16);
23+
reg_read_write!(current_limit, 38, u16);
24+
reg_read_write!(acceleration_limit, 40, u32);
25+
reg_read_write!(velocity_limit, 44, u32);
26+
reg_read_write!(max_position_limit, 48, u32);
27+
reg_read_write!(min_position_limit, 52, u32);
28+
reg_read_write!(startup_configuration, 60, u8);
29+
reg_read_write!(pwm_slope, 62, u8);
30+
reg_read_write!(shutdown, 63, u8);
31+
32+
reg_read_write!(torque_enable, 64, u8);
33+
reg_read_write!(led, 65, u8);
34+
reg_read_write!(status_return_level, 68, u8);
35+
reg_read_write!(registered_instruction, 69, u8);
36+
reg_read_write!(hardware_error_status, 70, u8);
37+
reg_read_write!(velocity_i_gain, 76, u16);
38+
reg_read_write!(velocity_p_gain, 78, u16);
39+
reg_read_write!(position_d_gain, 80, u16);
40+
reg_read_write!(position_i_gain, 82, u16);
41+
reg_read_write!(position_p_gain, 84, u16);
42+
reg_read_write!(feedforward_2nd_gain, 88, u16);
43+
reg_read_write!(feedforward_1st_gain, 90, u16);
44+
reg_read_write!(bus_watchdog, 98, u8);
45+
reg_read_write!(goal_pwm, 100, u16);
46+
reg_read_write!(goal_current, 102, u16);
47+
reg_read_write!(goal_velocity, 104, u32);
48+
reg_read_write!(profile_acceleration, 108, u32);
49+
reg_read_write!(profile_velocity, 112, u32);
50+
reg_read_write!(goal_position, 116, u32);
51+
reg_read_only!(realtime_tick, 120, u16);
52+
reg_read_only!(moving, 122, u8);
53+
reg_read_only!(moving_status, 123, u8);
54+
reg_read_only!(present_pwm, 124, u16);
55+
reg_read_only!(present_current, 126, u16);
56+
reg_read_only!(present_velocity, 128, u32);
57+
reg_read_only!(present_position, 132, u32);
58+
reg_read_only!(velocity_trajectory, 136, u32);
59+
reg_read_only!(position_trajectory, 140, u32);
60+
reg_read_only!(present_input_voltage, 144, u16);
61+
reg_read_only!(present_temperature, 146, u8);
62+
reg_read_only!(backup_ready, 147, u8);
63+
64+
reg_read_write!(indirect_address_1, 168, u16);
65+
reg_read_write!(indirect_address_2, 170, u16);
66+
reg_read_write!(indirect_address_3, 172, u16);
67+
reg_read_write!(indirect_address_4, 174, u16);
68+
reg_read_write!(indirect_address_5, 176, u16);
69+
reg_read_write!(indirect_address_6, 178, u16);
70+
reg_read_write!(indirect_data_1, 224, u8);
71+
reg_read_write!(indirect_data_2, 225, u8);
72+
reg_read_write!(indirect_data_3, 226, u8);
73+
reg_read_write!(indirect_data_4, 227, u8);
74+
reg_read_write!(indirect_data_5, 228, u8);
75+
reg_read_write!(indirect_data_6, 229, u8);

src/device/xl430.rs

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
//! XL-430 robotis register (protocol v2)
2+
//!
3+
//! See <https://emanual.robotis.com/docs/en/dxl/x/xl430-w250/> for details.
4+
5+
use crate::device::*;
6+
7+
reg_read_only!(model_number, 0, u16);
8+
reg_read_only!(model_information, 2, u32);
9+
reg_read_write!(firmware_version, 6, u8);
10+
reg_read_write!(id, 7, u8);
11+
reg_read_write!(baud_rate, 8, u8);
12+
reg_read_write!(return_delay_time, 9, u8);
13+
reg_read_write!(drive_mode, 10, u8);
14+
reg_read_write!(operating_mode, 11, u8);
15+
reg_read_write!(secondary_id, 12, u8);
16+
reg_read_write!(protocol_type, 13, u8);
17+
reg_read_write!(homing_offset, 20, i32);
18+
reg_read_write!(moving_threshold, 24, u32);
19+
reg_read_write!(temperature_limit, 31, u8);
20+
reg_read_write!(max_voltage_limit, 32, u16);
21+
reg_read_write!(min_voltage_limit, 34, u16);
22+
reg_read_write!(pwm_limit, 36, u16);
23+
reg_read_write!(current_limit, 38, u16);
24+
reg_read_write!(acceleration_limit, 40, u32);
25+
reg_read_write!(velocity_limit, 44, u32);
26+
reg_read_write!(max_position_limit, 48, u32);
27+
reg_read_write!(min_position_limit, 52, u32);
28+
reg_read_write!(startup_configuration, 60, u8);
29+
reg_read_write!(shutdown, 63, u8);
30+
31+
reg_read_write!(torque_enable, 64, u8);
32+
reg_read_write!(led, 65, u8);
33+
reg_read_write!(status_return_level, 68, u8);
34+
reg_read_write!(registered_instruction, 69, u8);
35+
reg_read_write!(hardware_error_status, 70, u8);
36+
reg_read_write!(velocity_i_gain, 76, u16);
37+
reg_read_write!(velocity_p_gain, 78, u16);
38+
reg_read_write!(position_d_gain, 80, u16);
39+
reg_read_write!(position_i_gain, 82, u16);
40+
reg_read_write!(position_p_gain, 84, u16);
41+
reg_read_write!(feedforward_2nd_gain, 88, u16);
42+
reg_read_write!(feedforward_1st_gain, 90, u16);
43+
reg_read_write!(bus_watchdog, 98, u8);
44+
reg_read_write!(goal_pwm, 100, u16);
45+
reg_read_write!(goal_current, 102, u16);
46+
reg_read_write!(goal_velocity, 104, u32);
47+
reg_read_write!(profile_acceleration, 108, u32);
48+
reg_read_write!(profile_velocity, 112, u32);
49+
reg_read_write!(goal_position, 116, u32);
50+
reg_read_only!(realtime_tick, 120, u16);
51+
reg_read_only!(moving, 122, u8);
52+
reg_read_only!(moving_status, 123, u8);
53+
reg_read_only!(present_pwm, 124, u16);
54+
reg_read_only!(present_current, 126, u16);
55+
reg_read_only!(present_velocity, 128, u32);
56+
reg_read_only!(present_position, 132, u32);
57+
reg_read_only!(velocity_trajectory, 136, u32);
58+
reg_read_only!(position_trajectory, 140, u32);
59+
reg_read_only!(present_input_voltage, 144, u16);
60+
reg_read_only!(present_temperature, 146, u8);
61+
reg_read_only!(backup_ready, 147, u8);
62+
63+
reg_read_write!(indirect_address_1, 168, u16);
64+
reg_read_write!(indirect_address_2, 170, u16);
65+
reg_read_write!(indirect_address_3, 172, u16);
66+
reg_read_write!(indirect_address_4, 174, u16);
67+
reg_read_write!(indirect_address_5, 176, u16);
68+
reg_read_write!(indirect_address_6, 178, u16);
69+
reg_read_write!(indirect_data_1, 224, u8);
70+
reg_read_write!(indirect_data_2, 225, u8);
71+
reg_read_write!(indirect_data_3, 226, u8);
72+
reg_read_write!(indirect_data_4, 227, u8);
73+
reg_read_write!(indirect_data_5, 228, u8);
74+
reg_read_write!(indirect_data_6, 229, u8);

0 commit comments

Comments
 (0)