Dancing with the Robot Arm
Follow along: Dancing with the Robot Arm
The program launching process along with parameter settings are all simplified and set up on the Jupyter Notebook Environment.
- Open the 05_04_dance.ipynb Jupyter Notebook.
- Load Arm_Lib module and register the robot arm as an object.
- Follow and Execute the example codes.
(The Jetson Board used for these examples are => Jetson Nano)
05_04_dance.ipynb
- Running the cell code.Ctrl + Enter
To control the robot arm from code, don’t forget to shut down the docker container. See here.
Load Arm_Lib module and register the robot arm as an object
import os
import time
from Arm_Lib import Arm_Device
Arm = Arm_Device()
time.sleep(.1)
time_1 = 500
time_2 = 1000
time_sleep = 0.5
Arm_serial_servo_write (motor number, angle, time)
Dance motion using servo motor angle control and while statement
# Repeat robot arm dance.
def main():
# Move servo to initial position.
Arm.Arm_serial_servo_write6(90, 90, 90, 90, 90, 90, 500)
time.sleep(1)
os.system('rostopic pub -1 /play_specific std_msgs/String "data: \'/root/scripts/sensor/arm_sounds/music_cari.mp3\'"')
Arm.Arm_serial_servo_write(2, 180-120, time_1)
time.sleep(.001)
Arm.Arm_serial_servo_write(3, 120, time_1)
time.sleep(.001)
Arm.Arm_serial_servo_write(4, 60, time_1)
time.sleep(time_sleep)
Arm.Arm_serial_servo_write(2, 180-135, time_1)
time.sleep(.001)
Arm.Arm_serial_servo_write(3, 135, time_1)
time.sleep(.001)
Arm.Arm_serial_servo_write(4, 45, time_1)
time.sleep(time_sleep)
Arm.Arm_serial_servo_write(2, 180-120, time_1)
time.sleep(.001)
Arm.Arm_serial_servo_write(3, 120, time_1)
time.sleep(.001)
Arm.Arm_serial_servo_write(4, 60, time_1)
time.sleep(time_sleep)
Arm.Arm_serial_servo_write(2, 90, time_1)
time.sleep(.001)
Arm.Arm_serial_servo_write(3, 90, time_1)
time.sleep(.001)
Arm.Arm_serial_servo_write(4, 90, time_1)
time.sleep(time_sleep)
Arm.Arm_serial_servo_write(2, 180-80, time_1)
time.sleep(.001)
Arm.Arm_serial_servo_write(3, 80, time_1)
time.sleep(.001)
Arm.Arm_serial_servo_write(4, 80, time_1)
time.sleep(time_sleep)
Arm.Arm_serial_servo_write(2, 180-60, time_1)
time.sleep(.001)
Arm.Arm_serial_servo_write(3, 60, time_1)
time.sleep(.001)
Arm.Arm_serial_servo_write(4, 60, time_1)
time.sleep(time_sleep)
Arm.Arm_serial_servo_write(2, 180-45, time_1)
time.sleep(.001)
Arm.Arm_serial_servo_write(3, 45, time_1)
time.sleep(.001)
Arm.Arm_serial_servo_write(4, 45, time_1)
time.sleep(time_sleep)
Arm.Arm_serial_servo_write(2, 90, time_1)
time.sleep(.001)
Arm.Arm_serial_servo_write(3, 90, time_1)
time.sleep(.001)
Arm.Arm_serial_servo_write(4, 90, time_1)
time.sleep(.001)
time.sleep(time_sleep)
Arm.Arm_serial_servo_write(4, 20, time_1)
time.sleep(.001)
Arm.Arm_serial_servo_write(6, 150, time_1)
time.sleep(.001)
time.sleep(time_sleep)
Arm.Arm_serial_servo_write(4, 90, time_1)
time.sleep(.001)
Arm.Arm_serial_servo_write(6, 90, time_1)
time.sleep(time_sleep)
Arm.Arm_serial_servo_write(4, 20, time_1)
time.sleep(.001)
Arm.Arm_serial_servo_write(6, 150, time_1)
time.sleep(time_sleep)
Arm.Arm_serial_servo_write(4, 90, time_1)
time.sleep(.001)
Arm.Arm_serial_servo_write(6, 90, time_1)
time.sleep(.001)
Arm.Arm_serial_servo_write(1, 0, time_1)
time.sleep(.001)
Arm.Arm_serial_servo_write(5, 0, time_1)
time.sleep(time_sleep)
Arm.Arm_serial_servo_write(3, 180, time_1)
time.sleep(.001)
Arm.Arm_serial_servo_write(4, 0, time_1)
time.sleep(time_sleep)
Arm.Arm_serial_servo_write(6, 180, time_1)
time.sleep(time_sleep)
Arm.Arm_serial_servo_write(6, 0, time_2)
time.sleep(time_sleep)
Arm.Arm_serial_servo_write(6, 90, time_2)
time.sleep(.001)
Arm.Arm_serial_servo_write(1, 90, time_1)
time.sleep(.001)
Arm.Arm_serial_servo_write(5, 90, time_1)
time.sleep(time_sleep)
Arm.Arm_serial_servo_write(3, 90, time_1)
time.sleep(.001)
Arm.Arm_serial_servo_write(4, 90, time_1)
time.sleep(time_sleep)
print(" END OF LINE! ")
os.system('rostopic pub -1 /play_specific std_msgs/String "data: \'stop\'"')
try :
main()
except KeyboardInterrupt:
print(" Program closed! ")
pass
Remove the robot arm object.
del Arm # Remove robot arm object.