ros+arduino学习(五):ros发布消息控制舵机之二(arduino做下位机)(程序控制)Nanopi k2

 

 

上一篇文章中,我们通过在终端用命令行发布一条ROS话题消息来通知下位机控制舵机运动。

在这一篇文章中,我们学习一下通过程序自动发布消息来控制舵机运动。

我们可以使用nanopi k2当作上位机来使用,这里暂时还是使用虚拟机,一切调试好之后可以一起部署到nanopi上面。

下位机还是一样的用arduino,arduino程序也没有变化。

1.首先,我们创建一个功能包并添加好依赖:

下方为示意图,实际上依赖只需要roscpp和std_msgs即可

2.创建publish_servo.cpp程序并编写程序(程序如下,可以直接复制使用):

#include <ros/ros.h>
#include <std_msgs/UInt16.h>

int main(int argc,char**argv)
{
    ros::init(argc,argv,"publish_servo");
    ros::NodeHandle n;
    //ros::Publisher turtle_vel_pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel",10);
    //turtle_vel_pub是发布者,advertise()函数用于向ros master也就是ros管理器声明我要发布一个cmd_vel的话题
    ros::Publisher servo_publisher = n.advertise<std_msgs::UInt16>("servo_led",10);
    //servo_publisher是发布者
    ros::Rate loop_rate(10);
    std_msgs::UInt16 servo_msg;
    while(ros::ok())
    {
        servo_msg.data=30;
         servo_publisher.publish(servo_msg);

        /*
        for(servo_msg.data=0;servo_msg.data<180;servo_msg.data++)
        {
            servo_publisher.publish(servo_msg);

        }
        for(servo_msg.data=180;servo_msg.data>0;servo_msg.data--)
        {
            servo_publisher.publish(servo_msg);
        }
        //ROS_INFO("Publish turtle velocity command[%0.2f m/s,%0.2f rad/s]",vel_msgs.linear.x,vel_msgs.angular.z);
        */
        loop_rate.sleep();
    }
    return 0;
}

 3.更改CMakeLists.txt文件,增加编译项。

add_executable(publish_servo src/publish_servo.cpp)
target_link_libraries(publish_servo ${catkin_LIBRARIES})

 然后还是跟上一篇文章一样,但是在终端命令行无需手动发布消息,只需要执行publish_servo程序即可看到舵机从0度转到180度,再从180度转回来。

rosrun publish_servo publish_servo

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Allen953

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值