ros机器人实例,ros机器人开发教程
这部分可以参考之前案例:
罗斯编程(ETH)2018更新版习题说明(三)_张接力的博客
遥控肯定没难度,但是精度也很差哦。
获取目标位置与当前位置之间的误差,用于机器人运动控制。
假定目标x=10.0 y=1.5,求解机器人控制速度?
获取位置:
#包含罗斯/罗斯. h
#包含" turtlesim/Pose.h "
void Pose回调(const turtle sim:Pose:const ptr msg)
{
ROS_INFO(乌龟姿势:x:%0.6f,y:%0.6f ,msg- x,msg-y);
}
int main(int argc,char **argv)
{
ros:init(argc,argv, pose _ subscriber );
ROS:节点句柄n;
ROS:Subscriber pose _ sub=n . subscribe(/turtle 1/pose ,10,pose回调);
ROS:spin();
返回0;
}发布速度:
#包含罗斯/罗斯. h
#包含几何图形_msgs/Twist.h
int main(int argc,char **argv)
{
ros:init(argc,argv, velocity _ publisher );
ROS:节点句柄n;
ROS:Publisher turtle _ vel _ pub=n . advertise geometry _ msgs:Twist(/turtle 1/cmd _ vel ,10);
ROS:Rate loop _ Rate(10);
int count=0;
while (ros:ok())
{
geometry _ msgs:Twist vel _ msg;
vel _ msg。线性。x=0.5
vel _ msg。棱角分明。z=0.2
乌龟_ vel _ pub。发布(vel _ msg);
ROS _ INFO(发布海龟速度命令[%0.2f米/秒,% 0.2f弧度/秒],
x,vel_msg。棱角分明。z);
loop _ rate睡眠();
}
返回0;
}暴力揉到一起…………………………不推荐……………………
#包含罗斯/罗斯. h
#包含几何图形_msgs/Twist.h
#包含" turtlesim/Pose.h "
float goal_x=10.0,goal_y=1.5,vel_x=0,vel _ z=0;
void Pose回调(const turtle sim:Pose:const ptr msg)
{
ROS_INFO(乌龟姿势:x:%0.6f,y:%0.6f ,msg- x,msg-y);
vel_x=(目标_ x-消息-x)/8.0;
vel _ z=(goal _ y-msg-y)/40.0;
}
int main(int argc,char **argv)
{
ros:init(argc,argv, pose _ sub _ vel _ pub );
ROS:节点句柄n;
ROS:Subscriber pose _ sub=n . subscribe(/turtle 1/pose ,10,pose回调);
ROS:Publisher turtle _ vel _ pub=n . advertise geometry _ msgs:Twist(/turtle 1/cmd _ vel ,10);
ROS:Rate loop _ Rate(10);
int count=0;
geometry _ msgs:Twist vel _ msg;
vel _ msg。线性。x=0.0
vel _ msg。棱角分明。z=0.0
while (ros:ok())
{
vel _ msg。线性。x=vel _ x
vel _ msg。棱角分明。z=vel _ z
乌龟_ vel _ pub。发布(vel _ msg);
ROS _ INFO(发布海龟速度命令[%0.2f米/秒,% 0.2f弧度/秒],
x,vel_msg。棱角分明。z);
ROS:spin once();
loop _ rate睡眠();
}
返回0;
}更好用的代码需要自己研究哦。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。