11. PIBOT的控制及校准

1. 运动控制

1.1 键盘控制

输入下面命令启动驱动

roslaunch pibot_bringup bringup.launch

输入命令启动键盘控制

roslaunch pibot keyboard_teleop.launch


根据提示可以控制全向的Zues和差分的Apollo小车

1.2 手柄控制

连接手柄

连接手柄至电脑或者Raspberry Pi 3
ls /dev/input/js* -l
joystick

测试手柄

sudo jstest /dev/input/js0

手柄控制

差分小车

roslaunch pibot_bringup joystick.launch

全向小车

roslaunch pibot_bringup joystick.launch holonomic:=true

joystick.launch
joystick.config.yaml

1.3 App控制

打开app,输入小车ip地址连接后即可控制

2. 里程校准

2.1 linear_calibrate

启动校准

rosrun pibot calibrate_linear.py


按照提示启动rqt_reconfigure

切换到calibrate_linear选项, 勾选start_test即可开始测试。小车按照设置的速度(speed),向前运动设定的距离(test_distance),误差不超过设定值(tolerance)

odom_linear_scale_correction为比例参数,设为默认1即可

调整参数

用尺子测量小车实际行径距离,如果与test_distance相差较大,则需要调整相关参数
对于2轮差分Apollo
differential.h

	void get_odom(struct Odom* odom, float* motor_dis, unsigned long interval)
	{
		float dxy_ave = (-motor_dis[0] + motor_dis[1]) / 2.0;
		float dth = (motor_dis[0] + motor_dis[1]) / (2* body_radius);
		float vxy = 1000 * dxy_ave / interval;
		float vth = 1000 * dth / interval;

		odom->vel_x = vxy;
		odom->vel_y = 0;
		odom->vel_z = vth;
		float dx = 0, dy = 0;
		if (motor_dis[0] != motor_dis[1])
		{
			dx = cos(dth) * dxy_ave;
			dy = -sin(dth) * dxy_ave;
			odom->x += (cos(odom->z) * dx - sin(odom->z) * dy);
			odom->y += (sin(odom->z) * dx + cos(odom->z) * dy);;
		}

		if (motor_dis[0] + motor_dis[1] != 0)
			odom->z += dth;
	}

单独向前是motor_dis[0] + motor_dis[1]应该为0

左轮向后motor_dis[0]为正,右轮向前为正

容易得到odom->x因为(-motor_dis[0] + motor_dis[1]) / 2.0,而motor_dis[0], motor_dis[1]跟一周编码器个数和轮子的直接相关,在假定一周编码器个数恒定情况下,即只与轮子直接相关

这也是为什么先进行linear_calibrate的原因

如果实际测量值<test_distance,应该如何调整轮子直径,调大?调小?

即例如实际行走了0.8m,计算出来的为1m,odom->x大了,即用来计算直径的参数大了,应该减小直径。

2.2angular_calibrate

启动校准

rosrun pibot calibrate_angular.py

出现ImportError: No module named PyKDL错误需要 sudo apt-get install ros-kinetic-kdl-parser-py

按照提示启动rqt_reconfigure

切换到calibrate_angular选项, 勾选start_test即可开始测试。小车按照设置的速度(speed),旋转设定的角度(test_angle),误差不超过设定值(tolerance)

odom_linear_scale_correction为比例参数,设为默认1即可

调整参数

