- 博客(36)
- 收藏
- 关注
原创 C++学习记录(非系统学习,纯使用中遇到的)
类中操作符号class FG_eval {FG_eval()void operator()(){}}这种伪构造函数,可以看作构造函数 第一个()是运算符的意思,第二个是参数,或无参数typedef CPPAD_TESTVECTOR(AD<double>) ADvectortypedef 是定义一种类型的新别名,但是不是一种简单字符串替换...
2022-05-19 20:32:27
274
原创 先锋机器人Pioneer3 DX使用
3个功能包安装使用hokuyo_node, rosaria, rosariakeyboard功能包,分别是,单线激光功能包,先锋机器人功能包,键盘控制功能包。 功能包中有readme,按照操作即可。连接真机使用正确连接后,对激光和小车上电。然后需要对USB口给权限。sudo chmod 777 /dev/ttyACM0 #是零, 这个是激光的USB口sudo chmod 777 /dev/ttyUSB0 #是零,是机器人的口运行小车和激光roscorerosrun hokuyo_no
2021-11-29 11:10:40
1952
原创 在launch 中发布静态tf变换
方法name自己随便定,args分别代表了 x y z yaw pitch roll。此命令一般在launch文件中引用,声明base_link 到 laser的坐标变换关系。40代表40ms发一次。如果args有7个参数则代表 x y z qx<node pkg="tf" type="static_transform_publisher" name="base_link_to_laser" args="0.14 0.0 0.0 0.0 0.0 0.0 /base_link /laser
2021-11-23 20:24:01
2388
原创 动态障碍创建中的问题——障碍物速度命令影响机器人运动
问题:当运行move_base进行导航的以及控制障碍物运动同时进行的时候,机器人会受到障碍物速度命令的影响原因:先锋机器人的坐标系odom(里程计坐标系)并没有传递给move_base,因为障碍物的里程计坐标系也是odom,所以move_base的订阅了两个,导致的。解决办法:把move_base的参数文件dwa_local_planner_params.yaml文件中的odom_topic修改为先锋的RosAria/odom...
2021-09-06 09:33:58
400
1
原创 ros Navigation DWA学习
参考博客ROS 源码阅读——局部路径规划之DWAPlannerROS分析dwa_planner_ros.cpp中的computeVelocityCommands()函数是计算最后的速度指令的。在函数中,首先得到机器人位置,然后得到全局路径映射后的局部路径,然后由dp_.updatePlanAndLocalCosts()更新打分,然后判断是否到达目标附近,是的话调用停止的函数发布速度,否则调用dwaComputeVelocityCommands计算速度。dp_.updatePlanAndLocalCos
2021-08-18 17:19:34
716
原创 搭建移动机器人作为动态障碍以及social_navigation_layers功能包使用
搭建机器人作为动态障碍搭建机器人博客ROS学习8-10这里有个问题是,机器人的robot_base比较矮,需要修改base_length的高度 要满足 2z + r = d。 2*wheel_joint_z + wheel_radius = base_lengthlength_base:0.4joint_z:0.17radius: 0.06修改launch 启动多机器人如何在Gazebo中实现多机器人仿真因为是作为障碍物,可能需要修改下里面link的名字,按照第一个博客里面是base_li
2021-08-11 22:05:33
740
原创 多消息同步回调
按照 message_filters wiki中介绍编写程序报错:error: ‘value’ is not a member of ros::message_traits::TImeStamp<消息类型>问题:消息类型中没有Head,就是没有时间戳信息。所以不能够同步。answer ros org
2021-08-06 12:22:13
559
原创 costmap_2d第二次阅读理解(源码第二次看确实会有新的认识)
流程costmap_2d_node 中 创建一个costmap2DROS 的对象,在costmap_2DROS的构造函数中会调用reconfigureCB 函数,reconfigureCB函数有map_update_thread_的线程,会启用 mapUpdateLoop函数,在这里对象 publisher_会发布代价地图layered_costmap_ 是类LayeredCostmap的实例化对象LayeredCostmap 实例化不同的层插件并将它们聚合为一层的类。layered_costmap
2021-07-31 10:15:52
887
原创 错误解决:std::cout 在ros中不能够打印信息到屏幕上。
如题原因,启动时用launch文件进行启动。原来的launch文件内容:<node pkg="pkg_name" name="node_name" type="可执行文件名">这里缺少了out=“screen”,这样导致输出内容会到一个log文件,而非终端屏幕。正确格式:<node pkg="pkg_name" name="node_name" type="可执行文件名" output="screen">launch文件介绍...
2021-07-21 20:28:06
1558
原创 宾夕法尼亚大学:Robotics: Computational Motion Planning Week 2 Configuration Space
视频笔记位形空间 configuration Space(之前我博客都是配置空间)。就是无障碍时机器人工作空间,以及有障碍时候,对障碍进行膨胀后的空间(这里我个人理解好像有点问题)。如图:右边障碍物位姿空间,是由障碍物形状,和机器人形状共同造成的。然后再右边的空间进行寻找路径。视频2.2是一个二自由度的机械臂的例子,也是障碍物位形空间。视频2.3是在二自由度基础上,加入了小车的旋转。也就是三个自由度了。而且把旋转角度当做了z轴,数学上可以理解,但是画成图就看不太懂了。然后就是在位形空间规划路径的
2021-07-17 11:38:39
262
原创 宾夕法尼亚大学:Robotics: Computational Motion Planning 课程习题以及个人代码一:A*以及Dijkstra
非常感谢 Kin__Zhang 的B站视频以及代码解释。可以在coursera课程中选择旁听下载代码。附上链接:B站\qquad\qquad优快云博客视频1-4为week 1的内容。主要是Dijkstra算法和A*算法。个人感觉视频中讲解较为简单。我自己感觉还不错的两篇讲解文章:Dijkstra\qquadA*+Dijkstra代码中TestScript1.m为测试用程序map = false(10);% Add an obstaclemap (1:3, 6) = true;map (
2021-07-15 10:54:09
478
原创 Motion Planning for Mobile Robots论文翻译总结
Introuct移动机器人的运动规划器建立在解决两个步骤的算法基础上:表示环境和机器人;根据表示进行路径搜索。当前已有方法缺少一个通用的对这两个步骤进行组合的方法。该文章就是挑选适合的方法解决这两个步骤的运动规划,并且选择合适方法进行组合这不同的类。Motion Planning运动规划即在一个包含动态静态障碍物的环境下(通常是不确定的),为机器人规划出一个路径。运动规划器服务于三个不同的目标:构建地图,覆盖和导航。该文是地面导航。通常运动规划包括表示机器人和它的环境,并在表示的环境中搜索路径。这两
2021-07-11 21:34:37
664
转载 Ubuntu18.04使用apt update更新报错W: 校验数字签名时出错。此仓库未被更新,所以仍然使用此前的索引
<link rel="stylesheet" href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/ck_htmledit_views-b5506197d8.css"> <div id="content_views" class="markdown_views prism-tomorrow-night"> <svg xmlns="h...
2021-06-01 10:55:48
772
原创 rviz无法订阅点云PlontCloud2问题
遇到的问题:原因,在发布点云的时候没有给定frame_id.pointcloud2.header.frame_id = "map"; //加入这句话pub_.publish(pointcloud2);然后错误解决!
2021-03-23 20:00:48
1993
2
原创 vscode使用debug报错 program “***“ does not exist
错误如下:但是build是可以成功的,就是debug会显示这个错误。后续也修改了launch文件什么的,但是没有解决。最后把add_executable(kalman_prediction src/kalman.cpp)修改为add_executable(kalman src/kalman.cpp)。问题得到解决。具体这个为什么会成功,原理还没搞清楚。...
2021-03-20 15:57:03
6588
2
原创 论文记录
Trajectory Planning and Tracking Strategy Applied to an Unmanned Ground Vehicle in the Presence of Obstaclesintroduction介绍了一些当前UGV面临的挑战:未知的环境+物理约束。还有前人的工作以及本文算法。文章设计了一种提升的AFSA(人工鱼群算法),产生全局轨迹。其中影响因素有平滑性,安全性,能量消耗等。局部轨迹规划是 a trial-based forward search(TFS)。
2021-02-07 22:49:53
259
原创 Motion Planning Networks: Bridging the Gap Between Learning-Based and Classical Motion Planners阅读记录
19年IEEE Transactions on Robotics论文通过环境信息,如原始点云,初始位置以及目标位置。通过递归调用本身产生双向的可连接的路径。并且可以混合神经网络与传统的基于采样的规划算法,同时能够保证计算性能以及最优性。作为一个神经网络算法,其训练策略如下:可以离线批处理数据进行学习,该过程假定所有数据可用,利用记忆进行持续学习。假定专家演示过程流形式进入,同时全局训练数据分布未知active continual learning 整合了MPNet到学习过程中,并且只在需要的时候
2021-01-25 16:00:05
1072
原创 Journal of Intelligent & Robotic Systems 论文阅读记录 —— Zhong XunYu 基于安全A*以及自适应窗口的动态环境路径规划算法
目录safe A*KeypointMotion Planning for Obstacle AvoidanceThe Travelable Direction in Planning WindowThe Moving Direction for the Next Moment论文为:Hybrid Path Planning Based on Safe A* Algorithm and Adaptive Window Approach for Mobile Robot in Large-Scale Dyna
2021-01-20 22:31:50
1137
原创 强化学习 学习记录 二 Q-Learning,Sarsa
本文只是对算法的概述,对原理的详细介绍后面可能会更新Q-LearningQ-Learning 是一种Q表的形式算法,value-based的
2021-01-07 15:07:06
194
原创 强化学习学习记录 一
根据莫烦的视频写的记录,本身视频就比较基础,自己也属于零基础吧。所以记录的很low莫烦视频莫烦Python: 这里有他的各种教程,包括强化学习,tensorflow, pandas, numpy等。也很基础,个人觉得比较适合零基础的人观看。强化学习(Reinforcement learning)不断的尝试到达目标,类似于人类上课,需要老师。但是这个老师不给对错(这就是监督学习了吧),只给行为打分,而强化学习的目的就是避免低分行为。尽可能的得到高分。最后的标签都是自己学来了,并不是人为打标签的。方法
2020-12-31 22:01:54
506
原创 近期相关错误知识等总结
如何修改机器人在Gazebo仿真中的位置launch文件中在启动urdf_spawner节点中的参数设置中加入相关代码即可,如下:<node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen" args="-urdf -model p3dx -param robot_description -x 4.5 -y 0 -z 0.0 " />
2020-12-06 20:25:14
328
原创 gazebo中添加动态行人方法对比插件代码注释
pedsim_ros, Plugin, addwaypoint方法对比pedsim之前有写:pedsim_rosadd_waypoint与Plugin的参考:gazebo tutorialPedsim_rosadd_waypointPlugin模型model:box/personactoractor轨迹方式set_pose,离散仿人,自然仿人,自然设置行人数量方便不方便不方便行人间避让可以不可以不可以处理障碍需要手动添加,无反馈
2020-12-04 16:14:01
3247
5
原创 动态行人仿真pedsim_ros使用及总结(因在gazebo中模型并不自然拟人,放弃)
参考: pedsim文件介绍项目地址: pedsim_ros具体的如何编译测试在github上都有介绍。下面介绍如何在自己建立的环境中增加动态行人。修改.world文件在自己的world文件下加入以下代码块<plugin name="ActorPosesPlugin" filename="libActorPosesPlugin.so"> </plugin>修改后为:<plugin name="ActorPosesPlugin" filename
2020-11-11 22:32:39
3291
6
原创 ROS中Plugin插件学习
ROS 的Plugin官方文档是以polygon为例。本文以global_planner和 carrot_planner为例。在Navgation 中。global_planner 是基类nav_core :: BaseGlobalPlanner的一个插件子类。同时也提供了另外一个carrot_planner子类。以carrot_planner子类为例。首先在自己创建的功能包中的导出类的cpp文件的起始位置加入:(global_planner中就是planner_core.cpp文件)PLUGINLI
2020-09-29 12:12:19
883
原创 Navigation中A*算法源码解释
A*算法原理A*算法原理在之前的文章中也有提到,这次主要就是和Navigation中对应起来。A*算法原理A*源码示例图nx_ = 6, ny_ = 6;其中A为起始点,(1,2)。B为goal_i 为(4,4)。calculatePotential 函数是对堆中Pentential值最小的索引值取出,然后进行下一次的更新。其中toIndex函数返回值为 start_x + nx_*start_y; 即索引 queue_.clear(); //首先将堆清空 //x,y点是全部数据的第几
2020-09-08 20:00:45
2029
4
原创 ROS-Navigation学习(4)—global_palnner学习(2)
plan_node.cppplanner的入口部分如下,主要部分是class::plannerWithCostmap的构造函数 int main(int argc, char** argv) { ros::init(argc, argv, "global_planner"); tf::TransformListener tf(ros::Duration(10)); costmap_2d::Costmap2DROS lcr("costmap", tf); glo
2020-09-06 16:44:24
1024
原创 ROS-Navigation学习(4)——global_planner学习
框架global_planner规划器的整体框架如下参考:https://zhuanlan.zhihu.com/p/46212318A*算法的原理讲解,A*算法这个是自己看到的网上很多的一篇。讲的也的确很棒。Dijkstra算法原理:Dijkstra由于之前A*和Dijkstra算法基于栅格的路线不会比较光滑,但是在navigation中有基于梯度势场的,这样会使得其比较光滑。所以想对比一下GridPath::getPath 和 GradientPath::getPath这两个程序中算法区别(之
2020-08-16 20:59:01
1933
3
原创 Navigation中全局路径规划效果对比
A*算法效果图中比较光滑,跟学长沟通时学长说A*和Djikstra算法是基于八连通的,得到的路径是折线相连接。因此不会这么光滑,但是后来学长说navigation包中的是基于梯度势场的,而非栅格,所以看起来会比较光滑。...
2020-08-09 19:11:37
1753
3
原创 ROS-Navigation学习(3)——move_base(2)源码cpp学习
源码+注释 MoveBase::MoveBase(tf2_ros::Buffer& tf) : tf_(tf), as_(NULL), planner_costmap_ros_(NULL), controller_costmap_ros_(NULL), bgp_loader_("nav_core", "nav_core::BaseGlobalPlanner"), blp_loader_("nav_core", "nav_core::BaseLocalPlan
2020-07-31 22:21:39
1150
原创 ROS-Navigation 学习(2)——move_base(1)——头文件类成员函数功能介绍
由于move_base是整个Navigation的主框架,所以对move_base首先进行学习。move_base.hmove_base.h文件定义了move_base类,类中对相关函数以及一些变量进行定义。bool executeCycle(geometry_msgs::PoseStamped& goal, std::vector<geometry_msgs::PoseStamped>& global_plan);//给定目标,到达目标返回True,否则返回其他,是路径
2020-07-26 13:38:05
473
原创 ROS-Navigation学习(一)——对整体功能包的认识
#下载Navigation功能包sudo apt-get install https://github.com/ros-planning/navigation
2020-07-22 10:50:13
1120
原创 ubuntu下配置Intel RealsenseD435(无权限问题)
Ubuntu下配置Intel RealsenseD43相机最近配置使用D435时,在安装过程中遇到了一些问题(其实不是很大,但是至今不明白)。寻找了很多文章,步骤大致一样,但是我在git clone librealsense的包时,总是有权限的限制。导致自己在cmake时会报错权限不够。于是删除,重新下载,还是不行。但是第三次!!!却可以了,我也不知道为啥。前两次分别clone 到 下载 和...
2019-11-21 21:12:42
675
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人