[[neurali:husky]] esempio di nodo #include #include //contiene tipi messaggi #include //contiene tipi messaggi class TeleopTurtle // contenitore di un oggetto nodo { public: TeleopTurtle(); //costruttore e inizializzatore campi dell'oggetto nodo!! private: void joyCallback(const sensor_msgs::Joy::ConstPtr& joy); //legge un joy e pubblica il msg //ros::NodeHandle nh("my_namespace"); ros::NodeHandle nh_; // oggetto nodo!!!!!!!!!! int linear_, angular_; // inizializzati a 1 e 2 double l_scale_, a_scale_; ros::Publisher vel_pub_; // conterra' ros::Subscriber joy_sub_; }; TeleopTurtle::TeleopTurtle(): linear_(1), angular_(2) { // i param sono in un dizionario gestito nel server nh_.param("axis_linear", linear_, linear_); // legge un param, ma se non lo trova mette un suo default nh_.param("axis_angular", angular_, angular_); nh_.param("scale_angular", a_scale_, a_scale_); nh_.param("scale_linear", l_scale_, l_scale_); // comunica a master che ci sara' un topic con 1 valore // restituisce un Publisher necessario alla successiva pubblicazione vel_pub_ = nh_.advertise("turtle1/cmd_vel", 1); // segnala interesse a ricevere su un topic "joy" // ogni mess. ricevuto รจ passato a TeleopTurtle::joyCallback a cui e' passato // l'oggetto nh_ //This message should not be changed in place, as it is shared with any other subscriptions to this topic. joy_sub_ = nh_.subscribe("joy", 10, &TeleopTurtle::joyCallback, this); // ros::Rate loop_rate(10); // la frequenza di pubblicazione in Hz } void TeleopTurtle::joyCallback(const sensor_msgs::Joy::ConstPtr& joy) //ricez. vera e propria { while (ros::ok()) { geometry_msgs::Twist vel; vel.angular = a_scale_*joy->axes[angular_]; vel.linear = l_scale_*joy->axes[linear_]; vel_pub_.publish(vel); // std_msgs::String msg; // per avere un testo come messaggio // msg.data = "hello world " + parole; // ROS_INFO("%s", msg.data.c_str()); // printf migliorato... // pubblicatore.publish(msg); loop_rate.sleep(); } } int main(int argc, char** argv) { ros::init(argc, argv, "teleop_turtle"); TeleopTurtle teleop_turtle; ros::spin(); // senza questa la funzione joyCallback non verrebbe chiamata }