- 博客(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
原创 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
原创 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
原创 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
slam经典教程Guido Zunino
2015-10-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人