观察设计旋转的角度,如果与test_angle相差较大,则需要调整相关参数
对于2轮差分Apollo
differential.h

	void get_odom(struct Odom* odom, float* motor_dis, unsigned long interval)
	{
		float dxy_ave = (-motor_dis[0] + motor_dis[1]) / 2.0;
		float dth = (motor_dis[0] + motor_dis[1]) / (2* body_radius);
		float vxy = 1000 * dxy_ave / interval;
		float vth = 1000 * dth / interval;

		odom->vel_x = vxy;
		odom->vel_y = 0;
		odom->vel_z = vth;
		float dx = 0, dy = 0;
		if (motor_dis[0] != motor_dis[1])
		{
			dx = cos(dth) * dxy_ave;
			dy = -sin(dth) * dxy_ave;
			odom->x += (cos(odom->z) * dx - sin(odom->z) * dy);
			odom->y += (sin(odom->z) * dx + cos(odom->z) * dy);;
		}

		if (motor_dis[0] + motor_dis[1] != 0)
			odom->z += dth;
	}

旋转是odom->zdth累加即 (motor_dis[0] + motor_dis[1]) / (2* body_radius)

先前完成了linear_calibrate(motor_dis[0] + motor_dis[1])就固定了,现在odom->z就只与body_radius相关,且为反比关系

如果实际观察角度<test_angle,应该如何调整轮子间距,调大?调小?

即例如实际行走了345°,计算出来的为360°,odom->z大了即body_radius小了(反比),应该增加body_radius

3备注

上述为差分轮apollo的参数调整,zueshadeshera也类似

如果实在搞不清楚应该调大参数还是调小,那就调整参数直接测试,观察结果,这样直接也同样高效

### 回答1: 校准是指通过对触摸屏进行一系列操作和调整,使其能够准确地感知和响应手指或其他触摸操作。在Qt5.9.9中,tslib1.22是一个触摸屏校准工具。 校准触摸屏可以提高触摸精度和准确性,使得用户在使用触摸屏设备时能够更加方便和流畅地进行操作。校准旨在消除触摸屏的误差和漂移,确保触摸点与实际点击位置一致。 在Qt5.9.9中,使用tslib1.22进行触摸屏校准的步骤如下: 1. 确保系统已经安装了tslib1.22。如果没有安装,可以通过包管理器或在官方网站上下载并安装。 2. 打开终端或命令行界面,并进入tslib1.22安装目录。 3. 运行命令"calibrate",启动触摸屏校准工具。 4. 根据屏幕上的指示,依次点击几个目标点,使校准工具准确计算出触摸屏的误差和漂移。 5. 完成所有目标点的点击后,校准工具将显示校准结果。 6. 根据校准工具的指示,确认校准结果是否满意。 7. 如果满意,保存校准结果,并重启系统使之生效。 8. 如果不满意,可以重新进行校准,或者调整校准参数,直到满意为止。 通过使用tslib1.22进行触摸屏校准,可以提高触摸屏的精度和准确性,为用户提供更好的触摸体验。不同设备可能有不同的校准步骤或工具,可以根据具体情况选择合适的方法进行校准。 ### 回答2: 校准在qt5.9.9中是通过tslib1.22实现的。Qt是一款跨平台的开发框架,它允许开发者使用C++编写高效且易于维护的应用程序。而tslib是一个触摸屏校准工具,用于校准触摸屏设备。 在qt5.9.9的安装过程中,tslib1.22是一个常用的工具,它能够检测触摸屏的坐标并进行校准,以确保在使用触摸屏进行交互时,触摸点的准确性和精度。 校准过程主要分为三个步骤:采集样本、计算参数和应用参数。 首先,通过ts_calibrate命令行工具或者使用图形界面的Qt触摸屏校准程序进行采集样本。在这个步骤中,用户需要按照指示在屏幕上轻触几个指定的位置,以获取屏幕的触摸信息。 接下来,根据采集到的样本数据,计算出校准参数。这些参数将用于校准算法,以进行更准确的触摸点转换。 最后,应用参数到系统中,以使系统能够正确地将触摸点转换为屏幕上的坐标。这样,在使用触摸屏设备时,就能够获得准确和精确的触摸体验。 总的来说,通过在qt5.9.9中使用tslib1.22进行校准,可以很好地提高触摸屏设备的准确性。这样,用户在使用触摸屏进行交互时将获得更好的用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值