ROS实验---自己编写发布者节点,发布速度信息控制机器人

#机器人工匠阿杰# #哔哩哔哩#

一、实验背景

         消息通讯是ROS操作系统的工作方式,具体内容去看阿杰 他说的比我好。
         

二、实验目的

        通过发送正确格式的消息指令,控制仿真机器人实现制定速度运动。

三、实验原理

        发布者不停地往一个话题里发布信息,一个订阅者不停地等待着接受信息。

        机器人会接收到一个/cmd_vel话题的速度信息,然后控制底盘运动。

        我们只要实现创建一个速度发布者向/cmd_vel发送消息即可。

        创建的流程:   初始化ros节点-创建一ros节(相当于从ros大管家那要一个发送消息的权限)-创建一个发布者 自定义一个发布者的名字 用手机发布消息的类型 发送到哪个话题 消息排队的长度-然后自定义消息包的内容(注意格式)-设置一个循环函数ROS::Rate r(数字)-设置一个while()可以一直发送消息-添加可执行文件Cmake。别忘记编译,如果有问题检查一下环境变量是否正确。

        打开机器人仿真实例:wpr_simulation wpb_simple 用roslaunch打开

                                              在终端运行:roslaunch wpr_simulation wpb_simple.launch

       打开自定义的消息发送节点

四、实验过程

创建功能包:

cd catkin_ws  //进入工作空间目录
cd src        //进入功能包源文件节夹
catkin_make_create vel_pkg roscpp rospy geomtry_msgs  //用catkin_make_create命令创建一个名为vel_pkg的功能包 这个功能包的实现依赖于roscpp rospy和geomtry_msgs消息包

编写源代码:

进入vscode 在src/vel_pkg/src下新建一个文本vel_node.cpp文件 编写源代码//

也可以在vel_pkg下的src里边直接建一个文本编写c代码//

还不想写可以直接复制wpr_simulation/src/dome_vel_ctrl 文件代码到vel_node.cpp里。

这是我写的

#include<ros/ros.h>
#include<geometry_msgs/Twist.h>

int main(int argc, char  *argv[])
{
    ros::init(argc,argv,"vel_node");
    ros::NodeHandle n;

    ros::Publisher vel_pub = n.advertise<geometry_msgs::Twist>("/cmd_vel",10);

    geometry_msgs::Twist vel_msg;
    vel_msg.linear.x = 0.1;
    vel_msg.linear.y = 0;
    vel_msg.linear.z = 0;
    vel_msg.angular.x = 0;
    vel_msg.angular.y = 0;
    vel_msg.angular.z = 0;

    ros::Rate r(30);

    while (ros::ok())
    {
        vel_pub.publish(vel_msg);
        r.sleep();
        /* code */
    }
    

        return 0;
}

这里边出现了许多问题:

(1)拼写错误:ros::Publisher vel_pub = n.advertise<geometry_msgs::Twist>("/cmd_vel",10);

                        Publisher P要大写

(2)格式错误:ros::Publisher vel_pub = n.advertise<geometry_msgs::Twist>("/cmd_vel",10);

                           ros::Publisher vel_pub   //创建消息发送者vel_pub

                           n.advertise<geometry_msgs::Twist>("/cmd_vel",10);//发布geometry_msgs消息包里twist类型的消息包到"/cmd_vel"话题 ,我当时只填了一个消息包名,没指定哪一种类型。

五、实验结果

        成功运行,不过Gazebo在运行时还是会报错,但不影响正常运行,可能是电脑的问题吧。

六、实验思考

         早晨起来干活就是比晚上效率高,出现问题了原路径尝试一次就好了,仿佛尝试就不聪明了。思考可能出现问题的地方能加深对系统的理解。

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值