● Sonar Sensors

Gazebo 시뮬레이션

uptrasoni sensor 모델링 → 장애물 감지


● sensor_msgs/Range.msg

- 0일 때 = ULTRASOUND

- 1일 때 = INFRARED

- field_of_view = 각도 [rad]

    ex) 좌우 30º = 15[rad]

- float32 min/max_range = 최소/대 측정범위 float32 형태


ultrasonic_array_sensor 다운

파일 위치 참고


sonar_msg_talker.cpp +) 수정

#include <ros/ros.h>
#include <ros/xmlrpc_manager.h>
#include <sensor_msgs/Range.h>
#include <sstream>

char frameid[] ="/sonar_ranger";
//frame name

int main(int argc, char **argv)
{
  ros::init(argc, argv, "Sonar_range_test_pub");
 //Sonar_range_test_pub = node name

  ros::NodeHandle n;
   
  sensor_msgs::Range sonar_msg;
//sonar_msg라는 변수
  
  ros::Publisher pub_sonar1 = n.advertise<sensor_msgs::Range>("/RangeSonar1",1000);

  
  ros::Rate loop_rate(2);
   
  std::cout<<ros::XMLRPCManager::instance()->getServerURI()<<std::endl;
  
  sonar_msg.header.frame_id =  frameid;
  sonar_msg.radiation_type = sensor_msgs::Range::ULTRASOUND;
  sonar_msg.field_of_view = (float)(10.0/180.0) * 3.14;
  sonar_msg.min_range = 0.0;
  sonar_msg.max_range = 3.0; //[m]
  sonar_msg.range = -1.0;

  int count = 0;
  srand(time(NULL)); // random function initilizaition

  while (ros::ok())
  {

    sonar_msg.header.stamp = ros::Time::now();    
    sonar_msg.range = (double)(rand()%30+1)/10;
    ROS_INFO("Sonar range =[%6.3lf]", sonar_msg.range);
    pub_sonar1.publish(sonar_msg);

    ros::spinOnce();
    loop_rate.sleep();
    ++count;
  }

  return 0;
}

터미널

ctw
ctm

결과


roscore

다른 터미널

ctw
rospack list

ultra_sonar_test 등록 확인

rosrun ultra_sonar_test ultra_sonar_test_node

새 터미널

ctw
rostopic list
rostopic echo /RangeSonal1
//rostopic echo /이름

새 터미널

rostopic info /RangeSonar1
//rostopic info /이름

새 터미널

rqt_graph

rqt_graph 창 끔

rqt

Plugins - Topics - Topic Monitor

Topic & Type 정보가 나옴

Topic Monitor 창 끔

rviz

Add(좌측 하단) - By topic - Range

By dispaly type - Range -OK

좌측 Topic - /Rangeonar1

파일 test_catkin_ws/src/ultrasonic_array/sensor/src

frame name 찾기

frame name = /sonar_ranger

'ROS' 카테고리의 다른 글

초음파 센서를 이용한 AEB 구현 1  (0) 2022.09.12
Gazebo 시뮬레이션 구동  (0) 2022.09.06
ROS C++ 기초 3  (0) 2022.08.21
ROS C++ 기초 2  (0) 2022.08.21
ROS C++ 기초 1  (0) 2022.08.20