Rossum--slam的后记

     首先我们看看Rossum的ROS系统流程图.

                                    


    在进行slam的过程中,里程数据通过单片机上传给电脑端的ardros节点,经过tf全局变换后将单片机得到的当前坐标变换为全局坐标,然后发送至ROS master上,此时ROS master 同时接收来自kinect模拟激光测距仪的距离数据,这时就满足了slam运行的基本条件.

     在真实运行过程中,slam的精度问题很大成分上取决于里程数据的精确性,同时计算过程中一些物理参数的测量的也十分重要,比如轮距,编码器分辨率,等等物理参数得适当调整,编码器的选取也是重要的,直接影响了你机器人的自身定位的准确性,Rossum所用的是16线的编码器,精度有限,推荐使用至少64线的编码器,这样机器人自身定位过程中的分辨率就可以很大的提高。

     以下是里程数据的tf变换与发布的代码实现:

 

			# First, we'll publish the transform from frame odom to frame base_link over tf
			# Note that sendTransform requires that 'to' is passed in before 'from' while
			# the TransformListener' lookupTransform function expects 'from' first followed by 'to'.
			self._OdometryTransformBroadcaster.sendTransform(
				(x, y, 0), 
				(quaternion.x, quaternion.y, quaternion.z, quaternion.w),
				rosNow,
				"base_link",
				"odom"
				)

			# next, we'll publish the odometry message over ROS
			odometry = Odometry()
			odometry.header.frame_id = "odom"
			odometry.header.stamp = rosNow
			odometry.pose.pose.position.x = x
			odometry.pose.pose.position.y = y
			odometry.pose.pose.position.z = 0
			odometry.pose.pose.orientation = quaternion

			odometry.child_frame_id = "base_link"
			odometry.twist.twist.linear.x = vx
			odometry.twist.twist.linear.y = 0
			odometry.twist.twist.angular.z = omega

			self._OdometryPublisher.publish(odometry)
			
			#rospy.loginfo(odometry)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值