차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 | |||
activity:public:2021:ros:9 [2021/11/18 20:04:14] – [1.2. 아두이노 IDE 코딩] 99dohyung | activity:public:2021:ros:9 [2021/11/18 20:06:04] (현재) – [1.2. 아두이노 IDE 코딩] 99dohyung | ||
---|---|---|---|
줄 1: | 줄 1: | ||
+ | ======ROS STUDY #9 : ROS SERIAL RC카====== | ||
+ | =====1. Arduino ===== | ||
+ | ====1.1. 환경설정==== | ||
+ | 혹시 아두이노 ROS_lib가 깔리지 않은 분들은, 8강 "5.ROS SERIAL 설치" | ||
+ | [[https:// | ||
+ | |||
+ | ====1.2. 아두이노 IDE 코딩==== | ||
+ | <sxh c> | ||
+ | #include < | ||
+ | #include < | ||
+ | ros:: | ||
+ | |||
+ | #define MOTOR_A_a 3 | ||
+ | #define MOTOR_A_b 11 | ||
+ | #define MOTOR_B_a 5 | ||
+ | #define MOTOR_B_b 6 | ||
+ | |||
+ | unsigned char m_a_spd = 0, m_b_spd = 0; //변수 초기화 | ||
+ | |||
+ | void velocityCB(const geometry_msgs:: | ||
+ | |||
+ | // | ||
+ | m_a_spd = velocity.linear.x; | ||
+ | m_b_spd = velocity.linear.y; | ||
+ | } | ||
+ | |||
+ | ros:: | ||
+ | |||
+ | void setup() { | ||
+ | |||
+ | pinMode(MOTOR_A_a, | ||
+ | pinMode(MOTOR_A_b, | ||
+ | pinMode(MOTOR_B_a, | ||
+ | pinMode(MOTOR_B_b, | ||
+ | |||
+ | //init rosserial node | ||
+ | nh.initNode(); | ||
+ | //init subscribe node | ||
+ | nh.subscribe(sub1); | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | |||
+ | digitalWrite(MOTOR_A_a, | ||
+ | analogWrite(MOTOR_A_b, | ||
+ | digitalWrite(MOTOR_B_a, | ||
+ | analogWrite(MOTOR_B_b, | ||
+ | | ||
+ | nh.spinOnce(); | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | =====2. 실행시키기 ===== | ||
+ | ====2.1. ROSCORE 실행==== | ||
+ | <sxh bash> | ||
+ | roscore | ||
+ | </ | ||
+ | ====2.2. ROS SERIAL 실행==== | ||
+ | <sxh bash> | ||
+ | rosrun rosserial_python serial_node.py __name: | ||
+ | // | ||
+ | </ | ||
+ | ====2.3. 토픽 퍼블리시==== | ||
+ | <sxh bash> | ||
+ | rostopic pub cmd_vel | ||
+ | </ | ||
+ | ** 원래 cmd_vel linear 첫번째와 두번째 자리는 x, y축 직선속도(m/ |