一.驱动小乌龟
先打开一个节点
rosrun turtlesim turtlesim_node
接着输入
rostopic pub /turtle1/cmd_vel geometry_msgs/Twist "linear:
x: 2.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 1.0"
接受到命令后小乌龟做了什么呢?
答案是:在一段规定的时间内完成了x方向前进2和z旋转1,他会把每个动作分别平均拆解到时间内,并且多个动作同时进行.这样我们视觉里就是小乌龟完成了一个弧形的左转(如果这个弧形继续补充则可以连成一个圆)
而且这个动作并不是以世界坐标系为原点来做行动计划.而是以小乌龟接受到命令的这一时刻所在的"乌龟"坐标作为行动原点.
后续:笔者在现实的小车上又做了尝试,发现似乎和小乌龟不太一样.这个linear似乎更象是线速度的意思,而angular是角速度.
二.驱动Gazebo中的对象
(这个发出的移动暂时不确定是不是以机器人坐标为原点)
后面发现:simulator中gazebo_msg其实也是从cmd_vel这里数据变化过来的,但是具体gazebo这个咋用还不是很懂.
方法一:
ros::Publisher pubModelState = nh.advertise<gazebo_msgs::ModelState>("/gazebo/set_model_state", 5);
gazebo_msgs::ModelState cameraState;
cameraState.model_name = "camera";
cameraState.pose.orientation = geoQuat;
cameraState.pose.position.x = vehicleX;
cameraState.pose.position.y = vehicleY;
cameraState.pose.position.z = vehicleZ + cameraOffsetZ;
pubModelState.publish(cameraState);
方法二:
rostopic pub -r 20 /gazebo/set_model_state gazebo_msgs/ModelState '{model_name: coke_can1, pose: { position: { x: 1, y: 0, z: 2 }, orientation: {x: 0, y: 0.491983115673, z: 0, w: 0.870604813099 } }, twist: { linear: { x: 0, y: 0, z: 0 }, angular: { x: 0, y: 0, z: 0} }, reference_frame: world }'
似乎只用更改pose内容就可以了,twist暂时不知道是什么东西.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)