● 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 |