自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 资源 (3)
  • 收藏
  • 关注

原创 同时标定激光和里程计

标定参数:两轮半径,两轮间距,传感器相对于机器人坐标系的位姿运动学模型:其中:假定在每次采样间隔内轮子速度恒定通过积分即可得到每个采样时刻的位姿估计:基于机器人旋转的角度和传感器旋转的角度相同的原理。由激光匹配得到的角度估计为,里程计观测到的角度...

2020-08-20 12:59:03 667

原创 PL-ICP求解公式推导

非线性最小化问题:其中 ,是2×2的旋转矩阵范数对于PP-ICP来说,,为权重对于PL-ICP来说,简化为最小二乘问题:上述问题的解为,用四维向量表示,并且约束。对于给定点, 定义矩阵:上述最小化问题可转化为:展开有:忽略常数项:定义,约束可写成。问题即可转化为: subject to 使用拉格...

2020-08-19 13:29:21 1480

原创 amcl 代码研究(6)——pf_kdtree(2)

上篇博客里的函数中都是对KD_Tree内部函数的调用,这篇具体分析KD_Tree。//判断key值是否相等 Compare keys to see if they are equal// Compare keys to see if they are equalint pf_kdtree_equal(pf_kdtree_t *self, int key_a[], int key

2020-08-06 09:11:01 1471 1

原创 tf Quaternion

