arduino
/* * rosserial Time and TF * Publishes a transform at current time */ #include <ros.h> #include <ros/time.h> #include <tf/transform_broadcaster.h> ros::NodeHandle nh; geometry_msgs::TransformStamped t; tf::TransformBroadcaster broadcaster; char base_link[] = "/base_link"; char odom[] = "/odom"; void setup() { nh.initNode(); broadcaster.init(nh); } void loop() { t.header.frame_id = odom; t.child_frame_id = base_link; t.transform.translation.x = 1.0; t.transform.rotation.x = 0.0; t.transform.rotation.y = 0.0; t.transform.rotation.z = 0.0; t.transform.rotation.w = 1.0; t.header.stamp = nh.now(); broadcaster.sendTransform(t); nh.spinOnce(); delay(10); }
#include <ros.h> #include <ros/time.h> #include <tf/transform_broadcaster.h>
geometry_msgs::TransformStamped t; tf::TransformBroadcaster broadcaster; char base_link[] = "/base_link"; char odom[] = "/odom";
broadcaster.init(nh);
t.header.frame_id = odom; t.child_frame_id = base_link; t.transform.translation.x = 1.0; t.transform.rotation.x = 0.0; t.transform.rotation.y = 0.0; t.transform.rotation.z = 0.0; t.transform.rotation.w = 1.0;
t.header.stamp = nh.now();
broadcaster.sendTransform(t); nh.spinOnce(); delay(10); }
最后发布了变换,并且在再次发布前调用了spinOnce和延迟函数。
接下来运行程序,首先在arduino IDE中点击upload按钮。
接着接着运行roscore:
roscore
rosrun rosserial_python serial_node.py /dev/ttyACM0
rosrun tf tf_echo odom base_link