1.scrolltoåscrollbyçåºå«
2.NAV2-Velocity Smoother 速度平滑器理解
scrolltoåscrollbyçåºå«
ããViewç±»çæºä»£ç å¦ä¸æ示ï¼mScrollXè®°å½çæ¯å½åViewé对å±å¹åæ å¨æ°´å¹³æ¹åä¸çå移éï¼èmScrollYåæ¯è®°å½çæ¶å½åViewé对å±å¹å¨ç«å¼æ¹åä¸çå移éã
ããä»ä»¥ä¸ä»£ç å¯ä»¥å¾ç¥ï¼scrollToå°±æ¯æView移å¨å°å±å¹çXåYä½ç½®ï¼ä¹å°±æ¯ç»å¯¹ä½ç½®ãèscrollByå ¶å®å°±æ¯è°ç¨çscrollToï¼ä½æ¯åæ°æ¯å½åmScrollXåmScrollYå ä¸XåYçä½ç½®ï¼æ以ScrollByè°ç¨çæ¯ç¸å¯¹äºmScrollXåmScrollYçä½ç½®ãå¨ä¸é¢ç代ç ä¸å¯ä»¥çå°å½ææä¸æ¾ç§»å¨å±å¹æ¶ï¼å°±ä¼è°ç¨scrollByæ¥ç§»å¨ä¸æ®µç¸å¯¹çè·ç¦»ãèå½æ们æææ¾å¼åï¼ä¼è°ç¨ mScroller.startScroll(mUnboundedScrollX,源码 0, delta, 0, duration);æ¥äº§çä¸æ®µå¨ç»æ¥ç§»å¨å°ç¸åºç页é¢ï¼å¨è¿ä¸ªè¿ç¨ä¸ç³»ç»åä¸æè°ç¨computeScroll()ï¼å使ç¨scrollToæ¥æView移å¨å°å½åScrolleræå¨çç»å¯¹ä½ç½®ã
ãã/
*** Set the scrolled position of your view. This will cause a call to
* { @link #onScrollChanged(int, int, int, int)} and the view will be
* invalidated.
* @param x the x position to scroll to
* @param y the y position to scroll to
*/
public void scrollTo(int x, int y) {
if (mScrollX != x || mScrollY != y) {
int oldX = mScrollX;
int oldY = mScrollY;
mScrollX = x;
mScrollY = y;
invalidateParentCaches();
onScrollChanged(mScrollX, mScrollY, oldX, oldY);
if (!awakenScrollBars()) {
invalidate(true);
}
}
}
/
*** Move the scrolled position of your view. This will cause a call to
* { @link #onScrollChanged(int, int, int, int)} and the view will be
* invalidated.
* @param x the amount of pixels to scroll by horizontally
* @param y the amount of pixels to scroll by vertically
*/
public void scrollBy(int x, int y) {
scrollTo(mScrollX + x, mScrollY + y);
}
NAV2-Velocity Smoother 速度平滑器理解
NAV2 Velocity Smoother 是一个用于平滑由 NAV2 框架发送给机器人控制器速度的功能包。主要目的源码是通过平滑加速减少机器人电机和硬件控制器的磨损。平滑处理包括对速度、源码加速度和死区的源码飞控源码讲解控制。个人理解其核心功能有以下几点:
1. 确保发布的源码速度在容许的速度区间内。
2. 保证指令速度与机器人当前速度所计算得到的源码加速度在容许的区间内。
3. 在[x,源码 y, theta]坐标轴上考虑同比例变化。
4. 考虑闭环控制,源码通过使用 odometry 数据来保证平滑过程的源码准确性。
Velocity Smoother 参数设定如下:
1. **smoothing_frequency**:设置平滑频率(Hz),源码决定如何使用最后接收到的源码linux编译osg源码速度命令进行速度、加速度和死区约束的源码平滑处理。根据局部轨迹规划器的源码速率调整平滑效果,设置较高频率时进行插值并提供平滑的源码硬件控制命令。
2. **scale_velocities**:是源码否按照同比例调整其他速度组件,以适应加速限制带来的决战沙邑源码变化。确保所有组件方向一致,同时严格遵守加速限制,即使这意味着稍微偏离命令轨迹。
3. **feedback**:使用当前状态反馈,OPEN_LOOP 模式下使用上一次发布的版权符号源码速度作为当前速度,适合开环控制;CLOSED_LOOP 模式下使用 odometry 信息估计速度,要求 odometry 高速率低延迟。
4. **max_velocity**:在[x, y, theta]轴上的最大速度。
5. **min_velocity**:在[x, y, theta]轴上的最小速度,且为负值,开源的源码在哪表示逆向。
6. **deadband_velocity**:发送给硬件控制器的最小速度,防止由于无法达到该速度而损坏硬件控制器的情况。
7. **velocity_timeout**:速度接收的超时时间,即原始速度接收频率。
8. **max_accel**:每个轴[x, y, theta]上的最大加速度。
9. **max_decel**:每个轴[x, y, theta]上的最小减速度,应为负值。
. **odom_topic**:用于闭环控制的 odometry 主题。
. **odom_duration**:在闭环模式下,缓冲 odometry 命令以估计机器人速度的时间。
源码注解涉及的主要函数为 void VelocitySmoother::smootherTimer(),该函数接收由局部路径规划器或运动控制器发布的速度指令,并发布经过平滑处理后的速度。