car_control.sh 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. #!/bin/sh
  2. echo "=== CAR CONTROL over COMMAND LINE! ==="
  3. echo "CAR: car_control.sh"
  4. echo "CAR: car_control.sh constant"
  5. echo "CAR: car_control.sh constant low_speed"
  6. echo "CAR: car_control.sh low_speed"
  7. echo "CAR: w: forward "
  8. echo "CAR: d: reverse"
  9. echo "CAR: a: turn wheel left"
  10. echo "CAR: d: turn wheel right"
  11. echo "CAR: q: forward left"
  12. echo "CAR: e: forward right"
  13. echo "CAR: z: reverse left"
  14. echo "CAR: c: reverse right"
  15. echo "CAR: x: all stop"
  16. echo "CAR: h: headlight on/off"
  17. echo "CAR: j: irled on/off"
  18. echo "CAR: b: honk"
  19. echo -e ""
  20. echo "CAR: 1: quit ASAP!"
  21. echo -e ""
  22. echo "Ready!"
  23. headlight_state=false
  24. irled_state=false
  25. function headlight {
  26. if [ "$headlight_state" = false ]; then
  27. echo -ne "\xaa\x55\x43\x04\x1e\x01\x01\x65" > /dev/ttyUSB0
  28. headlight_state=true
  29. else
  30. echo -ne "\xaa\x55\x43\x04\x1e\x02\x01\x66" > /dev/ttyUSB0
  31. headlight_state=false
  32. fi
  33. }
  34. function irled {
  35. if [ "$irled_state" = false ]; then
  36. cmd irled on
  37. irled_state=true
  38. else
  39. cmd irled off
  40. irled_state=false
  41. fi
  42. }
  43. trap control_c SIGINT
  44. control_c()
  45. {
  46. echo -ne "\xaa\x55\x43\x06\x29\x80\x80\x00\x02\x71" > /dev/ttyUSB0
  47. echo "control-c KILL"
  48. pkill -9 -f car_control.sh
  49. }
  50. #idle background loop
  51. while true; do
  52. echo -ne "\xaa\x55\x43\x06\x29\x80\x80\x00\x02\x71" > /dev/ttyUSB0
  53. #fw sends 0.2
  54. sleep 0.2
  55. done &
  56. while true; do
  57. if [ "$1" == "constant" ]; then
  58. read -s -n1 -t 0.05 input
  59. else
  60. read -rsn1 input
  61. fi
  62. if [ "$input" = "w" ]; then
  63. #forward
  64. if [ "$1" == "low_speed" ] || [ "$2" == "low_speed" ]; then
  65. echo -ne "\xaa\x55\x43\x06\x29\x80\xca\x00\x02\xbb" > /dev/ttyUSB0
  66. else
  67. echo -ne "\xaa\x55\x43\x06\x29\x80\xe3\x00\x02\xd4" > /dev/ttyUSB0
  68. fi
  69. elif [ "$input" = "s" ]; then
  70. #reverse
  71. if [ "$1" == "low_speed" ] || [ "$2" == "low_speed" ]; then
  72. echo -ne "\xaa\x55\x43\x06\x29\x80\x3b\x00\x02\x2c" > /dev/ttyUSB0
  73. else
  74. echo -ne "\xaa\x55\x43\x06\x29\x80\x36\x00\x02\x27" > /dev/ttyUSB0
  75. fi
  76. elif [ "$input" = "a" ]; then
  77. #left
  78. echo -ne "\xaa\x55\x43\x06\x29\x76\x81\x00\x02\x68" > /dev/ttyUSB0
  79. elif [ "$input" = "d" ]; then
  80. #right
  81. echo -ne "\xaa\x55\x43\x06\x29\x8a\x81\x00\x02\x7c" > /dev/ttyUSB0
  82. elif [ "$input" = "q" ]; then
  83. #forward left
  84. if [ "$1" == "low_speed" ] || [ "$2" == "low_speed" ]; then
  85. echo -ne "\xaa\x55\x43\x06\x29\x76\xca\x00\x02\xb1" > /dev/ttyUSB0
  86. else
  87. echo -ne "\xaa\x55\x43\x06\x29\x76\xe3\x00\x02\xca" > /dev/ttyUSB0
  88. fi
  89. elif [ "$input" = "e" ]; then
  90. #forward right
  91. if [ "$1" == "low_speed" ] || [ "$2" == "low_speed" ]; then
  92. echo -ne "\xaa\x55\x43\x06\x29\x8a\xca\x00\x02\xc5" > /dev/ttyUSB0
  93. else
  94. echo -ne "\xaa\x55\x43\x06\x29\x8a\xe3\x00\x02\xde" > /dev/ttyUSB0
  95. fi
  96. elif [ "$input" = "z" ]; then
  97. #reverse left
  98. if [ "$1" == "low_speed" ] || [ "$2" == "low_speed" ]; then
  99. echo -ne "\xaa\x55\x43\x06\x29\x76\x3b\x00\x02\x22" > /dev/ttyUSB0
  100. else
  101. echo -ne "\xaa\x55\x43\x06\x29\x76\x36\x00\x02\x1d" > /dev/ttyUSB0
  102. fi
  103. elif [ "$input" = "c" ]; then
  104. #reverse right
  105. if [ "$1" == "low_speed" ] || [ "$2" == "low_speed" ]; then
  106. echo -ne "\xaa\x55\x43\x06\x29\x8a\x3b\x00\x02\x36" > /dev/ttyUSB0
  107. else
  108. echo -ne "\xaa\x55\x43\x06\x29\x8a\x36\x00\x02\x31" > /dev/ttyUSB0
  109. fi
  110. elif [ "$input" = "c" ]; then
  111. echo -ne "\xaa\x55\x43\x06\x29\x80\x80\x00\x02\x71" > /dev/ttyUSB0
  112. elif [ "$input" = "h" ]; then
  113. headlight
  114. elif [ "$input" = "j" ]; then
  115. irled
  116. elif [ "$input" = "x" ]; then
  117. echo -ne "\xaa\x55\x43\x06\x29\x80\x80\x00\x02\x71" > /dev/ttyUSB0
  118. elif [ "$input" = "b" ]; then
  119. /opt/wz_mini/bin/cmd aplay /opt/wz_mini/usr/share/audio/honk.wav 70 > /dev/null 2>&1 &
  120. elif [ "$input" = "1" ]; then
  121. #exit
  122. echo -ne "\xaa\x55\x43\x06\x29\x80\x80\x00\x02\x71" > /dev/ttyUSB0
  123. pkill -9 -f car_control.sh
  124. break
  125. fi
  126. done