class Quaternion : public QuadWord {public: Quaternion() {} Quaternion(const tfScalar& x, const tfScalar& y, const tfScalar& z, const tfScalar& w): QuadWord(x, y, z, w) {} ...

2020-08-06 09:09:15 4440

转载 shell学习记录1

shell(1)参考链接: http://c.biancheng.net/view/743.html C语言中文网读取: readecho "What is your name?"read PERSONecho "Hello, $PERSON"修改变量的值已定义的变量,可以被重新赋值,如:url="http://c.biancheng.net"echo ${url}url=...

2019-03-26 17:07:28 266

原创 tf Vector3

class Vector3{public:           tfScalar   m_floats[4];public: TFSIMD_FORCE_INLINE Vector3(const tfScalar& x, const tfScalar& y, const tfScalar& z){ m_floats[0] = x; m_...

2018-07-31 16:28:08 1843 2

原创 amcl 代码研究(6)——pf(2)

//新建一个滤波器// Create a new filterpf_t *pf_alloc(int min_samples, int max_samples, double alpha_slow, double alpha_fast, pf_init_model_fn_t random_pose_fn, void *random

2018-01-31 15:05:10 1553 2

原创 amcl 代码研究(6)——pf(1)

前面分析了KD_Tree, 现在研究粒子滤波pf://一个粒子, 表示位姿和权重// Information for a single sampletypedef struct{ // Pose represented by this sample pf_vector_t pose; // Weight for this pose double weight;

2018-01-31 10:33:25 2034

原创 amcl 代码研究(6)——pf_kdtree(1)

amcl中采用了粒子滤波方法,其中的数据结构为kd-tree,现分析如下:typedef struct{ double v[3];} pf_vector_t; //向量// The basic matrixtypedef struct{ double m[3][3];} pf_matrix_t; //矩阵KD-Tree:// Info

2018-01-30 15:45:12 1413

原创 message_filters::TimeSynchronizer

#include #include #include #include using namespace sensor_msgs;using namespace message_filters;void callback(const ImageConstPtr& image, const CameraInfoConstPtr& cam_info){ // Solve all o

2018-01-30 13:25:17 2452 1

原创 tf::MessageFilter

#include "ros/ros.h"#include "tf/transform_listener.h"#include "tf/message_filter.h"#include "message_filters/subscriber.h"class PoseDrawer{public: PoseDrawer() : tf_(), target_frame_("turtl

2018-01-30 13:09:14 1707

原创 boost C++库学习(1)-- smart pointers

1.  作用域指针boost::scoped_ptr       一个作用域指针boost::scoped_ptr.独占一个动态分配的对象。一个作用域指针不能传递它所包含的对象的所有权到另一个作用域指针。#include int main(){ boost::scoped_ptr i(new int); *i = 1; *i.get() = 2; i.reset(

2018-01-30 11:01:49 447

原创 amcl 代码研究(5)—— AmclNode::laserReceived

当接收到激光数据时调用该函数void AmclNode::laserReceived(const sensor_msgs::LaserScanConstPtr& laser_scan)判断是否frame_to_laser_中是否有laser_scan->header.frame_idif(frame_to_laser_.find(laser_scan->header.fra

2018-01-30 11:01:26 2160

原创 amcl 代码研究(4)—— map

// Description for a single map cell.typedef struct{ // Occupancy state (-1 = free, 0 = unknown, +1 = occ) int occ_state; // Distance to the nearest occupied cell double occ_dist; // Wif

2018-01-30 11:01:18 1017

原创 amcl 代码研究(3)—— amcl_laser

typedef enum{ LASER_MODEL_BEAM, LASER_MODEL_LIKELIHOOD_FIELD, LASER_MODEL_LIKELIHOOD_FIELD_PROB} laser_model_t;// Laser sensor dataclass AMCLLaserData : public AMCLSensorData{ public:

2018-01-30 11:01:09 968

原创 amcl 代码研究(2)—— amcl_odom

typedef enum{ ODOM_MODEL_DIFF, ODOM_MODEL_OMNI, ODOM_MODEL_DIFF_CORRECTED, ODOM_MODEL_OMNI_CORRECTED} odom_model_t;// Odometric sensor dataclass AMCLOdomData : public AMCLSensorData

2018-01-30 11:01:01 1388 1

原创 amcl 代码研究(1)—— amcl_sensor

class AMCLSensorData;class AMCLSensor{ // Default constructor public: AMCLSensor(); // Default destructor public: virtual ~AMCLSensor(); // Update the filter based on

2018-01-30 11:00:46 1131

翻译 ROS动态参数设置 dynamic reconfigure

在调试程序时, 为了能够方便的更改参数,可以运行rosrun rqt_reconfigure rqt_reconfigure为了将参数加入其中,一般步骤如下:1. 创建配置文件cfg/Tutorials.cfg#!/usr/bin/env pythonPACKAGE = "dynamic_tutorials"from dynamic_reconfigure.parameter

2018-01-17 11:27:52 3566 5

原创 GDB如何调试程序(2)--多线程

gdb

2018-01-05 14:08:42 633

原创 eband_local_planner学习2

在move_base中CONTROLLING中调用了tc_->computeVelocityCommands(cmd_vel)bool EBandPlannerROS::computeVelocityCommands(geometry_msgs::Twist& cmd_vel) { // check if plugin initialized if(

2018-01-05 10:06:22 2231

原创 GDB如何调试程序

gdb

2018-01-03 10:02:12 432

原创 ROS调试信息输出

ROS日志级别有五种: DEBUG, INFO, WARN, ERROR,FATAL. rosrun rqt_console rqt_console 可以查看信息输出 rosrun rqt_logger_level rqt_logger_level 可以改变日志输出的级别

2018-01-02 14:20:23 16102

原创 eband_local_planner学习1

eband_local_planner_ros.h代码:

2017-12-27 12:33:22 1695

翻译 ROS tf知识整理

ros tf

2017-12-22 15:06:52 780

原创 ROS Navigation-----dwa_planner_ros类

类的成员变量: private: tf::TransformListener* tf_; ///< @brief Used for transforming point clouds ros::Publisher g_plan_pub_, l_plan_pub_; // for visualisation, publis

2017-12-11 16:34:57 1054

原创 ROS Navigation-----base_local_planner类

类成员函数: public: 1. virtual bool computeVelocityCommands(geometry_msgs::Twist& cmd_vel) = 0; /** * @brief Given the current position, orientation, and velocity of the robot, comp

2017-12-11 15:42:22 379

Adept 移动机器人.pdf

adept移动机器人说明书 adept移动机器人应用最为广泛,

2019-10-24

courseSLAM

slam入门教程,适合初学者,可以全面了解slam基础,是很好的入门资料

2018-03-15

slam经典教程Guido Zunino

Simultaneous Localization and Mapping for Navigation in Realistic Environments

2015-10-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除