概率机器人:里程计运动模型

里程计运动模型

速度运动模型采用机器人的速度来计算位姿的后验概率。里程计运动模型(Odometry motion model)则以里程计测量为基础来计算机器人随时间的运动。

通常,通过编码器可以获得机器人的里程信息。相比而言,里程计虽仍存在误差,但比之速度信息更为精确。

模型建立

理想模型

里程计信息实际上是对传感器的读取测量值,而非控制量。为建立作为测量的里程计模型且保持状态空间较小,将里程计测量值认为控制信号。

在时刻 t t t,机器人确切的位姿由随机变量 x t x_t xt建立,里程计用于估计该位姿信息。由于里程计存在漂移、打滑情况,机器人里程计坐标系与世界坐标系间不存在固定的变换关系。

里程计模型使用由机器人内部里程计测量的相对运动信息。即在时间间隔 ( t − 1 , t ] (t-1, t] (t1,t]中,机器人位姿由 x t − 1 x_{t-1} xt1前进至 x t x_t xt,里程计反馈了 x ˉ t − 1 = [ X ˉ Y ˉ θ ˉ ] T \bar x_{t-1}=\begin{bmatrix}\bar X&\bar Y&\bar \theta\end{bmatrix}^T xˉt1=[XˉYˉθˉ]T x ˉ t = [ X ˉ ′ Y ˉ ′ θ ˉ ′ ] T \bar x_t=\begin{bmatrix}\bar X^{'}&\bar Y^{'}&\bar \theta^{'}\end{bmatrix}^T xˉt=[XˉYˉθˉ]T的相对前进。采用上标“ ˉ \bar{\quad} ˉ”表示为机器人坐标系下坐标,该坐标系与世界坐标系转换关系未知。

由此,机器人的控制量 u t = [ x ˉ t − 1 x ˉ t ] T u_t=\begin{bmatrix}\bar x_{t-1}&\bar x_t\end{bmatrix}^T ut=[xˉt1xˉt]T,可将任意两相邻时刻机器人位姿的相对差可通过三个基本运动串联得到,如图所示。

  • 初始旋转: δ r o t 1 = a t a n 2 ( Y ˉ ′ − Y ˉ , X ˉ ′ − X ˉ ) − θ ˉ \delta_{rot1}=atan2(\bar Y^{'}-\bar Y,\bar X^{'}-\bar X)-\bar\theta δrot1=atan2(YˉYˉ,XˉXˉ)θˉ
  • 平移: δ t r a n s = ( X ˉ − X ˉ ′ ) 2 + ( Y ˉ − Y ˉ ′ ) 2 \delta_{trans}=\sqrt{(\bar X-\bar X^{'})^2+(\bar Y-\bar Y^{'})^2} δtrans=(XˉXˉ)2+(YˉYˉ)2
  • 二次旋转: δ r o t 2 = θ ˉ ′ − θ ˉ − δ r o t 1 \delta_{rot2}=\bar \theta^{'}-\bar \theta-\delta_{rot1} δrot2=θˉθˉδrot1

在这里插入图片描述

由此,机器人由初始位姿 x t − 1 = [ X Y θ ] T x_{t-1}=\begin{bmatrix}X&Y&\theta\end{bmatrix}^T xt1=[XYθ]T沿着运动轨迹方向(下图中紫线所示)运动至当前时刻位姿 x t = [ X ′ Y ′ θ ′ ] T x_{t}=\begin{bmatrix}X^{'}&Y^{'}&\theta^{'}\end{bmatrix}^T xt=[XYθ]T可拆分为机器人首先旋转角度 δ r o t 1 \delta_{rot1} δrot1再沿着此方向平移 δ t r a n s \delta_{trans} δtrans,随后再次旋转 δ r o t 2 \delta_{rot2} δrot2抵达目标位姿,如图所示:

在这里插入图片描述

上图中,由三角函数化简可以得到如下表达式:
[ X ′ Y ′ θ ′ ] = [ X Y θ ] + [ δ t r a n s ⋅ cos ⁡ ( θ + δ r o t 1 ) δ t r a n s ⋅ sin ⁡ ( θ + δ r o t 1 ) δ r o t 1 + δ r o t 2 ] \begin{bmatrix} X^{'}\\Y^{'}\\\theta^{'}\\ \end{bmatrix}=\begin{bmatrix} X\\Y\\\theta \end{bmatrix}+\begin{bmatrix} \delta_{trans}\cdot\cos(\theta+\delta_{rot1})\\ \delta_{trans}\cdot\sin(\theta+\delta_{rot1})\\ \delta_{rot1}+\delta_{rot2} \end{bmatrix} XYθ=XYθ+δtranscos(θ+δrot1)δtranssin(θ+δrot1)δrot1+δrot2

噪声模型

在真实环境下,机器人运动及里程计的测量存在噪声。定义里程计的测量值减去噪声得到的为实际里程值:
δ ^ r o t 1 = δ r o t 1 − ε α 1 δ r o t 1 2 + α 2 δ t r a n s 2 δ ^ t r a n s = δ t r a n s − ε α 3 δ t r a n s 2 + α 4 δ r o t 1 2 + α 4 δ r o t 2 2 δ ^ r o t 2 = δ r o t 2 − ε α 1 δ r o t 2 2 + α 2 δ t r a n s 2 \begin{aligned} \hat \delta_{rot1}&=\delta_{rot1}-\varepsilon_{\alpha_1\delta_{rot1}^2+\alpha_2\delta_{trans}^2}\\ \hat \delta_{trans}&=\delta_{trans}-\varepsilon_{\alpha_3\delta_{trans}^2+\alpha_4\delta_{rot1}^2+\alpha_4\delta_{rot2}^2}\\ \hat \delta_{rot2}&=\delta_{rot2}-\varepsilon_{\alpha_1\delta_{rot2}^2+\alpha_2\delta_{trans}^2} \end{aligned} δ^rot1δ^transδ^rot2=δrot1εα1δrot12+α2δtrans2=δtransεα3δtrans2+α4δrot12+α4δrot22=δrot2εα1δrot22+α2δtrans2
则,噪声下机器人的里程计运动模型如下所示:
[ X ′ Y ′ θ ′ ] = [ X Y θ ] + [ δ ^ t r a n s ⋅ cos ⁡ ( θ + δ ^ r o t 1 ) δ ^ t r a n s ⋅ sin ⁡ ( θ + δ ^ r o t 1 ) δ ^ r o t 1 + δ ^ r o t 2 ] \begin{bmatrix} X^{'}\\Y^{'}\\\theta^{'}\\ \end{bmatrix}=\begin{bmatrix} X\\Y\\\theta \end{bmatrix}+\begin{bmatrix} \hat\delta_{trans}\cdot\cos(\theta+\hat\delta_{rot1})\\ \hat\delta_{trans}\cdot\sin(\theta+\hat\delta_{rot1})\\ \hat\delta_{rot1}+\hat\delta_{rot2} \end{bmatrix} XYθ=XYθ+δ^transcos(θ+δ^rot1)δ^transsin(θ+δ^rot1)δ^rot1+δ^rot2

闭式算法

算法推导

在真实环境下,通过里程计测量值减去实际值可以得到里程计误差:
δ r o t 1 , e r r = δ r o t 1 − δ ^ r o t 1 δ t r a n s , e r r = δ t r a n s − δ ^ t r a n s δ r o t 2 , e r r = δ r o t 2 − δ ^ r o t 2 \begin{aligned} \delta_{rot1,err}&=\delta_{rot1}-\hat \delta_{rot1}\\ \delta_{trans,err}&=\delta_{trans}-\hat \delta_{trans}\\ \delta_{rot2,err}&=\delta_{rot2}-\hat \delta_{rot2}\\ \end{aligned} δrot1,errδtrans,errδrot2,err=δrot1δ^rot1=δtransδ^trans=δrot2δ^rot2
由此,得到各项噪声的概率密度计算如下:
p 1 = ε α 1 δ r o t 1 2 + α 2 δ t r a n s 2 ( δ r o t 1 , e r r ) p 2 = ε α 3 δ t r a n s 2 + α 4 δ r o t 1 2 + α 4 δ r o t 2 2 ( δ t r a n s , e r r ) p 3 = ε α 1 δ r o t 2 2 + α 2 δ t r a n s 2 ( δ r o t 2 , e r r ) \begin{aligned} p_1&=\varepsilon_{\alpha_1\delta_{rot1}^2+\alpha_2\delta_{trans}^2}(\delta_{rot1,err})\\ p_2&=\varepsilon_{\alpha_3\delta_{trans}^2+\alpha_4\delta_{rot1}^2+\alpha_4\delta_{rot2}^2}(\delta_{trans,err})\\ p_3&=\varepsilon_{\alpha_1\delta_{rot2}^2+\alpha_2\delta_{trans}^2}(\delta_{rot2,err}) \end{aligned} p1p2p3=εα1δrot12+α2δtrans2(δrot1,err)=εα3δtrans2+α4δrot12+α4δrot22(δtrans,err)=εα1δrot22+α2δtrans2(δrot2,err)
假设各项噪声相互独立,则由 x t − 1 x_{t-1} xt1状态得到 x t x_t xt状态的概率密度:
p ( x t ∣ u t , x t − 1 ) = p 1 ⋅ p 2 ⋅ p 3 p(x_t|u_t,x_{t-1})=p_1\cdot p_2\cdot p_3 p(xtut,xt1)=p1p2p3

算法设计

系统输入: 初始位姿 x t − 1 = [ X Y θ ] T x_{t-1}=\begin{bmatrix}X&Y&\theta\end{bmatrix}^T xt1=[XYθ]T、控制量 u t = [ x ˉ t − 1 x ˉ t ] T u_t=\begin{bmatrix}\bar x_{t-1}&\bar x_t\end{bmatrix}^T ut=[xˉt1xˉt]T、估计后继姿态 x t = [ X ′ Y ′ θ ′ ] T x_t=\begin{bmatrix}X^{'}&Y^{'}&\theta^{'}\end{bmatrix}^T xt=[XYθ]T

系统输出: 后继姿态为 x t x_t xt的概率 p ( x t ∣ u t , x t − 1 ) p(x_t | u_t,x_{t-1}) p(xtut,xt1)

假设条件: 控制算法以固定时间间隔 Δ t \Delta t Δt执行。

用参数 α 1 \alpha_1 α1 ~ α 4 \alpha_4 α4表示机器人里程计运动噪声系数:

  • 里程计平移噪声
    • 参数 α 1 \alpha_1 α1:平移运动中平移分量的噪声
    • 参数 α 2 \alpha_2 α2:平移运动中旋转分量的噪声
  • 里程计旋转噪声
    • 参数 α 3 \alpha_3 α3:旋转运动中平移分量的噪声
    • 参数 α 4 \alpha_4 α4:旋转运动中旋转分量的噪声

算法实现逻辑如下:
A l g o r i t h m m o t i o n _ m o d e l _ o d o m e t r y ( x t , u t , x t − 1 ) : 1 : δ r o t 1 = a t a n 2 ( Y ˉ ′ − Y ˉ , X ˉ ′ − X ˉ ) − θ ˉ 2 : δ t r a n s = ( X ˉ − X ˉ ′ ) 2 + ( Y ˉ − Y ˉ ′ ) 2 3 : δ r o t 2 = θ ˉ ′ − θ ˉ − δ r o t 1 4 : δ ^ r o t 1 = a t a n 2 ( Y ′ − Y , X ′ − X ) − θ 5 : δ ^ t r a n s = ( X − X ′ ) 2 + ( Y − Y ′ ) 2 6 : δ ^ r o t 2 = θ ′ − θ − δ ^ r o t 1 7 : p 1 = p r o b ( δ r o t 1 − δ ^ r o t 1 , α 1 δ ^ r o t 1 2 + α 2 δ ^ t r a n s 2 ) 8 : p 2 = p r o b ( δ t r a n s − δ ^ t r a n s , α 3 δ ^ t r a n s 2 + α 4 δ ^ r o t 1 2 + α 4 δ ^ r o t 2 2 ) 9 : p 3 = p r o b ( δ r o t 2 − δ ^ r o t 2 , α 1 δ ^ r o t 2 2 + α 2 δ ^ t r a n s 2 ) 10 : r e t u r n p 1 ⋅ p 2 ⋅ p 3 \begin{aligned} &Algorithm\quad motion\_model\_odometry(x_t,u_t,x_{t-1}): \\ 1:&\qquad \delta_{rot1}=atan2(\bar Y^{'}-\bar Y,\bar X^{'}-\bar X)-\bar\theta \\ 2:&\qquad \delta_{trans}=\sqrt{(\bar X-\bar X^{'})^2+(\bar Y-\bar Y^{'})^2}\\ 3:&\qquad \delta_{rot2}=\bar \theta^{'}-\bar \theta-\delta_{rot1}\\ \\ 4:&\qquad \hat\delta_{rot1}=atan2(Y^{'}-Y,X^{'}-X)-\theta \\ 5:&\qquad \hat\delta_{trans}=\sqrt{(X-X^{'})^2+(Y-Y^{'})^2}\\ 6:&\qquad \hat\delta_{rot2}=\theta^{'}-\theta-\hat\delta_{rot1}\\ \\ 7:&\qquad p_1=prob(\delta_{rot1}-\hat\delta_{rot1},\alpha_1\hat\delta_{rot1}^2+\alpha_2\hat\delta_{trans}^2)\\ 8:&\qquad p_2=prob(\delta_{trans}-\hat\delta_{trans},\alpha_3\hat\delta_{trans}^2+\alpha_4\hat\delta_{rot1}^2+\alpha_4\hat\delta_{rot2}^2)\\ 9:&\qquad p_3=prob(\delta_{rot2}-\hat\delta_{rot2},\alpha_1\hat\delta_{rot2}^2+\alpha_2\hat\delta_{trans}^2)\\ \\ 10:&\qquad return\quad p_1\cdot p_2\cdot p_3 \end{aligned} 1:2:3:4:5:6:7:8:9:10:Algorithmmotion_model_odometry(xt,ut,xt1):δrot1=atan2(YˉYˉ,XˉXˉ)θˉδtrans=(XˉXˉ)2+(YˉYˉ)2 δrot2=θˉθˉδrot1δ^rot1=atan2(YY,XX)θδ^trans=(XX)2+(YY)2 δ^rot2=θθδ^rot1p1=prob(δrot1δ^rot1,α1δ^rot12+α2δ^trans2)p2=prob(δtransδ^trans,α3δ^trans2+α4δ^rot12+α4δ^rot22)p3=prob(δrot2δ^rot2,α1δ^rot22+α2δ^trans2)returnp1p2p3
其中,1~3行从里程计测量值得到相对运动参数值: [ δ r o t 1 δ t r a n s δ r o t 2 ] T \begin{bmatrix}\delta_{rot1}&\delta_{trans}&\delta_{rot2}\end{bmatrix}^T [δrot1δtransδrot2]T

4~6行由机器人初始位姿 x t − 1 x_{t-1} xt1及预计位姿 x t x_t xt计算得到实际相对运动参数: [ δ ^ r o t 1 δ ^ t r a n s δ ^ r o t 2 ] T \begin{bmatrix}\hat\delta_{rot1}&\hat\delta_{trans}&\hat\delta_{rot2}\end{bmatrix}^T [δ^rot1δ^transδ^rot2]T

7~9行计算各自噪声引起的概率密度 p 1 、 p 2 、 p 3 p_1、p_2、p_3 p1p2p3,由于各噪声相互独立,最后返回累乘值 p 1 ⋅ p 2 ⋅ p 3 p_1\cdot p_2\cdot p_3 p1p2p3

函数 p r o b ( x , b 2 ) prob(x,b^2) prob(x,b2)用于实现x上均值为0,方差为 b 2 b^2 b2的概率分布,可用正态分布或三角形分布实现,同速度运动模型,不在赘述。

应注意,所有角度差值应保持在区间 [ − π , π ] [-\pi,\pi] [π,π]内,即函数 p r o b ( x , b 2 ) prob(x,b^2) prob(x,b2)中参数 x x x属于该区间。

算法效果

在平面空间XOY下,设置机器人具有相同的初始姿态 x t − 1 x_{t-1} xt1和控制量 u t u_t ut,则在不同里程计噪声参数下,模型具有不同效果。

当机器人具有中等误差(参数 α 1 \alpha_1 α1 ~ α 4 \alpha_4 α4),则如图所示:

在这里插入图片描述

当机器人具有较大的平移误差(参数 α 1 、 α 2 \alpha_1、\alpha_2 α1α2),但具有较小的角度误差(参数 α 3 、 α 4 \alpha_3、\alpha_4 α3α4),则如图所示:

在这里插入图片描述
当机器人具有较小的平移误差(参数 α 1 、 α 2 \alpha_1、\alpha_2 α1α2),但具有较大的角度误差(参数 α 3 、 α 4 \alpha_3、\alpha_4 α3α4),则如图所示:

在这里插入图片描述

当两次测量间时间较短时,里程计运动模型同速度运动模型的闭式算法效果差不多。也即,一个机器人如果置信度经常更新(0.1s更新一次),则运动模型间的不同差异不大。

采样算法

算法推导

采用粒子滤波用于采样,与闭式算法不同。该算法通过给定的初始姿态 x t − 1 x_{t-1} xt1和控制量 u t = [ x ˉ t − 1 x ˉ t ] T u_t=\begin{bmatrix}\bar x_{t-1}&\bar x_t\end{bmatrix}^T ut=[xˉt1xˉt]T,估计出一个当前位姿 x t x_t xt

算法设计

系统输入: 初始位姿 x t − 1 = [ X Y θ ] T x_{t-1}=\begin{bmatrix}X&Y&\theta\end{bmatrix}^T xt1=[XYθ]T、控制量 u t = [ x ˉ t − 1 x ˉ t ] T u_t=\begin{bmatrix}\bar x_{t-1}&\bar x_t\end{bmatrix}^T ut=[xˉt1xˉt]T

系统输出: 估计后继姿态 x t = [ X ′ Y ′ θ ′ ] T x_t=\begin{bmatrix}X^{'}&Y^{'}&\theta^{'}\end{bmatrix}^T xt=[XYθ]T

假设条件: 控制算法以固定时间间隔 Δ t \Delta t Δt执行。

算法实现逻辑如下:
A l g o r i t h m s a m p l e _ m o t i o n _ m o d e l _ o d o m e t r y ( x t , u t , x t − 1 ) : 1 : δ r o t 1 = a t a n 2 ( Y ˉ ′ − Y ˉ , X ˉ ′ − X ˉ ) − θ ˉ 2 : δ t r a n s = ( X ˉ − X ˉ ′ ) 2 + ( Y ˉ − Y ˉ ′ ) 2 3 : δ r o t 2 = θ ˉ ′ − θ ˉ − δ r o t 1 4 : δ ^ r o t 1 = δ r o t 1 − s a m p l e ( α 1 δ ^ r o t 1 2 + α 2 δ ^ t r a n s 2 ) 5 : δ ^ t r a n s = δ t r a n s − s a m p l e ( α 3 δ ^ t r a n s 2 + α 4 δ ^ r o t 1 2 + α 4 δ ^ r o t 2 2 ) 6 : δ ^ r o t 2 = δ r o t 2 − s a m p l e ( α 1 δ ^ r o t 2 2 + α 2 δ ^ t r a n s 2 ) 7 : X ′ = X + δ ^ t r a n s cos ⁡ ( θ + δ ^ r o t 1 ) 8 : Y ′ = Y + δ ^ t r a n s sin ⁡ ( θ + δ ^ r o t 1 ) 9 : θ ′ = θ + δ ^ r o t 1 + δ ^ r o t 2 10 : r e t u r n x t = x t = [ X ′ Y ′ θ ′ ] T \begin{aligned} &Algorithm\quad sample\_motion\_model\_odometry(x_t,u_t,x_{t-1}): \\ 1:&\qquad \delta_{rot1}=atan2(\bar Y^{'}-\bar Y,\bar X^{'}-\bar X)-\bar\theta \\ 2:&\qquad \delta_{trans}=\sqrt{(\bar X-\bar X^{'})^2+(\bar Y-\bar Y^{'})^2}\\ 3:&\qquad \delta_{rot2}=\bar \theta^{'}-\bar \theta-\delta_{rot1}\\ \\ 4:&\qquad \hat\delta_{rot1}=\delta_{rot1}-sample(\alpha_1\hat\delta_{rot1}^2+\alpha_2\hat\delta_{trans}^2) \\ 5:&\qquad \hat\delta_{trans}=\delta_{trans}-sample(\alpha_3\hat\delta_{trans}^2+\alpha_4\hat\delta_{rot1}^2+\alpha_4\hat\delta_{rot2}^2)\\ 6:&\qquad \hat\delta_{rot2}=\delta_{rot2}-sample(\alpha_1\hat\delta_{rot2}^2+\alpha_2\hat\delta_{trans}^2)\\ \\ 7:&\qquad X^{'}=X+\hat\delta_{trans}\cos(\theta+\hat\delta_{rot1})\\ 8:&\qquad Y^{'}=Y+\hat\delta_{trans}\sin(\theta+\hat\delta_{rot1})\\ 9:&\qquad \theta^{'}=\theta+\hat\delta_{rot1}+\hat\delta_{rot2}\\ \\ 10:&\qquad return\quad x_t=x_t=\begin{bmatrix}X^{'}&Y^{'}&\theta^{'}\end{bmatrix}^T \end{aligned} 1:2:3:4:5:6:7:8:9:10:Algorithmsample_motion_model_odometry(xt,ut,xt1):δrot1=atan2(YˉYˉ,XˉXˉ)θˉδtrans=(XˉXˉ)2+(YˉYˉ)2 δrot2=θˉθˉδrot1δ^rot1=δrot1sample(α1δ^rot12+α2δ^trans2)δ^trans=δtranssample(α3δ^trans2+α4δ^rot12+α4δ^rot22)δ^rot2=δrot2sample(α1δ^rot22+α2δ^trans2)X=X+δ^transcos(θ+δ^rot1)Y=Y+δ^transsin(θ+δ^rot1)θ=θ+δ^rot1+δ^rot2returnxt=xt=[XYθ]T
其中,1~3行从里程计测量值得到相对运动参数值: [ δ r o t 1 δ t r a n s δ r o t 2 ] T \begin{bmatrix}\delta_{rot1}&\delta_{trans}&\delta_{rot2}\end{bmatrix}^T [δrot1δtransδrot2]T

4~6行由机器人初始位姿 x t − 1 x_{t-1} xt1及采样样本计算得到实际相对运动参数值: [ δ ^ r o t 1 δ ^ t r a n s δ ^ r o t 2 ] T \begin{bmatrix}\hat\delta_{rot1}&\hat\delta_{trans}&\hat\delta_{rot2}\end{bmatrix}^T [δ^rot1δ^transδ^rot2]T

7~9行根据实际相对运动参数值,预测当前时刻机器人位姿 x t x_t xt

式中,函数 s a m p l e ( b 2 ) sample(b^2) sample(b2)用于实现均值为0,方差为 b 2 b^2 b2的随机样本生成,同速度运动模型中采样算法,不在赘述。

算法效果

在平面空间XOY下,设置机器人具有相同的初始姿态 x t − 1 x_{t-1} xt1和控制量 u t u_t ut,且控制量与初始位姿同闭式计算中相同,则在不同不同里程计噪声参数下,具有不同效果。(采样500次)

当机器人具有中等误差(参数 α 1 \alpha_1 α1 ~ α 4 \alpha_4 α4),则如图所示:
在这里插入图片描述

当机器人具有较大的平移误差(参数 α 1 、 α 2 \alpha_1、\alpha_2 α1α2),但具有较小的角度误差(参数 α 3 、 α 4 \alpha_3、\alpha_4 α3α4),则如图所示:

在这里插入图片描述
当机器人具有较小的平移误差(参数 α 1 、 α 2 \alpha_1、\alpha_2 α1α2),但具有较大的角度误差(参数 α 3 、 α 4 \alpha_3、\alpha_4 α3α4),则如图所示:

在这里插入图片描述
当机器人不断进行移动时,不确定性将增加,样本将遍布越来越大的空间,如下图所示机器人沿着实现不断移动:
在这里插入图片描述

  • 1
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Exbot易科机器人实验维护书籍,提供学习镜像包括indigo和kinetic等,努力为ROS爱好者和开发人员提供力所能及的服务。, 本书第2版概括性地介绍了ROS系统的各种工具。ROS是一个先进的机器人操作系统框架,现今已有数百个研究团体和公司将其应用在机器人行业中。对于机器人技术的非专业人士来说,它也相对容易上手。在本书中,你将了解如何安装ROS,如何开始使用ROS的基本工具,以及最终如何应用先进的计算机视觉和导航工具。, 在阅读本书的过程中无需使用任何特殊的设备。书中每一章都附带了一系列的源代码示例和教程,你可以在自己的计算机上运行。这是你唯一需要做的事情。, 当然,我们还会告诉你如何使用硬件,这样你可以将你的算法应用到现实环境中。我们在选择设备时特意选择一些业余用户负担得起的设备,同时涵盖了在机器人研究中最典型的传感器或执行器。, 最后,由于ROS系统的存在使得整个机器人具备在虚拟环境中工作的能力。你将学习如何创建自己的机器人并结合功能强大的导航功能包集。此外如果使用Gazebo仿真环境,你将能够在虚拟环境中运行一切。第2版在最后增加了一章,讲如何使用“Move it!”包控制机械臂执行抓取任务。读完本书后,你会发现已经可以使用ROS机器人进行工作了,并理解其背后的原理。, 主要内容, 第1章介绍安装ROS系统最简单的方法,以及如何在不同平台上安装ROS,本书使用的版本是ROS Hydro。这一章还会说明如何从Debian软件包安装或从源代码进行编译安装,以及在虚拟机和ARM CPU中安装。, 第2章涉及ROS框架及相关的概念和工具。该章介绍节点、主题和服务,以及如何使用它们,还将通过一系列示例说明如何调试一个节点或利用可视化方法直观地查看通过主题发布的消息。, 第3章进一步展示ROS强大的调试工具,以及通过对节点主题的图形化将节点间的通信数据可视化。ROS提供了一个日志记录API来轻松地诊断节点的问题。事实上,在使用过程中,我们会看到一些功能强大的图形化工具(如rqt_console和rqt_graph),以及可视化接口(如rqt_plot和rviz)。最后介绍如何使用rosbag和rqt_bag记录并回放消息。, 第4章介绍ROS系统与真实世界如何连接。这一章介绍在ROS下使用的一些常见传感器和执行器,如激光雷达、伺服电动机、摄像头、RGB-D传感器、GPS等。此外,还会解释如何使用嵌入式系统与微控制器(例如非常流行的Arduino开发板)。, 第5章介绍ROS对摄像头和计算机视觉任务的支持。首先使用FireWire和USB摄像头驱动程序将摄像头连接到计算机并采集图像。然后,你就可以使用ROS的标定工具标定你的摄像头。我们会详细介绍和说明什么是图像管道,学习如何使用集成了OpenCV的多个机器视觉API。最后,安装并使用一个视觉里程计软件。, 第6章将展示如何在ROS节点中使用点云库。该章从基本功能入手,如读或写PCL数据片段以及发布或订阅这些消息所必需的转换。然后,将在不同节点间创建一个管道来处理3D数据,以及使用PCL进行缩减采样、过滤和搜索特征点。, 第7章介绍在ROS系统中实现机器人的第一步是创建一个机器人模型,包括在Gazebo仿真环境中如何从头开始对一个机器人进行建模和仿真,并使其在仿真环境中运行。你也可以仿真摄像头和激光测距传感器,为后续学习如何使用ROS的导航功能包集和其他工具奠定基础。, 第8章是两章关于ROS导航功能包集中的第1章。该章介绍如何对你的机器人进行使用导航功能包集所需的初始化配置。然后用几个例子对导航功能包集进行说明。, 第9章延续第8章的内容,介绍如何使用导航功能包集使机器人有效地自主导航。该章介绍使用ROS的Gazebo仿真环境和rviz创建一个虚拟环境,在其中构建地图、定位机器人并用障碍回避做路径规划。, 第10章讨论ROS中移动机器人机械臂的一个工具包。该章包含安装这个包所需要的文档,以及使用MoveIt!操作机械臂进行抓取、放置,简单的运动规划等任务的演示示例。, 预备知识, 我们写作本书的目的是让每位读者都可以完成本书的学习并运行示例代码。基本上,你只需要在计算机上安装一个Linux发行版。虽然每个Linux发行版应该都能使用,但还是建议你使用Ubuntu 12.04 LTS。这样你可以根据第1章的内容安装ROS Hydro。, 对于ROS的这一版本,你将需要Ubuntu 14.04之前的版本,因为之后的版本已经不再支持Hydro了。, 对于硬件要求,一般来说,任何台式计算机或笔记本电脑都满足。但是,最好使用独立显卡来运行Gazebo仿真环境。此外,如果有足够的外围接口将会更好,因为这样你可以连接几个传感器和执行器,包括摄像头和Arduino开发板。, 你还需要Git(g

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值