前提・実現したいこと
ros上のsrcフォルダにあるc++で書かれたコードをpythonに書き直した場合そのまま実行できるでしょうか。 (LRFを動かすためのコードです)
またc++からpythonに変換したい
発生している問題・エラーメッセージ
下記のソースコードをpythonコードに変換したい
該当のソースコード
/*
- YDLIDAR SYSTEM
- YDLIDAR ROS Node Client
- Copyright 2015 - 2018 EAI TEAM
- http://www.ydlidar.com
*/
#include "ros/ros.h"
#include "sensor_msgs/LaserScan.h"
#define RAD2DEG(x) ((x)*180./M_PI)
float arr[530];
float degarr[530];
int c;
void scanCallback(const sensor_msgs::LaserScan::ConstPtr& scan)
{
int count = scan->scan_time / scan->time_increment; float arrx[530]; float deg[530]; printf("[YDLIDAR INFO]: I heard a laser scan %s[%d]:\n", scan->header.frame_id.c_str(), count); printf("[YDLIDAR INFO]: angle_range : [%f, %f]\n", RAD2DEG(scan->angle_min), RAD2DEG(scan->angle_max)); for(int i = 0; i < count; i++) { if (c == 0){ if(i ==0){ arr[i] = scan->ranges[i]; } else{ /*LPF*/ arr[i] = 0.9*scan->ranges[i-1]+0.1*scan->ranges[i]; } degarr[i]=RAD2DEG(scan->angle_min + scan->angle_increment * i); }else{ if(i ==0){ arrx[i] = scan->ranges[i]; } else{ /*LPF*/ arrx[i] = 0.9*scan->ranges[i-1]+0.1*scan->ranges[i]; } deg[i] = RAD2DEG(scan->angle_min + scan->angle_increment * i); } printf(" 0:degree:%f distance:%f n:degree:%f distance:%f\n",degarr[i],arr[i],deg[i],arrx[i]); } c++;
}
int main(int argc, char **argv)
{
ros::init(argc, argv, "ydlidar_client_test");
ros::NodeHandle n;
ros::Subscriber sub = n.subscribe<sensor_msgs::LaserScan>("/scan", 1000, scanCallback);
ros::spin();
c = 0; return 0;
}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。