diff --git a/_data/navigation.yml b/_data/navigation.yml index 36e4bce4b..3e44cbd0e 100644 --- a/_data/navigation.yml +++ b/_data/navigation.yml @@ -363,7 +363,7 @@ main: - title: "*ROBOTIS OP2" titlekr: "*로보티즈 OP2" url: /platform/op2/getting_started/ - - title: "*OBOTIS OP3" + - title: "*ROBOTIS OP3" titlekr: "*로보티즈 OP3" url: /platform/op3/introduction/ - title: "*THORMANG3" diff --git a/_includes/en/dxl/2x_intro.md b/_includes/en/dxl/2x_intro.md index 2c05b5fb0..0939c974c 100644 --- a/_includes/en/dxl/2x_intro.md +++ b/_includes/en/dxl/2x_intro.md @@ -1,3 +1,2 @@ -{% if page.ref=='2xc430-w250' %}**2XC430-W250**{% else %}**2XL430-W250**{% endif %} is a ground breaking DYNAMIXEL that allows to control **2 axis(2 DOF)** with a single module. In order to control 2 axis at the same time, each axle should be assigned with different ID while sharing an identical [Baud rate(8)](#baud-rate). Since the Control Table for each axle is separated except the Baudrate, {% if page.ref=='2xc430-w250' %}**2XC430-W250**{% else %}**2XL430-W250**{% endif %} can be applied in various applications. -The usage is identical to other DYNAMIXEL's, but be aware that Firmware Recovery will reset both axis to factory settings. +The DYNAMIXEL {% if page.ref=='2xc430-w250' %}**2XC430-W250**{% else %}**2XL430-W250**{% endif %} is a ground breaking DYNAMIXEL featuring **2 integrated movement axes** within a single module. Each axis has it's own dedicated Control Table allowing the {% if page.ref=='2xc430-w250' %}**2XC430-W250**{% else %}**2XL430-W250**{% endif %} to control them as if they were two independent DYNAMIXEL servos. {: .notice--success} diff --git a/_includes/en/dxl/assembly/xl430_frame_assembly.md b/_includes/en/dxl/assembly/xl430_frame_assembly.md index 20474baf6..d55ad3823 100644 --- a/_includes/en/dxl/assembly/xl430_frame_assembly.md +++ b/_includes/en/dxl/assembly/xl430_frame_assembly.md @@ -38,10 +38,10 @@ DYNAMIXEL hinge frames are assembled by attaching them to the idler and output h **NOTE**: Information regarding size and depth of DYNAMIXEL servo mounting points can be found in the [Drawings](#drawings) section of the product's eManual page. {: .notice} -**NOTE**: An idler horn is required for the installation of DYNAMIXEL hinge frames. See the [Idler Horn Assembly] instructions for more information. +**NOTE**: An idler horn is required for the installation of DYNAMIXEL hinge frames. See the [Idler Horn Assembly](#idler-horn-assembly) instructions for more information. {: .notice} -**WARNING**: During hinge assembly, ensure that all screws are the proper length before installation. See [Frame and Horn Assembly Precautions] for more information. +**WARNING**: During hinge assembly, ensure that all screws are the proper length before installation. See [Frame and Horn Assembly Precautions](#frame-and-horn-assembly-precautions) for more information. {: .notice--warning} ### [Side Frame Assembly](#side-frame-assembly) diff --git a/_includes/en/dxl/assembly/xl_xc430_horn_assembly.md b/_includes/en/dxl/assembly/xl_xc430_horn_assembly.md index b22c8e2ce..2fab7fb65 100644 --- a/_includes/en/dxl/assembly/xl_xc430_horn_assembly.md +++ b/_includes/en/dxl/assembly/xl_xc430_horn_assembly.md @@ -1,7 +1,7 @@ ### [Idler Horn Assembly](#idler-horn-assembly) -An idler horn is required in addition to a DYNAMIXEL's output horn for installation of hinge frame accessories. +An idler horn is required for installation of hinge frame accessories. Additionally, the hollow shaft of an installed idler horn provides a neat cable wiring solution. diff --git a/_includes/en/dxl/common_link.md b/_includes/en/dxl/common_link.md index 1a49c4ac3..3004ee0d8 100644 --- a/_includes/en/dxl/common_link.md +++ b/_includes/en/dxl/common_link.md @@ -9,6 +9,7 @@ [ID(7)]: #id7 [Baud Rate(8)]: #baud-rate8 [Return Delay time(9)]: #return-delay-time-9 +[Drive Mode(10)]: #drive-mode10 [Operating Mode(11)]: #operating-mode11 [Homing Offset(13)]: #homing-offset13 [Protocol Type(13)]: #protocol-type13 @@ -17,6 +18,8 @@ [Moving Threshold(24)]: #moving-threshold24 [Acceleration Limit(26)]: #acceleration-limit26 [Goal Position(30)]: #goal-position-30 +[Temperature Limit (31)]: #temperature-limit31 +[Max/Min Voltage Limit(32, 34)]: #minmax-voltage-limit32-34 [Torque Limit(34)]: #torque-limit-34 [PWM Limit(36)]: #pwm-limit36 [Current Limit(38)]: #current-limit38 @@ -36,6 +39,7 @@ [Profile Velocity(112)]: #profile-velocity112 [Goal Position(116)]: #goal-position116 [Moving(122)]: #moving122 +[Moving Status(123)]: #moving-status123 [Present PWM(124)]: #present-pwm124 [Present Current(126)]: #present-current126 [Present load(126)]: #present-load126 diff --git a/_includes/en/dxl/control_table.md b/_includes/en/dxl/control_table.md index a6dbb2f64..7b78af8b1 100644 --- a/_includes/en/dxl/control_table.md +++ b/_includes/en/dxl/control_table.md @@ -1,11 +1,11 @@ # [Control Table](#control-table) -The Control Table is a structure of data implemented in the device. Users can read a specific Data to get status of the device with Read Instruction Packets, and modify Data as well to control the device with WRITE Instruction Packets. +The Control Table is a data structure used by DYNAMIXEL actuators to manage the state of the device. Users can read data registers to get information about the status of the device with Read Instruction Packets, and modify data registers to control the device with Write Instruction Packets. {% assign protocol= "DYNAMIXEL Protocol 2.0" %} {% assign data_size= "1 ~ 4" %} {% if page.product_group=='dxl_p' %} -**WARNING** : DYNAMIXEL-P use different Control Table from DYNAMIXEL PRO series. Please pay attention when replacing DYNAMIXEL PRO with DYNAMIXEL-P. +**WARNING** : DYNAMIXEL-P servos use a different Control Table layout than DYNAMIXEL PRO series actuators. Please verify the control table addresses used in your control program attention when transitioning from DYNAMIXEL PRO to DYNAMIXEL-P. {: .notice--warning} {% assign torque_enable= "512" %} diff --git a/_includes/en/dxl/led_policy.md b/_includes/en/dxl/led_policy.md index 980c3e564..3a8bf0ec4 100644 --- a/_includes/en/dxl/led_policy.md +++ b/_includes/en/dxl/led_policy.md @@ -1,13 +1,13 @@ {% capture dxl_led_policy %} -**NOTE** : Check the status of DYNAMIXEL by the counts of flickering LED. +**NOTE** : The LED is also used to indicate various statuses of the DYNAMIXEL actuator, refer to the following chart for more information. | Status | LED Representation | |:----------------:|:--------------------:| -| Booting | LED flickers once | -| Factory Reset | LED flickers 4 times | -| Alarm | LED flickers |{% if page.product_group=='dxl_x540' or page.ref=='mx-106-2' or page.ref=='mx-106' %} -| Slave Mode | LED flickers 3 times |{% else %}{% endif %} -| Boot Mode | LED On | +| Booting | LED blinks once | +| Factory Reset | LED blinks quickly 4 times | +| Shutdown Error | LED blinks continuously |{% if page.product_group=='dxl_x540' or page.ref=='mx-106-2' or page.ref=='mx-106' %} +| Follower Mode | LED blinks quickly 3 times |{% else %}{% endif %} +| Bootloader Mode | LED on continuously | {% endcapture %}
{{ dxl_led_policy | markdownify }}
diff --git a/_includes/en/dxl/note_performance_graph.md b/_includes/en/dxl/note_performance_graph.md index ec8d3c81c..e4b6f0ba1 100644 --- a/_includes/en/dxl/note_performance_graph.md +++ b/_includes/en/dxl/note_performance_graph.md @@ -3,10 +3,10 @@ Stall torque is the maximum momentary torque output the servo is capable of, an is generally how RC servos are measured. The Performance graph, or N-T curve, from the above graph is measured under conditions simulating a gradually increasing load. -The actual real world performance of the servo will generally be closer to the performance graph measurements, not the rated stall torque. For this reason, the performance graph is broadly used in the industrial field. - Generally, the Maximum Torque shown through Performance Graph testing is less than the maximum Stall Torque. +The actual real world performance of the servo will generally be closer to the performance graph measurements, not the rated stall torque. + {% endcapture %}
{{ perform_graph_01 | markdownify }}
diff --git a/_includes/en/dxl/profile_description.md b/_includes/en/dxl/profile_description.md index 2386a3a8a..fe83ebf52 100644 --- a/_includes/en/dxl/profile_description.md +++ b/_includes/en/dxl/profile_description.md @@ -1,22 +1,20 @@ -The Profile is an acceleration/deceleration control method to reduce vibration, noise and load of the motor by controlling dramatically changing velocity and acceleration. -It is also called Velocity Profile as it controls acceleration and deceleration based on velocity. -DYNAMIXEL provides 3 different types of Profile. The following explains 3 Profiles. -Profiles are usually selected by the combination of [Profile Velocity(112)] and [Profile Acceleration(108)]. - -![](/assets/images/dxl/x/profile_types.png) - -When given [Goal Position(116)], DYNAMIXEL's profile creates desired velocity trajectory based on present velocity(initial velocity of the Profile). -When DYNAMIXEL receives updated desired position from a new [Goal Position(116)] while it is moving toward the previous [Goal Position(116)], velocity smoothly varies for the new desired velocity trajectory. -Maintaining velocity continuity while updating desired velocity trajectory is called Velocity Override. -For a simple calculation, let's assume that the initial velocity of the Profile is '0'. -The following explains how Profile processes [Goal Position(116)] instruction in Position Control mode, Extended Position Control Mode{% if page.product_group!='dxl_xl430' %}, Current-based Position Control Mode{% else %}{% endif %}. - -1. An Instruction from the user is transmitted via DYNAMIXEL bus, then registered to [Goal Position(116)] (If Velocity-based Profile is selected). -2. Acceleration time(t1) is calculated from [Profile Velocity(112)] and [Profile Acceleration(108)]. -3. Types of Profile is decided based on [Profile Velocity(112)], [Profile Acceleration(108)] and total travel distance(ΔPos, the distance difference between desired position and present position). -4. Selected Profile type is stored at [Moving Status(123)]. -5. DYNAMIXEL is driven by the calculated desired trajectory from Profile. -6. desired velocity trajectory and desired position trajectory from Profile are stored at [Velocity Trajectory(136)] and [Position Trajectory(140)] respectively. +The Profile is a generated movement trajectory intended to reduce vibration, noise and load of the motor by dynamically changing velocity and acceleration during movements. +DYNAMIXEL servos provide 3 different types of Profile: +![](/assets/images/dxl/x/profile_types.png) + +Profiles are usually selected according to the combination of [Profile Velocity(112)] and [Profile Acceleration(108)]. + + +When given a new [Goal Position(116)], the DYNAMIXEL's profile settings creates a desired velocity trajectory based on present movement velocity. +When a DYNAMIXEL receives an updated [Goal Position(116)] while it is moving toward the previous [Goal Position(116)], velocity is adjusted smoothly to match the new desired velocity trajectory. +The following explains how the Profile processes [Goal Position(116)] instructions in {% if page.product_group!='dxl_xl430' %}Current-based Position Control Mode,{% else %}{% endif %} Position Control mode, and Extended Position Control Mode. + +1. An Instruction from the user is transmitted via the DYNAMIXEL bus, then registered to [Goal Position(116)] (If Velocity-based Profile is selected). +2. Acceleration time(t1) is calculated based on [Profile Velocity(112)] and [Profile Acceleration(108)]. +3. The type of Profile is decided based on [Profile Velocity(112)], [Profile Acceleration(108)] and total travel distance(ΔPos, the distance difference between desired position and present position). +4. The selected Profile type is stored at [Moving Status(123)]. +5. The DYNAMIXEL is driven by the calculated desired trajectory from the Profile. +6. The desired velocity trajectory and desired position trajectory from the Profile are stored at [Velocity Trajectory(136)] and [Position Trajectory(140)] respectively. | Condition | Types of Profile | |:---------------------------------------------------------|:-----------------------------------------| @@ -27,7 +25,7 @@ The following explains how Profile processes [Goal Position(116)] instruction in ![](/assets/images/dxl/x/velocity_profile.png) {% capture group_notice_03 %} -**NOTE** : Velocity Control Mode only uses [Profile Acceleration(108)](#profile-acceleration108). Step and Trapezoidal Profiles are supported. Velocity Override are supported as well. Acceleration time(t1) can be calculated as below equation. +**NOTE** : Velocity Control Mode only uses [Profile Acceleration(108)](#profile-acceleration108). Step and Trapezoidal Profiles are supported. Acceleration time(t1) can be calculated according to the equation below. **Velocity-based Profile** : t1 = 64 * {[Profile Velocity(112)](#profile-velocity112) / [Profile Acceleration(108)](#profile-acceleration108)} **Time-based Profile** : t1 = [Profile Acceleration(108)](#profile-acceleration108) @@ -38,7 +36,7 @@ The following explains how Profile processes [Goal Position(116)] instruction in {% capture group_notice_04 %} -**NOTE** : If Time-based Profile is selected, [Profile Velocity(112)](#profile-velocity112) is used to set the time span of the Profile(t3), while [Profile Acceleration(108)](#profile-acceleration108) sets accelerating time(t1) in millisecond[ms]. [Profile Acceleration(108)](#profile-acceleration108) will not exceed 50% of [Profile Velocity(112)](#profile-velocity112) value. +**NOTE** : If Time-based Profile is selected, [Profile Velocity(112)](#profile-velocity112) is used to set the time span of the Profile(t3), while [Profile Acceleration(108)](#profile-acceleration108) sets allowed accelerating time(t1) in millisecond[ms]. [Profile Acceleration(108)](#profile-acceleration108) will not exceed 50% of the configured [Profile Velocity(112)](#profile-velocity112) value. {% endcapture %}
diff --git a/_includes/en/dxl/quick_start.md b/_includes/en/dxl/quick_start.md index 95c8aa81b..c6c0935d6 100644 --- a/_includes/en/dxl/quick_start.md +++ b/_includes/en/dxl/quick_start.md @@ -1,85 +1,46 @@ ### Prerequisites {% if page.product_group=='xl330' or page.ref=='xc330-m288' or page.ref=='xc330-m181' %} -- Power supply to DYNAMIXEL ([LB-041](http://en.robotis.com/shop_en/item.php?it_id=903-0220-001) or SMPS compatible with DYNAMIXEL) +- DYNAMIXEL Power Supply ([LB-041](http://en.robotis.com/shop_en/item.php?it_id=903-0220-001) or SMPS compatible with DYNAMIXEL) - See [Compatibility Table] {% else %} -- Power supply to DYNAMIXEL(12V SMPS / Controllers, compatible with DYNAMIXEL or [LB-020 battery](http://en.robotis.com/shop_en/item.php?it_id=903-0277-000)) +- DYNAMIXEL Power Supply (12V SMPS, or compatible 12v battery.) - See [Compatibility Table] {% endif %} - PC with Windows, Linux or MacOS. -- Connection between PC and DYNAMIXEL ([U2D2], [USB2Dynamixel]) -- [Compatible Software with DYNAMIXEL](#compatible-software-with-dynamixel) +- Serial converter to communicate between your PC and DYNAMIXEL ([U2D2], [OpenRB-150]) +- [DYNAMIXEL Control Software](#compatible-software-with-dynamixel) {% capture warn_01 %} **WARNING**: -- USB2Dynamixel has been discontinued. -- Some software may not support OS which you use. Be sure to read e-Manual of software you use to check the supported OS for right use of software. +- Some software may not support all OS options. Be sure to read the eManual page of any software you wish to use to ensure compatibility. {% endcapture %}
{{ warn_01 | markdownify }}
{% capture notice_01 %} **NOTE**: -- U2D2 is a small size USB communication converter that enables to control and operate DYNAMIXEL with PC. -- [U2D2 Power Hub](/docs/en/parts/interface/u2d2_power_hub/) which combines with U2D2 supplies a variety external power source with a stable power supply to DYNAMIXEL. +- The U2D2 is a small size USB to Serial communication converter that enables control and operation of DYNAMIXEL servos directly from a connected PC. +- The [U2D2 Power Hub](/docs/en/parts/interface/u2d2_power_hub/) simplifies the process of connecting an external power source to your U2D2 to supply power to your DYNAMIXEL. {% endcapture %}
{{ notice_01 | markdownify }}
### [Compatible Software with DYNAMIXEL](#compatible-software-with-dynamixel) -You can use exclusive software for DYNAMIXEL. See the software compatibility on the next table and choose a desired software for your project. - -| Model | AX Series | DX Series | RX Series | EX Series | MX Series | X-Series | PRO Series | P Series | -|:---------------------|:----------|:----------|:----------|:----------|:----------|:----------------------|:-----------|:---------| -| R+ Manager 2.0 | X | X | X | X | O | O | O | O | -| DYNAMIXEL Wizard | O | X | X | O | O | X (XL320 can be used) | O | X | -| DYNAMIXEL Wizard 2.0 | O | O | O | O | O | O | O | O | -| DYNAMIXEL SDK | O | O | O | O | O | O | O | O | -| DYNAMIXEL Workbench | O | O | O | O | O | O | O | O | - - {% capture notice_02 %} - **NOTE**: You can also use more variety of software. For more information, see the following to check software provided by ROBOTIS. - - [DYNAMIXEL to software Compatibility Table ](/docs/en/parts/controller/controller_compatibility/#dynamixel) - - [Controller to software Compatibility Table](/docs/en/parts/controller/controller_compatibility/#software) - {% endcapture %} -
{{ notice_02 | markdownify }}
- -#### [R+ Manager](#r-manager) - -[R+ Manager] is used to handle devices used by a robot. Major functions of this program are as follows. - -- Manage controller firmware. (Update and Restore) -- Inspect the status of the controller and peripheral devices. (Test) -- Set the required modes. (Settings) - -**NOTE**: R+ Manager 2.0 or DYNAMIXEL Wizard 2.0 provides diverse features compared to [R+ Manager]. -{: .notice} - -#### [R+ Manager 2.0](#r-manager-20) - -The R+ Manager 2.0 manages a controller and DYNAMIXEL devices that comprise the robot. By connecting the product, you can update the product to the latest version and test Control Table. The functions that were previously provided in RoboPlus Manager 1.0 and Wizard 1.0 have been combined in RoboPlus Manager 2.0. - -{% capture warn_02 %} -**WARNING**: R+ Manager 2.0 is not compatible with DYNAMIXEL using protocol 1.0. -DYNAMIXEL Wizard 2.0 supports all DYNAMIXEL for Firmware Recovery, Firmware Update, and change data of Control Table of DYNAMIXEL. -{% endcapture %} -
{{ warn_02 | markdownify }}
- #### [DYNAMIXEL Wizard 2.0](#dynamixel-wizard-20) -[DYNAMIXEL Wizard 2.0] is an optimized tool for managing DYNAMIXEL’s from various operating systems. +[DYNAMIXEL Wizard 2.0] a configuration tool designed to simplify the setup, configuration and management of DYNAMIXEL servos. -The following features are provided with DYNAMIXEL Wizard 2.0. +The following features are provided by DYNAMIXEL Wizard 2.0: - DYNAMIXEL Firmware Update -- DYNAMIXEL Diagnosis -- DYNAMIXEL Configuration and Test -- DYNAMIXEL Data Plotting in Real-Time +- DYNAMIXEL Error Diagnosis +- DYNAMIXEL Configuration and Testing +- DYNAMIXEL Real-time Data Plotting - Generate & Monitor DYNAMIXEL Packets #### [DYNAMIXEL SDK](#dynamixel-sdk) -[DYNAMIXEL SDK] is a software development kit that provides DYNAMIXEL control functions using packet communication. The API of DYNAMIXEL SDK is designed for DYNAMIXEL actuators and DYNAMIXEL-based platforms. You need to be familiar with C/C++ programming language for right use of the software. This e-Manual provides comprehensive information on ROBOTIS products and applications. +[DYNAMIXEL SDK] is a software development kit that provides DYNAMIXEL control functions for a variety of popular programming languages. **Supported Programming Laguanges and Features**: - C, C++, C#, Python, Java, MATLAB, LabVIEW @@ -87,21 +48,15 @@ The following features are provided with DYNAMIXEL Wizard 2.0. - ROS - Arduino -#### [DYNAMIXEL Workbench](#dynamixel_workbench) - -[DYNAMIXEL Workbench], based on DYNAMIXEL SDK, is library which provides simple and easier method to use DYNAMIXEL. - -**Supported Programming Laguanges and Features**: -- C++ -- Linux, MacOS -- ROS -- Arduino - -**NOTE**: DYNAMIXEL Workbench may provide lack of contents or features compared to DYNAMIXEL SDK. In order to use DYNAMIXEL with sufficient contents, use [DYNAMIXEL SDK]. -{: .notice} +{% capture notice_02 %} +**NOTE**: You can also use more variety of software. For more information, see the following to check software provided by ROBOTIS. +- [DYNAMIXEL to software Compatibility Table ](/docs/en/parts/controller/controller_compatibility/#dynamixel) +- [Controller to software Compatibility Table](/docs/en/parts/controller/controller_compatibility/#software) +{% endcapture %} +
{{ notice_02 | markdownify }}
[U2D2]: /docs/en/parts/interface/u2d2/ -[USB2DYNAMIXEL]: /docs/en/parts/interface/usb2dynamixel/ +[OpenRB-150]: /docs/en/parts/controller/openrb-150/ [R+ Manager]: /docs/en/software/rplus1/manager/ [R+ Manager 2.0]: /docs/en/software/rplus2/manager/ [DYNAMIXEL SDK]: /docs/en/software/dynamixel/dynamixel_sdk/overview/ diff --git a/_includes/en/dxl/warning.md b/_includes/en/dxl/warning.md index 7e4a36e75..2445187b2 100644 --- a/_includes/en/dxl/warning.md +++ b/_includes/en/dxl/warning.md @@ -1,6 +1,6 @@ {% if page.product_group== 'xl330' %} {% capture x330_ttl %} -**NOTE**: Though the communication bus of XL330 series has a 3.3 V TTL logic level unlike other DYNAMIXELs, the XL330 is tolerant of a with a 5V TTL logic level. +**NOTE**: Though the XL330 series has a 3.3 V TTL logic level, the XL330 is tolerant of 5V TTL logic level communications. {% endcapture %}
{{ x330_ttl | markdownify }}
{% endif %} @@ -8,13 +8,13 @@ {% capture dxl_danger %} ![](/assets/images/icon_warning.png) **DANGER** -(May cause serious injury or death) +(Ignoring these warnings may cause serious injury or death) -- {% if page.product_group=='dxl_xw540' or page.product_group=='dxl_xw430' %} Never place flammables near the product. {% else %} Never place items containing water, flammables, or solvents near the product. {% endif %} +- {% if page.product_group=='dxl_xw540' or page.product_group=='dxl_xw430' %} Never place flammable items or open flames near the product. {% else %} Never place items containing water, flammables/open flames, or solvents near the product. {% endif %} - Never place fingers, arms, toes, and other body parts near product during operation. -- Cut the power off if the product begins to emit strange odors or smoke. +- Cease operation and remove power from the product if the product begins to emit strange odors, noises, or smoke. - Keep product out of reach of children. -- Check input polarity before installing wiring or cables. +- Check input polarity before installing or energizing wiring or cables. {% endcapture %}
{{ dxl_danger | markdownify }}
@@ -38,11 +38,8 @@ {% capture dxl_caution %} ![](/assets/images/icon_warning.png) **CAUTION** -(May cause injury or damage to product) -{% if page.product_group=='dxl_xw540' or page.product_group=='dxl_xw430' %} - Comply with the operating environment. (Depth 1 m, 24 hr in normal fresh water) -- Do not pull the rubber cap of the connector. -- The rubber cap is connected to the rubber packing, and any deformation may cause leakage. -- the rubber cap is designed for dust protection and is not waterproof. When using underwater, please connect a waterproof cable.{% elsif page.product_group=='opencm904' or page.product_group=='ln-101' or page.product_group=='u2d2' or page.product_group=='u2d2_power_hub' or page.product_group=='dynamixel_shield' or page.product_group=='cm-50' or page.product_group=='openrb-150' or page.product_group=='opencm485exp' %} {% else %} - Always comply with operating environment specifications including voltage, current, and temperature. {% endif %} +(Ignoring these warnings may cause mild injury or damage to the product) +{% if page.product_group=='dxl_xw540' or page.product_group=='dxl_xw430' %} - Always Comply with the product's official operating environment specifications: Submersion of up to 1m of depth for 24 hours in fresh water.{% elsif page.product_group=='opencm904' or page.product_group=='ln-101' or page.product_group=='u2d2' or page.product_group=='u2d2_power_hub' or page.product_group=='dynamixel_shield' or page.product_group=='cm-50' or page.product_group=='openrb-150' or page.product_group=='opencm485exp' %} {% else %} - Always comply with the product's offical operating environment specifications including input voltage, current, and operating temperature. {% endif %} - Do not insert blades or other sharp objects during product operation. {% endcapture %}
{{ dxl_caution | markdownify }}
@@ -50,15 +47,14 @@ {% capture dxl_attention %} ![](/assets/images/icon_warning.png) **ATTENTION** -(May cause injury or damage to product) +(Ignoring these warnings may cause minor injury or damage to the product) - Do not disassemble or modify the product. -- Do not drop or apply strong impacts to the product. -{% if page.product_group== 'xl330' or page.ref == 'xc330-m181' or page.ref == 'xc330-m288' %} -- To ensure a stable power supply, it is recommended to use a ROBOTIS controller, or [LB-041 battery](http://en.robotis.com/shop_en/item.php?it_id=903-0220-001). +- Do not drop the product or apply strong impacts. - Do not connect or disconnect DYNAMIXEL cables while power is being supplied. +{% if page.product_group== 'xl330' or page.ref == 'xc330-m181' or page.ref == 'xc330-m288' %} +- A ROBOTIS controller is recommended to ensure a stable power supply. {% elsif page.ref == 'xc330-t288' or page.ref == 'xc330-t181' %} -- To ensure a stable power supply, it is recommended to use a ROBOTIS controller, or [LB-020 battery](http://en.robotis.com/shop_en/item.php?it_id=903-0277-000). -- Do not connect or disconnect DYNAMIXEL cables while power is being supplied. +- A ROBOTIS controller is recommended to ensure a stable power supply. {% else %} {% endif %} {% endcapture %} diff --git a/_includes/en/dxl/x/backup_ready.md b/_includes/en/dxl/x/backup_ready.md new file mode 100644 index 000000000..7d46d5d2a --- /dev/null +++ b/_includes/en/dxl/x/backup_ready.md @@ -0,0 +1,19 @@ +{% if page.product_group == 'dxl_p' %} +{% assign firmware_version_backup = "firmware **V12**" %} +{% elsif page.product_group == 'xl330' or page.product_group == 'xc330' %} +{% assign firmware_version_backup = "firmware **V46**" %} +{% else %} +{% assign firmware_version_backup = "firmware **V45**" %} +{% endif %} + +The value in this address indicates whether a saved backup of the control table exists in the actuator's memory. For more information see [Control Table Backup Packet](/docs/en/dxl/protocol2/#control-table-backup-0x20). + +| Value | Description | +|:-----:|:-------------------------------| +| 0 | There is no saved backup data | +| 1 | Saved backup data exists. | + +**NOTE** +Backup Ready is available starting from {{ firmware_version_backup }}. +See [Backup and Restore](/docs/en/software/dynamixel/dynamixel_wizard2/#backup-and-restore) for more details. +{: .notice} diff --git a/_includes/en/dxl/x/baudrate.md b/_includes/en/dxl/x/baudrate.md new file mode 100644 index 000000000..522bf817c --- /dev/null +++ b/_includes/en/dxl/x/baudrate.md @@ -0,0 +1,20 @@ +Baud Rate determines serial communication speed between a DYNAMIXEL and it's controller. + +| Value | Baud Rate(bps) | Margin of Error | +|:------------:|:------------:|:------------:| +{% if page.product_group=='dxl_mx' %}|0|2M|0.000 [%]| +{% else %}{% endif %}|1|1M|0.000 [%]| +|3|500,000| 0.000 [%]| +|4|400,000| 0.000 [%]| +|7|250,000| 0.000 [%]| +|9|200,000| 0.000 [%]| +|16|115200| -2.124 [%]| +|34(Default)|57600| 0.794 [%]| +|103|19200| -0.160 [%]| +|207|9600| -0.160 [%]| + +**NOTE** : A margin of error of less than 3% will not affect UART communication. +{: .notice} + +**NOTE** : For stable communication with higher Baudrates, configure [USB Latency Settings](/docs/en/software/dynamixel/dynamixel_wizard2/#usb-latency-setting) to the lowest value supported by your hardware. +{: .notice} diff --git a/_includes/en/dxl/x/bus_watchdog.md b/_includes/en/dxl/x/bus_watchdog.md new file mode 100644 index 000000000..48dbd0914 --- /dev/null +++ b/_includes/en/dxl/x/bus_watchdog.md @@ -0,0 +1,27 @@ + The Bus Watchdog(98) is a fail-safe system used to stop DYNAMIXEL motion if communication between the controller and DYNAMIXEL (RS485, TTL) is disconnected. + +| | Values | Description | +|:------|:-------:|:-----------------------------------------------------------| +| Range | 0 | Deactivate Bus Watchdog Function, Clear Bus Watchdog Error | +| Range | 1 ~ 127 | Activate Bus Watchdog (Unit: 20 [msec]) | +| Range | -1 | Bus Watchdog Error Active | + +The Bus Watchdog function monitors the interval of communications between the controller and DYNAMIXEL when [Torque Enable(64)] is '1'(Torque ON). +If the measured communication interval is larger than the configured value of Bus Watchdog(98), the DYNAMIXEL will stop. Bus Watchdog(98) will be changed to '-1' and a Bus Watchdog Error will be activated. +When a Bus Watchdog Error screen is active, all Goal Values ([Goal PWM(100)], {% if page.product_group!='dxl_xl430' %}[Goal Current(102)], {% else %}{% endif %}[Goal Velocity(104)], [Goal Position(116)]) will be changed to read-only-access until the error has been cleared. +If the value of Bus Watchdog(98) is changed to '0', active Bus Watchdog Errors will be cleared. + +#### [Bus Watchdog (98) Example](#bus-watchdog-98-example) + +The following is an example of the operation of the Bus Watchdog failsafe. +1. After setting the [Operating Mode(11)] to speed control mode, change [Torque Enable(64)] to '1'. +2. If '50' is written to [Goal Velocity(104)], the DYNAMIXEL will rotate in a CCW direction. +3. Change the value of [Bus Watchdog(98)] to '100' (2,000 [ms]) to activate the Bus Watchdog function. +4. If no instruction packet is received for 2,000 [ms], the DYNAMIXEL will stop. When it stops, the [Profile Acceleration(108)] and [Profile Velocity(112)] are set to '0'. +5. The value of [Bus Watchdog(98)] changes to '-1' (Bus Watchdog Error). At this time, the access to Goal Values will be changed to read-only. +6. If '150' is written to [Goal Velocity(104)], a Data Range Error will be returned via Status Packet. +7. If the value of [Bus Watchdog(98)] is changed to '0', the Bus Watchdog Error will be cleared. +8. If “150” is written to [Goal Velocity(104)], the DYNAMIXEL will rotate in a CCW direction. + + +[Protocol 2.0]: /docs/en/dxl/protocol2/#status-packet diff --git a/_includes/en/dxl/x/control_table.md b/_includes/en/dxl/x/control_table.md new file mode 100644 index 000000000..90e33a604 --- /dev/null +++ b/_includes/en/dxl/x/control_table.md @@ -0,0 +1,51 @@ +# [Control Table](#control-table) +The Control Table is a data structure used by DYNAMIXEL actuators to manage the state of the device. Users can read data registers to get information about the status of the device with Read Instruction Packets, and modify data registers to control the device with Write Instruction Packets. + +{% assign protocol= "DYNAMIXEL Protocol 2.0" %} +{% assign data_size= "1 ~ 4" %} + +{% if page.product_group=='dxl_x430' or page.product_group=='dxl_xl430' or page.product_group=='dxl_x540' or page.product_group=='dxl_xw540' or page.product_group=='dxl_xw430' %} +{% assign torque_enable= "64" %} + +{% elsif page.product_group=='dxl_xl320' %} +{% assign torque_enable= "24" %} +{% assign protocol= "DYNAMIXEL Protocol 2.0" %} +{% assign data_size= "1 ~ 2" %} + +{% endif %} + +## [Control Table, Data, Address](#control-table-data-address) +The Control Table is a structure that consists of multiple Data fields to store status or to control the device. Users can check current status of the device by reading a specific Data from the Control Table with Read Instruction Packets. WRITE Instruction Packets enable users to control the device by changing specific Data in the Control Table. The Address is a unique value when accessing a specific Data in the Control Table with Instruction Packets. In order to read or write data, users must designate a specific Address in the Instruction Packet. Please refer to [{{ protocol }}] for more details about Instruction Packets. + +{% if page.product_group=='dxl_xl320' or page.product_group=='dxl_ax' or page.product_group=='dxl_dx' or page.product_group=='dxl_ex' or page.product_group=='dxl_mx' %} +{% else %} +**NOTE** : Two's complement is applied for the negative value. For more information, please refer to [Two's complement] from Wikipedia. +{: .notice} +{% endif %} + +### [Area (EEPROM, RAM)](#area-eeprom-ram) +The Control Table is divided into 2 Areas. Data in the RAM Area is reset to initial values when the power is reset(Volatile). On the other hand, data in the EEPROM Area is maintained even when the device is powered off(Non-Volatile). + +{% if page.product_group=='dxl_ax' or page.product_group=='dxl_dx' or page.product_group=='dxl_ex' or page.product_group=='dxl_mx' or page.product_group=='dxl_rx' %} +{% elsif page.ref=='2xc430-w250' or page.ref =='2xl430-w250' %} +**Data in the [EEPROM Area](#eeprom-area) can only be modified when [Torque Enable(64)](#torque-enable) for all axis are set to ‘0’ (Torque is OFF).** +{: .notice--warning} +{% else %} +**Data in the EEPROM Area can only be modified if Torque Enable({{ torque_enable }}) is set to '0' (Torque is OFF).** +{: .notice--warning} +{% endif %} + + +### [Size](#size) +The Size of data varies from {{ data_size }} bytes depend on their usage. Please check the size of data when updating the data with an Instruction Packet. For data larger than 2 bytes will be saved according to [Little Endian]. + +### [Access](#access) +The Control Table has two different access properties. ‘RW’ property stands for read and write access permission while ‘R’ stands for read only access permission. Data with the read only property cannot be changed by the WRITE Instruction. Read only property(‘R’) is generally used for measuring and monitoring purpose, and read write property(‘RW’) is used for controlling device. + +### [Initial Value](#initial-value) +Each data in the Control Table is restored to initial values when the device is turned on. Default values in the EEPROM area are initial values of the device (factory default settings). If any values in the EEPROM area are modified by a user, modified values will be restored as initial values when the device is turned on. Initial Values in the RAM area are restored when the device is turned on. + +[DYNAMIXEL Protocol 1.0]: /docs/en/dxl/protocol1/ +[DYNAMIXEL Protocol 2.0]: /docs/en/dxl/protocol2/ +[Two's complement]: https://en.wikipedia.org/wiki/Two%27s_complement +[Little Endian]: https://en.wikipedia.org/wiki/Endianness#Little diff --git a/_includes/en/dxl/x/drive_mode.md b/_includes/en/dxl/x/drive_mode.md new file mode 100644 index 000000000..0268d7e2d --- /dev/null +++ b/_includes/en/dxl/x/drive_mode.md @@ -0,0 +1,86 @@ +{% if page.product_group == 'xl330' or page.product_group == 'xc330' %} +{% assign firmware_version_torque_on_by_goal_update = "firmware **V46**" %} +{% else %} +{% assign firmware_version_torque_on_by_goal_update = "firmware **V45**" %} +{% endif %} + +Drive Mode contains several settings for adjusting the operating behavior of DYNAMIXEL servos, including automatic torque on, reverse movement, and movement profiles. +{% if page.product_group=='dxl_x430' %} +of DYNAMIXEL. Drive Mode is available starting from the **firmware V38**. +{% endif %} + +| Bit | Item | Description | +|:-----------:|:-----------------------------------:|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Bit 7(0x80) | - | Unused, always ‘0’ | +| Bit 6(0x40) | - | Unused, always ‘0’ | +| Bit 5(0x20) | - | Unused, always ‘0’ | +| Bit 4(0x10) | - | Unused, always ‘0’ |{% if page.product_group=='xl330' or page.product_group=='xc330' or page.product_group=='dxl_x430' or page.product_group=='dxl_x540' or page.product_group=='dxl_xw540' or page.product_group=='dxl_xw430' or page.product_group=='dxl_xl430' %} | +| Bit 3(0x08) | Torque On by Goal Update | **[0]** Movements will only be executed if [Torque Enable(64)] is set to '1'
**[1]** Movements will be executed regardless of the value of [Torque Enable(64)]. If the value of Torque Enable(64) is '0' and a command is given, Torque Enable(64) will be updated to '1'. |{% else %} | +| Bit 3(0x08) | - | Unused, always ‘0’ | |{% endif %}{% if page.product_group=='xl330' or page.product_group=='xc330' or page.product_group=='dxl_x430' or page.product_group=='dxl_x540' or page.product_group=='dxl_xw540' or page.product_group=='dxl_xw430' or page.product_group=='dxl_xl430' or page.product_group=='dxl_mx2' %} | +| Bit 2(0x04) | Profile Configuration | **[0]** Velocity-based Profile: Create Profiles based on movement Velocity
**[1]** Time-based Profile: Create Profiles based on time steps.
※ See [What is the Profile](#what-is-the-profile) |{% else %} | +| Bit 2(0x04) | - | Unused, always ‘0’ |{% endif %}{% if page.product_group=='dxl_x540' or page.product_group=='dxl_ex' or page.ref=='mx-106-2' or page.ref=='mx-106' %} | +| Bit 1(0x02) | Leader/Follower Mode
(Dual Joint) | **[0]** Leader Mode: Operate as a Leader DYNAMIXEL.
**[1]** Follower Mode: Operate as Follower DYNAMIXEL |{% else %} | +| Bit 1(0x02) | - | Unused, always ‘0’ |{% endif %} | +| Bit 0(0x01) | Normal/Reverse Mode | **[0]** Normal Mode: CCW(Positive), CW(Negative)
**[1]** Reverse Mode: CCW(Negative), CW(Positive) | + +{% if page.product_group=='dxl_mx2' or page.product_group=='dxl_x540' or page.product_group=='dxl_xw540' or page.product_group=='dxl_xw430' or page.product_group=='dxl_x430' or page.product_group=='dxl_xl430' %} +**NOTE** : Time-based Profile is available starting from **firmware V42**. +{: .notice} +{% else %}{% endif %} + +{% if page.product_group=='xl330' or page.product_group=='xc330' or page.product_group=='dxl_x430' or page.product_group=='dxl_x540' or page.product_group=='dxl_xw540' or page.product_group=='dxl_xw430' or page.product_group=='dxl_xl430' %} +**NOTE**: Torque On by Goal Update is available starting from {{ firmware_version_torque_on_by_goal_update }}. +{: .notice} +{% else %}{% endif %} + +{% capture notice_01 %} +**NOTE** : If the value of Bit 0(Normal/Reverse Mode) of Drive Mode(10) is set to `1`, rotational direction is inverted. +Thus, {% if page.product_group=='dxl_mx2' or page.product_group=='dxl_x540' or page.product_group=='dxl_xw540' or page.product_group=='dxl_xw430' %}**Position**, **Velocity**, **Current**, **PWM**{% else %}**Goal Position**, **Present Position**{% endif %} will also have inverted directions. +This feature can be very useful when configuring symmetrical joints, or similar mirrored DYNAMIXEL installations. +{% endcapture %} +
{{ notice_01 | markdownify }}
+ +{% if page.ref=='mx-106' or page.product_group=='dxl_ex' %} +{% capture drivemode %} +**CAUTION** : When MX-106 and EX-106+ are set to Wheel Mode(endless), Normal/Reverse Mode is not available. +Normal/Reverse Mode is activated under Joint Mode and Multi-turn Mode. +Please refer to [CW/CCW Angle Limit](#cwccw-angle-limit6-8) for configuring Operation Type. +{% endcapture %} +
{{ drivemode | markdownify }}
+{% else %}{% endif %} + +{% if page.product_group=='dxl_x540' or page.product_group=='dxl_ex' or page.ref=='mx-106-2' or page.ref=='mx-106' %} +#### Dual Mode +Dual Mode is intended to combine two DYNAMIXEL into a single joint to enhance the performance. +In order to use Dual Mode, Follower DYNAMIXEL should be connected to Leader DYNAMIXEL with the Sync Cable. + +Please note that the Follower DYNAMIXEL is directly controlled only by the PWM signal from the Leader DYNAMIXEL through the Sync Cable. +Thus, {% if page.product_group=='dxl_ex' or page.ref=='mx-106' %}Goal Position, Moving Speed{% else %}Goal Position, Goal Velocity, Goal Current, Goal PWM{% endif %} of the Follower DYNAMIXEL are unused and ignored. + +The rotational direction of Follower DYNAMIXEL is decided by **the type of Sync Cable** rather than the Normal/Reverse Mode setting of Follower DYNAMIXEL. +The twisted sync cable will actuate the Follower DYNAMIXEL to the opposite direction of the Leader DYNAMIXEL while regular sync cable actuate to the same direction. +{: .notice} + +{% if page.product_group=='dxl_x540' %} +![](/assets/images/dxl/x/x-series_dual_joint.png) +{% else %} +![](/assets/images/dxl/ex/ex-106_dual.png) +{% endif %} + +| Sync Cable | Description | +|:------------------:|:----------------------------------------------------------------------------------------------------------------------------------------------------------| +| Regular Sync Cable | Follower DYNAMIXEL is controlled by the `PWM Signal` from the Leader DYNAMIXEL.
Leader and Follower DYNAMIXEL rotate in the **same direction**. | +| Twisted Sync Cable | Follower DYNAMIXEL is controlled by the `Inverted PWM Signal` from the Leader DYNAMIXEL.
Leader and Follower DYNAMIXEL rotate in the **opposite direction**. | + +{% capture dual_frame %} +**CAUTION** : If Leader and Follower are not physically connected by frame, both DYNAMIXEL may not perfectly synchronized due to the load applied on each DYNAMIXEL. +Please use appropriate frame to connect DYNAMIXEL in Dual Mode. +{% if page.product_group=='dxl_x540' %} +![](/assets/images/dxl/x/x-series_dual_joint_frame.png) +{% else %} +![](/assets/images/dxl/ex/ex-106+_fr08-h110_fr08-d101.png) +{% endif %} +{% endcapture %} +
{{ dual_frame | markdownify }}
+ +{% else %}{% endif %} diff --git a/_includes/en/dxl/x/firmware_version.md b/_includes/en/dxl/x/firmware_version.md new file mode 100644 index 000000000..549cd6cbf --- /dev/null +++ b/_includes/en/dxl/x/firmware_version.md @@ -0,0 +1 @@ +This address stores the version number of the current firmware running on your DYNAMIXEL servo. diff --git a/_includes/en/dxl/x/goal_position.md b/_includes/en/dxl/x/goal_position.md new file mode 100644 index 000000000..0e40972aa --- /dev/null +++ b/_includes/en/dxl/x/goal_position.md @@ -0,0 +1,27 @@ +Goal Position(116) is used to set the actuator's desired output position. + +![](/assets/images/dxl/x/dxl_goal_position.jpg) + +| Mode | Values | Description | +| :--------: | :--------: | :--------:| +| Position Control Mode | Min Position Limit(52) ~ Max Position Limit(48)| Initial Value : 0 ~ 4,095| +| Extended Position Control Mode|-1,048,575 ~ 1,048,575|-256[rev] ~ 256[rev] | +{% if page.product_group!='dxl_xl430' and page.ref!='mx-28-2' %} +| Current-based Position Control Mode|-1,048,575 ~ 1,048,575|-256[rev] ~ 256[rev]|{% else %}{% endif %} + +| Unit | Description | +|:--------------------------:|:------------------:| +| 0.088 [deg/pulse] | 1[rev] : 0 ~ 4,095 | + + +{% capture notice_01 %} +**NOTE** : [Profile Velocity(112)](#profile-velocity112) and [Profile Acceleration(108)](#profile-acceleration108) are active under the following conditions: +- When the [Operating Mode(11)](#operating-mode11) is **Position Control Mode**, [Profile Velocity(112)](#profile-velocity112) and [Profile Acceleration(108)](#profile-acceleration108) are used to create a new profile when the [Goal Position(116)](#goal-position116) is updated. +- When the [Operating Mode(11)](#operating-mode11) is **Velocity Control Mode**, [Profile Acceleration(108)](#profile-acceleration108) is used to create a new profile when [Goal Velocity(104)](#goal-velocity104) is updated. +{% endcapture %} +
{{ notice_01 | markdownify }}
+ +**NOTE** : When turning off the power supply or changing the Operating Mode to Extended Position Control Mode, the value of Present Position is reset to the absolute position value within a single turn. +{: .notice} + +{% include en/dxl/control_table_opmode_note.md %} diff --git a/_includes/en/dxl/x/goal_pwm.md b/_includes/en/dxl/x/goal_pwm.md new file mode 100644 index 000000000..61a01a54e --- /dev/null +++ b/_includes/en/dxl/x/goal_pwm.md @@ -0,0 +1,8 @@ +When the [Operating Mode(11)] is set to **PWM Control Mode**, both the internal PID and Feedforward controllers will be deactivated and Goal PWM(100) is used to directly control the supplied output voltage to the servo's motor. When set to a different [Operating Mode(11)], Goal PWM(100) is used as a final limiter on the output PWM value only. Read [Position PID Gain(80, 82, 84), Feedforward 1st/2nd Gains(88, 90)](#position-pid-gain80-82-84) or [Velocity PI Gain(76, 78)](#velocity-pi-gain76-78) for more information on how Goal PWM (100) works with configurable gain settings. + +| Unit | Range | +|:---------------:|:----------------------------------:| +| about 0.113 [%] | -[PWM Limit(36)] ~ [PWM Limit(36)] | + + **NOTE**: Goal PWM(100) can not exceed the configured [PWM Limit(36)]. + {: .notice} diff --git a/_includes/en/dxl/x/goal_velocity.md b/_includes/en/dxl/x/goal_velocity.md new file mode 100644 index 000000000..49e6fe6fd --- /dev/null +++ b/_includes/en/dxl/x/goal_velocity.md @@ -0,0 +1,14 @@ +Goal Velocity(104) is used to to set the target velocity when in the **Velocity Control Mode** [Operating Mode(11)]. Goal Velocity(104) is not used to limit moving velocity in any operating modes. + +| Unit | Value Range | +|:---------:|:--------------------------------------------:| +| 0.229 rpm | -[Velocity Limit(44)] ~ [Velocity Limit(44)] | + +**NOTE**: Goal Velocity(104) can not exceed the configured [Velocity Limit(44)]. +{: .notice} + +**NOTE** : The maximum velocity and maximum torque of DYNAMIXEL is affected by the supplied voltage. If the input voltage changes, so does the maximum velocity and torque. This manual assumes operation with the recommended input voltage. +{: .notice} + +**NOTE** : If [Profile Acceleration(108)] and Goal Velocity(104) are modified simultaneously, the newly modified [Profile Acceleration(108)] will be used to process the updated Goal Velocity(104). +{: .notice} diff --git a/_includes/en/dxl/x/hardware_error_status.md b/_includes/en/dxl/x/hardware_error_status.md new file mode 100644 index 000000000..1e1ddac5e --- /dev/null +++ b/_includes/en/dxl/x/hardware_error_status.md @@ -0,0 +1 @@ +This register stores any active hardware error status conditions. For more details, please refer to the [Shutdown(48)](#shutdown) control table item. diff --git a/_includes/en/dxl/x/homing_offset.md b/_includes/en/dxl/x/homing_offset.md new file mode 100644 index 000000000..f70d2f48f --- /dev/null +++ b/_includes/en/dxl/x/homing_offset.md @@ -0,0 +1,13 @@ +Homing Offset(20) allows users to adjust the actuator's home position by adding the offset value is to the reported [Present Position(132)]. + +**Present Position(132) = Actual Position + Homing Offset(20)** + +| Unit | Value Range | +|:-------------------:|:---------------------------------------------:| +| about 0.088 [°] | -1,044,479 ~ 1,044,479
(-255 ~ 255[rev]) | + +**NOTE** : In Position Control Mode(Joint Mode) when configured to rotate less than 360 degrees, any invalid Homing Offset(20) values will be ignored(valid range : -1,024 ~ 1,024). +{: .notice} + +**WARNING** : Even if [Drive Mode(10)](#drive-mode10) is set to Reverse Mode, the sign of the Homing Offset(20) value is not reversed. +{: .notice--warning} diff --git a/_includes/en/dxl/x/id.md b/_includes/en/dxl/x/id.md new file mode 100644 index 000000000..26eee2950 --- /dev/null +++ b/_includes/en/dxl/x/id.md @@ -0,0 +1,19 @@ +{% if page.product_group == 'dxl_xl320' %} + +{% assign status_return_lv = "Status Return Level (17)" %} +{% assign protocol= "DYNAMIXEL Protocol 2.0" %} + +{% else %} + +{% assign status_return_lv = "Status Return Level (68)" %} +{% assign protocol= "DYNAMIXEL Protocol 2.0" %} + +{% endif %} + +The ID assigned to a DYNAMIXEL actuator is a unique value used to identify a specific actuator through the DYNAMIXEL network. The numbers 0-253 (0xFD) can be assigned as an ID, with 254 (0xFE) reserved for use as the Broadcast ID that can send an Instruction Packet to all connected DYNAMIXEL servos simultaneously. + +**NOTE** : IDs for every DYNAMIXEL connected to a single network must be unique. Shared ID numbers may cause communication failure. +{: .notice} + +**NOTE** : If an Instruction Packet ID is set to the Broadcast ID(0xFE), Status Packets will not be returned for READ or WRITE Instructions regardless of the configured {{ status_return_lv }}. For more details, please refer to the `Status Packet` of the [{{ protocol }}] eManual page. +{: .notice} diff --git a/_includes/en/dxl/x/indirect_data.md b/_includes/en/dxl/x/indirect_data.md new file mode 100644 index 000000000..0b7289fa3 --- /dev/null +++ b/_includes/en/dxl/x/indirect_data.md @@ -0,0 +1,62 @@ +{% if page.product_group=='xl330' or page.product_group=='xc330' %} +The Indirect Address registers allow the assignment of other RAM area control table items to registers in the Indirect Data region. This allows users to map multiple control table items needed for their application to sequential memory addresses to improve Instruction Packet efficiency. +If a specific address is allocated an Indirect Address, the corresponding Indirect Data register inherits all the features and properties of the assigned control table address. These properties include Size (Byte length), value range, and Access properties (Read Only, Read/Write). For instance, if 65 (LED) is allocated to Indirect Address 1(168), Indirect Data 1(208) will take on the properties of the [LED(65)] register. + +**NOTE**: Only addresses in the [RAM area (Address 64 ~ 227)](#control-table-of-ram-area) of the control table may be assigned to Indirect Addresses. +{: .notice} + +| Indirect Address Range | Description | +|:-----------------------:|:--------------------------------------------------------------------------------------| +| 64 ~ 227 | [EEPROM](#control-table-of-eeprom-area) addresses can't be assigned an Indirect Address | + +#### [Indirect Address and Indirect Data Examples](#indirect-address-and-indirect-data-examples) + +`Example 1` Allocating [LED(65)] to Indirect Data 1(208). +1. Indirect Address 1(168) : change the value to '65. +2. Set Indirect Data 1(208) to ‘1’ : LED(65) is also set to '1' and the LED turns on. +3. Set Indirect Data 1(208) to ‘0’ : LED(65) is also set to ‘0’ and the LED turns off. + +`Example 2` Allocating [Goal Position(116)] to Indirect Data 2(225), 4 sequential bytes have to be allocated. +1. Indirect Address 2(170) : change the value to '116' which is the first address of Goal Position. +2. Indirect Address 3(172) : change the value to '117' which is the second address of Goal Position. +3. Indirect Address 4(174) : change the value to '118' which is the third address of Goal Position. +4. Indirect Address 5(176) : change the value to '119' which is the fourth address of Goal Position. +5. Write the 4 byte value '1,024' to Indirect Data 2 : [Goal Position(116)] also becomes '1024' and the DYNAMIXEL moves. + +**NOTE** : In order to allocate Data in the Control Table longer than 2[byte] to Indirect Addresses, all addresses must be allocated to Indirect Address like Example 2 above. +{: .notice} + +{% else %} + +The Indirect Address registers allow the assignment of other RAM area control table items to registers in the Indirect Data region. This allows users to map multiple control table items needed for their application to sequential memory addresses to improve Instruction Packet efficiency. +If a specific address is allocated an Indirect Address, the corresponding Indirect Data register inherits all the features and properties of the assigned control table address. These properties include Size (Byte length), value range, and Access properties (Read Only, Read/Write). For instance, if 65 (LED) is allocated to Indirect Address 1(168), Indirect Data 1(208) will take on the properties of the [LED(65)] register. + +**NOTE**: Only addresses in the [RAM area (Address 64 ~ 227)](#control-table-of-ram-area) of the control table may be assigned to Indirect Addresses. +{: .notice} + +| Indirect Address Range | Description | +|:-----------------------:|:--------------------------------------------------------------------------------------| +| 64 ~ 661 | [EEPROM](#control-table-of-eeprom-area) addresses can't be assigned an Indirect Address | + +#### [Indirect Address and Indirect Data Examples](#indirect-address-and-indirect-data-examples) + +`Example 1` Allocating [LED(65)] to Indirect Data 1(224). +1. Change the value of Indirect Address 1(168) to '65' which is the address used for LED control. +2. Set Indirect Data 1(224) to ‘1’, LED(65) also changes to '1' and the LED is turned on. +3. Set Indirect Data 1(224) to ‘0’, LED(65) also changes to ‘0’ and the LED is turned off. + +`Example 2` Allocating [Goal Position(116)] to Indirect Data 2(225), 4 sequential bytes have to be allocated. +1. Indirect Address 2(170) : change the value to '116' which is the first address of Goal Position. +2. Indirect Address 3(172) : change the value to '117' which is the second address of Goal Position. +3. Indirect Address 4(174) : change the value to '118' which is the third address of Goal Position. +4. Indirect Address 5(176) : change the value to '119' which is the fourth address of Goal Position. +5. Set 4 byte value '1,024' to Indirect Data 2 : [Goal Position(116)] also becomes '1024' and DYNAMIXEL moves. + + +**NOTE** : In order to allocate Data in the Control Table longer than 2[byte] to Indirect Address, all address must be allocated to Indirect Address like the above Example 2. +{: .notice} + +**NOTE** : Indirect Address 29 ~ 56 and Indirect Data 29 ~ 56 can only be accessed with [Protocol 2.0]. +{: .notice} + +{% endif %} diff --git a/_includes/en/dxl/x/led.md b/_includes/en/dxl/x/led.md new file mode 100644 index 000000000..9ed9f9284 --- /dev/null +++ b/_includes/en/dxl/x/led.md @@ -0,0 +1,8 @@ +LED(65) controls the state of the indicator LED located on the back of the DYNAMIXEL actuator. + +| Bit | Description | +|:----------:|:-----------------| +| 0(Default) | Turn OFF the LED | +| 1 | Turn ON the LED | + +{% include en/dxl/led_policy.md %} diff --git a/_includes/en/dxl/x/model_number.md b/_includes/en/dxl/x/model_number.md index 9e2dd21e5..1408ad4e9 100644 --- a/_includes/en/dxl/x/model_number.md +++ b/_includes/en/dxl/x/model_number.md @@ -1,7 +1,5 @@ ---- -layout: popup ---- - -# Model Number - This address stores the model number of your DYNAMIXEL servo. + +| Decimal Value | Hex Value | Model Name | +|:-------------:|:---------:|:------------:| +| 1060 | 0x0424 | XL430-W250 | diff --git a/_includes/en/dxl/x/moving.md b/_includes/en/dxl/x/moving.md new file mode 100644 index 000000000..8ac7dd939 --- /dev/null +++ b/_includes/en/dxl/x/moving.md @@ -0,0 +1,7 @@ +The Moving(122) register indicates whether the connected DYNAMIXEL is in motion or not. +If the absolute value of [Present Velocity(128)] is greater than the configured [Moving Threshold(24)], Moving(122) is set to '1', indicating the actuator is currently in motion. Otherwise, it will be cleared to '0'. However, Moving(122) will always be set to '1' regardless of [Present Velocity(128)] while a movement Profile is in progress following an updated [Goal Position(116)] instruction. + +| Value | Description | +| :------------- | :------------- | +| 0 | Movement is not detected | +| 1 | Movement is detected, or a Profile is in progress(Goal Position(116) instruction has been updated) | diff --git a/_includes/en/dxl/x/moving_status.md b/_includes/en/dxl/x/moving_status.md new file mode 100644 index 000000000..f20ade509 --- /dev/null +++ b/_includes/en/dxl/x/moving_status.md @@ -0,0 +1,24 @@ +Moving Status(123) is a collection of bits that provide additional information about the DYNAMIXEL's current motion status. + +| Bit | Value | Information | Description | +|:--------------:|:--------------------:|:----------------:|:---------------------------------------------------------------------------------------------------------------------------| +| Bit 7 | X | - | Reserved for future use | +| Bit 6 | X | - | Reserved for future use | +| Bit 4
Bit 5 | 11
10
01
00 | Velocity Profile | 11 : [Trapezoidal Profile]
10 : Triangular Profile
01 : [Rectangular Profile]
00 : Profile not used([Step]) | +| Bit 3 | 0 or 1 | Following Error | Whether or not the DYNAMIXEL is following the desired position trajectory
0 : Following
1 : Not following | +| Bit 2 | X | - | Reserved for future use | +| Bit 1 | 0 or 1 | Profile Ongoing | A Profile is in progress following a [Goal Position(116)](#goal-position116) instruction update
0 : Profile completed
1 : Profile in progress | +| Bit 0 | 0 or 1 | In-Position | Whether or not the DYNAMIXEL has arrived to the desired [Goal Position(116)](#goal-position116)
0 : Not arrived
1 : Arrived | + +Following Error(0x08) and In-Position(0x01) are available when using {% if page.product_group!='dxl_xl430' %}, **Current-based Position Control Mode**{% else %}{% endif %}**Position Control Mode**, and **Extended Position Control Mode**. + +For more details about these operating modes, see [Operating Mode(11)]. +**NOTE** : A Triangular velocity profile is when a configured Rectangular velocity profile cannot reach the configured [Profile Velocity(112)](#profile-verlocity112). +{: .notice} + +**NOTE** : The In-Position bit will be set when the positional deviation is smaller than a predefined value when in Position related control modes. +{: .notice} + +[Trapezoidal Profile]: #what-is-the-profile +[Step]: #what-is-the-profile +[Rectangular Profile]: #what-is-the-profile diff --git a/_includes/en/dxl/x/moving_threshold.md b/_includes/en/dxl/x/moving_threshold.md new file mode 100644 index 000000000..80d2d5bc1 --- /dev/null +++ b/_includes/en/dxl/x/moving_threshold.md @@ -0,0 +1,5 @@ +The Moving Threshold(24) is used to determine whether the DYNAMIXEL is considered to be in motion or not. When the absolute value of the [Present Velocity(128)] is greater than the configured Moving Threshold(24), the DYNAMIXEL is considered in motion and the value of [Moving(122)] is set to ‘1’. + +| Unit | Range | Description | +|:---------------:|:---------:|:-------------------------------------------------:| +| about 0.229 rpm | 0 ~ 1,023 | All velocity related Data uses the same unit scale| diff --git a/_includes/en/dxl/x/operating_mode_xl.md b/_includes/en/dxl/x/operating_mode_xl.md new file mode 100644 index 000000000..040be2413 --- /dev/null +++ b/_includes/en/dxl/x/operating_mode_xl.md @@ -0,0 +1,25 @@ + +| Value | Operating Mode | Description | +|:-----------|:-------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 1 | Velocity Control Mode | This mode controls velocity. This mode behaves similarly to a standard DC motor, and is best suited to applications like drive wheels.| +| 3(Default) | Position Control Mode | This mode controls position. This mode is identical to the Joint Mode from existing DYNAMIXEL. Operating position range is limited by the [Max Position Limit(48)] and the [Min Position Limit(52)]. This mode is ideal for articulated robots that each joint rotates less than 360 degrees. | +| 4 | Extended Position Control Mode(Multi-turn) | This mode controls position. This mode is identical to the Multi-turn Position Control from existing DYNAMIXEL. 512 turns are supported(-256[rev] ~ 256[rev]). This mode is ideal for multi-turn wrists or conveyer systems or a system that requires an additional reduction gear. Note that [Max Position Limit(48)], [Min Position Limit(52)] are not used on Extended Position Control Mode. | +| 16 | PWM Control Mode (Voltage Control Mode) | This mode directly controls PWM output. (Voltage Control Mode) | + +{% capture group_notice_01 %} +**NOTE** : When the value of the Operating Mode(11) register changes, the [Velocity PI(76, 78)](#velocity-pi-gain76-78); [Position PID(80, 82, 84)](#position-pid-gain80-82-84); [Feedforward(88, 90)](#position-pid-gain80-82-84), will be reset according to the selected Operating Mode(11). Aside from this, the following registers will also be reset: + +1. [Profile Velocity(112)](#profile-velocity112) and [Profile Acceleration(108)](#profile-acceleration108) will be set to ‘0’ +2. [Goal PWM(100)](#goal-pwm100) and [Goal Current(102)](#goal-current102) are reset to the value of [PWM Limit(36)](#pwm-limit36) and [Current Limit(38)](#current-limit38) respectively +3. When the Operating Mode(11) is set to **Current-based Position Control Mode**, [Position PID(80, 82, 84)](#position-pid-gain80-82-84) and [PWM Limit(36)](#pwm-limit36) values will be reset. +{% endcapture %} +
{{ group_notice_01 | markdownify }}
+ +{% capture group_notice_02 %} +**NOTE** : PWM stands for **Pulse Width Modulation**, the signal that modulates voltage to control motors. It changes pulse width to control average supply voltage to the motor, and this technique is widely used in the motor control field. +PWM Control Mode is similar to the Wheel Mode of [AX](/docs/en/dxl/ax/ax-12w/#cw-compliance-margin) and [RX](/docs/en/dxl/rx/rx-10/#moving-speed-32) series. +[Goal PWM(100)](#goal-pwm) is used to control supply voltage for DYNAMIXELs in **PWM Control Mode**. +{% endcapture %} +
{{ group_notice_02 | markdownify }}
+ +{% include en/dxl/control_table_opmode_note.md %} diff --git a/_includes/en/dxl/x/position_limit.md b/_includes/en/dxl/x/position_limit.md new file mode 100644 index 000000000..9f4029190 --- /dev/null +++ b/_includes/en/dxl/x/position_limit.md @@ -0,0 +1,10 @@ +The Min and Max Position Limit(48, 52) is used to configure the maximum movement range in Position Control Mode within a single rotation(0 ~ 4,095). +Provided [Goal Position(116)] values must be within the configured position limit range. + +| Unit | Value Range | +|:-------------:|:---------------------:| +| 0.088 [°] | 0 ~ 4,095(1 rotation) | + +**NOTE** : Max Position Limit(48) and Min Position Limit(52) are only used in Position Control Mode within a single turn. +The angle limits set through this control table item do not apply in Extended Position Control Mode{% if page.product_group!='dxl_xl430' %} and Current-based Position Control Mode{% else %}{% endif %}. +{: .notice--warning} diff --git a/_includes/en/dxl/x/position_pid_gain.md b/_includes/en/dxl/x/position_pid_gain.md new file mode 100644 index 000000000..6bc31ebc5 --- /dev/null +++ b/_includes/en/dxl/x/position_pid_gain.md @@ -0,0 +1,29 @@ +The Position PID Gains(76, 78) are the configurable gain settings for the DYNAMIXEL PID controller in Position Control Mode and Extended Position Control Mode. + +| | Controller Gain | Conversion Equations | Range | Description | +|:------------------------:|:-----------------:|:--------------------------------------------------------:|:----------:|-------------------------------| +| Position D Gain(80) | KPD | KPD = KPD(TBL) / 16 | 0 ~ 16,383 | D Gain | +| Position I Gain(82) | KPI | KPI = KPI(TBL) / 65,536 | 0 ~ 16,383 | I Gain | +| Position P Gain(84) | KPP | KPP = KPP(TBL) / 128 | 0 ~ 16,383 | P Gain | +| Feedforward 2nd Gain(88) | KFF2nd | KFF2nd(TBL) / 4 | 0 ~ 16,383 | Feedforward Acceleration Gain | +| Feedforward 1st Gain(90) | KFF1st | KFF1st(TBL) / 4 | 0 ~ 16,383 | Feedforward Velocity Gain | + +When an instruction transmitted from the user is received by a DYNAMIXEL servo, it takes the following steps to generate a trajectory and execute a motion. +1. An Instruction from the user is transmitted via the DYNAMIXEL bus, then registered to [Goal Position(116)]. +2. [Goal Position(116)] is converted to desired position trajectory and desired velocity trajectory by [Profile Velocity(112)] and [Profile Acceleration(108)]. +3. The desired position trajectory and desired velocity trajectory is stored in the [Position Trajectory(140)] and [Velocity Trajectory(136)] registers. +4. The Feedforward and PID controller calculate PWM output for the motor based on desired trajectories. +5. [Goal PWM(100)] is used as a limit on the calculated PWM output and decides the final output PWM value. +6. The final PWM value is applied to the motor through an inverter, and the horn of the DYNAMIXEL is driven. +7. Results are stored at [Present Position(132)], [Present Velocity(128)], [Present PWM(124)] and {% if page.product_group=='dxl_xl430' %}[Present Load(126)]{% else %}[Present Current(126)]{% endif %}. + +The figure below is a block diagram describing the position controller in Position Control Mode and Extended Position Control Mode. +![](/assets/images/dxl/position_controller_pid_gain.jpg) + +{% capture pid_reference %} +**NOTE:** +- In PWM Control Mode, both the internal PID controller and Feedforward controller are deactivated while [Goal PWM(100)](#goal-pwm100) is used to directly control the voltage to the motor. +- Ka is an Anti-windup Gain that cannot be modified by users. +- For more details about PID controllers and Feedforward controllers in general, please refer to the [PID Controller](http://en.wikipedia.org/wiki/PID_controller) and [Feed Forward](https://en.wikipedia.org/wiki/Feed_forward_(control)) Wikipedia articles. +{% endcapture %} +
{{ pid_reference | markdownify }}
diff --git a/_includes/en/dxl/x/position_trajectory.md b/_includes/en/dxl/x/position_trajectory.md new file mode 100644 index 000000000..d42842790 --- /dev/null +++ b/_includes/en/dxl/x/position_trajectory.md @@ -0,0 +1,3 @@ +The Position Trajectory(140) is the desired movement trajectory created by the active [Profile](#what-is-the-profile). +Position Trajectory(140) is used only when the [Operating Mode(11)] is {% if page.product_group!='dxl_xl430' %} **Current-based Position Control Mode**{% else %}{% endif %} **Position Control Mode**, or **Extended Position Control Mode** +For more details, see [What is the Profile](#what-is-the-profile). diff --git a/_includes/en/dxl/x/present_input_voltage.md b/_includes/en/dxl/x/present_input_voltage.md new file mode 100644 index 000000000..09488311f --- /dev/null +++ b/_includes/en/dxl/x/present_input_voltage.md @@ -0,0 +1 @@ +The Present Input Voltage(144) reports the present voltage level being supplied to the actuator. For more details, see the [Max/Min Voltage Limit(32, 34)]. diff --git a/_includes/en/dxl/x/present_load.md b/_includes/en/dxl/x/present_load.md new file mode 100644 index 000000000..d0e2a7900 --- /dev/null +++ b/_includes/en/dxl/x/present_load.md @@ -0,0 +1,8 @@ +Present Load reports an estimate of the current load applied to the motor's output. + +| Unit | Value Range | Description | +| :---: | :-----------: | :---: | +| 0.1% | -1,000 ~ 1,000| Positive(CCW Load), Negative(CW Load) | + +**NOTE** : The Present load is an inferred value based on the internal output value; and is not measured using a torque sensor, etc. Therefore, it may be inaccurate for precise measuring of weight or torque. It is recommended to use it only for predicting and monitoring the direction and size of forces being applied to the servo. +{: .notice} diff --git a/_includes/en/dxl/x/present_position.md b/_includes/en/dxl/x/present_position.md new file mode 100644 index 000000000..d29f115a9 --- /dev/null +++ b/_includes/en/dxl/x/present_position.md @@ -0,0 +1,3 @@ +The Present Position(132) indicates the present actuator Position. For more details, see [Goal Position(116)]. + +{% include en/dxl/control_table_opmode_note.md %} diff --git a/_includes/en/dxl/x/present_pwm.md b/_includes/en/dxl/x/present_pwm.md new file mode 100644 index 000000000..5e3eeb2d7 --- /dev/null +++ b/_includes/en/dxl/x/present_pwm.md @@ -0,0 +1 @@ +This value indicates the present PWM duty being passed to the motor. For more details, please refer to [Goal PWM(100)]. diff --git a/_includes/en/dxl/x/present_temperature.md b/_includes/en/dxl/x/present_temperature.md new file mode 100644 index 000000000..7dc44b04a --- /dev/null +++ b/_includes/en/dxl/x/present_temperature.md @@ -0,0 +1 @@ +The Present Temperature(144) reports the present operating tempurature of the actuator. For more details, see [Temperature Limit (31)]. diff --git a/_includes/en/dxl/x/present_velocity.md b/_includes/en/dxl/x/present_velocity.md new file mode 100644 index 000000000..8a39bbbd4 --- /dev/null +++ b/_includes/en/dxl/x/present_velocity.md @@ -0,0 +1 @@ +Present Velocity reports the current output speed of the actuator. For more details, please refer to [Goal Velocity(104)]. diff --git a/_includes/en/dxl/x/profile_acceleration.md b/_includes/en/dxl/x/profile_acceleration.md new file mode 100644 index 000000000..ffb307826 --- /dev/null +++ b/_includes/en/dxl/x/profile_acceleration.md @@ -0,0 +1,24 @@ + When the [Drive Mode(10)] is **Velocity-based Profile**, Profile Acceleration(108) sets the maximum allowable acceleration of the generated Profile. + When the [Drive Mode(10)] is **Time-based Profile**, Profile Acceleration(108) sets the allowed acceleration time of the generated Profile. + The Profile Acceleration(108) is used in all control modes except **Current Control Mode** and **PWM Control Mode**. + + For more detailed information, see [What is the Profile](#what-is-the-profile) + +| Velocity-based Profile | Values | Description | +|:----------------------:|:-----------------------------:|:----------------------------------------| +| Unit | 214.577 [rev/min2] | Sets maximum acceleration of the Profile | +| Range | 0 ~ 32767 | '0' represents an infinite maximum acceleration | + +| Time-based Profile | Values | Description | +|:------------------:|:---------:|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Unit | 1 [msec] | Sets allowed acceleration time of the Profile | +| Range | 0 ~ 32737 | '0' represents an infinite acceleration time('0 [msec]').
Profile Acceleration(108) can not exceed 50% of the configured Profile Velocity (112) value. | + +{% if page.product_group=='xl330' %} + +{% else %} + +**NOTE** : Time-based Profiles are available starting from firmware version 42. +{: .notice} + +{% endif %} diff --git a/_includes/en/dxl/x/profile_velocity.md b/_includes/en/dxl/x/profile_velocity.md new file mode 100644 index 000000000..3f3221cc6 --- /dev/null +++ b/_includes/en/dxl/x/profile_velocity.md @@ -0,0 +1,37 @@ +{% if page.ref == "mx-106-2" or page.ref =="mx-64-2" or page.product_group =="dxl_x430" or page.product_group =="dxl_x540" page.product_group =="dxl_xw540" %} + +{% assign supported_opmode = "**Position Control Mode**, **Extended Position Control Mode** or **Current-based Position Control Mode**" %} + +{% else %} + +{% assign supported_opmode = "**Position Control Mode** or **Extended Position Control Mode**" %} + +{% endif %} + +When the [Drive Mode(10)] is **Velocity-based Profile**, Profile Velocity(112) sets the maximum allowable velocity of the generated Profile. +When the [Drive Mode(10)] is **Time-based Profile**, Profile Velocity(112) sets the total execution time of the generated Profile. Profile Velocity(112) is only applied in the {{ supported_opmode }} [Operating Mode(11)]. + +For more detailed information, see [What is the Profile](#what-is-the-profile). + +**NOTE**: Velocity Control Mode only uses [Profile Acceleration(108)] +{: .notice} + +| Velocity-based Profile | Values | Description | +|:----------------------:|:---------------:|:------------------------------------| +| Unit | 0.229 [rev/min] | Sets the maximum velocity of the Profile | +| Range | 0 ~ 32767 | '0' represents an infinite velocity | + +| Time-based Profile | Values | Description | +|:------------------:|:---------:|:------------------------------------------------------------------------------------------------------------------------| +| Unit | 1 [msec] | Sets the time span for the Profile | +| Range | 0 ~ 32737 | '0' represents an infinite velocity.
Profile Acceleration(108) can not exceed 50% of the configured Profile Velocity (112) value. | + +{% if page.product_group=='xl330' %} + +{% else %} + +**NOTE** : Time-based Profiles are available from firmware V42. +{: .notice} + +{% endif %} + diff --git a/_includes/en/dxl/x/protocol_type.md b/_includes/en/dxl/x/protocol_type.md new file mode 100644 index 000000000..813701640 --- /dev/null +++ b/_includes/en/dxl/x/protocol_type.md @@ -0,0 +1,103 @@ + +Protocol Type(13) is used to set the communications protocol used by the DYNAMIXEL actuator. + +**WARNING** : To modify the Protocol Type(13), use [DYNAMIXEL Wizard 2.0] as R+ Manager 2.0 is not compatible with Protocol 1.0 products. +{: .notice--warning} + +**NOTE** : Protocol 2.0 is more stable and safe for use than Protocol 1.0. Accessing some of the Control Table area might be denied if Protocol 1.0 is selected. Please refer to the [Protocol 1.0] and [Protocol 2.0] of e-Manual for more details about the protocol. +{: .notice} + +The following table lists available protocol types compatible with this model of DYNAMIXEL. + + +{% if page.product_group=='xl330' or page.product_group=='xc330' %} + + +| Value | Type | Descriptions | +|:----------:|:-------------------------------------------------:|:-----------------------------------------------------:| +| 2(default) | [DYNAMIXEL Protocol 2.0](#dynamixel-protocol-20) | [Protocol Compatibility table]{: .popup} | +| 20 | [Experimental S.BUS](#experimental-sbus-protocol) | Compatible with S.BUS Protocol supported RC receivers | +| 21 | [Experimental iBUS](#experimental-ibus-protocol) | Compatible with iBUS Protocol supported RC receivers | +| 22 | [RC-PWM](#rc-pwm-protocol) | PWM signal used by RC servos | + +**NOTE** : Please refer to the [Protocol Compatibility table]{: .popup} to see a listing of supported protocols by product. +{: .notice} + +**WARNING** +The `Experimental S.BUS` and `Experimental iBUS` protocol are an experimental protocol and may not fully support all the features of S.BUS and also may not be fully compatible with other 3rd party devices. +{: .notice--danger} + +{% capture protocol_note_01 %} +**NOTE** + +- In case that a RC Protocol type (Experimental S.BUS, Experimental iBUS, RC-PWM) is set, DYNAMIXEL will switch to DYNAMIXEL Protocol 2.0 on condition that RC protocol is not detected during booting. Therefore, it is possible for DYNAMIXEL to access to its Control Table in using software such as [DYNAMIXEL Wizard 2.0](/docs/en/software/dynamixel/dynamixel_wizard2/). +- If RC protocol type is detected during the booting and operates as its RC mode, DYNAMIXEL will be automatically **Torque On** status. +{% endcapture %} +
{{ protocol_note_01 | markdownify }}
+ +#### [DYNAMIXEL Protocol 2.0](#dynamixel-protocol-20) + +DYNAMIXEL Protocol 2.0 is a basic communication protocol to communicate between DYNAMIXELs. See [Protocol 2.0] for more detailed information. + +#### [Experimental S.BUS Protocol](#experimental-sbus-protocol) + +The `Experimental S.BUS` protocol is an experimental protocol and may not fully support all the features of S.BUS and also may not be fully compatible with other 3rd party devices. +{: .notice--warning} + +The S.BUS protocol is a communication protocol commonly used in RC products. XL330 series may not fully compatible with other S.BUS devices. + +- Multiple DYNAMIXELs, the maximum is 16, can be wired via signal cables. Notice that S.BUS protocol only allows for use **the range of [ID(7)] from 1 to 16**. +- The available range of data transmission is from **0 to 2,047 (11 bits)**. +- If the [Operating Mode(11)] is **Position Control Mode**, data will be passed to the [Goal Position(116)]. +- If the [Operating Mode(11)] is **Velocity Mode**, data will be pased to [Goal Velocity(104)]. For your understanding, see the next graph of the control reference by the passed data via the protocol. + + + +**NOTE**: The maximum speed at the Velocity Control Mode relies on its [Velocity Limit(44)]. By configuring [Moving Threshold(24)], it is possible to set a motionless point, where The [Goal Velocity(104)] is 0. +{: .notice} + +#### [Experimental iBUS Protocol](#experimental-ibus-protocol) + +The `Experimental iBUS` protocol is an experimental protocol and may not fully support all the features of iBUS and also may not be fully compatible with other 3rd party devices. +{: .notice--warning} + +The iBUS protocol is a communication protocol commonly used in RC products. XL330 series may not fully compatible with other iBUS devices. + +- Multiple DYNAMIXELs, the maximum is 14, can be wired via signal cables. Notice that the Experimental iBUS protocol only allows for use **the range of [ID(7)] from 1 to 14**. +- The available range of data transmission is from **0 to 16,383 (16 bits)**. +- If the [Operating Mode(11)] is **Position Control Mode**, data will be passed to the [Goal Position(116)]. +- If the [Operating Mode(11)] is **Velocity Mode**, data will be pased to [Goal Velocity(104)]. For your understanding, see the next graph of the control reference by the passed data via the protocol. + + + +**NOTE**: The maximum speed at the Velocity Control Mode relies on its [Velocity Limit(44)]. By configuring [Moving Threshold(24)], it is possible to set a motionless point, where The [Goal Velocity(104)] is 0. +{: .notice} + +#### [RC-PWM Protocol](#rc-pwm-protocol) + +The RC-PWM Protocol is a PWM (Pulse Width Modulation) signal generally used by RC servo products. Even if it is not possible to wire multiple DYNAMIXELs with a signal cable, this is the most-used protocol to control RC servos. The RC-PWM is the analog data with respect to time as it is the way of transmitting data by proportion of time of signal pulse width. + + + +- If the [Operating Mode(11)] is **Position Control Mode**, data will be passed to the [Goal Position(116)]. +- If the [Operating Mode(11)] is **Velocity Mode**, data will be pased to [Goal Velocity(104)]. For your understanding, see the next graph of the control reference by the passed data via the protocol. + + + +**NOTE**: The maximum speed at the Velocity Control Mode relies on its [Velocity Limit(44)]. By configuring [Moving Threshold(24)], it is possible to set a motionless point, where The [Goal Velocity(104)] is 0. +{: .notice} + +{% else %} + +| Value | Description | Compatible DYNAMIXEL | +|:----------:|:----------------------:|:-----------------------------------------------------------------------------:| +| 1 | DYNAMIXEL Protocol 1.0 | AX Series, DX Series, RX Series, EX Series, MX Series with Firmware below v39 | +| 2(default) | DYNAMIXEL Protocol 2.0 | MX-28/64/106 with Firmware v39 or above, X Series, PRO Series | + +**NOTE** : Please refer to the [Protocol Compatibility table]{: .popup} to see a listing of supported protocols by product. +{: .notice} + +{% endif %} + +[protocol compatibility table]: /docs/en/popup/faq_protocol_compatibility_table/ +[dynamixel wizard 2.0]: /docs/en/software/dynamixel/dynamixel_wizard2/ diff --git a/_includes/en/dxl/x/pwm_limit.md b/_includes/en/dxl/x/pwm_limit.md new file mode 100644 index 000000000..1ef372700 --- /dev/null +++ b/_includes/en/dxl/x/pwm_limit.md @@ -0,0 +1,5 @@ +The PWM Limit(36) is used to configure the maximum allowable PWM output. [Goal PWM(100)] can’t be set to a values exceeding the [PWM Limit(36)]. Additionaly, the [PWM Limit(36)] is used in all operating mode as an absolute limit to the motor's final output PWM. For more details, please refer to the Gain section of each operating mode. + +| Unit | Range | +|:---------------:|:------------------------:| +| about 0.113 [%] | 0(0 [%]) ~ 885(100 [%] ) | diff --git a/_includes/en/dxl/x/realtime_tick.md b/_includes/en/dxl/x/realtime_tick.md new file mode 100644 index 000000000..cea63e0a2 --- /dev/null +++ b/_includes/en/dxl/x/realtime_tick.md @@ -0,0 +1,5 @@ +Realtime Tick(120) tracks the uptime of the current DYNAMIXEL actuator. This register begins counting at 0 when the actuator is powered on. + +| Unit | Value Range | Description | +|:----:|:-----------:|:----------------------------------------------:| +| 1 ms | 0 ~ 32,767 | The value resets to '0' when it exceeds 32,767 | diff --git a/_includes/en/dxl/x/registered_instruction.md b/_includes/en/dxl/x/registered_instruction.md new file mode 100644 index 000000000..7b61bd363 --- /dev/null +++ b/_includes/en/dxl/x/registered_instruction.md @@ -0,0 +1,20 @@ +{% if page.product_group=='dxl_ax' or page.product_group=='dxl_dx' or page.product_group=='dxl_ex' or page.product_group=='dxl_rx' or page.product_group=='dxl_mx' %} + +{% assign registered_instruction = "Registered Instruction (44)" %} + +{% elsif page.product_group == 'dxl_xl320' %} + +{% assign registered_instruction = "Registered Instruction (47)" %} + +{% else %} + +{% assign registered_instruction = "Registered Instruction (69)" %} + +{% endif %} + +Indicates whether an instruction has been registered by the [Reg Write Instruction](https://emanual.robotis.com/docs/en/dxl/protocol2/#reg-write-0x04) and is ready for execution. Following the execution of a registered action the {{ registered_instruction }} value will automatically be updated to 0. + +| Value | Description | +|:-----:|:---------------------------------------------| +| 0 | No instruction registered by REG_WRITE. | +| 1 | Instruction registered by REG_WRITE. | diff --git a/_includes/en/dxl/x/return_delay_time.md b/_includes/en/dxl/x/return_delay_time.md new file mode 100644 index 000000000..b05b08061 --- /dev/null +++ b/_includes/en/dxl/x/return_delay_time.md @@ -0,0 +1,11 @@ +{% if page.product_group=='dxl_mx2' or page.product_group=='xl330' or page.product_group=='dxl_x430' or page.product_group=='dxl_xl430' or page.product_group=='dxl_xw540' or page.product_group=='dxl_xw430' or page.product_group=='dxl_x540' or page.product_group=='dxl_pro' or page.product_group=='dxl_pro_a' or page.product_group=='dxl_p' or page.product_group=='rh_p12_rn' or page.product_group=='rh_p12_rna' %} +{% assign return_delay = "9" %} +{% else %} +{% assign return_delay = "5" %} +{% endif %} + +When a DYNAMIXEL receives an Instruction Packet, it will return a Status Packet response after the configured Return Delay Time({{ return_delay }}) has passed. The range of configurable values for this setting is 0 to 254 (0XFE) in units of 2 [μsec]. For instance, if the Return Delay Time({{ return_delay }}) is set to ‘10’, a Status Packet will be returned 20[μsec] after an Instruction Packet is received. + +| Unit | Value Range | Description | +|:-------:|:-----------:|:---------------------------------------------------------------| +| 2[μsec] | 0 ~ 254 | Default value ‘250’(500[μsec])
Maximum value: '508'[μsec] | diff --git a/_includes/en/dxl/x/shadow_id.md b/_includes/en/dxl/x/shadow_id.md new file mode 100644 index 000000000..70df08d8d --- /dev/null +++ b/_includes/en/dxl/x/shadow_id.md @@ -0,0 +1,40 @@ +Secondary(Shadow) ID(12) allows the assignment of a secondary ID to a DYNAMIXEL. +The Secondary ID(12) can be used to group DYNAMIXELs and to synchronize their movement unlike the primary [ID(7)], which must be unique, any number of connected DYNAMIXELs may share a Secondary ID(12). +There are several important differences between the primary [ID(7)] and Secondary ID(12): +- [ID(7)] has a greater priority than Secondary ID(12). If Secondary ID(12) and [ID(7)] are the same, the actuator will respond as if commands are sent only to it's primary [ID(7)]. +- [The EEPROM area](#control-table-of-eeprom-area) of [the Control Table](#control-table) cannot be modified with control packets addressed to a Secondary ID(12). +- Status Packets will not be returned for commands sent to Secondary ID(12). +- If the value of Secondary ID(12) is 253 or higher, the Secondary ID function will be deactivated. + +| Values | Description | +|:---------:|:-----------------------------------------------------:| +| 0 ~ 252 | Activate Secondary ID function | +| 253 ~ 255 | Deactivate Secondary ID function, Default value ‘255’ | + +#### [Secondary ID(12) Example](#secondary-id12-example) + +See the following Secondary ID(12) example for a demonstration. Note that the assigned [ID(7)] for the DYNAMIXELs in the example are '1', '2', '3', '4' and '5'. + +{% if page.product_group=='dxl_xw540' or page.product_group=='dxl_xw430'%} + +1. Set the Secondary ID of the five connected DYNAMIXELs to '5' +2. Send a Write Instruction Packet([ID(7)] = 1, [Torque Enable(64)] = 1). +3. The DYNAMIXEL with [ID(7)] '1' turns on its torque and a Status Packet will be returned. +4. Send a Write Instruction Packet([ID(7)] = 5, [Torque Enable(64)] = 1). +5. All DYNAMIXELs turn on their torque, but a status packet will only be returned by the actuator with the [ID(7)] of '5'. +6. Set the Secondary ID(12) of all DYNAMIXELs to ‘100’. +7. Send a Write Instruction Packet([ID(7)] = 100, [Torque Enable(64)] = 0). +8. All DYNAMIXELs turn off their torque. As no DYNAMIXEL uses [ID(7)] 100, a Status Packet will not be returned. + +{% else %} + +1. Set the Secondary ID of the five connected DYNAMIXELs to '5' +2. Send a Write Instruction Packet([ID(7)] = 1, [LED(65)] = 1). +3. The DYNAMIXEL with [ID(7)]1' turns on its LED and a Status Packet will be returned. +4. Send Write Instruction Packet([ID(7)] = 5, [LED(65)] = 1). +5. All DYNAMIXELs turn on their LED, but only the actuator with an [ID(7)] of '5' will return a Status Packet. +6. Set the Secondary ID of all DYNAMIXELs to ‘100’. +7. Send Write Instruction Packet([ID(7)] = 100, [LED(65)] = 0). +8. All DYNAMIXELs turn off their LED. As no DYNAMIXEL uses ID 100, no Status Packet will be returned. + +{% endif %} diff --git a/_includes/en/dxl/x/shutdown.md b/_includes/en/dxl/x/shutdown.md new file mode 100644 index 000000000..5c4fb3620 --- /dev/null +++ b/_includes/en/dxl/x/shutdown.md @@ -0,0 +1,124 @@ +{% if page.product_group=='dxl_ax' or page.product_group=='dxl_dx' or page.product_group=='dxl_ex' or page.product_group=='dxl_rx' or page.product_group=='dxl_mx' %} + +{% assign shutdown = "Shutdown(18)" %} +{% assign torque_enable = "Torque Enable(24)" %} + +{% elsif page.product_group=='dxl_pro' %} + +{% assign shutdown = "Shutdown(48)" %} +{% assign torque_enable = "Torque Enable(562)" %} +{% assign hardware_error_status = "Hardware Error Status(892)" %} + +{% elsif page.product_group == 'dxl_xl320' %} + +{% assign shutdown = "Shutdown(18)" %} +{% assign torque_enable = "Torque Enable(24)" %} +{% assign hardware_error_status = "Hardware Error Status(50)" %} + +{% else %} + +{% assign shutdown = "Shutdown(63)" %} + {% if page.product_group =='dxl_pro_a' or page.product_group =='dxl_p' %} + {% assign torque_enable = "Torque Enable(512)" %} + {% assign hardware_error_status = "Hardware Error Status(518)" %} + {% else %} + {% assign torque_enable = "Torque Enable(64)" %} + {% assign hardware_error_status = "Hardware Error Status(70)" %} + {% endif %} +{% endif %} + +DYNAMIXEL servos can protect themselves by detecting dangerous situations that may occur during operation. This register allows user to configure which of these error states causes a safety shutdown. +Each Bit is inclusively processed with ‘OR’ logic, allowing multiple options to be selected. +For instance, when {{ shutdown }} is set to ‘0x05’ (binary : 00000101), the DYNAMIXEL will shutdown in response to both both an Input Voltage Error(binary : 00000001) and Overheating Error(binary : 00000100). +If those errors are detected, {% if page.product_group=='dxl_ax' or page.product_group=='dxl_dx' or page.product_group=='dxl_ex' or page.product_group=='dxl_rx' or page.product_group=='dxl_mx' %} the Alarm LED will start blinking and the motor's output will set to 0 [%]. {% else %} [{{ torque_enable }}] is cleared to ‘0’ and the motor's output will be set to 0 [%]. +{% endif %} +{% if page.product_group=='dxl_ax' or page.product_group=='dxl_dx' or page.product_group=='dxl_ex' or page.product_group=='dxl_rx' or page.product_group=='dxl_mx' %}{% else %} +A REBOOT is the only method to reset [{{ torque_enable }}] to ‘1’(Torque ON) after a shutdown has been triggered. +{% endif %} + +{% if page.product_group=='dxl_ax' or page.product_group=='dxl_dx' or page.product_group=='dxl_ex' or page.product_group=='dxl_rx' or page.product_group=='dxl_mx' %} +| Bit | Item | Description | +|:-----:|:-------------------:|:-------------------------------------------------------------------------------------------------------------------| +| Bit 7 | 0 | - | +| Bit 6 | Instruction Error | Detects that undefined Instruction is transmitted or the ACTION command is delivered without the REG_WRITE command | +| Bit 5 | Overload Error | Detects that persistent load exceeds maximum output | +| Bit 4 | CheckSum Error | Detects that the Checksum of the transmitted Instruction Packet is invalid | +| Bit 3 | Range Error | Detects that the command is given beyond the range of usage | +| Bit 2 | Overheating Error | Detects that the internal temperature exceeds the set temperature | +| Bit 1 | Angle Limit Error | Detects that Goal Position is written with the value that is not between CW Angle Limit and CCW Angle Limit | +| Bit 0 | Input Voltage Error | Detects that input voltage exceeds the configured operating voltage | +{% elsif page.product_group=='dxl_pro' or page.product_group=='dxl_pro_a' or page.product_group=='dxl_p' %} +| Bit | Item | Description | +|:-----:|:--------------------------------:|:---------------------------------------------------------------------------------| +| Bit 7 | - | Not used, always '0' | +| Bit 6 | - | Not used, always '0' | +| Bit 5 | Overload Error(Default) | Detects a persistent load exceeding maximum output | +| Bit 4 | Electrical Shock Error(Default) | Detects short circuits, or insufficient power to operate the motor | +| Bit 3 | Motor Encoder Error(Default) | Detects malfunction of the motor encoder | +| Bit 2 | Overheating Error | Detects that internal temperature exceeds the configured operating temperature limit | +| Bit 1 | Motor Hall Sensor Error(Default) | Detects that Motor hall sensor value exceeds normal operating range | +| Bit 0 | Input Voltage Error | Detects that input voltage exceeds the configured operating voltage range | +{% elsif page.product_group=='xl330' or page.ref=='xc330-m181' or page.ref=='xc330-m288' %} + +| Bit | Item | Description | +|:-----:|:-------------------------------:|:---------------------------------------------------------------------------------| +| Bit 7 | - | Unused, Always '0' | +| Bit 6 | - | Unused, Always '0' | +| Bit 5 | Overload Error(default) | Detects that persistent load that exceeds maximum output | +| Bit 4 | Electrical Shock Error(default) | Detects electric shock on the circuit or insufficient power to operate the motor | +| Bit 3 | - | - | +| Bit 2 | Overheating Error(default) | Detects that internal temperature exceeds the configured operating temperature | +| Bit 1 | - | Unused, Always '0' | +| Bit 0 | Input Voltage Error (default) | Detects that input voltage exceeds the configured operating voltage | + +{% elsif page.ref=='xc330-t181' or page.ref=='xc330-t288' %} + +| Bit | Item | Description | +|:-----:|:-------------------------------:|:---------------------------------------------------------------------------------| +| Bit 7 | - | Unused, Always '0' | +| Bit 6 | - | Unused, Always '0' | +| Bit 5 | Overload Error(default) | Detects that persistent load that exceeds maximum output | +| Bit 4 | Electrical Shock Error(default) | Detects electric shock on the circuit or insufficient power to operate the motor | +| Bit 3 | - | - | +| Bit 2 | Overheating Error | Detects that internal temperature exceeds the configured operating temperature | +| Bit 1 | - | Unused, Always '0' | +| Bit 0 | Input Voltage Error (default) | Detects that input voltage exceeds the configured operating voltage | + +{% else %} +| Bit | Item | Description | +|:-----:|:-------------------------------:|:----------------------------------------------------------------------------------------------------------------------| +| Bit 7 | - | Unused, Always '0' | +| Bit 6 | - | Unused, Always '0' | +| Bit 5 | Overload Error(default) | Detects that persistent load that exceeds maximum output | +| Bit 4 | Electrical Shock Error(default) | Detects electric shock on the circuit or insufficient power to operate the motor | +| Bit 3 | Motor Encoder Error | Detects malfunction of the motor encoder | +| Bit 2 | Overheating Error(default) | Detects that internal temperature exceeds the configured operating temperature | +| Bit 1 | - | Unused, Always '0' |{% if page.product_group=='xl330' %} | +| Bit 0 | Input Voltage Error (default) | Detects that input voltage exceeds the configured operating voltage |{% else %} | +| Bit 0 | Input Voltage Error | Detects that input voltage exceeds the configured operating voltage |{% endif %} | + +{% endif %} + +{% if page.product_group=='dxl_xw540' or page.product_group=='dxl_xw430'%} +{% capture shutdown_01 %} +**NOTE** : If Shutdown occurs, **reboot the device**. +- H/W REBOOT : Turn off and turn on the power again +- S/W REBOOT : Transmit REBOOT Instruction (For more details, refer to the [Reboot](/docs/en/dxl/protocol2/#reboot) section of e-Manual.) +{% endcapture %} +
{{ shutdown_01 | markdownify }}
+ +{% elsif page.product_group=='dxl_ax' or page.product_group=='dxl_dx' or page.product_group=='dxl_ex' or page.product_group=='dxl_rx' or page.product_group=='dxl_mx' %} +**NOTE** : If Shutdown occurs, **LED will flicker every second.** +{: .notice} +{% else %} +{% capture shutdown_01 %} +**NOTE** : +{% if page.product_group=='dxl_pro' or page.product_group=='dxl_pro_a' or page.product_group=='dxl_p' %}1. If Shutdown occurs, **Dynamic brake** will be activated.{% else %}{% endif %} +2. If Shutdown occurs, **the indicator LED will flicker every second**. {% if page.product_group=='dxl_pro' or page.product_group=='dxl_pro_a' or page.product_group=='dxl_p' or page.product_group=='xl330' or page.product_group=='xc330' %}{% else %}(**Firmware v41 or above**){% endif %} +3. If a Shutdown occurs, **reboot the device** to restore functionality. +- H/W REBOOT : Turn off and turn on the power to the actuator. +- S/W REBOOT : Transmit REBOOT Instruction (For more details, refer to the [Reboot](/docs/en/dxl/protocol2/#reboot) section of the e-Manual.) +{% endcapture %} +
{{ shutdown_01 | markdownify }}
+{% endif %} + diff --git a/_includes/en/dxl/x/startup_configuration.md b/_includes/en/dxl/x/startup_configuration.md new file mode 100644 index 000000000..c51f82fa5 --- /dev/null +++ b/_includes/en/dxl/x/startup_configuration.md @@ -0,0 +1,26 @@ +{% if page.product_group == 'dxl_p' %} +{% assign firmware_version_startup_configuration = "firmware **V12**" %} +{% elsif page.product_group == 'xl330' or page.product_group == 'xc330' %} +{% assign firmware_version_startup_configuration = "firmware **V46**" %} +{% else %} +{% assign firmware_version_startup_configuration = "firmware **V45**" %} +{% endif %} + +Startup Configuration(60) allows users to configure several settings to apply on actuator startup. See the following table for information on available settings. + +| Bit | Item | Description | +|:-----------:|:-----------------:|:---------------------------------------------------------------------------------------------------------------------------------------| +| Bit 7(0x80) | - | Unused, always ‘0’ | +| Bit 6(0x40) | - | Unused, always ‘0’ | +| Bit 5(0x20) | - | Unused, always ‘0’ | +| Bit 4(0x10) | - | Unused, always ‘0’ | +| Bit 3(0x08) | - | Unused, always ‘0’ | +| Bit 2(0x04) | - | Unused, always ‘0’ | +| Bit 1(0x02) | RAM Restore | **[0]** Deactivate RAM restoration on startup.
**[1]** On startup, use saved backup data to restore RAM configuration. | +| Bit 0(0x01) | Startup Torque On | **[0]** Torque Off on startup (`Torque Enable(64)` is set to `0`)
**[1]** Torque On on startup (`Torque Enable(64)` is set to `1`). | + +**NOTE**: Startup Configuration is available from {{ firmware_version_startup_configuration }}. +{: .notice} + +**NOTE**: For more details about restoring the RAM area, see [Restoring RAM Area](/docs/en/software/dynamixel/dynamixel_wizard2/#restoring-ram-area). +{: .notice} diff --git a/_includes/en/dxl/x/status_return_level.md b/_includes/en/dxl/x/status_return_level.md new file mode 100644 index 000000000..761d52d0e --- /dev/null +++ b/_includes/en/dxl/x/status_return_level.md @@ -0,0 +1,28 @@ +{% if page.product_group=='dxl_ax' or page.product_group=='dxl_dx' or page.product_group=='dxl_ex' or page.product_group=='dxl_rx' or page.product_group=='dxl_mx' %} + +{% assign status_return_lv = "Status Return Level (16)" %} +{% assign protocol= "DYNAMIXEL Protocol 1.0" %} + +{% elsif page.product_group == 'dxl_xl320' %} + +{% assign status_return_lv = "Status Return Level (17)" %} +{% assign protocol= "DYNAMIXEL Protocol 2.0" %} + +{% else %} + +{% assign status_return_lv = "Status Return Level (68)" %} +{% assign protocol= "DYNAMIXEL Protocol 2.0" %} + +{% endif %} + + +The {{ status_return_lv }} is used to set the DYNAMIXEL's response policy when an instruction packet is received. + +| Value | Responding Instructions | Description | +|:-----:|:--------------------------------------:|:-------------------------------------------------------:| +| 0 | PING Instruction | Returns a Status Packet for PING Instructions only | +| 1 | PING Instruction
READ Instruction | Returns a Status Packet for PING and READ Instructions | +| 2 | All Instructions | Returns a Status Packet for all Instructions | + +**NOTE** : If the [Instruction Packet ID](/docs/en/dxl/protocol2/) is set to the [Broadcast ID(0xFE)](/docs/en/dxl/protocol2/#packet-id), a Status Packet will not be returned for READ or WRITE Instructions regardless of {{ status_return_lv }}. For more details, please refer to the `Status Packet` section of the [{{ protocol }}] page. +{: .notice} \ No newline at end of file diff --git a/_includes/en/dxl/x/temperature_limit.md b/_includes/en/dxl/x/temperature_limit.md new file mode 100644 index 000000000..e7896c878 --- /dev/null +++ b/_includes/en/dxl/x/temperature_limit.md @@ -0,0 +1,10 @@ +The Temperature Limit(31) is used to configure an upper limit on DYNAMIXEL operating temperature. +When the [Present Temperature(146)] is greater than the Temperature Limit(31), the **Overheating Error Bit(0x04)** and **Alert Bit(0x80)** in the [Hardware Error Status(70)] register will be set. If the Overheating Error Bit(0x04) is configured in [Shutdown(63)], [Torque Enable(64)] will be set to ‘0’ (Torque OFF). +See [Shutdown(63)] for more detailed information. + +| Unit | Value Range | Description | +|:------------:|:-----------:|:------------:| +| About 1° | 0 ~ 100 | 0 ~ 100° | + +**CAUTION** : Do not set this value higher than it's default. In the case that a DYNAMIXEL triggers a temperature shutdown alarm (Overheating Error Bit(0x04)), let it cool for 20 minutes or more before resuming use to prevent damage to the actuator. +{: .notice--warning} diff --git a/_includes/en/dxl/x/torque_enable.md b/_includes/en/dxl/x/torque_enable.md new file mode 100644 index 000000000..0b626eee7 --- /dev/null +++ b/_includes/en/dxl/x/torque_enable.md @@ -0,0 +1,41 @@ +{% assign torque_enable= "64" %} +{% assign present_position="132" %} +{% assign homing_offset="20" %} + +{% if page.product_group=='dxl_p' or page.product_group=='dxl_pro_a' or page.product_group=='rh_p12_rna' %} +{% assign torque_enable= "512" %} +{% assign present_position="580" %} +{% elsif page.product_group=='dxl_pro' or page.product_group=='rh_p12_rn' %} +{% assign torque_enable= "562" %} +{% assign present_position="611" %} +{% assign homing_offset="13" %} +{% elsif page.product_group=='dxl_xl320'' %} +{% assign torque_enable= "24" %} +{% assign present_position="37" %} +{% endif %} + +{% if page.product_group=='dxl_ax' or page.product_group=='dxl_dx' or page.product_group=='dxl_ex' or page.product_group=='dxl_mx' or page.product_group=='dxl_rx' %} + +| Value | Description | +|:----------:|:------------| +| 0(Default) | Torque Off | +| 1 | Torque On | + +{% else %} + +Torque Enable(64) is used to enable or disable the torque for the DYNAMIXEL's internal motor. Setting Torque Enable({{ torque_enable }}) to ‘1’ will enable output Torque and all Data in the EEPROM area will be locked. Setting the value to ‘0’ will disable torque and unlock the EEPROM. + +| Value | Description | +|:----------:|:-------------------------------| +| 0(Default) | Torque Off, EEPROM unlocked | +| 1 | Torque On, EEPROM locked | + +{% endif %} + +{% if page.product_group=='dxl_ax' or page.product_group=='dxl_dx' or page.product_group=='dxl_ex' or page.product_group=='dxl_mx' or page.product_group=='dxl_rx' or page.product_group=='dxl_xl320' %} + +{% else %} + +**NOTE** : [Present Position({{ present_position }})] will be reset when the [Operating Mode(11)] or [Torque Enable({{ torque_enable }})] settings are updated. For more details, please refer to the [Homing Offset({{ homing_offset }})] and [Present Position({{ present_position }})] control table items. +{: .notice} +{% endif %} diff --git a/_includes/en/dxl/x/velocity_limit.md b/_includes/en/dxl/x/velocity_limit.md new file mode 100644 index 000000000..ccda8b969 --- /dev/null +++ b/_includes/en/dxl/x/velocity_limit.md @@ -0,0 +1,15 @@ +The Velocity Limit(44) is used to limit the maximum acceptable value for the [Goal Velocity(104)]. For more details, see [Goal Velocity(104)]. + +{% if page.product_group =='xl330' or page.product_group=='xc330'%} + +| Unit | Value Range | +|:--------:|:-----------:| +| 0.229rpm | 0 ~ 2,047 | + +{% else %} + +| Unit | Value Range | +|:--------:|:-----------:| +| 0.229rpm | 0 ~ 1,023 | + +{% endif %} diff --git a/_includes/en/dxl/x/velocity_pi_gain.md b/_includes/en/dxl/x/velocity_pi_gain.md new file mode 100644 index 000000000..c0188fb1f --- /dev/null +++ b/_includes/en/dxl/x/velocity_pi_gain.md @@ -0,0 +1,22 @@ +The Velocity PI Gains(76, 78) are the configurable gain settings for the DYNAMIXEL PID controller in Velocity Mode. + +| | Controller Gain | Conversion Equations | Range | Description | +|:-------------------:|:---------------:|:--------------------------------------------------------:|:----------:|:-----------:| +| Velocity I Gain(76) | KVI | KVI = KVI(TBL) / 65,536 | 0 ~ 16,383 | I Gain | +| Velocity P Gain(78) | KVP | KVP = KVP(TBL) / 128 | 0 ~ 16,383 | P Gain | + +When an instruction transmitted from the user is received by a DYNAMIXEL servo, it takes the following steps to generate a trajectory and execute a motion. +1. An Instruction from the user is transmitted via the DYNAMIXEL bus, then written to [Goal Velocity(104)]. +2. [Goal Velocity(104)] is converted to planned velocity trajectory by the configured [Profile Acceleration(108)]. +3. The desired velocity trajectory is stored at [Velocity Trajectory(136)]. +4. The PI controller calculates PWM output for the motor based on the desired velocity trajectory. +5. [Goal PWM(100)] sets a limit on the calculated PWM output and decides the final PWM value. +6. The final PWM value is applied to the motor through an Inverter, and the horn of the DYNAMIXEL is driven. +7. Results are stored at [Present Position(132)], [Present Velocity(128)], [Present PWM(124)] and {% if page.product_group=='dxl_xl430' %}[Present Load(126)]{% else %}[Present Current(126)]{% endif %}. + +The below figure is a block diagram describing the velocity controller in Velocity Control Mode. +![](/assets/images/dxl/velocity_controller_pi_gain.jpg) + + +**NOTE** : Ka Anti-windup Gain and β are conversion coefficients of position and velocity that cannot be modified by users. For more information about PID controllers in general, please refer to the [PID Controller article on Wikipedia](http://en.wikipedia.org/wiki/PID_controller). +{: .notice} diff --git a/_includes/en/dxl/x/velocity_trajectory.md b/_includes/en/dxl/x/velocity_trajectory.md new file mode 100644 index 000000000..f0f26c66b --- /dev/null +++ b/_includes/en/dxl/x/velocity_trajectory.md @@ -0,0 +1,3 @@ +This register stores the current target velocity for the active trajectory created by the current Profile. The specific values and behavior of this register may change based on the active operating mode. For more details, please refer to [Profile Velocity(112)]. +1. **Velocity Control Mode** : When the generated Profile reaches it's endpoint, [Velocity Trajectory(136)] becomes equal to [Goal Velocity(104)]. +2. **Position Control Mode, Extended Position Control Mode** : Velocity Trajectory is used to create the [Position Trajectory(140)] used for the movement. When the Profile reaches an endpoint, [Velocity Trajectory(136)] is set to '0'. diff --git a/_includes/en/dxl/x/voltage_limit.md b/_includes/en/dxl/x/voltage_limit.md new file mode 100644 index 000000000..f6a89b500 --- /dev/null +++ b/_includes/en/dxl/x/voltage_limit.md @@ -0,0 +1,27 @@ +The Min Voltage Limit(32) and Max Voltage Limit(34) are used to configure the range of acceptable input voltages. +When the [Present Input Voltage(144)] exits the range between Max Voltage Limit(32) and Min Voltage Limit(34), the Input Voltage error Bit(0x10) in the [Hardware Error Status(70)](#hardware-error-status70) will be set, and the returned Status Packet will contain an Alert Bit(0x80) in the Error field. +If the Input Voltage Error Bit(0x10) in the [Shutdown(63)] register is set, [Torque Enable(64)] will be set to ‘0’(Torque OFF). +For more details, please refer to [Shutdown(63)]. + +{% if page.product_group=='dxl_xl430' %} +| Unit | Value Range | Description | +|:-------------:|:-----------:|:--------------:| +| About 0.1 [V] | 65 ~ 140 | 6.5 ~ 14.0 [V] | + +{% elsif page.product_group=='xl330' or page.ref == 'xc330-m181' or page.ref == 'xc330-m288' %} + +| Unit | Value Range | Description | +|:-------------:|:-----------:|:-------------:| +| About 0.1 [V] | 31 ~ 70 | 3.1 ~ 7.0 [V] | + +{% elsif page.ref == 'xc330-t181' or page.ref == 'xc330-t288' %} + +| Unit | Value Range | Description | +|:-------------:|:-----------:|:--------------:| +| About 0.1 [V] | 55 ~ 140 | 5.5 ~ 14.0 [V] | + +{% else %} +| Unit | Value Range | Description | +|:-------------:|:-----------:|:--------------:| +| About 0.1 [V] | 95 ~ 160 | 9.5 ~ 16.0 [V] | +{% endif %} diff --git a/_includes/en/dxl/y/output_bearing_y.md b/_includes/en/dxl/y/output_bearing_y.md index 3f8fdc187..4de74792f 100644 --- a/_includes/en/dxl/y/output_bearing_y.md +++ b/_includes/en/dxl/y/output_bearing_y.md @@ -21,12 +21,12 @@ ![](/assets/images/dxl/y/bearing_formula_1.jpg) -- L10 - Bearing life [hour] +- L10 - Bearing service life [hour] - Na - Average output speed [rpm] - C - Basic dynamic load rating [N] - Pc - Dynamic equivalent radial load [N] -- Tf - Temperature factor (Tf=1.0 less 100℃) -- Lf - Load factor (Table.B2) +- Tf - Temperature factor (Tf=1.0 in environments of less than 100℃) +- Lf - Load factor (Available in [Table.B2](#tables)) ## [Dynamic Equivalent Radial Load](#dynamic-equivalent-radial-load) @@ -37,8 +37,8 @@ - Fr - Radial load [N] - Fa - Axial load [N] - M - Moment [N.m] -- X - Dynamic radial factor (Table.B3) -- Y - Dynamic axial factor (Table.B3) +- X - Dynamic radial factor (Available in [Table.B3](#tables)) +- Y - Dynamic axial factor (Available in [Table.B3](#tables)) - Dp - Roller pitch circle diameter [m] @@ -49,8 +49,8 @@ - L10 - Bearing life [hour] @ 7,000 hour - Nn - Nominal output speed [rpm] @ input speed 2,000rpm ÷ gear ratio - C- Basic dynamic load rating [N] -- Tf - Temperature factor (Tf=1.0 less 100℃) @ Tf = 1.0 -- Lf - Load factor (Table.B2) @ Lf=1.0 +- Tf - Temperature factor (Tf=1.0 in environments of less than 100℃) +- Lf - Load factor (Available in [Table.B2](#tables)) - Pc_max - Allowable dynamic equivalent radial load [N] @@ -73,11 +73,11 @@ Table.B2 Load factor -| Conditions | Lf | -|:-----------------------------|:---------:| -| Smooth motion without impact | 1.0 ~ 1.2 | -| Normal motion | 1.2 ~ 1.5 | -| Motion with severe impact | 1.5 ~ 3.0 | +| Conditions | Lf | +|:-------------------------------------|:---------:| +| Smooth motion without impact | 1.0 ~ 1.2 | +| Normal motion with occasional impact | 1.2 ~ 1.5 | +| Motion with severe impact | 1.5 ~ 3.0 | Table.B3 Dynamic radial/axial factor diff --git a/_includes/en/dxl/y/output_bearing_y_m.md b/_includes/en/dxl/y/output_bearing_y_m.md index ba1cab7e3..e0dbd1fa6 100644 --- a/_includes/en/dxl/y/output_bearing_y_m.md +++ b/_includes/en/dxl/y/output_bearing_y_m.md @@ -8,36 +8,36 @@ {% capture output_bearing_notice1 %} **Note :** -1. Allowable dynamic equivalent load (Pc_max) must not exceed this value +1. Allowable dynamic equivalent load (Pc_max) must not exceed this value during operation. {% endcapture %}
{{ output_bearing_notice1 | markdownify }}
## [Output bearing life](#output-bearing-life) -The bearing life of the Dynamixel-Y output bearing is obtained from the following equation. +An estimate of the bearing life for the Dynamixel-Y output bearing can be calculated using the following equation: ![](/assets/images/dxl/y/bearing_formula/m_1.png) -- L10 - Bearing life [hour] +- L10 - Bearing service life [hours] - Na - Average output speed [rpm] - C - Basic dynamic load rating [N] - Pc - Dynamic equivalent load [N] -- Tf - Temperature factor (Tf=1.0 less 100℃) -- Lf - Load factor (Table.B2) +- Tf - Temperature factor (Tf=1.0 in environments of less than 100℃) +- Lf - Load factor (Available in [Table.B2](#tables)) +- Pc_max - Allowable dynamic equivalent radial load [N] ## [Allowable dynamic equivalent load, Pc_max](#allowable-dynamic-equivalent-load-pc_max) ![](/assets/images/dxl/y/bearing_formula/m_2.png) -- L10 - Bearing life [hour] @ 20,000 hour +- L10 - Bearing service life [hour] @ 20,000 hour - Nn - Nominal output speed [rpm] - C - Basic dynamic load rating [N] -- Tf - Temperature factor (Tf=1.0 less 100℃) @ Tf = 1.0 -- Lf - Load factor (Table.B2) @ Lf=1.0 -- Pc_max - Allowable dynamic equivalent load [N] - +- Tf - Temperature factor (Tf=1.0 in environments of less than 100℃) +- Lf - Load factor (Available in [Table.B2](#tables)) +- Pc_max - Allowable dynamic equivalent radial load [N] ## [Dynamic equivalent load, Pc](#dynamic-equivalent-load-pc) The dynamic equivalent load of the Dynamixel-Y output bearing is obtained from the following equation. @@ -49,9 +49,9 @@ The dynamic equivalent load of the Dynamixel-Y output bearing is obtained from t - Fa - Axial load [N] - df - Offset from flange [m] (Table.B1) - Lr - Distance of radial load [m] -- Lc - Length between bearings 1 and 2 [m] (Table.B1) -- X - Dynamic radial factor (Table.B3) -- Y - Dynamic axial factor (Table.B3) +- Lc - Length between bearings 1 and 2 [m] (Available in [Table.B1](#output-bearing-specifications-tableb1)) +- X - Dynamic radial factor (Available in [Table.B3](#tables)) +- Y - Dynamic axial factor (Available in [Table.B3](#tables)) ![](/assets/images/dxl/y/bearing_formula/m_4.png) @@ -59,11 +59,11 @@ The dynamic equivalent load of the Dynamixel-Y output bearing is obtained from t Table.B2 Load factor -| Conditions | Lf | -|:-----------------------------|:---------:| -| Smooth motion without impact | 1.0 ~ 1.2 | -| Normal motion | 1.2 ~ 1.5 | -| Motion with severe impact | 1.5 ~ 3.0 | +| Conditions | Lf | +|:-------------------------------------|:---------:| +| Smooth motion without impact | 1.0 ~ 1.2 | +| Normal motion with occasional impact | 1.2 ~ 1.5 | +| Motion with severe impact | 1.5 ~ 3.0 | Table.B3 Dynamic radial/axial factor diff --git a/_includes/en/dxl/y/output_bearing_y_r.md b/_includes/en/dxl/y/output_bearing_y_r.md index 8201dcee9..c8019b6ab 100644 --- a/_includes/en/dxl/y/output_bearing_y_r.md +++ b/_includes/en/dxl/y/output_bearing_y_r.md @@ -19,7 +19,7 @@
{{ output_bearing_notice1 | markdownify }}
## [Output bearing life](#output-bearing-life) -The bearing life of the Dynamixel-Y output bearing is obtained from the following equation. +An estimate of the bearing life for the Dynamixel-Y output bearing can be calculated using the following equation: ![](/assets/images/dxl/y/bearing_formula/r_1.png) @@ -27,8 +27,8 @@ The bearing life of the Dynamixel-Y output bearing is obtained from the followin - Na - Average output speed [rpm] - C - Basic dynamic load rating [N] - Pc - Dynamic equivalent load [N] -- Tf - Temperature factor (Tf=1.0 less 100℃) -- Lf - Load factor (Table.B2) +- Tf - Temperature factor (Tf=1.0 in environments of less than 100℃) +- Lf - Load factor (Available in [Table.B2](#tables)) ## [Allowable dynamic equivalent load, Pc_max](#allowable-dynamic-equivalent-load-pc_max) @@ -38,9 +38,9 @@ The bearing life of the Dynamixel-Y output bearing is obtained from the followin - L10 - Bearing life [hour] @ 7,000 hour - Nn - Nominal output speed [rpm] @ input speed 2,000rpm ÷ gear ratio - C- Basic dynamic load rating [N] -- Tf - Temperature factor (Tf=1.0 less 100℃) @ Tf = 1.0 -- Lf - Load factor (Table.B2) @ Lf=1.0 -- Pc_max - Allowable dynamic equivalent load [N] +- Tf - Temperature factor (Tf=1.0 in environments of less than 100℃) +- Lf - Load factor (Available in [Table.B2](#tables)) +- Pc_max - Allowable dynamic equivalent radial load [N] ## [Dynamic equivalent load, Pc](#dynamic-equivalent-load-pc) @@ -52,8 +52,8 @@ The dynamic equivalent load of the Dynamixel-Y output bearing is obtained from t - Fr - Radial load [N] - Fa - Axial load [N] - M - Moment [N.m] -- X - Dynamic radial factor (Table.B3) -- Y - Dynamic axial factor (Table.B3) +- X - Dynamic radial factor (Available in [Table.B3](#tables)) +- Y - Dynamic axial factor (Available in [Table.B3](#tables)) - Dp - Roller pitch circle diameter [m] ![](/assets/images/dxl/y/bearing_formula/r_4.png) @@ -66,8 +66,8 @@ The dynamic equivalent load of the Dynamixel-Y output bearing is obtained from t - Pc_max - Allowable dynamic equivalent load [N] - Fa - Axial load [N] - M - Moment [N.m] -- X - Dynamic radial factor (Table.B3) -- Y - Dynamic axial factor (Table.B3) +- X - Dynamic radial factor (Available in [Table.B3](#tables)) +- Y - Dynamic axial factor (Available in [Table.B3](#tables)) - Dp - Roller pitch circle diameter [m] (Table.B1) - df - Offset from flange [m] - Lr - Distance of radial load [m] @@ -77,11 +77,11 @@ The dynamic equivalent load of the Dynamixel-Y output bearing is obtained from t Table.B2 Load factor -| Conditions | Lf | -|:-----------------------------|:---------:| -| Smooth motion without impact | 1.0 ~ 1.2 | -| Normal motion | 1.2 ~ 1.5 | -| Motion with severe impact | 1.5 ~ 3.0 | +| Conditions | Lf | +|:-------------------------------------|:---------:| +| Smooth motion without impact | 1.0 ~ 1.2 | +| Normal motion with occasional impact | 1.2 ~ 1.5 | +| Motion with severe impact | 1.5 ~ 3.0 | Table.B3 Dynamic radial/axial factor diff --git a/_includes/en/platform/turtlebot3/quickstart_humble.md b/_includes/en/platform/turtlebot3/quickstart_humble.md index 7b597fc9f..757c93525 100644 --- a/_includes/en/platform/turtlebot3/quickstart_humble.md +++ b/_includes/en/platform/turtlebot3/quickstart_humble.md @@ -1,38 +1,37 @@ - # Quick Start Guide ## [PC Setup](#pc-setup) -**WARNING**: The contents in this chapter corresponds to the `Remote PC` (your desktop or laptop PC) which will control TurtleBot3. Do not apply this instruction to your TurtleBot3. +**WARNING**: The content in this chapter is for the initialization of the `Remote PC` (your desktop or laptop PC) which will be used to control the TurtleBot3. Do not complete these instructions on the TurtleBot3 platform itself. {: .notice--danger} {% capture warning_01 %} -**Compatibility WARNING**: -- `Jetson Nano` does not support Ubuntu 20.04 and later. Please refer to [NVIDIA developer forum]{: .blank} for more details. +**Compatibility WARNING** +- The `Jetson Nano` does not support native Ubuntu 20.04. Please refer to the [NVIDIA developer forum]{: .blank} for more details. -[NVIDIA developer forum]: https://forums.developer.nvidia.com/t/jetpack-5-0-2/223564/2 +[NVIDIA developer forum]: https://forums.developer.nvidia.com/t/when-will-jetpack-move-to-ubuntu-20-04/142517 {% endcapture %}
{{ warning_01 | markdownify }}
-**NOTE**: This instruction was tested on Linux with `Ubuntu 22.04` and `ROS2 Humble Hawksbill`. +**NOTE**: This instruction was tested on the `Ubuntu 22.04` linux distribution running `ROS2 Humble Hawksbill`. {: .notice--info} ### [Download and Install Ubuntu on Remote PC](#download-and-install-ubuntu-on-pc) -1. Download the proper `Ubuntu 22.04 LTS Desktop` image for your PC from the links below. +1. Download the `Ubuntu 22.04 LTS Desktop` image for your PC from the link below. - [Ubuntu 22.04 LTS Desktop image (64-bit)](https://releases.ubuntu.com/22.04/){: .blank} -2. Follow the instruction below to install Ubuntu on PC. +2. Follow the instructions below to install Ubuntu. - [Install Ubuntu desktop](https://ubuntu.com/tutorials/install-ubuntu-desktop#1-overview) ### [Install ROS 2 on Remote PC](#install-ros-2-on-remote-pc) -Please follow [the official ROS2 documentation](https://docs.ros.org/en/humble/Installation.html) to install the ROS2 Humble. +Please follow [the official ROS2 documentation](https://docs.ros.org/en/humble/Installation.html) to install ROS2 Humble. -For most Linux users, [Debian package installation](https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html) method is strongly recommended. +For most Linux users, the [Debian package installation method](https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html) is strongly recommended.
@@ -41,16 +40,16 @@ For most Linux users, [Debian package installation](https://docs.ros.org/en/humb ![](/assets/images/icon_unfold.png) **Click here to expand more details about How to install ROS2.** -1. Visit [Debian package installation](https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html) page. +1. Visit the [Debian package installation](https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html) page. -2. Copy the CLI in the green box and paste into your terminal in order with `ctrl` + `shift` + `v` +2. Copy the CLI commands located in the green box and paste into your terminal with `ctrl` + `shift` + `v` ![](/assets/images/platform/turtlebot3/ros2_install/ros2_install1-.png) -3. Generally, ros-humble-desktop is recomended in `Remote PC` +3. Generally, ros-humble-desktop is recommended for the `Remote PC` ![](/assets/images/platform/turtlebot3/ros2_install/ros2_install2-.png) -4. Add setup bash in bashrc -**[Remote PC]** +4. Add a line sourcing your environment to your bashrc. +
**[Remote PC]** ```bash echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc source ~/.bashrc @@ -63,7 +62,7 @@ source ~/.bashrc ### [Install Dependent ROS 2 Packages](#install-dependent-ros-2-packages) -1. Open the terminal with `Ctrl`+`Alt`+`T` from **Remote PC**. +1. Open the terminal with `Ctrl`+`Alt`+`T` on the **Remote PC**. 2. Install Gazebo **[Remote PC]** ```bash @@ -84,7 +83,7 @@ $ sudo apt install ros-humble-nav2-bringup ### [Install TurtleBot3 Packages](#install-turtlebot3-packages) -Install TurtleBot3 Packages. +Install the required TurtleBot3 Packages. **[Remote PC]** ```bash @@ -102,7 +101,7 @@ $ source ~/.bashrc ### [Environment Configuration](#environment-configuration) -1. Set the ROS environment for PC. +1. Setup your ROS environment for the Remote PC. **[Remote PC]** ```bash $ echo 'export ROS_DOMAIN_ID=30 #TURTLEBOT3' >> ~/.bashrc diff --git a/_includes/en/platform/turtlebot3/quickstart_noetic.md b/_includes/en/platform/turtlebot3/quickstart_noetic.md index 659d90403..8a4a1cf76 100644 --- a/_includes/en/platform/turtlebot3/quickstart_noetic.md +++ b/_includes/en/platform/turtlebot3/quickstart_noetic.md @@ -6,32 +6,32 @@ ## [PC Setup](#pc-setup) -**WARNING**: The contents in this chapter corresponds to the `Remote PC` (your desktop or laptop PC) which will control TurtleBot3. Do not apply this instruction to your TurtleBot3. +**WARNING**: The content in this chapter is for the initialization of the `Remote PC` (your desktop or laptop PC) which will be used to control the TurtleBot3. Do not complete these instructions on the TurtleBot3 platform itself. {: .notice--danger} {% capture warning_01 %} **Compatibility WARNING** -- `Jetson Nano` does not support native Ubuntu 20.04. Please refer to [NVIDIA developer forum]{: .blank} for more details. +- The `Jetson Nano` does not support native Ubuntu 20.04. Please refer to the [NVIDIA developer forum]{: .blank} for more details. [NVIDIA developer forum]: https://forums.developer.nvidia.com/t/when-will-jetpack-move-to-ubuntu-20-04/142517 {% endcapture %}
{{ warning_01 | markdownify }}
-**NOTE**: This instruction was tested on Linux with `Ubuntu 20.04` and `ROS1 Noetic Ninjemys`. +**NOTE**: This instruction was tested on the `Ubuntu 20.04` linux distribution running `ROS1 Noetic Ninjemys`. {: .notice--info} ### [Download and Install Ubuntu on Remote PC](#download-and-install-ubuntu-on-pc) -1. Download the proper `Ubuntu 20.04 LTS Desktop` image for your PC from the links below. +1. Download the `Ubuntu 20.04 LTS Desktop` image for your PC from the link below. - [Ubuntu 20.04 LTS Desktop image (64-bit)](https://releases.ubuntu.com/20.04/){: .blank} -2. Follow the instruction below to install Ubuntu on PC. +2. Follow the instructions below to install Ubuntu. - [Install Ubuntu desktop](https://www.ubuntu.com/download/desktop/install-ubuntu-desktop) ### [Install ROS on Remote PC](#install-ros-on-remote-pc) -Open the terminal with `Ctrl`+`Alt`+`T` and enter below commands one at a time. -In order to check the details of the easy installation script, please refer to [the script file](https://raw.githubusercontent.com/ROBOTIS-GIT/robotis_tools/master/install_ros_noetic.sh). +Open the terminal with `Ctrl`+`Alt`+`T` and enter the below commands one at a time. +If you would like to inspect the content of the installation script, please refer to [the script file](https://raw.githubusercontent.com/ROBOTIS-GIT/robotis_tools/master/install_ros_noetic.sh). **[Remote PC]** ```bash $ sudo apt update @@ -58,7 +58,7 @@ $ sudo apt-get install ros-noetic-joy ros-noetic-teleop-twist-joy \ ### [Install TurtleBot3 Packages](#install-turtlebot3-packages) -Install TurtleBot3 via Debian Packages. +Install required TurtleBot3 Debian packages. **[Remote PC]** ```bash $ sudo apt install ros-noetic-dynamixel-sdk @@ -68,16 +68,19 @@ $ sudo apt install ros-noetic-turtlebot3
-![](/assets/images/icon_unfold.png) **Click here to expand more details about building TurtleBot3 package from source.** +![](/assets/images/icon_unfold.png) **Click here for details about building TurtleBot3 packages from source.** -In case you need to download the source codes and build them, please use the commands below. -Make sure to remove the identical packages to avoid redundancy. +Make sure to remove any identical pre-compiled packages to avoid redundancy. **[Remote PC]** ```bash $ sudo apt remove ros-noetic-dynamixel-sdk $ sudo apt remove ros-noetic-turtlebot3-msgs $ sudo apt remove ros-noetic-turtlebot3 +``` +In case you need to download the source code and build the packages yourself, use the commands below. +**[Remote PC]** +```bash $ mkdir -p ~/catkin_ws/src $ cd ~/catkin_ws/src/ $ git clone -b noetic https://github.com/ROBOTIS-GIT/DynamixelSDK.git @@ -92,7 +95,7 @@ $ echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc ![](/assets/images/platform/turtlebot3/software/network_configuration.png) -1. Connect PC to a WiFi device and find the assigned IP address with the command below. +1. Connect your PC to a WiFi network and find the assigned IP address with the command below. **[Remote PC]** ```bash $ ifconfig @@ -105,11 +108,11 @@ $ ifconfig $ nano ~/.bashrc ``` -3. Press `Ctrl`+`END` or `Alt`+`/` to move the cursor to the end of line. - Modify the address of `localhost` in the `ROS_MASTER_URI` and `ROS_HOSTNAME` with the IP address acquired from the above terminal window. +3. Press `Ctrl`+`END` or `Alt`+`/` to move the cursor to the end of the line. + Modify the address of `localhost` in the `ROS_MASTER_URI` and `ROS_HOSTNAME` with the IP address acquired from the previous terminal window. ![](/assets/images/platform/turtlebot3/software/network_configuration3.png) -4. Source the bashrc with below command. +4. Source the updated bashrc with the following command. **[Remote PC]** ```bash $ source ~/.bashrc diff --git a/_includes/en/platform/turtlebot3/ros_gpg_key_expiration_incident.md b/_includes/en/platform/turtlebot3/ros_gpg_key_expiration_incident.md index 57f012929..8e5b3691e 100644 --- a/_includes/en/platform/turtlebot3/ros_gpg_key_expiration_incident.md +++ b/_includes/en/platform/turtlebot3/ros_gpg_key_expiration_incident.md @@ -1,2 +1,2 @@ -**NOTE** : If you encounter apt failures about the ROS GPG key (due to the existing GPG expiration), you may need to update GPG key. Please see [ROS GPG Key Expiration Incident](#https://discourse.ros.org/t/ros-gpg-key-expiration-incident/20669), and proceed to the given solution. +**NOTE** : If you encounter apt failures related to the ROS GPG key (due to the existing GPG expiration), you may need to update your GPG key. Please see [ROS GPG Key Expiration Incident](https://discourse.ros.org/t/ros-gpg-key-expiration-incident/20669), and proceed to the given solution. {: .notice} diff --git a/_includes/en/platform/turtlebot3/sbc_setup_humble.md b/_includes/en/platform/turtlebot3/sbc_setup_humble.md index 26f70058b..9928da221 100644 --- a/_includes/en/platform/turtlebot3/sbc_setup_humble.md +++ b/_includes/en/platform/turtlebot3/sbc_setup_humble.md @@ -6,7 +6,7 @@ {% capture warning_01 %} **WARNING** -- This process may take long time. Please do not use battery while following this section. +- This process may take long time. Do not use battery power while following this section, us a DC wall power supply. - **An HDMI monitor and input devices such as a keyboard and a mouse will be required to complete this setup.** - In order to use the webOS Robotics Platform, please refer to [webOS Robotics Platform](https://github.com/ros/meta-ros/wiki/OpenEmbedded-Build-Instructions) instruction. Packages will be cross-compiled using OpenEmbedded on a higher performance PC and an image file is created. {% endcapture %} diff --git a/_includes/en/platform/turtlebot3/sbc_setup_noetic.md b/_includes/en/platform/turtlebot3/sbc_setup_noetic.md index 5753ccd37..22b9beb74 100644 --- a/_includes/en/platform/turtlebot3/sbc_setup_noetic.md +++ b/_includes/en/platform/turtlebot3/sbc_setup_noetic.md @@ -6,13 +6,13 @@ {% capture warning_01 %} **WARNING** -- This process may take long time. Please do not use battery while following this section. +- This process may take long time. Do not use battery power while following this section, plug your PC into a DC wall power supply. - **An HDMI monitor and input devices such as a keyboard and a mouse will be required to complete this setup.** {% endcapture %}
{{ warning_01 | markdownify }}
### [Prepare microSD Card and Reader](#prepare-microsd-card-and-reader) -If you PC do not have a microSD slot, please use a microSD card reader to burn the recovery image. +If your PC do not have a microSD slot, use a microSD card reader to burn the required recovery image to the SD card. ![](/assets/images/platform/turtlebot3/setup/micro_sd_reader.png) ### [Download TurtleBot3 SBC Image](#download-turtlebot3-sbc-image) @@ -30,20 +30,19 @@ Noetic version images are created based on Ubuntu 20.04. [![](/assets/images/icon_download.png) **Download** `Raspberry Pi 4B (2GB or 4GB)` ROS Noetic image](https://www.robotis.com/service/download.php?no=2066){: .blank} **SHA256** : 9d48925a78381885916a6f3bb77891adbfae2b271b05fe2ae9a9b7ebd12c46cc -- Please note that this image may not compatible with Raspberry Pi 4B with 8GB RAM. +- Please note that this image may not compatible with the Raspberry Pi 4B with 8GB RAM. {% endcapture %}
{{ download_02 | markdownify }}
-The recovery image files can be modified without a prior notice. +Recovery image files may be modified without any prior notice. {: .notice} ### [Unzip the downloaded image file](#unzip-the-downloaded-image-file) -Extract the `.img` file and save it in the local disk. +Extract the `.img` file and save it to your local disk. ### Burn the image file -You can use various image burning tools. -For example, `Raspberry Pi Imager` or Linux `Disks` utility can be used. -Choose your preferred tool to burn the image to microSD. +Choose your preferred tool to burn the image to the microSD card. +For example, the [`Raspberry Pi Imager`](https://www.raspberrypi.com/software/) or Linux `Disks` utility can be used. #### Raspberry Pi Imager Please refer to [this article](https://www.raspberrypi.org/blog/raspberry-pi-imager-imaging-utility/) to find more information about Raspberry Pi Imager. @@ -53,19 +52,17 @@ Please refer to [this article](https://www.raspberrypi.org/blog/raspberry-pi-ima {% endcapture %}
{{ download_rpi_imager | markdownify }}
-If you have dependency error in download imager through `.deb`, use `snap install` like below CLI.(This version of imager is not latest, so it may be a little different from the picture below) +If you have a dependency error for the `.deb` installation of the imager, use `snap install`. (This version of imager is not the latest, so it may be a little different from the picture below) **[Remote PC]** ```bash $ sudo snap install rpi-imager $ rpi-imager ``` - - ![](/assets/images/platform/turtlebot3/setup/rpi_imager.gif) 1. Click `CHOOSE OS`. 2. Click `Use custom` and select the extracted `.img` file from local disk. -3. Click `CHOOSE STORAGE` and select the microSD. +3. Click `CHOOSE STORAGE` and select the microSD card. 4. Click `WRITE` to start burning the image. #### Disks Utility @@ -79,15 +76,15 @@ $ rpi-imager ### Resize the Partition In order to reduce the size of recovery image file and to decrease the time to burn the image onto microSD, the recovery partition is minimized. -Please resize the partition to use the unallocated space. +Please resize the partition to use any available unallocated space. -**Be aware of selecting an incorrect disk or a partition. Partitioning a system disk of your PC may cause a serious system malfunction.** +**Be careful not to select an incorrect disk or partition. Partitioning a system disk of your PC may cause serious system malfunctions.** {: .notice--danger} [![](/assets/images/icon_download.png) Download or install GParted GUI tool](https://gparted.org/download.php){: .blank} ![](/assets/images/platform/turtlebot3/setup/gparted.gif) -1. Select microSD card from the menu (mounted location may vary by system). +1. Select the microSD card from the menu (mounted location may vary by system). 2. Right click on the yellow partition. 3. Select `Resize/Move` option. 4. Drag the right edge of the partition to all the way to the right end. @@ -95,30 +92,30 @@ Please resize the partition to use the unallocated space. 6. Click the `Apply All Operations` green check button at the top. ### Configure the WiFi Network Setting -1. Open a terminal window with `Alt`+`Ctrl`+`T` and go to the netplan directory in the microSD card. -Start editing the `50-cloud-init.yaml` file with a superuser permission `sudo`. +1. Open a terminal window with `Alt`+`Ctrl`+`T` and go to the netplan directory on the microSD card. +Start editing the `50-cloud-init.yaml` file with superuser permissions. **[Remote PC]** ```bash $ cd /media/$USER/writable/etc/netplan -$ sudo nano 50-cloud-init.yaml +$ sudoedit 50-cloud-init.yaml ``` -When the editor is opened, replace the `WIFI_SSID` and `WIFI_PASSWORD` with your wifi SSID and password. +Replace the `WIFI_SSID` and `WIFI_PASSWORD` with your wifi SSID and password. ![](/assets/images/platform/turtlebot3/setup/ros2_sbc_netcfg.png) Save the file with `Ctrl`+`S` and exit with `Ctrl`+`X`. ![](/assets/images/platform/turtlebot3/setup/network_setup.gif) -If "No such file or directory" is returned, make sure the microSD is mounted to the system. +If "No such file or directory" is returned, make sure the microSD is mounted correctly {: .notice--warning} 2. Boot Up the Raspberry Pi - a. Connect the HDMI cable of the monitor to the HDMI port of Raspberry Pi. - b. Connect input devices to the USB port of Raspberry Pi. + a. Connect the HDMI cable of the monitor to the HDMI port of the Raspberry Pi. + b. Connect the input devices to the USB port of Raspberry Pi. c. Insert the microSD card. - d. Connect the power (either with USB or OpenCR) to turn on the Raspberry Pi. + d. Connect power (either with USB or the OpenCR) to turn on the Raspberry Pi. e. Login with ID `ubuntu` and PASSWORD `turtlebot`.` ![](/assets/images/platform/turtlebot3/sbc_setup/sbc_setup3.png) -HDMI cable has to be connected before powering the Raspberry Pi, or else the HDMI port of the Raspberry Pi will be disabled. +The HDMI cable has to be connected before powering on the Raspberry Pi, or else the HDMI port of the Raspberry Pi will be disabled. {: .notice--warning} ### ROS Network Configuration @@ -139,7 +136,7 @@ $ nano ~/.bashrc ``` -3. Find the `ROS_MASTER_URI` and `ROS_HOSTNAME` setting section, then modify the IP adddresses accordingly. +3. Find the `ROS_MASTER_URI` and `ROS_HOSTNAME` setting section, then modify the IP addresses to the correct addresses for your devices. **[Turtlebot3 SBC]** ```bash export ROS_MASTER_URI=http://{IP_ADDRESS_OF_REMOTE_PC}:11311 @@ -183,7 +180,7 @@ $ echo 'export LDS_MODEL=LDS-02' >> ~/.bashrc $ source ~/.bashrc ``` -**This is it! Now you are done with SBC setup :)** +**This is it! Now you are done with the SBC setup :)** Next Step : [OpenCR Setup](/docs/en/platform/turtlebot3/opencr_setup/#opencr-setup) {: .notice--success} @@ -191,20 +188,15 @@ Next Step : [OpenCR Setup](/docs/en/platform/turtlebot3/opencr_setup/#opencr-set ![](/assets/images/icon_unfold.png) **Click to expand : Manual SBC Setup Instructions** -Please be aware that this manual setup takes a lot more time than burning the recovery image file, but allows flexible choice of package installation. **This instruction is not recommended for the beginners**. +Please be aware that this manual setup takes a lot more time than burning the recovery image file, but allows flexible choice of package installation. **This instruction is not recommended for beginners**. 1. ![](/assets/images/icon_download.png) Download the proper `Ubuntu 20.04.1(Focal) Preinstalled Server` image on your PC. - [Ubuntu 20.04.1(Focal) Preinstalled Server for Raspberry Pi3(arm64)](http://cdimage.ubuntu.com/ubuntu-server/focal/daily-preinstalled/current/){: .blank} 2. Extract the downloaded file. -3. Burn the `.img` file to the microSD card. You can use various image burning tools. - For example, `Raspberry Pi Imager` or Linux `Disks` utility can be used. Choose your preferred tool to burn the image to microSD. +3. Burn the `.img` file to the microSD card. ![](/assets/images/platform/turtlebot3/setup/rpi_imager.gif) - a. Click `CHOOSE OS`. - b. Click `Use custom` and select the extracted `.img` file from local disk. - c. Click `CHOOSE STORAGE` and select the microSD. - d. Click `WRITE` to start burning the image. 4. Boot Up the Raspberry Pi a. Connect the HDMI cable of the monitor to the HDMI port of Raspberry Pi. @@ -213,8 +205,8 @@ Please be aware that this manual setup takes a lot more time than burning the re d. Connect the power (either with USB or OpenCR) to turn on the Raspberry Pi. 5. Configure the Raspberry Pi - a. Log in with default username(`ubuntu`) and password(`ubuntu`). After logged in, system will ask you to change the password. - b. Open automatic update setting file. + a. Log in with the default username (`ubuntu`) and password (`ubuntu`). After logging in, system will ask you to change the password. + b. Open the automatic update settings file. ```bash $ sudo nano /etc/apt/apt.conf.d/20auto-upgrades ``` @@ -226,9 +218,9 @@ APT::Periodic::Unattended-Upgrade "0"; ``` a. Save the file with `Ctrl`+`S` and exit with `Ctrl`+`X`. -7. Enter below command to configure the WiFi network setting. +7. Configure the WiFi network settings. ```bash -$ sudo nano /etc/netplan/50-cloud-init.yaml +$ sudoedit /etc/netplan/50-cloud-init.yaml ``` 8. When the editor is opened, append below contents at the end of the file. @@ -241,7 +233,7 @@ $ sudo nano /etc/netplan/50-cloud-init.yaml $ sudo reboot ``` -10. Set the `systemd` to prevent boot-up delay even if there is no network at startup. Run the command below to set mask the `systemd` process using the following command. +10. Set `systemd` to prevent boot-up delay even if there is no network at startup. Run the command below to mask the `systemd` process using the following command. ```bash $ systemctl mask systemd-networkd-wait-online.service ``` @@ -251,13 +243,13 @@ $ systemctl mask systemd-networkd-wait-online.service $ sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target ``` -12. After rebooting the Raspberry Pi, if you wish to work from the Remote PC using SSH, use below command from the remote PC terminal. The default password is **ubuntu**. +12. After rebooting the Raspberry Pi, if you wish to work from the Remote PC using SSH, use the below command to log in from the remote PC terminal. The default password is **ubuntu**. ```bash $ ssh ubuntu@{IP Address of Raspberry PI} ``` 13. Install ROS Noetic Ninjemys -Enter below commands to the terminal one at a time. +Enter the below commands to the terminal one at a time. In order to check the details of the easy installation script, please refer to [the script file](https://raw.githubusercontent.com/ROBOTIS-GIT/robotis_tools/master/install_ros_noetic_rpi.sh). ```bash $ sudo apt-get update @@ -283,7 +275,7 @@ $ catkin_make -j1 $ source ~/.bashrc ``` -15. USB Port Setting +15. USB Port Settings ```bash $ rosrun turtlebot3_bringup create_udev_rules ``` @@ -294,17 +286,16 @@ Confirm the WiFi IP address and edit the `.bashrc` file $ nano ~/.bashrc ``` -17. Modify the IP adddresses of `ROS_MASTER_URI` and the `ROS_HOSTNAME`. +17. Modify the IP addresses of `ROS_MASTER_URI` and `ROS_HOSTNAME`. ```bash export ROS_MASTER_URI=http://{IP_ADDRESS_OF_REMOTE_PC}:11311 export ROS_HOSTNAME={IP_ADDRESS_OF_RASPBERRY_PI_3} ``` - 18. Save the file and exit the nano editor. 19. LDS Configuration -The TurtleBot3 LDS has been updated to LDS-02 since 2022 models. -Please follow the instructions below on the **SBC (Raspberry Pi)** of TurtleBot3. +The TurtleBot3 LDS has been updated include the LDS-02 since 2022. +Please follow the instructions below on the **SBC (Raspberry Pi)** of the TurtleBot3 to configure the LDS. ```bash $ sudo apt update $ sudo apt install libudev-dev @@ -313,7 +304,7 @@ $ git clone -b noetic https://github.com/ROBOTIS-GIT/ld08_driver.git $ cd ~/catkin_ws && catkin_make ``` -20. Export the LDS_MODEL to the bashrc file. Depending on your LDS model, use `LDS-01` or `LDS-02`. +20. Export the LDS_MODEL in the bashrc file. Depending on your LDS model, use `LDS-01` or `LDS-02`. ```bash $ echo 'export LDS_MODEL=LDS-01' >> ~/.bashrc $ source ~/.bashrc diff --git a/_includes/kr/dxl/quick_start.md b/_includes/kr/dxl/quick_start.md index c4b262b8f..b8a18111a 100644 --- a/_includes/kr/dxl/quick_start.md +++ b/_includes/kr/dxl/quick_start.md @@ -9,14 +9,13 @@ - [제어기 다이나믹셀 호환표](/docs/kr/parts/controller/controller_compatibility/#다이나믹셀-호환표) {% endif %} - OS가 설치된 PC. -- PC와 다이나믹셀 연결장치 ([U2D2] 또는 [USB2Dynamixel]) +- PC와 다이나믹셀 연결장치 ([U2D2] 또는 [OpenRB-150]) - [호환 소프트웨어](#호환-소프트웨어) {% capture warn_01 %} **주의**: -- USB2DYNAMIXEL은 현재 단종되어 더 이상 판매되지 않습니다. - 사용하는 소프트웨어에 따라, 호환되는 OS가 다를수 있습니다. 해당 소프트웨어 매뉴얼에서 지원하는 OS를 참조하세요. {% endcapture %}
{{ warn_01 | markdownify }}
@@ -30,33 +29,6 @@ ### [호환 소프트웨어](#호환-소프트웨어) -다이나믹셀을 제어 및 관리하기위한 소프트웨어 입니다. 아래 호환 표를 참고하세요. - -| 모델 | AX Series | DX Series | RX Series | EX Series | MX Series | X-Series | PRO Series | P Series | -|:----------------------|:----------|:----------|:----------|:----------|:----------|:---------------|:-----------|:---------| -| R+ Manager 2.0 | X | X | X | X | O | O | O | O | -| 다이나믹셀 위자드 | O | X | X | O | O | X (XL320 지원) | O | X | -| 다이나믹셀 위자드2.0 | O | O | O | O | O | O | O | O | -| 다이나믹셀 SDK | O | O | O | O | O | O | O | O | -| 다이나믹셀 워크벤치 | O | O | O | O | O | O | O | O | - -{% capture notice_02 %} -**참고**: 로보티즈에서 제공하는 제어기와 다이나믹셀을 함께사용할수 있는 소프트웨어가 있습니다. 아래를 참고하세요. -- [제어기 다이나믹셀 호환표](/docs/kr/parts/controller/controller_compatibility/#다이나믹셀-호환표) -- [제어기 소프트웨어 호환표](/docs/kr/parts/controller/controller_compatibility/#소프트웨어-호환표) -{% endcapture %} -
{{ notice_02 | markdownify }}
- -#### [로보플러스 매니저](#로보플러스-매니저) - -[로보플러스 매니저]는 로봇을 구성하는 각 장치들을 관리해줍니다. 이 프로그램의 주요 역할은 다음과 같습니다. - -- 제어기 펌웨어를 관리합니다. [(업데이트 및 복구 기능)](/docs/kr/software/rplus1/manager/#펌웨어-관리) -- 사용에 필요한 모드설정 또는 제어기 및 주변 장치들의 상태를 점검합니다. [(테스트 및 설정기능)](/docs/kr/software/rplus1/manager/#테스트-및-설정) - -**참고**: 로보플러스 매니저 1.0은 기능의 제약이 있습니다. 최신버전인 [R+ Manager 2.0](#r-manger-20) 또는 [다이나믹셀 위자드 2.0](#다이나믹셀-위자드-20)을 사용하세요. -{: .notice} - #### [R+ Manager 2.0](#r-manger-20) [R+ Manager 2.0]은 로봇을 구성하는 제어기와 다이나믹셀 장치들을 통합 관리합니다. @@ -96,21 +68,15 @@ - ROS - Arduino -#### [다이나믹셀 워크벤치](#다이나믹셀-워크벤치) - -[다이나믹셀 워크벤치]는 DYNAMIXEL SDK 를 기반으로 보다 간단하고 사용하기 쉽게 만든 라이브러리입니다. - -**지원목록**: -- C++ -- Linux, MacOS -- ROS -- Arduino - -**참고**: 다이나믹셀 워크벤치는 DYNAMIXEL SDK 와 비교하여 기능상의 제약이 있을수 있습니다. -{: .notice} +{% capture notice_02 %} +**참고**: 로보티즈에서 제공하는 제어기와 다이나믹셀을 함께사용할수 있는 소프트웨어가 있습니다. 아래를 참고하세요. +- [제어기 다이나믹셀 호환표](/docs/kr/parts/controller/controller_compatibility/#다이나믹셀-호환표) +- [제어기 소프트웨어 호환표](/docs/kr/parts/controller/controller_compatibility/#소프트웨어-호환표) +{% endcapture %} +
{{ notice_02 | markdownify }}
[U2D2]: /docs/kr/parts/interface/u2d2/ -[USB2Dynamixel]: /docs/kr/parts/interface/usb2dynamixel/ +[OpenRB-150]: /docs/kr/parts/controller/openrb-150/ [로보플러스 매니저]: /docs/kr/software/rplus1/manager/ [R+ Manager 2.0]: /docs/kr/software/rplus2/manager/ [다이나믹셀 SDK]: /docs/kr/software/dynamixel/dynamixel_sdk/overview/ diff --git a/docs/en/dxl/protocol2.md b/docs/en/dxl/protocol2.md index 7f6d5d43f..0a28e228e 100644 --- a/docs/en/dxl/protocol2.md +++ b/docs/en/dxl/protocol2.md @@ -13,45 +13,58 @@ sidebar: # [Introduction](#introduction) - To control DYNAMIXEL, communication should be established according to the protocol of DYNAMIXEL. DYNAMIXEL is driven by receiving binary data. Examples of programs for the transmission of this kind of data are described in detail in the User’s Manual of DYNAMIXEL-only controller or the USB2DYNAMIXEL. Thus, this manual describes only the method and protocol of communication used in DYNAMIXEL on the assumption that Main Controller can transfer binary data. +DYNAMIXEL servos utilize the DYNAMIXEL protocol for serial communications and control operations. This document serves as a reference for the specifications of 2.0 DYNAMIXEL Protocol communication. -- DYNAMIXEL Protocol 2.0 supported devices: MX-28, MX-64, MX-106, X Series (2X Series included), PRO Series, P Series. -- DYNAMIXEL Protocol 2.0 supported controllers: CM-50, CM-150, CM-200, OpenCM7.0, OpenCM9.04, CM-550, OpenCR, OpenRB-150 -- Other: 2.0 protocol from R+ Smart app, DYNAMIXEL Wizard 2.0 +DYNAMIXEL Protocol 2.0 communications are supported on the following servos: +* [DYNAMIXEL Y](/docs/en/dxl/y) +* [DYNAMIXEL P](/docs/en/dxl/p) +* [DYNAMIXEL X](/docs/en/dxl/x) +* [DYNAMIXEL MX](/docs/en/dxl/mx) -**TIP** : See DYNAMIXEL Protocol [Compatibility Table]{: .popup}. +**Note**: MX(2.0) is a special firmware for the DYNAMIXEL MX series providing support for DYNAMIXEL Protocol 2.0. MX(2.0) firmware can be uploaded to your servo using [Firmware Recovery](/docs/en/software/dynamixel/dynamixel_wizard2/) in DYNAMIXEL Wizard 2.0. +{: .notice} + +DYNAMIXEL Protocol 2.0 communications are supported by the following controllers: +* [OpenRB-150](/docs/en/parts/controller/openrb-150/) +* [OpenCR1.0](/docs/en/parts/controller/opencr10/) +* [CM-550](/docs/en/parts/controller/cm-550/) +* [OpenCM9.04](/docs/en/parts/controller/opencm904/) +* [CM-200](/docs/en/parts/controller/cm-200/) +* [CM-150](/docs/en/parts/controller/cm-150/) +* [CM-50](/docs/en/parts/controller/cm-50/) + +**TIP** : See the DYNAMIXEL Protocol [Compatibility Table]{: .popup} for more information. {: .notice--success} -**Note**: MX(2.0) is a special firmware for the DYNAMIXEL MX series supporting the DYNAMIXEL Protocol 2.0. The MX(2.0) firmware can be upgraded from the Protocol 1.0 by using the [Firmware Recovery](/docs/en/software/dynamixel/dynamixel_wizard2/) in DYNAMIXEL Wizard 2.0. -{: .notice} ## [Packet](#packet) -Main Controller and DYNAMIXEL communicate each other by sending and receiving data called Packet. Packet has two kinds: Instruction Packet, which Main Controller sends to control DYNAMIXEL, and Status Packet, which DYNAMIXEL responses to Main Controller. +DYNAMIXELs communicate with their controllers using structured data packets in one of two types: +1. Instruction Packets: Sent by the main controller to the DYNAMIXEL. These packets contain the instructions for the actuators. +2. Status Packets: Sent by the DYNAMIXEL back to the main controller. These packets return information reported by the actuator. ## [ID](#id) -ID is a specific number for distinction of each DYNAMIXEL when several DYNAMIXEL's are linked to one bus. -By giving IDs to Instruction and Status Packets, Main Controller can control only DYNAMIXEL that you want to control +Each DYNAMIXEL servo is assigned a communication ID for identification over the DYNAMIXEL bus. -## [DYNAMIXEL Protocol](#dynamixel-protocol) +Each connected DYNAMIXEL must have a unique ID number. If DYNAMIXELs with the same ID are connected, packet collision and network problems will occur. To change a DYNAMIXEL's ID, reference the [DYNAMIXEL Control Table](/docs/en/software/dynamixel/dynamixel_wizard2/#dynamixel-control-table) section on the DYNAMIXEL Wizard 2.0 eManual page. -DYNAMIXEL does the Asynchronous Serial Communication with 8 bit, 1 Stop bit, and None Parity. +**NOTE**: The default ID number for new DYNAMIXEL actuators is 1. +{: .notice} -If DYNAMIXEL with the same ID is connected, packet will collide and network problem will occur. Thus, set ID as such that there is no DYNAMIXEL with the same ID. To change the DYNAMIXEL's ID, reference the [DYNAMIXEL Control Table](/docs/en/software/dynamixel/dynamixel_wizard2/#dynamixel-control-table) section in the DYNAMIXEL Wizard 2.0. +## [DYNAMIXEL Protocol](#dynamixel-protocol) -**NOTE**: The DYNAMIXEL's initial ID is 1 at the factory condition. -{: .notice} +DYNAMIXEL servos utilize half-duplex 8 bit Asynchronous Serial Communication with 1 Stop bit, and no Parity. ## [Half Duplex](#half-duplex) -Half duplex UART is a serial communication protocol where both TxD and RxD cannot be used at the same time. This method is generally used when many devices need to be connected to a single bus. Since more than one device are connected to the same bus, all the other devices need to be in input mode while one device is transmitting. The Main Controller that controllers DYNAMIXEL actuators sets the communication direction to input mode, and only when it is transmitting an Instruction Packet, it changes the direction to output mode. +Half duplex UART is a serial communication protocol where both TxD and RxD cannot be used at the same time. This method is generally used when many devices need to be connected to a single bus. Since multiple devices are connected to the same bus, all the other devices need to be in input mode while one device is transmitting. The Main Controller that controls DYNAMIXEL actuators also controls the switch between input and output communications modes. ![](/assets/images/dxl/halfduplex.png) ## [Tx, Rx Direction](#tx-rx-direction) -For Half Duplex UART, the transmission ending timing is important to change the direction to receiving mode. The bit definitions within the register that indicates UART_STATUS are as the following +For Half Duplex UART, the transmission ending timing is important to change the direction between sending and receiving mode. The bit definitions within the UART_STATUS register are as follows: - **TXD_BUFFER_READY_BIT**: Indicates that the transmission DATA can be loaded into the Buffer. Note that this only means that the SERIAL TX BUFFER is empty, and does not necessarily mean that the all the data transmitted before has left the CPU. - **TXD_SHIFT_REGISTER_EMPTY_BIT**: Set when all the Transmission Data has completed its transmission and left the CPU. @@ -66,7 +79,7 @@ The **TXD_BUFFER_READY_BIT** is used when one byte is to be transmitted via the } ``` -When changing the direction, the **TXD_SHIFT_REGISTER_EMPTY_BIT** must be checked. The following is an example program that sends an Instruction Packet +Before changing the communication direction, the **TXD_SHIFT_REGISTER_EMPTY_BIT** must be checked to ensure that all data has been transferred. The following is an example program that sends an Instruction Packet and waits until communciation has been completed before switching communication directions. ```c 1 DIRECTION_PORT = TX_DIRECTION; @@ -87,99 +100,93 @@ When changing the direction, the **TXD_SHIFT_REGISTER_EMPTY_BIT** must be checke 16 EnableInterrupt(); // enable interrupt again ``` -**WARNING** : Please note the important lines between LINE 12 and LINE 16. Line 12 is necessary since an interrupt here may cause a delay longer than the return delay time and corruption to the front of the status packet may occur. +**WARNING** : Please note the lines between LINE 12 and LINE 16. Line 12 is necessary since an interrupt during data transmission may cause a delay longer than the return delay time and corruption to the status packet may occur. {: .notice--warning} ## [Byte to Byte Time](#byte-to-byte-time) -The delay time between bytes when sending an instruction packet. If the delay time is over 1.5ms, then DYNAMIXEL actuator recognizes this as a communication problem and waits for the next header (0xff 0xff 0xfd) of a packet again. +The allowed delay time between bytes when sending an instruction packet is 1.5ms. If the delay time is over 1.5ms, then DYNAMIXEL actuator recognizes this as a communication problem and waits for the next header (0xff 0xff 0xfd) before continuing to process packets. ![](/assets/images/dxl/protocol2/protocol20_bytetobytetime.png) # [Instruction Packet](#instruction-packet) -Instruction Packet is the command packet sent to the Device. +Instruction Packet is the command packet sent to provide instructions to the Device. The structure of the packet is as follows: | Header 1 | Header 2 | Header 3 | Reserved | Packet ID | Length 1 | Length 2 | Instruction | Param | Param | Param | CRC 1 | CRC 2 | |:--------:|:--------:|:--------:|:--------:|:---------:|:--------:|:--------:|:-----------:|:-------:|:-----:|:-------:|:-----:|:-----:| | 0xFF | 0xFF | 0xFD | 0x00 | ID | Len_L | Len_H | Instruction | Param 1 | ... | Param N | CRC_L | CRC_H | ## [Header](#header) -The field that indicates the start of the Packet +This field is used to indicate the start of a status packet. ## [Reserved](#reserved) -Uses 0X00 (Note that Reserved does not use 0XFD). The Reserved functions the same as [Header](#header). -See the next image of a table of the [Packet Details](/docs/en/software/dynamixel/dynamixel_wizard2/#packet-window) of [the DYNAMIXEL Wizard 2.0](/docs/en/software/dynamixel/dynamixel_wizard2/), which shows that the Reserved (0x00) are included in the Header field. +An additional 0x00 byte included in the header field. ![](/assets/images/dxl/protocol2/protocol20_packet_example_02.png) -> A table of Packet Details of DYNAMIXEL Wizard 2.0 +> Example DYNAMIXEL packet ## [Packet ID](#packet-id) -The field that indicates an ID of the device that should receive the Instruction Packet and process it +The field that indicates the ID of the device that should receive the Instruction Packet and process it. - 1. Range : 0 ~ 252 (0x00 ~ 0xFC), which is a total of 253 numbers that can be used - 2. Broadcast ID : 254 (0xFE), which makes all connected devices execute the Instruction Packet + 1. Range : 0 ~ 252 (0x00 ~ 0xFC), which is a total of 253 numbers that can be used. + 2. Broadcast ID : 254 (0xFE), which makes all connected devices execute the Instruction Packet. - **WARNING**: Be sure that Broadcast ID(254 (0xFE)) return [Status Packet](#status-packet) for [Ping], [Sync Read] and [Bulk Read] only, other [Instruction] aside from [Ping], [Sync Read] and [Bulk Read] will not return Status Packet to Broadcast ID. + **WARNING**: The DYNAMIXEL Broadcast ID (254 (0xFE)) will only return [Status Packets](#status-packet) for [Ping], [Sync Read] and [Bulk Read] commands, other Instructions aside from [Ping], [Sync Read] and [Bulk Read] will not return Status Packets when sent to the Broadcast ID. {: .notice--warning} ## [Length](#length) -The field that indicates the length of packet field. - - 1. Devided into low and high bytes in the [Instruction Packet] - 2. The Length indicates the Byte size of Instruction, Parameters and CRC fields +The field that specifies the full length of the transmitted packet, Divided into low and high bytes in the [Instruction Packet]. The Length includes the Byte size of Instruction, Parameters and CRC fields in the packet. - `Length = the number of Parameters + 3` -- [Status Packet] includes 1 byte length ERROR field's data. +- A returned [Status Packet] will also include a 1 byte length ERROR field in the data. ## [Instruction](#instruction) -The field that defines the type of commands. +The field that defines the type of command included in the instruction packet. | Value | Instructions | Description | |:-----:|:----------------------:|:--------------------------------------------------------------------------------------------------------------------------:| -| 0x01 | [Ping] | Instruction that checks whether the Packet has arrived to a device with the same ID as Packet ID | +| 0x01 | [Ping] | Instruction that checks whether the Packet has arrived at a device with the same ID as the specified packet ID| | 0x02 | [Read] | Instruction to read data from the Device | -| 0x03 | [Write] | Instruction to write data on the Device | -| 0x04 | [Reg Write] | Instruction that registers the Instruction Packet to a standby status; Packet is later executed through the Action command | -| 0x05 | [Action] | Instruction that executes the Packet that was registered beforehand using Reg Write | +| 0x03 | [Write] | Instruction to write data to the Device | +| 0x04 | [Reg Write] | Instruction to register the Instruction Packet in standby status; Packet can later be executed using the Action command | +| 0x05 | [Action] | Instruction to executes a Packet that was registered beforehand using Reg Write | | 0x06 | [Factory Reset] | Instruction that resets the Control Table to its initial factory default settings | | 0x08 | [Reboot] | Instruction to reboot the Device | -| 0x10 | [Clear] | Instruction to reset certain information | -| 0x20 | [Control Table Backup] | Instruction to store current Control Table status data to a Backup area or to restore EEPROM data. | -| 0x55 | Status(Return) | Return packet for the Instruction Packet | -| 0x82 | [Sync Read] | For multiple devices, Instruction to read data from the same Address with the same length at once | -| 0x83 | [Sync Write] | For multiple devices, Instruction to write data on the same Address with the same length at once | -| 0x8A | [Fast Sync Read] | For multiple devices, Instruction to read data from the same Address with the same length at once | -| 0x92 | [Bulk Read] | For multiple devices, Instruction to read data from different Addresses with different lengths at once | -| 0x93 | [Bulk Write] | For multiple devices, Instruction to write data on different Addresses with different lengths at once | -| 0x9A | [Fast Bulk Read] | For multiple devices, Instruction to read data from different Addresses with different lengths at once | +| 0x10 | [Clear] | Instruction to reset certain information stored in memory | +| 0x20 | [Control Table Backup] | Instruction to store current Control Table status data to a Backup or to restore backup EEPROM data. | +| 0x55 | Status(Return) | Return packet sent following the execution of an Instruction Packet | +| 0x82 | [Sync Read] | Instruction to read data from multiple devices with the same Address with the same length at once | +| 0x83 | [Sync Write] | Instruction to write data to multiple devices with the same Address with the same length at once | +| 0x8A | [Fast Sync Read] | Instruction to read data from multiple devices with the same Address with the same length at once | +| 0x92 | [Bulk Read] | Instruction to read data from multiple devices with different Addresses with different lengths at once | +| 0x93 | [Bulk Write] | Instruction to write data to multiple devices with different Addresses with different lengths at once | +| 0x9A | [Fast Bulk Read] | Instruction to read data from multiple devices with different Addresses with different lengths at once | ## [Parameters](#parameters) - 1. As the auxiliary data field for Instruction, its purpose is different for each Instruction. - 2. Method of expressing negative number data : This is different for each product, so please refer to the e-manual of the corresponding product. +This section contains the data sent in the packet, and may differ in length and content depending on the type of packet sent. -## [CRC](#crc) -16bit CRC field which checks if the Packet has been damaged during communication. + **WARNING**: The method of expressing negative numbers in this data field may differ for each product. Please refer to the eManual page for your specific product for more information. + {: .notice--warning} - 1. Devided into low and high bytes in the [Instruction Packet] - 2. Range of CRC calculation: From Header (FF FF FD 00) to Parameteres before CRC field in [Instruction Packet] - 3. Calculating CRC and examples: [CRC Calculation](/docs/en/dxl/crc/) +## [CRC](#crc) +A 16bit checksum used to determine if the Packet has been damaged during communication. This field is divided into low and high bytes in the [Instruction Packet] and is calculated based on the content of the packet ranging from the Header (FF FF FD 00) to to the Parameters before the CRC field in the [Instruction Packet]. See the following page for [CRC Calculation](/docs/en/dxl/crc/) documentation. # [Status Packet](#status-packet) -Status Packet is the response packet transmitted from the device to a main controller. Note that it has the same construction as the Instruction Packet except the ERROR field is added. +The Status Packet is the response transmitted from the device to the main controller following the receipt of an [Instruction Packet]. Note that it has the same construction as the Instruction Packet with the addition of the ERROR field. | Header 1 | Header 2 | Header 3 | Reserved | Packet ID | Length 1 | Length 2 | Instruction | **ERR**{: .red} | PARAM | PARAM | PARAM | CRC 1 | CRC 2 | |:--------:|:--------:|:--------:|:--------:|:---------:|:--------:|:--------:|:-----------:|:-----------------:|:-------:|:-----:|:-------:|:-----:|:-----:| | 0xFF | 0xFF | 0xFD | 0x00 | ID | Len_L | Len_H | Instruction | **Error**{: .red} | Param 1 | ... | Param N | CRC_L | CRC_H | ## [Instruction ](#instruction-) -Instruction of the Status Packet is designated to 0x55 (Status) +The instruction for Status Packets is 0x55 (Status), this should be included as the instruction for all returned status packets. ## [Error](#error) -The field that indicates the processing result of Instruction Packet +The field that indicates the result of the received Instruction Packet. | Bit 7 | Bit 6 ~ Bit 0 | |:-----:|:-------------:| @@ -191,44 +198,48 @@ The field that indicates the processing result of Instruction Packet | Error Number | Error | Description | |:------------:|:-----------------:|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| | 0x01 | Result Fail | Failed to process the sent Instruction Packet | -| 0x02 | Instruction Error | Undefined Instruction has been used
Action has been used without Reg Write | -| 0x03 | CRC Error | CRC of the sent Packet does not match | -| 0x04 | Data Range Error | Data to be written in the corresponding Address is outside the range of the minimum/maximum value | -| 0x05 | Data Length Error | Attempt to write Data that is shorter than the data length of the corresponding Address
(ex: when you attempt to only use 2 bytes of a item that has been defined as 4 bytes) | -| 0x06 | Data Limit Error | Data to be written in the corresponding Address is outside of the Limit value | -| 0x07 | Access Error | Attempt to write a value in an Address that is Read Only or has not been defined
Attempt to read a value in an Address that is Write Only or has not been defined
Attempt to write a value in the ROM domain while in a state of Torque Enable(ROM Lock) | +| 0x02 | Instruction Error | An undefined Instruction has been used
Action has been used without Reg Write | +| 0x03 | CRC Error | The CRC of the sent Packet does not match the expected value | +| 0x04 | Data Range Error | Data to be written to the specified Address is outside the range of the minimum/maximum value | +| 0x05 | Data Length Error | Attempted to write Data that is shorter than the required data length of the specified Address
(ex: when you attempt to only use 2 bytes of a register that has been defined as 4 bytes) | +| 0x06 | Data Limit Error | Data to be written to the specified Address is outside of the configured Limit value | +| 0x07 | Access Error | Attempted to write a value to an Address that is Read Only or has not been defined
Attempted to read a value from an Address that is Write Only or has not been defined
Attempted to write a value to an EEPROM register while Torque was Enabled. | ## [Parameters ](parameters-) -1. As the auxiliary data field for Instruction, its purpose is different for each Instruction. -2. Method of expressing negative number data : This is different for each product, so please refer to the e-manual of the corresponding product +This section contains the data used as an argument to the instruction included in the packet, and may differ in length and content depending on the type of packet sent. + + **WARNING**: The method of expressing negative numbers in this data field may differ for each product. Please refer to the eManual page for your specific product for more information. + {: .notice--warning} ## [Response Policy](#response-policy) +The method of response to received Instructions can be modified using the value of the Status Return Level [Control Table] item. For more details, see the Status Return Level section of the eManual page for your specific actuator. -1. Broadcast ID(254 (0xFE)) is responded to [Ping], [Sync Read] and [Bulk Read] only. For instance, Broadcast ID is not responded to [Sync Write] and [Bulk Write] Instruction. -2. A response to Instruction can be determined depending on a value of Status Return Level in [Control Table]. For more details, see the selectable value from Status Return Level in Control Table of the DYNAMIXEL in use. + **WARNING**: The DYNAMIXEL Broadcast ID (254 (0xFE)) will only return [Status Packets](#status-packet) for [Ping], [Sync Read] and [Bulk Read] commands, other Instructions aside from [Ping], [Sync Read] and [Bulk Read] will not return Status Packets when sent to the Broadcast ID. + {: .notice--warning} # [Packet Process](#packet-process) -## Processing Order of Transmission +## Transmission Process -1. Generate basic form of Packet and afterwards Byte Stuffing(0xFD) - - Inspection range : Everything within the Instruction field to the Parameter field (not the CRC) - - Processing method : When the pattern “0xFF 0xFF 0xFD” appears, add Byte Stuffing (0xFD) - (If “0xFF 0xFF 0xFD” already exists, add a 0xFD to change it to “0xFF 0xFF 0xFD 0xFD”) -2. Length : Modify to Length with Byte Stuffing applied -3. CRC : Calculate CRC with Byte Stuffing applied +1. Generate basic packet structure including required parameters. +2. Apply Byte Stuffing to ensure that packets are processed successfully. +3. Update packet length to include any stuffed bytes. +4. Calculate final CRC with byte stuffing applied. + + **NOTICE**: Byte stuffing is a method of adding additional data to generated instruction packets to ensure that the packets are processed successfully. When the byte pattern "0xFF 0xFF 0xFD" appears in a packet, byte stuffing adds 0xFD to the end of the pattern to convert it to "0xFF 0xFF 0xFD 0xFD" to ensure that it is not interpreted as the header at the start of another packet. + {: .notice} ## Processing Order of Reception -1. Search for Header(0xFF 0xFF 0xFD) : Ignore the Byte Stuffing(“0xFF 0xFF 0xFD 0xFD”). -2. Packet ID : If Packet ID is valid, receive additional transmission the size of Length -3. CRC : Calculate with the received Packet with Byte Stuffing included, and once CRC is matched then remove Byte Stuffing +1. Search for packet Header (0xFF 0xFF 0xFD), ignoring any found Byte Stuffing (0xFF 0xFF 0xFD 0xFD). +2. If the Packet ID is valid, prepare to receive additional transmission data the size of Length. +3. Calculate the CRC with the received Packet with Byte Stuffing included, if the CRC matches, remove byte stuffing from received packet. +4. Execute received packet. # [Instruction Details](#instruction-details) -Note that given examples use the following abbreviation to provide clear information. - +Note that given examples use the following abbreviations for each packet section: - Header : H - Reserved: RSRV - Length: LEN @@ -238,13 +249,13 @@ Note that given examples use the following abbreviation to provide clear informa ## [Ping (0x01)](#ping-0x01) ### Description - - Instruction to check the existence of a Device and basic information - - Regardless of the Status Return Level of the Device, the [Status Packet] is always sent to Ping Instruction. - - When the Packet ID field is 0xFE(Broadcast ID) : All devices send their Status Packet according to their arranged order. + - Used to check for the existence of a Device and retrieve basic information. + - Regardless of the Status Return Level of the Device a [Status Packet] will always be sent in response to a ping packet. + - When a Ping command is sent to the Broadcast ID - 0xFE all connected devices will respond with a status packet. ### Packet Parameters -**Note** : Status Packet is received from each Device. +**Note** : A Status Packet will be received from each connected Device. {: .notice} | Status Packet | Description | @@ -255,7 +266,7 @@ Note that given examples use the following abbreviation to provide clear informa ### Example 1 #### Conditions -- ID1(XM430-W210) : For Model Number 1030(0x0406), Version of Firmware 38(0x26) +- ID1(XM430-W210) : Model Number 1030(0x0406), Firmware Version 38(0x26) - Instruction Packet ID : 1 #### Ping Instruction Packet @@ -273,8 +284,8 @@ Note that given examples use the following abbreviation to provide clear informa ### Example 2 #### Conditions -- ID1(XM430-W210) : For Model Number 1030(0x0406), Version of Firmware 38(0x26) -- ID2(XM430-W210) : For Model Number 1030(0x0406), Version of Firmware 38(0x26) +- ID1(XM430-W210) : Model Number 1030(0x0406), Firmware Version 38(0x26) +- ID2(XM430-W210) : Model Number 1030(0x0406), Firmware Version 38(0x26) - Instruction Packet ID : 254(Broadcast ID) #### Ping Instruction Packet @@ -298,11 +309,13 @@ Note that given examples use the following abbreviation to provide clear informa ## [Read (0x02)](#read-0x02) ### Description - - Instruction to read a value from [Control Table] - - Method of expressing negative number data : This is different for each product, so please refer to the e-manual of the corresponding product - - Read Instruction does not respond to Broadcast ID(254 (0xFE)) + - Reads a specified value from the [Control Table]. + - Read Instructions are not executed when sent to the Broadcast ID(254 (0xFE)) - **Note**: If requesting the response for the excess range of its Control Table, the Status packet will fill [Access Error](#error) in its error field, and return the packet with no parameters. + **WARNING**: The method of expressing negative numbers data fields may differ for each product. Please refer to the eManual page for your specific product for more information. + {: .notice--warning} + + **Note**: If the requested item is outside the range of the Control Table, the returned Status packet will include an [Access Error](#error) in its error field, and return with with no parameters. {: .notice} ### Packet Parameters @@ -341,8 +354,10 @@ Note that given examples use the following abbreviation to provide clear informa ## [Write (0x03)](#write-0x03) ### Description - - Instruction to write a value on the [Control Table] - - Method of expressing negative number data : This is different for each product, so please refer to the e-manual of the corresponding product + - Instruction to write a value to the [Control Table] + + **WARNING**: The method of expressing negative numbers data fields may differ for each product. Please refer to the eManual page for your specific product for more information. + {: .notice--warning} ### Packet Parameters @@ -375,9 +390,8 @@ Note that given examples use the following abbreviation to provide clear informa ## [Reg Write (0x04)](#reg-write-0x04) ### Description - - Instruction that is similar to Write Instruction, but has an improved synchronization characteristic - - Write Instruction is executed immediately when an Instruction Packet is received. - - By using Reg Write and [Action] Instruction, one can operate multiple devices simultaneously. + - Instruction similar to a Write Instruction, but with an improved synchronization characteristic. Write Instructions are executed immediately when an Instruction Packet is received, while Reg Write saves the command to be executed later in response to an Action instruction. + - By using Reg Write and [Action] Instructions, one can operate multiple devices simultaneously. - Reg Write Instruction registers the Instruction Packet to a standby status, and sets Control table Registered Instruction to ‘1’. - When an Action Instruction is received, the registered Packet is executed, and sets [Control Table] Registered Instruction to ‘0’. @@ -438,9 +452,11 @@ Note that given examples use the following abbreviation to provide clear informa ### Description - Instruction that resets the Control Table to its initial factory default settings. - - When Factory Reset (0x06) Instruction is performed, a device is rebooted and the LED blinks four times in a row. - - In case of when **Packet ID** is a Broadcast ID `0xFE` and **Option** is Reset All `0xFF`, Factory Reset Instruction(0x06) will **NOT** be activated. - - This feature is applied from MX(2.0) FW42, X-series FW42 or above. + - When Factory Reset (0x06) Instruction is performed, the device is rebooted and the LED blinks four times in a row to indicate a successful reset. + + **WARNING**: When the **Packet ID** is the Broadcast ID `0xFE` and the configured **Option** is Reset All `0xFF`, the Factory Reset Instruction(0x06) will **NOT** be executed. + This safety feature is present in MX(2.0) FW42, X-series FW42 or above. + {: .notice--warning} ### Parameters @@ -490,15 +506,14 @@ Note that given examples use the following abbreviation to provide clear informa ## [Clear (0x10)](#clear-0x10) ### Description -- This instruction resets certain information of DYNAMIXEL -- Supported DYNAMIXEL : MX (2.0) with Fw v42 or above, DYNAMIXEL-X series with Fw v42 or above +- This instruction resets the multi-turn position information of the device. ### Parameters | P1 | P2 ~ P5 | Description | |:----:|:---------------------------------------:|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| 0x01 | Fixed Values
(0x44 0x58 0x4C 0x22) | Reset the Present Position value to an absolute value within one rotation (0-4095).
The Clear instruction can only be applied when DYNAMIXEL is stopped.
Note that if DYNAMIXEL is in motion and the Clear Instruction packet is sent, Result Fail (0x01) will be sent via the Error field of the Status Packet. | -| 0x02 | Fixed value
(0x45 0x52 0x43 0x4C) | Clear errors that occurred in DYNAMIXEL.
If an error cannot be cleared or the conditions for clearance are not met, the error remains uncleared, and Result Fail (0x01) is displayed in the Error field of the Status Packet.
Support only DYNAMIXEL Y series. | +| 0x01 | Fixed Values
(0x44 0x58 0x4C 0x22) | Reset the Present Position value to an absolute value within one rotation (0-4095).
The Clear instruction can only be executed when the DYNAMIXEL is stopped.
Note that if DYNAMIXEL is in motion and the Clear Instruction packet is sent, Result Fail (0x01) will be returned in the Error field of the Status Packet. | +| 0x02 | Fixed value
(0x45 0x52 0x43 0x4C) | Clear any registered errors that have occurred.
If an error cannot be cleared or the conditions for clearance are not met, the error will not be cleared, and Result Fail (0x01) will be returned in the Error field of the Status Packet.
This feature is supported only by the DYNAMIXEL Y series. | | ... | - | Reserved | | 0xFF | - | Reserved | @@ -523,11 +538,11 @@ Note that given examples use the following abbreviation to provide clear informa ## [Control Table Backup (0x20)](#control-table-backup-0x20) ### Description -- Instruction to store current [Control Table] status data to a Backup area, or to restore EEPROM data. -- The Control Table Backup works properly only if **Torque Enable** in RAM area is set as '0' (Torque Off status). If the Torque Enable is set as '1' (Torque On), Status Packet with [Result Fail](#error) will be returned. -- Supported DYNAMIXEL: X430/540 Series(Fw v45 or above), X330 Series(Fw v46 or above), P Series(Fw v12 or above). +- Instruction to store current [Control Table] configuration data to a Backup area, or to restore previous EEPROM data backups. +- Control Table Backup works properly only if **Torque Enable** in RAM area is set to '0' (Torque Off status). If Torque Enable is set to '1' (Torque On), a Status Packet with [Result Fail](#error) will be returned. +- Supported DYNAMIXELs: X430/540 Series(Fw v45 or above), X330 Series(Fw v46 or above), P Series(Fw v12 or above). - Available items in Control Table for data backup: - - All Data in EERPOM + - All Data in EEPROM - Velocity P.I Gains - Position P.I.D Gains - Feedforward 1st & 2nd Gains @@ -538,7 +553,7 @@ Note that given examples use the following abbreviation to provide clear informa {% capture howto_backup %} **Note** - See [Backup and Restore](/docs/en/software/dynamixel/dynamixel_wizard2/#backup-and-restore) for more details. -- RAM area can be restored by configuring the **Startup Configuration(60)** address. Refer to the [Restoring RAM Area](/docs/en/software/dynamixel/dynamixel_wizard2/#restoring-ram-area) for more information. +- RAM data can be restored by configuring the **Startup Configuration(60)** setting. Refer to [Restoring RAM Area](/docs/en/software/dynamixel/dynamixel_wizard2/#restoring-ram-area) for more information. {% endcapture %}
{{ howto_backup | markdownify}}
@@ -574,7 +589,7 @@ Note that given examples use the following abbreviation to provide clear informa #### Example 2 Conditions - ID1(XC330-T288) : Restoring EEPROM data -- DYNAMIXEL will be rebooted after a successful restoration. +- DYNAMIXEL will reboot after a successful restoration. #### Control Table EEPROM Restoring Packet @@ -596,7 +611,7 @@ Note that given examples use the following abbreviation to provide clear informa - The Address and Data Length of the data must all be the same. - If the Address of the data is not continual, an Indirect Address can be used. - [Status Packet] will be returned in order, according to input ID in the [Instruction Packet]. -- Packet ID field : 0xFE (Broadcast ID) +- The Packet ID must be 0xFE (Broadcast ID) ### Parameters @@ -618,7 +633,7 @@ Note that given examples use the following abbreviation to provide clear informa | ... | ... | | Parameter X | X-th Byte | -**Note** : Each device individually returns Status Packet for Sync Read instruction. +**Note** : Each device individually returns a Status Packet for Sync Read instructions. {: .notice} ### Example @@ -652,7 +667,7 @@ Note that given examples use the following abbreviation to provide clear informa - Instruction to control multiple devices simultaneously using one Instruction Packet - The Address and Data Length of the data must all be the same. - If the Address of the data is not continual, an Indirect Address can be used. -- Packet ID field : 0xFE (Broadcast ID) +- The Packet ID must be 0xFE (Broadcast ID) ### Parameters @@ -694,9 +709,9 @@ Note that given examples use the following abbreviation to provide clear informa ### Description - Enhanced Instruction for faster communication compared to [Sync Read] -- One Status Packet is structured and returned for all DYNAMIXELs if using Fast Sync Read Instruction regardless of number of DYNAMIXELs chained, as if one DYNAMIXEL returns [Status Packet]. +- One Status Packet is built and returned for all DYNAMIXELs if using Fast Sync Read Instruction regardless of number of DYNAMIXELs chained, as if one DYNAMIXEL has returned a single [Status Packet]. - Instruction Packet is formatted in the same way as Sync Read -- Supported DYNAMIXEL: +- Supported DYNAMIXELs: - X430/540 Series (Fw v45 or above, 2XL/2XC Not Supported) - X330 (Fw v46 or above) - P Series (Fw v12 or above) @@ -788,7 +803,7 @@ Note that given examples use the following abbreviation to provide clear informa - The same ID cannot be used multiple times in the Parameter. In other words, it can only read once from each individual device. - [Status Packet] will be returned in order, according to input ID in the [Instruction Packet]. - If the Address of the data is not continual, an Indirect Address can be used. -- Packet ID field : 0xFE (Broadcast ID) +- The Packet ID must be 0xFE (Broadcast ID) ### Parameters @@ -852,7 +867,7 @@ Note that given examples use the following abbreviation to provide clear informa - This Instruction can be used even if the Address and Data Length of the data for each device are not all the same. - The same ID cannot be used multiple times in the Parameter. In other words, it can only write once for each individual device. - If the Address of the data is not continual, an Indirect Address can be used. -- Packet ID field : 0xFE (Broadcast ID) +- The Packet ID must be 0xFE (Broadcast ID) ### Parameters @@ -899,9 +914,9 @@ Note that given examples use the following abbreviation to provide clear informa ### Description - Enhanced Instruction for faster communication compared to [Bulk Read]. -- One Status Packet is structured and returned for all DYNAMIXELs using Fast Bulk Read Instruction regardless of number of DYNAMIXELs chained, as if one DYNAMIXEL returns Status Packet. +- One Status Packet is built and returned for all DYNAMIXELs using Fast Bulk Read Instruction regardless of number of DYNAMIXELs chained, as if one DYNAMIXEL returned a single Status Packet. - Instruction Packet is formatted in the same way as Bulk Read -- Supported DYNAMIXEL: +- Supported DYNAMIXELs: - X430/540 Series (Fw v45 or above, 2XL/2XC Not Supported) - X330 (Fw v46 or above) - P Series (Fw v12 or above) diff --git a/docs/en/dxl/x/2xl430-w250.md b/docs/en/dxl/x/2xl430-w250.md index 1880bdecd..84f9b9271 100644 --- a/docs/en/dxl/x/2xl430-w250.md +++ b/docs/en/dxl/x/2xl430-w250.md @@ -32,7 +32,7 @@ product_group: dxl_xl430
-![](/assets/images/icon_unfold.png) **Looking for the same form factors?** +![](/assets/images/icon_unfold.png) **Looking for the same form factor?** {% include common/compatible_dxl/compatible_2x430.md %}
@@ -139,37 +139,37 @@ product_group: dxl_xl430 {% include en/dxl/control_table_2x_warning.md %} ### **[Model Number(0)](#model-number0)** - This address stores model number of DYNAMIXEL. +{% include en/dxl/x/model_number.md %} ### **[Firmware Version(6)](#firmware-version6)** - This address stores firmware version of DYNAMIXEL. +{% include en/dxl/x/firmware_version.md %} ### **[ID(7)](#id7)** -{% include en/dxl/control_table_id.md %} +{% include en/dxl/x/id.md %} -**CAUTION** : Please assign two different IDs for the 2XL430. Attempting to assign an identical ID for each joint will result in Data Limit Error(0x06) of the status packet. +**CAUTION** : Each axis of the 2XL430 must have a unique ID assigned. Attempting to assign an identical ID for each joint will result in a Data Limit Error(0x06). {: .notice--warning} ### **[Baud Rate(8)](#baud-rate8)** -{% include en/dxl/control_table_baudrate_2.md %} +{% include en/dxl/x/baudrate.md %} -**CAUTION** : Only one Baud Rate can be used for the 2XL430. Attempting to change the Baud Rate of one joint will also affect to the other joint. +**CAUTION** : Only one Baud Rate can be used for the 2XL430. Attempting to change the Baud Rate of one joint will also affect the other joint. {: .notice--warning} ### **[Return Delay Time(9)](#return-delay-time9)** -{% include en/dxl/control_table_return_delay_time.md %} +{% include en/dxl/x/return_delay_time.md %} ### **[Drive Mode(10)](#drive-mode10)** -{% include en/dxl/control_table_drivemode.md %} +{% include en/dxl/x/drive_mode.md %} ### **[Operating Mode(11)](#operating-mode11)** -{% include en/dxl/control_table_mx_opmode_2.md %} +{% include en/dxl/x/operating_mode_xl.md %} ### **[Secondary(Shadow) ID(12)](#secondaryshadow-id12)** -{% include en/dxl/control_table_shadowid.md %} +{% include en/dxl/x/shadow_id.md %} ### **[Protocol type(13)](#protocol-type13)** -{% include en/dxl/control_table_protocolversion.md %} +{% include en/dxl/x/protocol_type.md %} **CAUTION** : Only one Protocol Type can be used for the 2XL430. Attempting to change the Protocol Type of one joint will also affect to the other joint. {: .notice--warning} diff --git a/docs/en/dxl/x/x.md b/docs/en/dxl/x/x.md index b0f2599ba..26c18949f 100644 --- a/docs/en/dxl/x/x.md +++ b/docs/en/dxl/x/x.md @@ -14,27 +14,27 @@ sidebar: ![](/assets/images/dxl/x/dxl_x_productline.png) -> DYNAMIXEL-X Series Lineups +> DYNAMIXEL-X Series Lineup ## Features -- Improved Torque, Compact Size. -- Enhanced Durability and Expansibility. -- Hollow Back Case Minimizes Cable Stress (3-way-routing). -- Direct Screw Assembly to the Case (without Nut Insert). -- Improved Heat Sink Featuring an Aluminum Case. +- High Torque, Compact Size. +- Enhanced Durability and Expandability. +- Hollow Back Case to minimize Cable Stress. +- Direct to Case Accessory Assembly. +- Improved Heat Dissipation with Integrated Aluminum Casing. ## Various Control Functions - Current-Based Torque Control. - Profile Control for Smooth Motion Planning. -- Trajectory Data and Moving Status (In-Position, Following Error, etc). -- Energy Saving (Reduced Current from 100mA to 40mA). -- Various Operating Modes - - Current based Position Control (XW/XH/XM/XC330/XL330 only). - - Current Control (XW/XH/XM/XC330/XL330 only only). - - Velocity Control. - - Position Control. - - Extended Position Control. - - PWM Control (Voltage Control Mode). +- Real Time Trajectory Data and Moving Status Feedback. +- Energy Efficient Standby Current as low as 40mA. +- Various Supported Operating Modes + - Current based Position Control (XW/XH/XM/X330 only) + - Current Control (XW/XH/XM/X330 only) + - Velocity Control + - Position Control + - Extended Position Control + - PWM Control (Voltage Control Mode) # [X Series](#x-series) **Common Specifications** @@ -48,7 +48,7 @@ sidebar: - XC Series : Coreless - XL Series : Cored -XL320 has different specifications from other XL-Series. Please refer to [XL-320 Specifications](/docs/en/dxl/x/xl320/#주요-사양) for more details. +XL320 servos have different specifications from other XL-Series models. Please refer to the [XL-320 Specifications](/docs/en/dxl/x/xl320) documentation for more details. {: .notice--info} ## [XW Series](#xw-series) diff --git a/docs/en/dxl/x/xc330-m288.md b/docs/en/dxl/x/xc330-m288.md index d564302c3..8ad4f3c5e 100644 --- a/docs/en/dxl/x/xc330-m288.md +++ b/docs/en/dxl/x/xc330-m288.md @@ -175,7 +175,7 @@ product_group: xc330 {% capture current_limit_note %} **NOTE** : - Current Limit(38) may differ by each DYNAMIXEL so please check the Control Table. -- XC330 series measures curret at its input power source unlike other DYNAMIXE-X series supporting a current control. Therefore, you may have a different results in measuring current of XC330 series comparing with measuring phase current which quickly changes of a motor. +- XC330 series measures current at its input power source unlike other DYNAMIXEL-X series supporting a current control. Therefore, you may have a different results in measuring current of XC330 series comparing with measuring phase current which quickly changes of a motor. {% endcapture %}
{{ current_limit_note | markdownify }}
diff --git a/docs/en/dxl/x/xl430-w250.md b/docs/en/dxl/x/xl430-w250.md index 04119aed2..7365060a5 100644 --- a/docs/en/dxl/x/xl430-w250.md +++ b/docs/en/dxl/x/xl430-w250.md @@ -16,11 +16,11 @@ product_group: dxl_xl430 ![](/assets/images/dxl/x/xl430_product_new.png) -> New XL430-W250 (Released on 2018 3rd quarter) +> New XL430-W250 (Released in 2018) ![](/assets/images/dxl/x/xl430_product.png) -> Old XL430-W250 (This type has been discontinued) +> Old XL430-W250 (Discontinued) # [Specifications](#specifications) @@ -34,14 +34,14 @@ product_group: dxl_xl430
-![](/assets/images/icon_unfold.png) **Looking for the same form factors?** +![](/assets/images/icon_unfold.png) **Looking for the same form factor?** {% include common/compatible_dxl/compatible_x430.md %}
{% include en/dxl/note_performance_graph.md %} -{% include en/dxl/control_table.md %} +{% include en/dxl/x/control_table.md %} ## [Control Table of EEPROM Area](#control-table-of-eeprom-area) @@ -138,159 +138,145 @@ product_group: dxl_xl430 ## [Control Table Description](#control-table-description) -**CAUTION** : Data in the EEPROM Area can only be written when the value of Torque Enable(64) is cleared to ‘0’. +**CAUTION** : Data in the EEPROM Area can only be modified when the value of Torque Enable(64) is set to ‘0’. {: .notice--warning} ### **[Model Number(0)](#model-number0)** - This address stores model number of DYNAMIXEL. + +{% include en/dxl/x/model_number.md %} ### **[Firmware Version(6)](#firmware-version6)** - This address stores firmware version of DYNAMIXEL. + +{% include en/dxl/x/firmware_version.md %} ### **[ID(7)](#id7)** -{% include en/dxl/control_table_id.md %} + +{% include en/dxl/x/id.md %} ### **[Baud Rate(8)](#baud-rate8)** -{% include en/dxl/control_table_baudrate_2.md %} +{% include en/dxl/x/baudrate.md %} ### **[Return Delay Time(9)](#return-delay-time9)** -{% include en/dxl/control_table_return_delay_time.md %} +{% include en/dxl/x/return_delay_time.md %} ### **[Drive Mode(10)](#drive-mode10)** -{% include en/dxl/control_table_drivemode.md %} +{% include en/dxl/x/drive_mode.md %} ### **[Operating Mode(11)](#operating-mode11)** -{% include en/dxl/control_table_mx_opmode_2.md %} +{% include en/dxl/x/operating_mode_xl.md %} ### **[Secondary(Shadow) ID(12)](#secondaryshadow-id12)** -{% include en/dxl/control_table_shadowid.md %} +{% include en/dxl/x/shadow_id.md %} ### **[Protocol Type(13)](#protocol-type13)** -{% include en/dxl/control_table_protocolversion.md %} +{% include en/dxl/x/protocol_type.md %} ### **[Homing Offset(20)](#homing-offset20)** -{% include en/dxl/control_table_homingoffset.md %} +{% include en/dxl/x/homing_offset.md %} ### **[Moving Threshold(24)](#moving-threshold24)** -{% include en/dxl/control_table_movingthreshold.md %} +{% include en/dxl/x/moving_threshold.md %} ### **[Temperature Limit(31)](#temperature-limit31)** -{% include en/dxl/control_table_temp_limit_2.md %} +{% include en/dxl/x/temperature_limit.md %} ### **[Min/Max Voltage Limit(32, 34)](#minmax-voltage-limit32-34)** -The Min Voltage Limit(32) and Max Voltage Limit(34) determine the maximum and minimum operating voltages. -When the [Present Input Voltage(144)] indicating the present input voltage to the device exceeds the range of Max Voltage Limit(32) and Min Voltage Limit(34), the Input Voltage error Bit(0x10) in the [Hardware Error Status(70)](#hardware-error-status70) will be set, and the Status Packet will send Alert Bit(0x80) via the Error field. -If Input Voltage Error Bit(0x10) in the [Shutdown(63)] is set, [Torque Enable(64)] will be set to ‘0’(Torque OFF). -For more details, please refer to the [Shutdown(63)] section. - - -| Unit | Value Range | Description | -|:----------:|:-----------:|:-----------:| -| About 0.1V | 60 ~ 140 | 6.0 ~ 14.0V | +{% include en/dxl/x/voltage_limit.md %} ### **[PWM Limit(36)](#pwm-limit36)** -{% include en/dxl/control_table_pwm_limit.md %} +{% include en/dxl/x/pwm_limit.md %} ### **[Velocity Limit(44)](#velocity-limit44)** -{% include en/dxl/control_table_vellimit.md %} +{% include en/dxl/x/velocity_limit.md %} ### **[Min/Max Position Limit(48, 52)](#minmax-position-limit48-52)** -These values limit maximum and minimum target positions for Position Control Mode(Joint Mode) within the range of 1 rotation(0 ~ 4,095). Therefore, Goal Position(116) should be configured within the position limit range. These values are not used in Extended Position Control Mode. - -| Unit | Value Range | -|:----------:|:---------------------:| -| 0.088° | 0 ~ 4,095(1 rotation) | - -**NOTE** : Max Position Limit(48) and Min Position Limit(52) are only used in Position Control Mode with a single turn. +{% include en/dxl/x/position_limit.md %} ### **[Startup Configuration(60)](#startup-configuration60)** -{% include en/dxl/control_table_60_startup_configuration.md %} +{% include en/dxl/x/startup_configuration.md %} ### **[Shutdown(63)](#shutdown63)** -{% include en/dxl/control_table_shutdown.md %} +{% include en/dxl/x/shutdown.md %} ### **[Torque Enable(64)](#torque-enable64)** -{% include en/dxl/control_table_torque_enable.md %} +{% include en/dxl/x/torque_enable.md %} ### **[LED(65)](#led65)** -{% include en/dxl/control_table_led.md %} +{% include en/dxl/x/led.md %} ### **[Status Return Level(68)](#status-return-level68)** -{% include en/dxl/control_table_status_return_lv.md %} +{% include en/dxl/x/status_return_level.md %} ### **[Registered Instruction(69)](#registered-instruction69)** -{% include en/dxl/control_table_reg_instruction.md %} +{% include en/dxl/x/registered_instruction.md %} ### **[Hardware Error Status(70)](#hardware-error-status70)** -The Hardware Error Status(70) indicates hardware error status. -{% include en/dxl/control_table_shutdown.md %} +{% include en/dxl/x/hardware_error_status.md %} ### **[Velocity PI Gain(76, 78)](#velocity-pi-gain76-78)** -{% include en/dxl/control_table_velocity_pi_gain.md %} +{% include en/dxl/x/velocity_pi_gain.md %} ### **Position PID Gain(80, 82, 84), Feedforward 1st/2nd Gains(88, 90)** -{% include en/dxl/control_table_position_pid_gain.md %} +{% include en/dxl/x/position_pid_gain.md %} ### **[Bus Watchdog(98)](#bus-watchdog98)** -{% include en/dxl/control_table_buswatchdog.md %} +{% include en/dxl/x/bus_watchdog.md %} ### **[Goal PWM(100)](#goal-pwm100)** -{% include en/dxl/control_table_goal_pwm.md %} +{% include en/dxl/x/goal_pwm.md %} ### **[Goal Velocity(104)](#goal-velocity104)** -{% include en/dxl/control_table_goal_velocity.md %} +{% include en/dxl/x/goal_velocity.md %} ### **[Profile Acceleration(108)](#profile-acceleration108)** -{% include en/dxl/control_table_profile_acceleration.md %} +{% include en/dxl/x/profile_acceleration.md %} ### **[Profile Velocity(112)](#profile-velocity112)** -{% include en/dxl/control_table_profile_velocity.md %} +{% include en/dxl/x/profile_velocity.md %} ### **[Goal Position(116)](#goal-position116)** -{% include en/dxl/control_table_goal_position_2.md %} +{% include en/dxl/x/goal_position.md %} ### **[Realtime Tick(120)](#realtime-tick120)** -{% include en/dxl/control_table_realtime_tick.md %} +{% include en/dxl/x/realtime_tick.md %} ### **[Moving(122)](#moving122)** -{% include en/dxl/control_table_moving_2.md %} +{% include en/dxl/x/moving.md %} ### **[Moving Status(123)](#moving-status123)** -{% include en/dxl/control_table_moving_status.md %} +{% include en/dxl/x/moving_status.md %} ### **[Present PWM(124)](#present-pwm124)** -This value indicates present PWM. For more details, please refer to the [Goal PWM(100)](#goal-pwm). +{% include en/dxl/x/present_pwm.md %} ### **[Present Load(126)](#present-load126)** -{% include en/dxl/control_table_present_load_2.md %} +{% include en/dxl/x/present_load.md %} ### **[Present Velocity(128)](#present-velocity128)** -This value indicates present Velocity. For more details, please refer to the [Goal Velocity(104)](#goal-velocity104). +{% include en/dxl/x/present_velocity.md %} ### **[Present Position(132)](#present-position132)** -{% include en/dxl/control_table_present_position.md %} +{% include en/dxl/x/present_position.md %} ### **[Velocity Trajectory(136)](#velocity-trajectory136)** -This is a target velocity trajectory created by Profile. Operating method can be changed based on control mode. For more details, please refer to the [Profile Velocity(112)]. -1. **Velocity Control Mode** : When Profile reaches to the endpoint, [Velocity Trajectory(136)] becomes equal to [Goal Velocity(104)]. -2. **Position Control Mode, Extended Position Control Mode** : Velocity Trajectory is used to create [Position Trajectory(140)]. When Profile reaches to an endpoint, [Velocity Trajectory(136)] is cleared to '0'. +{% include en/dxl/x/velocity_trajectory.md %} ### **[Position Trajectory(140)](#position-trajectory140)** -{% include en/dxl/control_table_position_trajectory.md %} +{% include en/dxl/x/position_trajectory.md %} ### **[Present Input Voltage(144)](#present-input-voltage144)** -{% include en/dxl/control_table_present_volt_2.md %} +{% include en/dxl/x/present_input_voltage.md %} ### **[Present Temperature(146)](#present-temperature146)** -{% include en/dxl/control_table_present_temp_2.md %} +{% include en/dxl/x/present_temperature.md %} ### **[Backup Ready(147)](#backup-ready147)** -{% include en/dxl/control_table_backup_ready.md %} +{% include en/dxl/x/backup_ready.md %} ### **[Indirect Address](#indirect-address)**, **[Indirect Data](#indirect-data)** -{% include en/dxl/control_table_indirect_data.md %} +{% include en/dxl/x/indirect_data.md %} # [How to Assemble](#how-to-assemble) diff --git a/docs/en/parts/controller/controller_compatibility.md b/docs/en/parts/controller/controller_compatibility.md index 64b6cff2a..912b6882f 100644 --- a/docs/en/parts/controller/controller_compatibility.md +++ b/docs/en/parts/controller/controller_compatibility.md @@ -31,20 +31,20 @@ sidebar: | Model | [CM-5] | [CM-50] | [CM-100] | [CM-150] | [CM-151] | [CM-200] | [CM-510] | [CM-530] | [CM-550] | [CM-700] | [CM-900] | [OpenCM9.04]
(+[OpenCM 485 EXP]) | [OpenCM7.0] | [OpenCR] | [OpenRB-150] | |:----------------:|:------:|:-------:|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:|:-----------------------------------:|:-----------:|:--------:|:------------:| -| AX Series | ✓ | X | X | X | X | X | ✓ | ✓ | X | ✓ | ✓ | X(O) | X | ✓ | ✓ | -| DX Series | X | X | X | X | X | X | X | X | X | ✓ | ✓ | X(O) | X | ✓ | X | -| RX Series | X | X | X | X | X | X | X | X | X | ✓ | ✓ | X(O) | X | ✓ | X | -| EX Series | X | X | X | X | X | X | X | X | X | ✓ | ✓ | X(O) | X | ✓ | X | -| MX Series(TTL) | ✓ | X | X | X | X | X | ✓ | ✓ | X | ✓ | ✓ | X(O) | X | ✓ | ✓ | -| MX Series(RS485) | X | X | X | X | X | X | X | X | X | ✓ | ✓ | X(O) | X | ✓ |O([Comm Bridge])| -| XL-320 | X | X | X | X | X | X | X | X | X | X | ✓ | O(X) | X | X | ✓ | -| XL Series | X | X | X | X | X | X | X | X | ✓ | X | X | X(O) | X | ✓ | ✓ | -| XC Series | X | X | X | X | X | X | X | X | ✓ | X | X | X(O) | X | ✓ | ✓ | -| XM Series | X | X | X | X | X | X | X | X | ✓ | X | X | X(O) | X | ✓ | ✓ | -| XH Series | X | X | X | X | X | X | X | X | ✓ | X | X | X(O) | X | ✓ | ✓ | -| XD Series | X | X | X | X | X | X | X | X | ✓ | X | X | X(O) | X | ✓ |O([Comm Bridge])| -| XW Series | X | X | X | X | X | X | X | X | ✓ | X | X | X(O) | X | ✓ |O([Comm Bridge])| -| PRO Series | X | X | X | X | X | X | X | X | X | ✓ | X | X(O) | X | ✓ |O([Comm Bridge])| +| AX Series | ✓ | X | X | X | X | X | ✓ | ✓ | X | ✓ | ✓ | X(✓) | X | ✓ | ✓ | +| DX Series | X | X | X | X | X | X | X | X | X | ✓ | ✓ | X(✓) | X | ✓ | X | +| RX Series | X | X | X | X | X | X | X | X | X | ✓ | ✓ | X(✓) | X | ✓ | X | +| EX Series | X | X | X | X | X | X | X | X | X | ✓ | ✓ | X(✓) | X | ✓ | X | +| MX Series(TTL) | ✓ | X | X | X | X | X | ✓ | ✓ | X | ✓ | ✓ | X(✓) | X | ✓ | ✓ | +| MX Series(RS485) | X | X | X | X | X | X | X | X | X | ✓ | ✓ | X(✓) | X | ✓ |O([Comm Bridge])| +| XL-320 | X | X | X | X | X | X | X | X | X | X | ✓ | ✓(X) | X | X | ✓ | +| XL Series | X | X | X | X | X | X | X | X | ✓ | X | X | X(✓) | X | ✓ | ✓ | +| XC Series | X | X | X | X | X | X | X | X | ✓ | X | X | X(✓) | X | ✓ | ✓ | +| XM Series | X | X | X | X | X | X | X | X | ✓ | X | X | X(✓) | X | ✓ | ✓ | +| XH Series | X | X | X | X | X | X | X | X | ✓ | X | X | X(✓) | X | ✓ | ✓ | +| XD Series | X | X | X | X | X | X | X | X | ✓ | X | X | X(✓) | X | ✓ |O([Comm Bridge])| +| XW Series | X | X | X | X | X | X | X | X | ✓ | X | X | X(✓) | X | ✓ |O([Comm Bridge])| +| PRO Series | X | X | X | X | X | X | X | X | X | ✓ | X | X(✓) | X | ✓ |O([Comm Bridge])| **NOTE**: OpenCM9.04 with OpenCM 485 EXP can use all types of DYNAMIXEL. {: .notice} @@ -97,9 +97,9 @@ sidebar: | Model | [CM-5] | [CM-50] | [CM-100] | [CM-150] | [CM-151] | [CM-200] | [CM-510] | [CM-530] | [CM-550] | [CM-700] | [CM-900] | [OpenCM9.04]
(+[OpenCM 485 EXP]) | [OpenCM7.0] | [OpenCR] | |:----------------:|:------:|:-------:|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:|:-----------------------------------:|:-----------:|:--------:| -| [R+ Task 1.0] | ✓ | X | ✓ | ✓ | x | ✓ | ✓ | ✓ | X | ✓ | X | O(X) | X | X | -| [R+ Manager 1.0] | ✓ | X | ✓ | ✓ | x | ✓ | ✓ | ✓ | X | ✓ | X | O(X) | X | X | -| [R+ Motion 1.0] | ✓ | X | X | ✓ | x | ✓ | ✓ | ✓ | X | ✓ | X | O(X) | X | X | +| [R+ Task 1.0] | ✓ | X | ✓ | ✓ | X | ✓ | ✓ | ✓ | X | ✓ | X | ✓(X) | X | X | +| [R+ Manager 1.0] | ✓ | X | ✓ | ✓ | X | ✓ | ✓ | ✓ | X | ✓ | X | ✓(X) | X | X | +| [R+ Motion 1.0] | ✓ | X | X | ✓ | X | ✓ | ✓ | ✓ | X | ✓ | X | ✓(X) | X | X | {% capture notice_01 %} **NOTE**: @@ -113,25 +113,25 @@ sidebar: | Model | [CM-5] | [CM-50] | [CM-100] | [CM-150] | [CM-151] | [CM-200] | [CM-510] | [CM-530] | [CM-550] | [CM-700] | [CM-900] | [OpenCM9.04]
(+[OpenCM 485 EXP]) | [OpenCM7.0] | [OpenCR] | |:----------------:|:------:|:-------:|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:|:-----------------------------------:|:-----------:|:--------:| -| [R+ Task 2.0] | ✓ | ✓ | ✓ | ✓ | x | ✓ | ✓ | ✓ | X | ✓ | X | O(X) | X | X | -| [R+ Manager 2.0] | ✓ | X | X | ✓ | o | ✓ | ✓ | ✓ | X | ✓ | X | O(X) | X | X | -| [R+ Motion 2.0] | ✓ | X | X | ✓ | x | ✓ | ✓ | ✓ | X | ✓ | X | O(X) | X | X | +| [R+ Task 2.0] | ✓ | ✓ | ✓ | ✓ | X | ✓ | ✓ | ✓ | X | ✓ | X | ✓(X) | X | X | +| [R+ Manager 2.0] | ✓ | X | X | ✓ | ✓ | ✓ | ✓ | ✓ | X | ✓ | X | ✓(X) | X | X | +| [R+ Motion 2.0] | ✓ | X | X | ✓ | X | ✓ | ✓ | ✓ | X | ✓ | X | ✓(X) | X | X | ### [R+ 3.0](#r-30) | Model | [CM-5] | [CM-50] | [CM-100] | [CM-150] | [CM-151] | [CM-200] | [CM-510] | [CM-530] | [CM-550] | [CM-700] | [CM-900] | [OpenCM9.04]
(+[OpenCM 485 EXP]) | [OpenCM7.0] | [OpenCR] | |:-------------:|:------:|:-------:|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:|:-----------------------------------:|:-----------:|:--------:| -| [R+ Task 3.0] | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | X | O(X) | ✓ | X | +| [R+ Task 3.0] | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | X | ✓(X) | ✓ | X | ### [R+ Mobile](#r-mobile) | Model | [CM-5] | [CM-50] | [CM-100] | [CM-150] | [CM-151] | [CM-200] | [CM-510] | [CM-530] | [CM-550] | [CM-700] | [CM-900] | [OpenCM9.04]
(+[OpenCM 485 EXP]) | [OpenCM7.0] | [OpenCR] | |:----------------:|:------:|:-------:|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:|:-----------------------------------:|:-----------:|:--------:| -| [R+ m.Task] | ✓ | ✓ | ✓ | ✓ | x | ✓ | ✓ | ✓ | X | ✓ | X | O(X) | ✓ | X | -| [R+ m.Task 2.0] | ✓ | ✓ | X | ✓ | x | ✓ | ✓ | ✓ | X | X | X | O(X) | ✓ | X | -| [R+ m.Motion 2.0] | ✓ | X | X | X | X | ✓ | ✓ | ✓ | X | ✓ | X | O(X) | X | X | -| [R+ m.Design] | ✓ | X | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | X | X | X | O(X) | X | X | +| [R+ m.Task] | ✓ | ✓ | ✓ | ✓ | X | ✓ | ✓ | ✓ | X | ✓ | X | ✓(X) | ✓ | X | +| [R+ m.Task 2.0] | ✓ | ✓ | X | ✓ | X | ✓ | ✓ | ✓ | X | X | X | ✓(X) | ✓ | X | +| [R+ m.Motion 2.0] | ✓ | X | X | X | X | ✓ | ✓ | ✓ | X | ✓ | X | ✓(X) | X | X | +| [R+ m.Design] | ✓ | X | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | X | X | X | ✓(X) | X | X | ### [R+ Mobile (STEAM KIT)](#r-mobile-steam-kit) @@ -141,7 +141,7 @@ sidebar: | [R+ Block] | X | ✓ | X | ✓ | ✓ | X | X | X | X | X | X | X | ✓ | X | | R+ IoT | X | X | X | X | X | X | X | X | X | X | X | X | ✓ | X | | [R+ Play 700] | X | ✓ | X | X | X | X | X | X | X | X | X | X | X | X | -| [ROBOTIS MINI] | X | X | X | X | X | X | X | X | X | X | X | O(X) | X | X | +| [ROBOTIS MINI] | X | X | X | X | X | X | X | X | X | X | X | ✓(X) | X | X | [How to install ROBOTIS virtual COM port for Windows]: /docs/en/popup/usb_driver_install/ diff --git a/docs/en/platform/turtlebot3/features/features.md b/docs/en/platform/turtlebot3/features/features.md index 9ef542d24..0a4d6a189 100644 --- a/docs/en/platform/turtlebot3/features/features.md +++ b/docs/en/platform/turtlebot3/features/features.md @@ -28,42 +28,41 @@ page_number: 3 **World's Most Popular ROS Platform** -- TurtleBot is the most popular open source robot for education and research. The new generation `TurtleBot3` is a `small`, `low cost`, `fully programmable`, `ROS based mobile robot`. It is intended to be used for education, research, hobby and product prototyping. +- TurtleBot is the most popular open source robot for education and research. The `TurtleBot3` in specific is a small, low cost, fully customizable, ROS based mobile robot platform intended to be used for education, research, hobby projects, and product prototyping. -**Affordable Cost** +**Affordable** -- TurtleBot was developed to meet the cost-conscious needs of schools, laboratories and companies. TurtleBot3 is the most affordable robot among the SLAM-able mobile robots equipped with a 360° Laser Distance Sensor LDS-01. +- TurtleBot3 was developed to meet the cost-conscious needs of schools, laboratories and companies. TurtleBot3 is the most affordable SLAM-able mobile robot equipped with a 360° Laser Distance Sensor LDS-02. **Small Size** -- The dimension of TurtleBot3 Burger is only 138mm x 178mm x 192mm (L x W x H). Its size is about 1/4 of the size of the predecessor. Imagine keeping TurtleBot3 in your backpack and develop your program and test it anywhere you go. +- The dimensions of the TurtleBot3 Burger are only 138mm x 178mm x 192mm (L x W x H). It's size is about 1/4 of the size of it's predecessor. Imagine keeping TurtleBot3 in your backpack, providing the ability develop your system and test it anywhere you go. **ROS Standard** -- The TurtleBot brand is managed by [Open Robotics][open_robotics], which develops and maintains ROS. Nowadays, ROS has become the go-to platform for all the roboticists around the world. TurtleBot can be integrated with existing ROS-based robot components, but TurtleBot3 can be an affordable platform for whom want to get started learning ROS. +- The TurtleBot brand is managed by [Open Robotics][open_robotics], which develops and maintains ROS. Nowadays, ROS has become the go-to platform for roboticists around the world. The TurtleBot family can be integrated with existing ROS-based robot components, but TurtleBot3 is designed to be an affordable base platform for those who want to get started learning ROS. **Extensibility** -- TurtleBot3 encourages users to customize its mechanical structure with some alternative options: open source embedded board (as a control board), computer and sensors. TurtleBot3 Burger is a two-wheeled differential drive type platform but it is able to be structurally and mechanically customized in many ways: Cars, Bikes, Trailers and so on. Extend your ideas beyond imagination with various SBC, sensors and motors on a scalable structure. +- TurtleBot3 encourages users to customize its mechanical structure with some alternative options: The platform consists of an open source embedded board (as a motor control board), a single board computer as the main compute unit, and lidar or visual sensors plased on a a two-wheeled differential drive platform. Beyond this the TurtleBot3 platform is able to be structurally and mechanically customized in many ways: Cars, Bikes, Trailers and so on. Extend your ideas beyond imagination with various SBC, sensors and motors on a scalable structure. **Modular Actuator for Mobile Robot** -- TurtleBot3 is able to get a precise spatial data by using 2 DYNAMIXEL's in the wheel joints. DYNAMIXEL XM series can be operated by one of 6 operating modes(XL series: 4 operating modes): Velocity control mode for wheels, Torque control mode or Position control mode for joint, etc. DYNAMIXEL can be used even to make a mobile manipulator which is light but can be precisely controlled with velocity, torque and position control. DYNAMIXEL is a core component that makes TurtleBot3 perfect. It is easy to assemble, maintain, replace and reconfigure. +- TurtleBot3 is able to get a precise spatial data by using 2 DYNAMIXEL smart servos in the wheel joints. The DYNAMIXEL XM series can be operated in one of 6 operating modes(XL series: 4 operating modes): Velocity control mode for wheels, Torque control mode or Position control mode for joint, etc. DYNAMIXELs can also used even to make a mobile manipulator which is light but can be precisely controlled with velocity, torque and position control. DYNAMIXEL is a core component that makes TurtleBot3 more flexible than other competing platforms, making it easy to assemble, maintain, replace and reconfigure. **Open Control Board for ROS** -- The control board is open-sourced in hardware wise and in software wise for ROS communication. The open source control board OpenCR1.0 is powerful enough to control not only DYNAMIXEL's but also [ROBOTIS][robotis] sensors that are frequently being used for basic recognition tasks in cost effective way. Various sensors such as Touch sensor, Infrared sensor, Color sensor and a handful more are available. The OpenCR1.0 has an IMU sensor inside the board so that it can enhance precise control for countless applications. The board has 3.3V, 5V, 12V power supplies to reinforce the available computer device lineups. +- The control board is open-source hardware and software for ROS communication. The open source control board OpenCR1.0 is powerful enough to control not only DYNAMIXEL's but also [ROBOTIS][robotis] sensors that are frequently being used for basic recognition tasks in cost effective way. Various sensors such including Touch sensors, Infrared sensors, Color sensors and a handful more are available. The OpenCR1.0 has an IMU sensor inside the board to provide precision motion tracking for countless applications. The board has 3.3V, 5V, and 12V power supplies to maximize compatibility with external components. **Strong Sensor Lineups** -- TurtleBot3 Burger uses enhanced 360° LiDAR, 9-Axis Inertial Measurement Unit and precise encoder for your research and development. TurtleBot3 Waffle is equipped with an identical 360° LiDAR as well but additionally proposes a powerful Intel® RealSense™ with the recognition SDK. TurtleBot3 Waffle Pi uses high utilized Raspberry Pi Camera. This will be the best hardware solution for making a mobile robot. +- The TurtleBot3 Burger features enhanced 360° LiDAR, a 9-Axis Inertial Measurement Unit and precise encoder to empower your research and development. TurtleBot3 Waffle is equipped with an identical 360° LiDAR as well but additionally proposes a powerful RaspberryPi Camera for visual recognition. **Open Source** -- The hardware, firmware and software of TurtleBot3 are open source which means that users are welcomed to download, modify and share source codes. All components of TurtleBot3 are manufactured with injection molded plastic to achieve low cost, however, the 3D CAD data is also available for 3D printing. +- The hardware, firmware and software of TurtleBot3 are open source which means that users are welcome to download, modify and share the source code. All components of TurtleBot3 are manufactured with injection molded plastic to achieve low cost, however, the 3D CAD data is also available for 3D printing. The 3D CAD data is released via Onshape which is a full-cloud 3D CAD editor. Users can get an access with a web browser on desktop PC, laptop and even portable devices. Onshape allows to draw 3D models and to assemble them with colleagues. - Besides, for the users who want to make OpenCR1.0 board by themselves, all details of the OpenCR1.0 board such as schematics, PCB gerber files, BOM and firmware source code are fully opened under the open-source licenses for users and ROS community. - You can modify downloaded source code and hardware to share it with your friends. + Besides, for the users who want to make or modify an OpenCR1.0 board by themselves, all details of the OpenCR1.0 board such as schematics, PCB gerber files, BOM and firmware source code are fully available under open-source licenses for users and the ROS community.
@@ -80,28 +79,28 @@ page_number: 3 | Maximum payload | 15kg | 30kg | | Size (L x W x H) | 138mm x 178mm x 192mm | 281mm x 306mm x 141mm | | Weight (+ SBC + Battery + Sensors) | 1kg | 1.8kg | -| Threshold of climbing | 10 mm or lower | 10 mm or lower | +| Climbing Threshold | 10 mm or lower | 10 mm or lower | | Expected operating time | 2h 30m | 2h | | Expected charging time | 2h 30m | 2h 30m | -| SBC (Single Board Computers) | Raspberry Pi | Raspberry Pi | +| SBC (Single Board Computer) | Raspberry Pi 4 | Raspberry Pi 4 | | MCU | 32-bit ARM Cortex®-M7 with FPU (216 MHz, 462 DMIPS) | 32-bit ARM Cortex®-M7 with FPU (216 MHz, 462 DMIPS) | | Remote Controller | - | RC-100B + BT-410 Set (Bluetooth 4, BLE) | | Actuator | XL430-W250 | XM430-W210 | -| LDS(Laser Distance Sensor) | 360 Laser Distance Sensor [LDS-01] or [LDS-02] | 360 Laser Distance Sensor [LDS-01] or [LDS-02] | +| LDS (Laser Distance Sensor) | 360 Laser Distance Sensor [LDS-02] | 360 Laser Distance Sensor [LDS-02] | | Camera | - | Raspberry Pi Camera Module v2.1 | | IMU | Gyroscope 3 Axis
Accelerometer 3 Axis | Gyroscope 3 Axis
Accelerometer 3 Axis | | Power connectors | 3.3V / 800mA
5V / 4A
12V / 1A | 3.3V / 800mA
5V / 4A
12V / 1A | | Expansion pins | GPIO 18 pins
Arduino 32 pin | GPIO 18 pins
Arduino 32 pin | -| Peripheral | UART x3, CAN x1, SPI x1, I2C x1, ADC x5, 5pin OLLO x4 | UART x3, CAN x1, SPI x1, I2C x1, ADC x5, 5pin OLLO x4 | +| Peripheral Connections | UART x3, CAN x1, SPI x1, I2C x1, ADC x5, 5pin OLLO x4 | UART x3, CAN x1, SPI x1, I2C x1, ADC x5, 5pin OLLO x4 | | DYNAMIXEL ports | RS485 x 3, TTL x 3 | RS485 x 3, TTL x 3 | | Audio | Several programmable beep sequences | Several programmable beep sequences | | Programmable LEDs | User LED x 4 | User LED x 4 | | Status LEDs | Board status LED x 1
Arduino LED x 1
Power LED x 1 | Board status LED x 1
Arduino LED x 1
Power LED x 1 | | Buttons and Switches | Push buttons x 2, Reset button x 1, Dip switch x 2 | Push buttons x 2, Reset button x 1, Dip switch x 2 | | Battery | Lithium polymer 11.1V 1800mAh / 19.98Wh 5C | Lithium polymer 11.1V 1800mAh / 19.98Wh 5C | -| PC connection | USB | USB | -| Firmware upgrade | via USB / via JTAG | via USB / via JTAG | -| Power adapter (SMPS) | Input : 100-240V, AC 50/60Hz, 1.5A @max
Output : 12V DC, 5A | Input : 100-240V, AC 50/60Hz, 1.5A @max
Output : 12V DC, 5A | +| PC Connection | USB | USB | +| Firmware Upgrade | via USB / via JTAG | via USB / via JTAG | +| Power Adapter (SMPS) | Input : 100-240V, AC 50/60Hz, 1.5A @max
Output : 12V DC, 5A | Input : 100-240V, AC 50/60Hz, 1.5A @max
Output : 12V DC, 5A | ### [Dimension and Mass](#dimension-and-mass) @@ -143,7 +142,7 @@ The following table shows the lists of components. The major differences between | . | RC-100B (Remote Controller) | 0 | 1 | | **Sensors** | **[LDS-01] or [LDS-02] | 1 | 1 | | . | [Raspberry Pi Camera v2.1] | 0 | 1 | -| **Memorys** | MicroSD Card | 1 | 1 | +| **Memory** | MicroSD Card | 1 | 1 | | **Cables** | Raspberry Pi Power Cable | 1 | 1 | | . | Li-Po Battery Extension Cable | 1 | 1 | | . | DYNAMIXEL to OpenCR Cable | 2 | 2 | @@ -173,18 +172,16 @@ The following table shows the lists of components. The major differences between | . | Bracket | 5 | 6 | | . | Adapter Plate | 1 | 1 | -* [Raspberry Pi 3 Model B+] is applied since 2019. Earlier model is equipped with [Raspberry Pi 3 Model B]. -* [Raspberry Pi 4 Model B] is applied since 2021 September. -** [LDS-02] is applied since 2022. +* The [Raspberry Pi 3 Model B+] was included as standard starting in 2019. Earlier models are equipped with a [Raspberry Pi 3 Model B]. +* The [Raspberry Pi 4 Model B] has been included as standard since 2021 September.
+* The [LDS-02] has replaced the previous generation [LDS-01] since 2022. -TurtleBot3 Waffle is discontinued due to the EOL of [Intel® Joule™ 570x]. +The TurtleBot3 Waffle is discontinued due to the EOL of the [Intel® Joule™ 570x] SBC. {: .notice} ### [Open Source Hardware](#open-source-hardware) -Core components of Turtlebot3 are the followings: Chassis, Motors, Wheels, OpenCR, SBC, Sensors and Battery. The chassis are Waffle Plates that holds other components. The Waffle Plate plays an important role as a chassis although its size is as small as your palm. The Waffle Plate is manufactured with injection mold method to lower the manufacturing cost. However, the CAD data of Waffle Plate for 3D printing is also available via [Onshape][waffle_plate_on_onshape]. Turtlebot3 Burger is a Two-wheeled differential drive type platform, but it is customizable structurally and mechanically in many ways: Segway, Tank, Bike, Trailer and so on. - -The CAD data is released to the Onshape, which is a full-cloud 3D CAD editor. Get access through a web browser from your PC or from portable devices. Onshape allows drawing and assemblying parts with co-workers. +Complete CAD data is available in Onshape, a full-cloud 3D CAD editor accessible through a web browser from your PC or from portable devices. - [TurtleBot3 Burger 3D Model](http://www.robotis.com/service/download.php?no=676) - [TurtleBot3 Waffle 3D Model](http://www.robotis.com/service/download.php?no=677) diff --git a/docs/en/platform/turtlebot3/overview/challenges.md b/docs/en/platform/turtlebot3/overview/challenges.md index bebc5fe22..3374daaa4 100644 --- a/docs/en/platform/turtlebot3/overview/challenges.md +++ b/docs/en/platform/turtlebot3/overview/challenges.md @@ -28,7 +28,7 @@ page_number: 2 #### [Online Competition using TurtleBot3](#online-competition-using-turtlebot3) -We are preparing an online competition on [ROS Development Studio (RDS)][rds] with TurtleBot3 AutoRace and Task Mission using TurtleBot3 and OpenManipulator. You can participate free of charge in this online competition and learn about SLAM, Navigatin, Autonomous driving, Manipulation in a defined rule. Let's play each other in this online competition! +ROBOTIS has prepared an online competition on [ROS Development Studio (RDS)][rds] for the TurtleBot3 AutoRace and Task Mission using TurtleBot3 and OpenManipulator. You can participate free of charge in this online competition and learn about SLAM, Navigatin, Autonomous driving, Manipulation in a structured experimental environment. - [ROS Development Studio Howto](https://www.youtube.com/playlist?list=PLK0b4e05LnzYGvX6EJN1gOQEl6aa3uyKS) @@ -38,7 +38,7 @@ We are preparing an online competition on [ROS Development Studio (RDS)][rds] wi - [TurtleBot3 AutoRace](https://rds.theconstructsim.com/tc_projects/use_project_share_link/21e00583-6e60-415a-aa66-bd2c78e0733a) -If you need more information about it or you want to launch it in your remote PC, please visit [Autonomous Driving](/docs/en/platform/turtlebot3/autonomous_driving/#autonomous-driving) section. +For more information or if you want to launch it in your remote PC, please visit [Autonomous Driving](/docs/en/platform/turtlebot3/autonomous_driving/#autonomous-driving) section. #### Task Mission using TurtleBot3 and OpenManipulator on RDS @@ -46,7 +46,7 @@ If you need more information about it or you want to launch it in your remote PC - [Task Mission using TurtleBot3 and OpenManipulator](https://rds.theconstructsim.com/tc_projects/use_project_share_link/b345dbb4-c806-4822-919e-84b7cf00c8c0) -If you need more information about it or you want to launch it in your remote PC, please visit [Manipulation](/docs/en/platform/turtlebot3/manipulation/#bringup) section. +For more information about it or if you want to launch it in your remote PC, please visit [Manipulation](/docs/en/platform/turtlebot3/manipulation/#bringup) section. #### [ROS Development Studio (RDS)](#ros-development-studio-RDS) diff --git a/docs/en/platform/turtlebot3/overview/overview.md b/docs/en/platform/turtlebot3/overview/overview.md index 16dc9005e..476b44e28 100644 --- a/docs/en/platform/turtlebot3/overview/overview.md +++ b/docs/en/platform/turtlebot3/overview/overview.md @@ -23,15 +23,15 @@ page_number: 1 {% capture info_00 %} ![](/assets/images/platform/turtlebot3/logo_raspberry_pi.png){: width="30px"} **Rasbperry Pi 4** -TurtleBot3 has been upgraded with `Raspberry Pi 4`. +The TurtleBot3 platform has been upgraded to include the `Raspberry Pi 4` as the standard onboard SBC. {% endcapture %}
{{ info_00 | markdownify }}
{% capture info_01 %} ![](/assets/images/platform/turtlebot3/logo_nvidia.jpg){: width="65px"} **Jetson Nano** -TurtleBot3 Hardware is compatible with `Jetson Nano` SBC. -Please refer to the video below in order to set up the Jetson Nano for TurtleBot3. -The [Jetson Nano Developer Kit setup](https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit) must be completed first. +TurtleBot3 Hardware also supports the use of the Nvidia `Jetson Nano` SBC. +Please refer to the video below in order to set up a Jetson Nano for use with a TurtleBot3. +The [Jetson Nano Developer Kit setup](https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit) instructions must be completed prior to preparation for TurtleBot3 useage. {% endcapture %} @@ -39,25 +39,23 @@ The [Jetson Nano Developer Kit setup](https://developer.nvidia.com/embedded/lear **What is TurtleBot?** -[TurtleBot][turtlebot] is a [ROS][ros] standard platform robot. Turtle is derived from the Turtle robot, which was driven by the educational computer programming language [Logo][logo] in 1967. In addition, the [turtlesim node][turtlesim], which first appears in the basic tutorial of ROS, is a program that mimics the command system of the [Logo turtle program][logo_primer]. It is also used to create the [Turtle icon][tuturtle] as a symbol of ROS. The nine dots used in the ROS logo derived from the back shell of the turtle. TurtleBot, which originated from the Turtle of Logo, is designed to easily teach people who are new to ROS through TurtleBot as well as to teach computer programming language using Logo. Since then TurtleBot has become the standard platform of ROS, which is the most popular platform among developers and students. +[TurtleBot][turtlebot] is a standardized robotic platform developed for [ROS][ros] education and research. The concept of the TurtleBot platform is derived from [Turtle robots](https://en.wikipedia.org/wiki/Turtle_(robot)) used to teach foundational robotics and computer science since the early 1940s. TurtleBot is designed as a simplified, easily upgradable platform to teach people who are new to ROS, and to provide a capable base system for more advanced development. Since it's inception TurtleBot has become the standard educational ROS platform, as well as the most popular robotics platform among developers and students worldwide. -There are 3 versions of the [TurtleBot][turtlebot] model. TurtleBot1 was developed by Tully (Platform Manager at Open Robotics) and Melonee (CEO of Fetch Robotics) from Willow Garage on top of the iRobot’s Roomba-based research robot, Create, for ROS deployment. It was developed in 2010 and has been on sale since 2011. In 2012, TurtleBot2 was developed by Yujin Robot based on the research robot, iClebo Kobuki. In 2017, TurtleBot3 was developed with features to supplement the lacking functions of its predecessors, and the demands of users. The TurtleBot3 adopts ROBOTIS smart actuator [DYNAMIXEL][dynamixel] for driving. For more information on the TurtleBot series, please see the following [link][history]. +There are 4 versions of the [TurtleBot][turtlebot] available now. TurtleBot1 was developed by Tully (Platform Manager at Open Robotics) and Melonee (CEO of Fetch Robotics) at Willow Garage on top of the iRobot’s Roomba-based research robot, Create, for ROS deployment. It was developed in 2010 and has been on sale since 2011. In 2012, TurtleBot2 was developed by Yujin Robot based on the research robot, iClebo Kobuki. In 2017, TurtleBot3 was developed by ROBOTIS as an improved modular design to supplement the function of its predecessors, and the demands of users. The TurtleBot4, developed by ClearPath Robotics features an iRobot Create3 base as a less modular alternative to the TurtleBot3 platform. For more information on the TurtleBot series, visit [the official TurtleBot Website][history] for a full history of the platform. -TurtleBot3 is a small, affordable, programmable, ROS-based mobile robot for use in education, research, hobby, and product prototyping. The goal of TurtleBot3 is to dramatically reduce the size of the platform and lower the price without having to sacrifice its functionality and quality, while at the same time offering expandability. The TurtleBot3 can be customized into various ways depending on how you reconstruct the mechanical parts and use optional parts such as the computer and sensor. In addition, TurtleBot3 is evolved with cost-effective and small-sized SBC that is suitable for robust embedded system, 360 degree distance sensor and 3D printing technology. - -The TurtleBot3’s core technology is [SLAM][slam], [Navigation][navigation] and [Manipulation][manipulation], making it suitable for home service robots. The TurtleBot can run SLAM(simultaneous localization and mapping) algorithms to build a map and can drive around your room. Also, it can be controlled remotely from a laptop, joypad or Android-based smart phone. The TurtleBot can also follow a person’s legs as they walk in a room. Also the TurtleBot3 can be used as a mobile manipulator capable of manipulating an object by attaching a manipulator like OpenMANIPULATOR. The [OpenMANIPULATOR][openmanipulator] has the advantage of being compatible with TurtleBot3 Waffle and Waffle Pi. Through this compatibility can compensate for the lack of freedom and can have greater completeness as a service robot with the the SLAM and navigation capabilities that the TurtleBot3 has. +The TurtleBot3 in specific is a small, affordable, and customizable, ROS-based mobile robot for use in education, research, hobby projects, and product prototyping. The goal of TurtleBot3 is to provide a low cost, highly flexible robotics development platform without having to sacrifice functionality and quality, while at the same time offering enough expandability to fit a wide variety of complex robotics applications. The TurtleBot3 can be customized in various ways using simple mechanical components and through the use of upgraded electronic components including custom computers and sensors. In addition, the TurtleBot3 has continued to evolve it's out of the box performance by continually upgrading the included cost-effective and small-sized SBC suitable for robust embedded systems. The TurtleBot3’s core technology of [SLAM][slam], [Navigation][navigation] and [Manipulation][manipulation] makes it suitable for a wide variety of research and service robotics applications. **How to contribute to ROS and TurtleBot?**
-![](/assets/images/icon_unfold.png) TurtleBot3 is a collaboration project... +![](/assets/images/icon_unfold.png) TurtleBot3 is a collaborative project... -TurtleBot3 is a collaboration project among [Open Robotics][open_robotics], [ROBOTIS][robotis], and more partners like [The Construct][the_construct], [Intel][intel], [Onshape][onshape], [OROCA][oroca], [AuTURBO][auturbo], [ROS in Robotclub Malaysia][ros_in_robotclub_malaysia], [Astana Digital][astana digital], [Polariant Experiment][polariant_experiment], [Tokyo University of Agriculture and Technology, GVlab][gvlab], [Networked Control Robotics Lab at National Chiao Tung University][nctu], [SIM Group at TU Darmstadt][sim_group]. The Open Robotics is in charge of software and community activities, while ROBOTIS is in charge of manufacturing and global distribution. +TurtleBot3 is a collaborative project between [Open Robotics][open_robotics], [ROBOTIS][robotis], and many more partners including [The Construct][the_construct], [Intel][intel], [Onshape][onshape], [OROCA][oroca], [AuTURBO][auturbo], [ROS in Robotclub Malaysia][ros_in_robotclub_malaysia], [Astana Digital][astana digital], [Polariant Experiment][polariant_experiment], [Tokyo University of Agriculture and Technology, GVlab][gvlab], [Networked Control Robotics Lab at National Chiao Tung University][nctu], [SIM Group at TU Darmstadt][sim_group]. Open Robotics is in charge of software and community activities, while ROBOTIS is in charge of manufacturing and global distribution. -The most important part of this TurtleBot3 collaboration project is open source based software, hardware, and content. We are encouraging more partners and research collaborators to participate in this project to enrich the robotics field. +The most important part of the TurtleBot3 collaboration project is the open source based software, hardware, and community around the platform. As such, ROBOTIS is always encouraging more partners and research collaborators to participate in this project to enrich the robotics field as a whole. -If you are interested in partnership with us to realize open source robotics, please fill out form [here][partners]. +If you are interested in partnership with us to continue to further the development of open source robotics, please fill out [this form][partners] to learn more about how we can work together. - TurtleBot3 Providers ![](/assets/images/platform/turtlebot3/logo_platform_providers.png) @@ -82,9 +80,9 @@ If you are interested in partnership with us to realize open source robotics, pl
-![](/assets/images/icon_unfold.png) Checkout ROS and TurtleBot3 Publications +![](/assets/images/icon_unfold.png) Check out these ROS and TurtleBot3 Publications: -- 09/06/2021 TurtleBot3 is upgraded with Raspberry Pi 4!!! +- 09/06/2021 TurtleBot3 has been upgraded with Raspberry Pi 4!!! - 05/28/2021 [TurtleBot3 Autorace 2020 now runs with ROS Noetic](https://www.youtube.com/playlist?list=PLRG6WP3c31_WsNjwmYID2ulX5g4WcjKbI) - 05/24/2021 [ROS 2 Galactic Geochelone Release](https://discourse.ros.org/t/ros-2-galactic-geochelone-released/20559) - 12/20/2020 [Webots supports TurtleBot3 with ROS 2 Foxy](https://discourse.ros.org/t/turtlebot3-and-webots/17880) @@ -150,7 +148,7 @@ If you are interested in partnership with us to realize open source robotics, pl
-![](/assets/images/icon_unfold.png) Click to expand the recent news +![](/assets/images/icon_unfold.png) Click to expand recent news. - 11/12/2020 [ROS World 2020: ROBOTIS TurtleBot3 Parallel Session](https://vimeo.com/480460365) - 07/22/2019 [Top 10 ROS-based robotics companies in 2019, The Robot Report diff --git a/docs/en/platform/turtlebot3/quick_start/quick_start.md b/docs/en/platform/turtlebot3/quick_start/quick_start.md index 7814d03b3..a0fd57b48 100644 --- a/docs/en/platform/turtlebot3/quick_start/quick_start.md +++ b/docs/en/platform/turtlebot3/quick_start/quick_start.md @@ -21,34 +21,39 @@ page_number: 4 {::options parse_block_html="true" /} -O : Available -∆ : Need to check -X : Unavailable +**Only ROS1 Noetic and ROS2 Humble are officially supported by ROBOTIS at this time. However, development of TurtleBot features for other ROS distributions is ongoing. The following chart provides an overview of the features supported by each ROS Distribution** + +✓ : Available
+? : Unverified
+X : Unavailable
| Features | Kinetic | Melodic | Noetic | Dashing | Foxy | Galactic | Humble | |:----------------------:|:-------:|:-------:|:------:|:-------:|:----:|:--------:|:------:| -| Teleop | O | O | O | O | O | O | O | -| SLAM | O | O | O | O | O | O | O | -| Navigation | O | O | O | O | O | O | O | -| Simulation | O | O | O | O | O | O | O | -| Manipulation | O | O | O | O | O | ∆ | O | -| Home Service Challenge | O | O | O | X | X | X | X | -| Autonomous Driving | O | X | O | X | X | X | X | -| Machine Learning | O | O | X | O | X | X | X | +| Teleop | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| SLAM | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| Navigation | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| Simulation | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| Manipulation | ✓ | ✓ | ✓ | ✓ | ✓ | ? | ✓ | +| Home Service Challenge | ✓ | ✓ | ✓ | X | X | X | X | +| Autonomous Driving | ✓ | X | ✓ | X | X | X | X | +| Machine Learning | ✓ | ✓ | X | ✓ | X | X | X | | Examples | Kinetic | Melodic | Noetic | Dashing | Foxy | Galactic | Humble | |:--------------------:|:-------:|:-------:|:------:|:-------:|:----:|:--------:|:------:| -| Interactive Markers | O | X | X | X | X | X | X | -| Obstacle Detection | O | X | X | O | X | X | X | -| Position Control | O | X | X | O | X | X | X | -| Point Operation | O | X | X | O | X | X | X | -| Patrol | O | X | X | O | X | X | X | -| Follower | O | X | X | X | X | X | X | -| Panorama | O | X | X | X | X | X | X | -| Auto Parking | O | X | X | O | X | X | X | -| Auto Parking(Vision) | O | X | X | X | X | X | X | -| Multi TurtleBot3 | O | X | X | X | X | X | X | +| Interactive Markers | ✓ | X | X | X | X | X | X | +| Obstacle Detection | ✓ | X | X | ✓ | X | X | X | +| Position Control | ✓ | X | X | ✓ | X | X | X | +| Point Operation | ✓ | X | X | ✓ | X | X | X | +| Patrol | ✓ | X | X | ✓ | X | X | X | +| Follower | ✓ | X | X | X | X | X | X | +| Panorama | ✓ | X | X | X | X | X | X | +| Auto Parking | ✓ | X | X | ✓ | X | X | X | +| Auto Parking (Vision)| ✓ | X | X | X | X | X | X | +| Multi TurtleBot3 | ✓ | X | X | X | X | X | X | +
+{% include en/platform/turtlebot3/quickstart_noetic.md %} +
-
-{% include en/platform/turtlebot3/quickstart_noetic.md %} -
+ +
+ +{% include en/platform/turtlebot3/sbc_setup_noetic.md %} +
+ @@ -40,6 +44,7 @@ page_number: 5