上位机(Ubuntu)与下位机(Arduino)通讯控制机器人前轮转角

 实现基础:1、上位机、下位机通讯;2、ROS读取前轮转角传感器速度

​​​​​​​​​​​​​​上位机系统Ubuntu 20.04与下位机arduino UNO通讯_可见一班的博客-CSDN博客

读取拉线位移传感器(RS485协议)的ROS驱动包_可见一班的博客-CSDN博客


方案一:判断了旋转方向就向下位机发布指令,可以实现转向,但是会出现咯噔咯噔的卡顿现象,因为下位机接收到了指令频率太高了。

方案二:在上个方案的基础上增加判断条件,也就是电机工作状态量,用大小为2的队列实现。核心代码如下,需结合前两篇博客使用:

queue<int> q;
int windowSize = 2; // 滤波窗口大小(可以根据自己需要改)

//回调函数包括: 
   if(q.size()<2){
		key_c.data = q.back();
		key_publisher.publish(key_c);
		ROS_INFO("First!");
	}
	else
	{
		int diff = q.back() - q.front();
		if (diff != 0){
			key_c.data = q.back();
			key_publisher.publish(key_c);
			ROS_INFO("state change!");
		}
	}

//主函数:
int main(int argc, char  **argv)
{
	
	ros::init(argc, argv, "steer_control");
	ros::NodeHandle nh;

	key_publisher = nh.advertise<std_msgs::UInt16>("key_command", 10);
	laxian_sub = nh.subscribe("/steering_angle", 10, steer_callback);
	

	ros::spin();
	return 0;
}

参考:

ROS里在回调函数里获取前后两帧(多帧)数据的差值_辉——书生意气的博客-CSDN博客

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

可见一班

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

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

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

打赏作者

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

抵扣说明:

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

余额充值