前提・実現したいこと
今大学の演習でROSについて学んでいるのですが、その中でsetMoveVector関数の引数の受け渡しについて疑問があり投稿させてもらいました。
まず自分の理解ができていればsetMoveVector関数の中にはfloat型のliner_xとint型のcntがあること。そしてその中には教科書を見る限り恐らく(0,1)がそれぞれ収まっていることがわかります。しかしこの(0,1)はプログラミングにおいてどこで引き渡されたものなのでしょうか。具体的に行数等を教えていたいただいたりはできますでしょうか?そしてこの引数の値を変更することは可能でしょうか?
該当のソースコード
1. #include "ros/ros.h" 2. #include <geometry_msgs/Twist.h> 3. #include <turtlesim/Pose.h> 4. 5. class turtleSim{ 6. public: 7. turtleSim(); 8. ~turtleSim(); 9. void poseCallback(const turtlesim::PoseConstPtr& pose); 10. void setMoveVector(float linear_x, int cnt); 11. void timerCallback(const ros::TimerEvent&); 12. 13. private: 14. ros::Publisher twist_pub; 15. ros::Subscriber pose_sub; 16. ros::Timer timer; 17. ros::NodeHandle nh; 18. }; 19. 20. turtleSim::turtleSim(){ 21. twist_pub = nh.advertise<geometry_msgs::Twist>("turtle1/cmd_vel", 1000); 22. pose_sub = nh.subscribe<turtlesim::Pose>("turtle1/pose", 1, &turtleSim::poseCallback, this); 23. timer = nh.createTimer(ros::Duration(0.1), &turtleSim::timerCallback, this); 24. 25. geometry_msgs::Twist twist; 26. twist.linear.x = 0.0; 27. twist.linear.y = 0.0; 28. twist.linear.z = 0.0; 29. twist.angular.x = 0.0; 30. twist.angular.y = 0.0; 31. twist.angular.z = 0.0; 32. twist_pub.publish(twist); 33. } 34. 35. turtleSim::~turtleSim(){ 36. 37. } 38. 39. void turtleSim::poseCallback(const turtlesim::PoseConstPtr& pose){ 40. ROS_INFO("x:%f",pose->x); 41. } 42. 43. void turtleSim::timerCallback(const ros::TimerEvent&){ 44. setMoveVector(0.2, 10); 45. setMoveVector(-0.2, 10); 46. } 47. 48. void turtleSim::setMoveVector(float linear_x, int cnt){ 49. int i; 50. geometry_msgs::Twist twist; 51. ros::Rate loop_rate(10); 52. 53. for(i = 0;i < cnt; i++){ 54. twist.linear.x = linear_x; 55. twist_pub.publish(twist); 56. loop_rate.sleep(); 57. } 58. } 59. 60. int main(int argc, char **argv){ 61. ros::init(argc, argv, "move_turtlesim"); 62. 63. turtleSim turtlesim; 64. 65. ros::spin(); 66. return 0; 67. } 68.
補足情報(FW/ツールのバージョンなど)
今の環境としては、言語はC++でvimを使用して書いています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/10 01:58