├── BOM
└── Differential bom update.xlsx
├── Example codes
└── diferential_test.py
├── Images
├── dif_gif.gif
├── img1.PNG
├── img10.PNG
├── img11.PNG
├── img12.PNG
├── img13.PNG
├── img14.PNG
├── img15.PNG
├── img2.PNG
├── img3.PNG
├── img4.PNG
├── img5.PNG
├── img6.PNG
├── img7.PNG
├── img8.PNG
└── img9.PNG
├── LICENSE
├── README.md
└── STLS
├── 12_teeth_pulley.STL
├── 1_mm_spacer.STL
├── Magnet_shaft.STL
├── Motor_holder_2.STL
├── big_bevel.STL
├── big_bevel_backplate.STL
├── gear_hub_single_stage.STL
├── outer_shell_part.STL
├── small_bevel.STL
├── small_bevel_backplate.STL
└── small_bevel_shaft.STL
/BOM/Differential bom update.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PCrnjak/Differential-robot-wrist/dc0a8bca3363485d0d21a80e2eda08818b894057/BOM/Differential bom update.xlsx
--------------------------------------------------------------------------------
/Example codes/diferential_test.py:
--------------------------------------------------------------------------------
1 | import Spectral_BLDC as Spectral
2 | import time
3 |
4 |
5 | Communication1 = Spectral.CanCommunication(bustype='slcan', channel='COM41', bitrate=1000000)
6 | Motor = []
7 |
8 | Motor.append(Spectral.SpectralCAN(node_id=0, communication=Communication1))
9 | Motor.append(Spectral.SpectralCAN(node_id=1, communication=Communication1))
10 | ž
11 |
12 | timeout_setting = 0.00005
13 | tick_cnt = 0
14 |
15 | while True:
16 |
17 | # Send data to all motors
18 | #Motor[1].Send_data_pack_PD(-6000,0,0)
19 | #Motor[2].Send_data_pack_PD(6000,0,0)
20 |
21 | tick_cnt = tick_cnt + 1
22 |
23 | Motor[0].Send_data_pack_1(None,4500,0)
24 | Motor[1].Send_data_pack_1(None,-4500,0)
25 |
26 |
27 | #Motor[3].Send_Respond_Encoder_data()
28 | #Motor[4].Send_Respond_Encoder_data()
29 |
30 | #Motor[1].Send_Limits(800000,2000)
31 | #Motor[2].Send_Limits(800000,2000)
32 |
33 | #Motor[1].Send_Respond_State_of_Errors()
34 | #Motor[2].Send_Respond_State_of_Errors()
35 |
36 | #Motor[1].Send_PD_Gains(0.012,0.001)
37 | #Motor[2].Send_PD_Gains(0.012,0.001)
38 |
39 | for i in range(1, 7): # Loop 9-1=8 to check for received data
40 | message, UnpackedMessageID = Communication1.receive_can_messages(timeout=timeout_setting)
41 | print(f"unpack {i} is: {UnpackedMessageID}")
42 |
43 | # Check if UnpackedMessageID is not None
44 | if UnpackedMessageID is not None:
45 | #print(Motor)
46 | # Update received id index; meaning that we received response from that CAN ID
47 | Motor[UnpackedMessageID[0]].UnpackData(message,UnpackedMessageID)
48 | print(f"Motor {UnpackedMessageID [0]}, speed is: {Motor[UnpackedMessageID[0]].speed}, current is {Motor[UnpackedMessageID[0]].current },pos is {Motor[UnpackedMessageID[0]].position}")
49 | """
50 | print(f"Motor {UnpackedMessageID[0]}, speed is: {Motor[UnpackedMessageID[0]].speed}")
51 | print(f"Error is: {Motor[UnpackedMessageID[0]].error}")
52 | print(f"Temperature rror is: {Motor[UnpackedMessageID[0]].temperature_error}")
53 | print(f"Encoder error is: {Motor[UnpackedMessageID[0]].encoder_error}")
54 | print(f"Vbus error is: {Motor[UnpackedMessageID[0]].vbus_error}")
55 | print(f"Driver error is: {Motor[UnpackedMessageID[0]].driver_error}")
56 | print(f"Velocity error is: {Motor[UnpackedMessageID[0]].velocity_error}")
57 | print(f"Current error is: {Motor[UnpackedMessageID[0]].current_error}")
58 | print(f"Estop error is: {Motor[UnpackedMessageID[0]].estop_error}")
59 | print(f"Watchdog error is: {Motor[UnpackedMessageID[0]].watchdog_error}")
60 | print(f"Calibrated is: {Motor[UnpackedMessageID[0]].calibrated}")
61 | print(f"Activated is: {Motor[UnpackedMessageID[0]].activated}")
62 | """
63 |
64 |
65 | time.sleep(1)
--------------------------------------------------------------------------------
/Images/dif_gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PCrnjak/Differential-robot-wrist/dc0a8bca3363485d0d21a80e2eda08818b894057/Images/dif_gif.gif
--------------------------------------------------------------------------------
/Images/img1.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PCrnjak/Differential-robot-wrist/dc0a8bca3363485d0d21a80e2eda08818b894057/Images/img1.PNG
--------------------------------------------------------------------------------
/Images/img10.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PCrnjak/Differential-robot-wrist/dc0a8bca3363485d0d21a80e2eda08818b894057/Images/img10.PNG
--------------------------------------------------------------------------------
/Images/img11.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PCrnjak/Differential-robot-wrist/dc0a8bca3363485d0d21a80e2eda08818b894057/Images/img11.PNG
--------------------------------------------------------------------------------
/Images/img12.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PCrnjak/Differential-robot-wrist/dc0a8bca3363485d0d21a80e2eda08818b894057/Images/img12.PNG
--------------------------------------------------------------------------------
/Images/img13.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PCrnjak/Differential-robot-wrist/dc0a8bca3363485d0d21a80e2eda08818b894057/Images/img13.PNG
--------------------------------------------------------------------------------
/Images/img14.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PCrnjak/Differential-robot-wrist/dc0a8bca3363485d0d21a80e2eda08818b894057/Images/img14.PNG
--------------------------------------------------------------------------------
/Images/img15.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PCrnjak/Differential-robot-wrist/dc0a8bca3363485d0d21a80e2eda08818b894057/Images/img15.PNG
--------------------------------------------------------------------------------
/Images/img2.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PCrnjak/Differential-robot-wrist/dc0a8bca3363485d0d21a80e2eda08818b894057/Images/img2.PNG
--------------------------------------------------------------------------------
/Images/img3.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PCrnjak/Differential-robot-wrist/dc0a8bca3363485d0d21a80e2eda08818b894057/Images/img3.PNG
--------------------------------------------------------------------------------
/Images/img4.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PCrnjak/Differential-robot-wrist/dc0a8bca3363485d0d21a80e2eda08818b894057/Images/img4.PNG
--------------------------------------------------------------------------------
/Images/img5.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PCrnjak/Differential-robot-wrist/dc0a8bca3363485d0d21a80e2eda08818b894057/Images/img5.PNG
--------------------------------------------------------------------------------
/Images/img6.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PCrnjak/Differential-robot-wrist/dc0a8bca3363485d0d21a80e2eda08818b894057/Images/img6.PNG
--------------------------------------------------------------------------------
/Images/img7.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PCrnjak/Differential-robot-wrist/dc0a8bca3363485d0d21a80e2eda08818b894057/Images/img7.PNG
--------------------------------------------------------------------------------
/Images/img8.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PCrnjak/Differential-robot-wrist/dc0a8bca3363485d0d21a80e2eda08818b894057/Images/img8.PNG
--------------------------------------------------------------------------------
/Images/img9.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PCrnjak/Differential-robot-wrist/dc0a8bca3363485d0d21a80e2eda08818b894057/Images/img9.PNG
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2024 Source robotics
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Differential-robot-wrist
2 |
3 |
4 |
5 |
6 | Due the high demand to built this awesome differential mechanism we decided to open source it even in this early stage.
7 | **Note that this is test fixture that we designed to test the mechanism for our future robots! Also note that this project is based on our motor driver product called [Spectral micro BLDC driver](https://source-robotics.com/products/spectral-micro-bldc-controller)**
8 |
9 | # How to make it?
10 |
11 | Step 1 - Source all the parts from the [BOM](https://github.com/PCrnjak/Differential-robot-wrist/tree/main/BOM)
12 | Step 2 - print all the parts in [STL folder](https://github.com/PCrnjak/Differential-robot-wrist/tree/main/STLS) (Note that some parts need to be printed twice)
13 | Step 3 - Assemble the differential and [calibrate the drivers](https://source-robotics.github.io/Spectral-BLDC-docs/)
14 | Step 4 - Program and test it! [Example code!](https://github.com/PCrnjak/Differential-robot-wrist/tree/main/Example%20codes)
15 | Step 5 - Enjoy your differential mechanisam!
16 |
17 | # Assembly manual
18 |
19 | Manual is TODO. You can follow the images in images folder in order to assemble it at this moment. There are few versions of screws needed.
20 | After attaching every part
21 |
22 | Before attaching the belts you will need to calibrate the motors by following this manual: [calibrate the drivers](https://source-robotics.github.io/Spectral-BLDC-docs/)
23 |
24 |
25 | # More about our projects
26 |
27 | - [Source robotics website](https://www.youtube.com/channel/UCp3sDRwVkbm7b2M-2qwf5aQ)
28 | - [Youtube](https://www.youtube.com/channel/UCp3sDRwVkbm7b2M-2qwf5aQ)
29 | - [Instagram](https://www.instagram.com/source_robotics/)
30 | - [Twitter](https://twitter.com/SourceRobotics)
31 | - [Discord](https://discord.com/invite/prjUvjmGpZ )
32 | - [Forum](https://discourse.source-robotics.com/)
33 | - [Blog](https://source-robotics.com/blogs/blog)
34 |
35 |
36 |
37 | # Liability
38 | 1. The software and hardware are still in development and may contain bugs, errors, or incomplete features.
39 | 2. Users are encouraged to use this software and hardware responsibly and at their own risk.
40 |
41 | # Support the project
42 |
43 | The majority of this project is open source and freely available to everyone. Your assistance, whether through donations or advice, is highly valued. Thank you!
44 |
45 | [](https://paypal.me/PCrnjak?locale.x=en_US)
46 | [](https://www.patreon.com/PCrnjak)
47 |
48 |
--------------------------------------------------------------------------------
/STLS/12_teeth_pulley.STL:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PCrnjak/Differential-robot-wrist/dc0a8bca3363485d0d21a80e2eda08818b894057/STLS/12_teeth_pulley.STL
--------------------------------------------------------------------------------
/STLS/1_mm_spacer.STL:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PCrnjak/Differential-robot-wrist/dc0a8bca3363485d0d21a80e2eda08818b894057/STLS/1_mm_spacer.STL
--------------------------------------------------------------------------------
/STLS/Magnet_shaft.STL:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PCrnjak/Differential-robot-wrist/dc0a8bca3363485d0d21a80e2eda08818b894057/STLS/Magnet_shaft.STL
--------------------------------------------------------------------------------
/STLS/Motor_holder_2.STL:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PCrnjak/Differential-robot-wrist/dc0a8bca3363485d0d21a80e2eda08818b894057/STLS/Motor_holder_2.STL
--------------------------------------------------------------------------------
/STLS/big_bevel.STL:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PCrnjak/Differential-robot-wrist/dc0a8bca3363485d0d21a80e2eda08818b894057/STLS/big_bevel.STL
--------------------------------------------------------------------------------
/STLS/big_bevel_backplate.STL:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PCrnjak/Differential-robot-wrist/dc0a8bca3363485d0d21a80e2eda08818b894057/STLS/big_bevel_backplate.STL
--------------------------------------------------------------------------------
/STLS/gear_hub_single_stage.STL:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PCrnjak/Differential-robot-wrist/dc0a8bca3363485d0d21a80e2eda08818b894057/STLS/gear_hub_single_stage.STL
--------------------------------------------------------------------------------
/STLS/outer_shell_part.STL:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PCrnjak/Differential-robot-wrist/dc0a8bca3363485d0d21a80e2eda08818b894057/STLS/outer_shell_part.STL
--------------------------------------------------------------------------------
/STLS/small_bevel.STL:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PCrnjak/Differential-robot-wrist/dc0a8bca3363485d0d21a80e2eda08818b894057/STLS/small_bevel.STL
--------------------------------------------------------------------------------
/STLS/small_bevel_backplate.STL:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PCrnjak/Differential-robot-wrist/dc0a8bca3363485d0d21a80e2eda08818b894057/STLS/small_bevel_backplate.STL
--------------------------------------------------------------------------------
/STLS/small_bevel_shaft.STL:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PCrnjak/Differential-robot-wrist/dc0a8bca3363485d0d21a80e2eda08818b894057/STLS/small_bevel_shaft.STL
--------------------------------------------------------------------------------