car_control.sh 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  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: use 1 to quit ASAP!"
  17. echo -e ""
  18. echo "Ready!"
  19. trap control_c SIGINT
  20. control_c()
  21. {
  22. echo -ne "\xaa\x55\x43\x06\x29\x80\x80\x00\x02\x71" > /dev/ttyUSB0
  23. echo "control-c KILL"
  24. pkill -9 -f car_control.sh
  25. }
  26. #idle background loop
  27. while true; do
  28. echo -ne "\xaa\x55\x43\x06\x29\x80\x80\x00\x02\x71" > /dev/ttyUSB0
  29. #fw sends 0.2
  30. sleep 0.2
  31. done &
  32. while true; do
  33. if [ "$1" == "constant" ]; then
  34. read -s -n1 -t 0.05 input
  35. else
  36. read -rsn1 input
  37. fi
  38. if [ "$input" = "w" ]; then
  39. #forward
  40. if [ "$1" == "low_speed" ] || [ "$2" == "low_speed" ]; then
  41. echo -ne "\xaa\x55\x43\x06\x29\x80\xca\x00\x02\xbb" > /dev/ttyUSB0
  42. else
  43. echo -ne "\xaa\x55\x43\x06\x29\x80\xe3\x00\x02\xd4" > /dev/ttyUSB0
  44. fi
  45. elif [ "$input" = "s" ]; then
  46. #reverse
  47. if [ "$1" == "low_speed" ] || [ "$2" == "low_speed" ]; then
  48. echo -ne "\xaa\x55\x43\x06\x29\x80\x3b\x00\x02\x2c" > /dev/ttyUSB0
  49. else
  50. echo -ne "\xaa\x55\x43\x06\x29\x80\x36\x00\x02\x27" > /dev/ttyUSB0
  51. fi
  52. elif [ "$input" = "a" ]; then
  53. #left
  54. echo -ne "\xaa\x55\x43\x06\x29\x76\x81\x00\x02\x68" > /dev/ttyUSB0
  55. elif [ "$input" = "d" ]; then
  56. #right
  57. echo -ne "\xaa\x55\x43\x06\x29\x8a\x81\x00\x02\x7c" > /dev/ttyUSB0
  58. elif [ "$input" = "q" ]; then
  59. #forward left
  60. if [ "$1" == "low_speed" ] || [ "$2" == "low_speed" ]; then
  61. echo -ne "\xaa\x55\x43\x06\x29\x76\xca\x00\x02\xb1" > /dev/ttyUSB0
  62. else
  63. echo -ne "\xaa\x55\x43\x06\x29\x76\xe3\x00\x02\xca" > /dev/ttyUSB0
  64. fi
  65. elif [ "$input" = "e" ]; then
  66. #forward right
  67. if [ "$1" == "low_speed" ] || [ "$2" == "low_speed" ]; then
  68. echo -ne "\xaa\x55\x43\x06\x29\x8a\xca\x00\x02\xc5" > /dev/ttyUSB0
  69. else
  70. echo -ne "\xaa\x55\x43\x06\x29\x8a\xe3\x00\x02\xde" > /dev/ttyUSB0
  71. fi
  72. elif [ "$input" = "z" ]; then
  73. #reverse left
  74. if [ "$1" == "low_speed" ] || [ "$2" == "low_speed" ]; then
  75. echo "low speed"
  76. echo -ne "\xaa\x55\x43\x06\x29\x76\x3b\x00\x02\x22" > /dev/ttyUSB0
  77. else
  78. echo "hi speed"
  79. echo -ne "\xaa\x55\x43\x06\x29\x76\x36\x00\x02\x1d" > /dev/ttyUSB0
  80. fi
  81. elif [ "$input" = "c" ]; then
  82. #reverse right
  83. if [ "$1" == "low_speed" ] || [ "$2" == "low_speed" ]; then
  84. echo -ne "\xaa\x55\x43\x06\x29\x8a\x3b\x00\x02\x36" > /dev/ttyUSB0
  85. else
  86. echo -ne "\xaa\x55\x43\x06\x29\x8a\x36\x00\x02\x31" > /dev/ttyUSB0
  87. fi
  88. elif [ "$input" = "c" ]; then
  89. echo -ne "\xaa\x55\x43\x06\x29\x80\x80\x00\x02\x71" > /dev/ttyUSB0
  90. elif [ "$input" = "1" ]; then
  91. #exit
  92. echo -ne "\xaa\x55\x43\x06\x29\x80\x80\x00\x02\x71" > /dev/ttyUSB0
  93. pkill -9 -f car_control.sh
  94. break
  95. fi
  96. done