차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
| activity:public:2021:ros:9 [2021/11/18 20:03:16] – [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/ | ||